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

Terje J. Hanssen terjejhanssen at gmail.com
Fri Sep 20 17:34:16 CEST 2024



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
>>     <http://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
>     <http://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 <http://configure.ac:19>: installing 'cfg/compile'
>     configure.ac:89 <http://configure.ac:89>: installing
>     'cfg/config.guess'
>     configure.ac:89 <http://configure.ac:89>: installing 'cfg/config.sub'
>     configure.ac:12 <http://configure.ac:12>: installing 'cfg/install-sh'
>     configure.ac:12 <http://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
>>>             <http://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
>>>             <http://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
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20240920/9b90cae7/attachment-0001.htm>


More information about the Cin mailing list