[Cin] Is one pre-built dynamic and static binary for user selection possible?

Андрей Спицын spitsyn.andrey at gmail.com
Fri Sep 20 17:45:03 CEST 2024


Terje,

Here is list of suse packages from my suse build host:
"libusb-devel", "fftw-devel", "flac-devel", "libXv-devel", "ncurses-devel",
"texinfo",
            "libogg-devel", "libvorbis-devel", "libx264-devel",
"libx265-devel", "libsndfile-devel", "libtiff-devel", "ffmpeg-devel",
            "lv2-devel", "liblilv-0-devel", "libjpeg8-devel", "suil-devel",
"nasm", "libpulse-devel", "xz-devel", "yasm",
            "gcc", "gcc-c++", "zlib-devel", "libpng16-devel",
"perl-XML-Parser", "rpm-build",
            "freeglut-devel", "libXv-devel", "alsa-devel", "libbz2-devel",
"ncurses-devel",
            "libXinerama-devel", "freetype-devel", "libXft-devel",
"giflib-devel", "ctags",
            "bitstream-vera-fonts", "xorg-x11-fonts-core",
"xorg-x11-fonts", "dejavu-fonts",
            "openexr-devel", "libavc1394-devel", "libjpeg8-devel",
"libdv-devel",
            "libdvdnav-devel", "libdvdread-devel", "libiec61883-devel",
"libuuid-devel",
            "ilmbase-devel", "fftw3-devel", "libsndfile-devel",
"libtheora-devel", "flac-devel" ,
            "libtiff-devel",  "patch", "libnuma-devel", "lzma-devel",
"udftools", "git" , "wget",
            "yasm", "autoconf", "automake", "libjbig-devel",
"libvdpau-devel", "libva-devel",
            "gtk2-devel", "libusb-1_0-devel", "libpulse-devel", "libtool",
"python", "patchelf",
            "libboost_regex-devel", "libboost_filesystem-devel",
            "cmake"

I hope this helps you.

Best regards,
Andrey


пт, 20 сент. 2024 г. в 18:34, Terje J. Hanssen via Cin <
cin at lists.cinelerra-gg.org>:

