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

Terje J. Hanssen terjejhanssen at gmail.com
Fri Sep 20 15:43:29 CEST 2024



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
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

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

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/1310ac7b/attachment-0001.htm>


More information about the Cin mailing list