>
>
> Den 20.09.2024 16:33, skrev Andrew Randrianasulu:
>
>
>
> пт, 20 сент. 2024 г., 16:43 Terje J. Hanssen <terjejhanssen at gmail.com>:
>
>>
>>
>> Den 20.09.2024 01:19, skrev Andrew Randrianasulu:
>>
>>
>>
>> On Fri, Sep 20, 2024 at 1:35 AM Terje J. Hanssen <terjejhanssen at gmail.com>
>> wrote:
>>
>>>
>>>
>>> Den 19.09.2024 19:19, skrev Andrew Randrianasulu:
>>>
>>>
>>>
>>> On Thu, Sep 19, 2024 at 7:52 PM Terje J. Hanssen via Cin <
>>> cin at lists.cinelerra-gg.org> wrote:
>>>
>>>> If my understanding is correct, the standard pre-built  CinGG packages
>>>> are static binaries with all required thirdparty, ffmpeg and  libs
>>>> included(?)
>>>>
>>>> Would it be possible to combine static and dynamic in one pre-built so
>>>> that users via setting could select what they want, ffmpeg and libs
>>>> included or from the system?
>>>> Or is two different pre-builts required?
>>>>
>>>
>>> well,  in general you can't link both statically (piece of library
>>> embedded into binary) and shared (piece of code loaded on demand or at
>>> launch). There might be some sort of thunks/shims/wrappers dynamically
>>> dispatching calls to external library if present (like firefox vs ffmpeg)
>>> but I am not programmist enough for making this happen even for most
>>> obvious vaapi libs.
>>>
>>> sorry.
>>>
>>>
>>> I had "a little hope" something could be done via a
>>> configuration/startup file :)
>>>
>>> In addition to the last sections below (from 1.3.3 in the manual):
>>> "just include "–without-thirdparty" to your configure script, "and auto
>>> means probe and use the system version"
>>>
>>>
>>> the manual 1.3.8 Unbundled Builds
>>> "There are some generic build scripts included in the CINELERRA-GG GIT
>>> repository
>>> for users who want to do unbundled builds with ffmpeg already available
>>> on their
>>> system. This has been tested on Arch, Ubuntu 18, FreeBSD, Windows10 and
>>> Leap
>>> 15 (rpm) at the time this was documented. The names of the build scripts
>>> are:
>>> arch.bld, bsd.bld, deb.bld, rpm.bld, and cygwin.bld. These scripts are in
>>> the blds subdirectory."
>>>
>>> Is there available a built-guide or possible to list the detailed
>>> procedure steps doing this? ;)
>>>
>>
>> well, step no. 1 - download source repo via git clone.
>> git clone git://git.cinelerra-gg.org/goodguy/cinelerra.git  should do it
>> Step 2 - cd to directory where ./autogen.sh located.
>> 2a - set additional environment variables if you need so via export
>> command
>> 3) run ./autogen.sh
>> 4) run ./configure with all switches you need. (for first try probably
>> --with-single-user so build will be user-local, no need for installing into
>> system)
>> my current build uses "./configure --with-single-user --with-git-ffmpeg=
>> https://git.ffmpeg.org/ffmpeg.git" but
>> ffmpeg.git can be broken at any time by ffmpeg development process :(
>> 5) run make
>> 6) if doing single user build also run make install
>> 7) run it from same directory as bin/cin (you can "ls bin" just to see if
>> all files were build/installed)
>>
>> report errors here :)
>>
>>
>> Thanks, here we go:
>>
>> 1)
>> # cd /home
>>
>> # git clone git://git.cinelerra-gg.org/goodguy/cinelerra.git
>> Cloning into 'cinelerra'...
>> remote: Enumerating objects: 22646, done.
>> remote: Counting objects: 100% (22646/22646), done.
>> remote: Compressing objects: 100% (14288/14288), done.
>> remote: Total 22646 (delta 11647), reused 17384 (delta 7999), pack-reused
>> 0
>> Receiving objects: 100% (22646/22646), 405.36 MiB | 16.00 MiB/s, done.
>> Resolving deltas: 100% (11647/11647), done.
>>
>> 2)
>> #  cd /home/cinelerra/cinelerra-5.1/tools/makeappimagetool
>>
>> 2a) ?
>>
>> 3)
>> # ./autogen.sh
>> configure.ac:19: installing 'cfg/compile'
>> configure.ac:89: installing 'cfg/config.guess'
>> configure.ac:89: installing 'cfg/config.sub'
>> configure.ac:12: installing 'cfg/install-sh'
>> configure.ac:12: installing 'cfg/missing'
>> Makefile.am: installing 'cfg/depcomp'
>>
>> 4)
>> I didn't understand what to do with 4) "run ./configure with all switches
>> you need" ?
>>
>> So I just started with your
>>
>> # ./configure --with-single-user --with-git-ffmpeg=
>> https://git.ffmpeg.org/ffmpeg.git
>> configure: WARNING: unrecognized options: --with-single-user,
>> --with-git-ffmpeg
>> configure: loading site script /usr/share/site/x86_64-pc-linux-gnu
>> checking for a BSD-compatible install... /usr/bin/install -c
>> checking whether sleep supports fractional seconds... yes
>> checking filesystem timestamp resolution... 0.01
>> checking whether build environment is sane... yes
>> checking for a race-free mkdir -p... /usr/bin/mkdir -p
>> checking for gawk... gawk
>> checking whether make sets $(MAKE)... yes
>> checking whether make supports nested variables... yes
>> checking xargs -n works... yes
>> checking for g++... g++
>> checking whether the C++ compiler works... yes
>> checking for C++ compiler default output file name... a.out
>> checking for suffix of executables...
>> checking whether we are cross compiling... no
>> checking for suffix of object files... o
>> checking whether the compiler supports GNU C++... yes
>> checking whether g++ accepts -g... yes
>> checking for g++ option to enable C++11 features... none needed
>> checking whether make supports the include directive... yes (GNU style)
>> checking dependency style of g++... gcc3
>> checking for gcc... gcc
>> checking whether the compiler supports GNU C... yes
>> checking whether gcc accepts -g... yes
>> checking for gcc option to enable C11 features... none needed
>> checking whether gcc understands -c and -o together... yes
>> checking dependency style of gcc... gcc3
>> checking how to run the C preprocessor... gcc -E
>> checking for stdio.h... yes
>> checking for stdlib.h... yes
>> checking for string.h... yes
>> checking for inttypes.h... yes
>> checking for stdint.h... yes
>> checking for strings.h... yes
>> checking for sys/stat.h... yes
>> checking for sys/types.h... yes
>> checking for unistd.h... yes
>> checking for boost/filesystem.hpp... yes
>> checking for boost/filesystem/path.hpp... yes
>> checking for boost/regex.hpp... yes
>> checking for libpng16/png.h... yes
>> checking for zlib.h... yes
>> checking for jpeglib.h... yes
>> ./configure: line 5910: -O2: command not found
>> checking for X... no
>> checking for fcntl.h... yes
>> checking for memory.h... yes
>> checking for sys/time.h... yes
>> checking for unistd.h... (cached) yes
>> checking for _Bool... yes
>> checking for stdbool.h that conforms to C99 or later... yes
>> checking for inline... inline
>> checking for int32_t... yes
>> checking for int64_t... yes
>> checking for size_t... yes
>> checking for ssize_t... yes
>> checking for uint16_t... yes
>> checking for uint32_t... yes
>> checking for uint64_t... yes
>> checking for uint8_t... yes
>> checking for ptrdiff_t... yes
>> checking for pid_t... yes
>> checking for vfork.h... no
>> checking for sys/param.h... yes
>> checking for fork... no
>> checking for vfork... no
>> checking for getpagesize... no
>> checking build system type... x86_64-pc-linux-gnu
>> checking host system type... x86_64-pc-linux-gnu
>> checking for GNU libc compatible malloc... no
>> checking for working mmap... no
>> checking for dup2... no
>> checking for floor... no
>> checking for gettimeofday... no
>> checking for memmove... no
>> checking for memset... no
>> checking for munmap... no
>> checking for pow... no
>> checking for realpath... no
>> checking for select... no
>> checking for sqrt... no
>> checking for strcasecmp... no
>> checking for strchr... no
>> checking for strdup... no
>> checking for strerror... no
>> checking for strncasecmp... no
>> checking for strrchr... no
>> checking for strstr... no
>> checking that generated files are newer than configure... done
>> configure: creating ./config.status
>> config.status: creating Makefile
>> config.status: creating config.h
>> config.status: config.h is unchanged
>> config.status: executing depfiles commands
>> configure: WARNING: unrecognized options: --with-single-user,
>> --with-git-ffmpeg
>>
>
> lack of vfork.h and sqrt.h and few others is concerning!
>
> you probably need to install more development  files, my bulk solution was
> to drag gtk2-dev in and see how it drags X libs and other dev files into
> system as dependency
>
>
> zypper in gtk2-devel
> Loading repository data...
> Reading installed packages...
> Resolving package dependencies...
>
> The following 35 NEW packages are going to be installed:
>   at-spi2-core-devel cairo-devel dbus-1-devel fontconfig-devel
> freetype2-devel fribidi-devel gdk-pixbuf-devel glib2-devel graphite2-devel
> gtk2-devel
>   harfbuzz-devel libXfixes-devel libXft-devel libXi-devel libXrender-devel
> libXtst-devel libbrotli-devel libbz2-devel libdatrie-devel libffi-devel
>   libgirepository-2_0-0 libharfbuzz-cairo0 libicu-devel libmount-devel
> libpcre2-posix3 libpixman-1-0-devel libselinux-devel libsepol-devel
> libthai-devel
>   pango-devel pcre2-devel typelib-1_0-GIRepository-3_0
> typelib-1_0-GLibUnix-2_0 typelib-1_0-GdkPixdata-2_0 typelib-1_0-Gtk-2_0
>
>
> But still lack of vfork.h and sqrt.h and more
>
>
>
>
>> 5)
>> # make
>> make  all-am
>> make[1]: Entering directory
>> '/home/cinelerra/cinelerra-5.1/tools/makeappimagetool'
>> g++ -DHAVE_CONFIG_H -I.     -g -O2 -DBOOST_NO_CXX11_SCOPED_ENUMS
>> -Dcimg_display=0 -Dcimg_use_jpeg=1 -Dcimg_use_png=1 -MT appdir.o -MD -MP
>> -MF .deps/appdir.Tpo -c -o appdir.o appdir.cpp
>> appdir.cpp: In static member function ‘static bool
>> linuxdeploy::core::appdir::AppDir::PrivateData::copyFile(const
>> boost::filesystem::path&, boost::filesystem::path,
>> boost::filesystem::perms, bool)’:
>> appdir.cpp:164:57: error: ‘bf::copy_option’ has not been declared
>>   164 |                             bf::copy_file(from, to,
>> bf::copy_option::overwrite_if_exists);
>>       |
>> ^~~~~~~~~~~
>> make[1]: *** [Makefile:469: appdir.o] Error 1
>> make[1]: Leaving directory
>> '/home/cinelerra/cinelerra-5.1/tools/makeappimagetool'
>> make: *** [Makefile:340: all] Error 2
>>
>
> this, from short googling, looks like boost error?
>
> do you have boost 1.85 by any chance?
>
>
> Yes, I have the following "boost" installed
>
> S  | Name                               | Type    | Version    | Arch   |
> Repository
>
> ---+------------------------------------+---------+------------+--------+----------------------
> i  | boost-devel                        | package | 1.85.0-1.1 | noarch |
> openSUSE-Slowroll-Oss
> i  | boost-jam                          | package | 1.85.0-1.1 | noarch |
> openSUSE-Slowroll-Oss
> i  | boost-license1_85_0                | package | 1.85.0-2.1 | noarch |
> openSUSE-Slowroll-Oss
> i  | boost1_85_0-jam                    | package | 1.85.0-2.1 | x86_64 |
> openSUSE-Slowroll-Oss
> i  | libboost_headers1_85_0-devel       | package | 1.85.0-2.1 | x86_64 |
> openSUSE-Slowroll-Oss
> i  | libboost_iostreams1_85_0           | package | 1.85.0-2.1 | x86_64 |
> openSUSE-Slowroll-Oss
> i  | libboost_iostreams1_85_0-x86-64-v3 | package | 1.85.0-2.1 | x86_64 |
> openSUSE-Slowroll-Oss
> i  | libboost_locale1_85_0              | package | 1.85.0-2.1 | x86_64 |
> openSUSE-Slowroll-Oss
> i  | libboost_locale1_85_0-x86-64-v3    | package | 1.85.0-2.1 | x86_64 |
> openSUSE-Slowroll-Oss
> i  | libboost_thread1_85_0              | package | 1.85.0-2.1 | x86_64 |
> openSUSE-Slowroll-Oss
> i  | libboost_thread1_85_0-x86-64-v3    | package | 1.85.0-2.1 | x86_64 |
> openSUSE-Slowroll-Oss
>
>
>
> I found similar looking issue with fixed there
>
> https://github.com/monero-project/monero/issues/9304
>
> but for now I thinkwe better to concentrate on running cingg's main
> configure, as opposed to makeappimagetool configure.
>
>
> I tried 5) make again, but still got the similar errors ....
>
> To clear up, because I'm a bit confused at the moment:
> Are we trying to install Cingg "unbundled, dynamic linked, single-user" to
> be able to use the system ffmpeg and libs?
> If so, don't we need to edit the configure file then?
>
>
>
>
>
>
>
>> 6)
>> # make install
>> g++ -DHAVE_CONFIG_H -I.     -g -O2 -DBOOST_NO_CXX11_SCOPED_ENUMS
>> -Dcimg_display=0 -Dcimg_use_jpeg=1 -Dcimg_use_png=1 -MT appdir.o -MD -MP
>> -MF .deps/appdir.Tpo -c -o appdir.o appdir.cpp
>> appdir.cpp: In static member function ‘static bool
>> linuxdeploy::core::appdir::AppDir::PrivateData::copyFile(const
>> boost::filesystem::path&, boost::filesystem::path,
>> boost::filesystem::perms, bool)’:
>> appdir.cpp:164:57: error: ‘bf::copy_option’ has not been declared
>>   164 |                             bf::copy_file(from, to,
>> bf::copy_option::overwrite_if_exists);
>>       |
>> ^~~~~~~~~~~
>> make: *** [Makefile:469: appdir.o] Error 1
>>
>>
>>
>>
>>
>>>
>>>
>>>
>>>>
>>>> Experiences with the latter?
>>>>
>>>> ---------
>>>> Refer to extracted sections from the CinGG manual Chapter 1 -
>>>> Installation below:
>>>>
>>>> If you prefer to not have to take the time to build CINELERRA-GG
>>>> Infinity yourself,
>>>> there are pre-built dynamic or static binaries for various versions of
>>>> Ubuntu, Mint,
>>>> Suse, Fedora, Debian ........
>>>>
>>>> The pkgs directory contains the standard packaged application for
>>>> various distros.
>>>> This will install a dynamic system version for users who prefer to have
>>>> the binaries
>>>> in the system area
>>>> ---------
>>>>
>>>> Notes about Building from Git in your Customized Environment
>>>>
>>>> Getting a build to work in a custom environment is not easy. If you
>>>> have already installed libraries which are normally in the thirdparty
>>>> build, getting them to be recognized means you have to install the devel
>>>> version so the header files which match the library interfaces exist. If
>>>> you want to build using only the thirdparty libraries installed in your
>>>> system, just include "–without-thirdparty" to your configure script. For
>>>> example:
>>>>
>>>> ./confgure --with-single-user --disable-static-build
>>>> --without-thirdparty
>>>>
>>>> Below is the list of thirdparty builds, but this list may have changed
>>>> over time.
>>>>
>>>> Table 1.1: List of thirdparty builds
>>>>
>>>> a52dec         yes
>>>> djbfft         yes
>>>> ffmpeg         yes
>>>> fftw           auto
>>>> flac           auto
>>>> giflib         yes
>>>> ilmbase        auto
>>>> lame           auto
>>>> libavc1394     auto
>>>> libraw1394     auto
>>>> libiec61883    auto
>>>> libdv          auto
>>>> ..........
>>>>
>>>>  The yes means force build and auto means probe and use the system
>>>> version if the build operation is not static. To get your customized build
>>>> to work, you need to change the probe options for the conflicting libraries
>>>> from yes to auto, or even rework the configure.ac script. There may be
>>>> several libraries which need special treatment.
>>>>
>>>> An example of a problem you might encounter with your customized
>>>> installation is with a52dec which has probes line (CHECK_LIB/CHECK_HEADERS)
>>>> in configure.ac, but djbfft does not. In this case, djbfft is only
>>>> built because a52dec is built, so if your system has a52dec, set a52dec to
>>>> auto and see if that problem is solved by retrying the build with:
>>>>
>>>> ./confgure --with-single-user -enable-a52dec=auto .
>>>>
>>>> With persistence, you can get results, but it may take several tries to
>>>> stabilize the build. If you need help, email the log and config.log, which
>>>> is usually sufficient to determine why a build failed.
>>>>
>>>> If you have already installed the libfdk_aac development package on
>>>> your computer because you prefer this version over the default aac, you
>>>> will have to do the following to get this alternative operational. The
>>>> libfdk_aac library is not a part of CINELERRA-GG by default because it is
>>>> not license free.
>>>>
>>>> export FFMPEG_EXTRA_CFG=" --enable-libfdk-aac --enable-nonfree"
>>>> export EXTRA_LIBS=" -lfdk-aac"
>>>> for f in `grep -lw aac cinelerra-5.1/ffmpeg/audio/*`; do
>>>>   sed -e 's/\<aac\>/libfdk_aac/' -i $f
>>>> done
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Cin mailing list
>>>> Cin at lists.cinelerra-gg.org
>>>> https://lists.cinelerra-gg.org/mailman/listinfo/cin
>>>>
>>>
>>>
>>
> --
> Cin mailing list
> Cin at lists.cinelerra-gg.org
> https://lists.cinelerra-gg.org/mailman/listinfo/cin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20240920/ed72a181/attachment-0001.htm>


More information about the Cin mailing list