I’m working on PR#123287. It’s preferred to statically link LuaJIT
, FreeType
, OpenAL
, and libuvc
to Arcan. To statically link the dependencies I make them available in the $sourceRoot/external/git/
directory (see postUnpack
).
postUnpack = ''
ln -sv ${luajit.src} $sourceRoot/external/git/luajit
ln -sv ${freetype.src} $sourceRoot/external/git/freetype
ln -sv ${srcs.openal} $sourceRoot/external/git/openal
ln -sv ${libuvc.src} $sourceRoot/external/git/libuvc
[...]
''
But when I uncomment the first line I get the following output when trying to build Arcan
$ nix-build -A arcan
these derivations will be built:
/nix/store/y89l0jp39ayfzf0n3i6m5mqkkbq4vdx3-arcan-master.drv
building '/nix/store/y89l0jp39ayfzf0n3i6m5mqkkbq4vdx3-arcan-master.drv'...
unpacking sources
unpacking source archive /nix/store/ciacybnvkpdyxhhi8lg224r037l334km-source
source root is source
'source/external/git/luajit' -> '/nix/store/q8jjxs2bb5wgammhrhj3r6akxkxwani4-source'
'source/external/git/freetype' -> '/nix/store/g1v1303817n0gap10lnxgclrm5zhk9xx-freetype-2.10.4.tar.xz'
'source/external/git/openal' -> '/nix/store/hs28gwfaidfk65yx5n08fw89w9h0ggmy-source'
'source/external/git/libuvc' -> '/nix/store/gsq0wiv0di91bvy17f72idmkhvpyp3i2-source'
/build/source/doc /build
/build
patching sources
applying patch /nix/store/23a6mii03c05khppdvhqfvgv5azlwzn1-nosuid.patch
patching file src/CMakeLists.txt
configuring
fixing cmake files...
cmake flags: -DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_BUILD_RPATH=ON -DBUILD_TESTING=OFF -DCMAKE_INSTALL_LOCALEDIR=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master/share/locale -DCMAKE_INSTALL_LIBEXECDIR=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master/libexec -DCMAKE_INSTALL_LIBDIR=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master/lib -DCMAKE_INSTALL_DOCDIR=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master/share/doc/arcan -DCMAKE_INSTALL_INFODIR=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master/share/info -DCMAKE_INSTALL_MANDIR=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master/share/man -DCMAKE_INSTALL_OLDINCLUDEDIR=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master/include -DCMAKE_INSTALL_INCLUDEDIR=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master/include -DCMAKE_INSTALL_SBINDIR=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master/sbin -DCMAKE_INSTALL_BINDIR=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master/bin -DCMAKE_INSTALL_NAME_DIR=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master/lib -DCMAKE_POLICY_DEFAULT_CMP0025=NEW -DCMAKE_OSX_SYSROOT= -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_STRIP=/nix/store/7m6p435s1c9ysfs266n9ppfw9zkii697-binutils-2.35.1/bin/strip -DCMAKE_RANLIB=/nix/store/7m6p435s1c9ysfs266n9ppfw9zkii697-binutils-2.35.1/bin/ranlib -DCMAKE_AR=/nix/store/7m6p435s1c9ysfs266n9ppfw9zkii697-binutils-2.35.1/bin/ar -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_INSTALL_PREFIX=/nix/store/13jcj6g5v6f85d5hzashzja4gqln1v77-arcan-master -DBUILD_PRESET=everything -DISTR_TAG=Nixpkgs -DENGINE_BUILDTAG=master+Nixpkgs ../src
Build Presets:
-DBUILD_PRESET=everything client
Audio/Video/Input Support:
-DVIDEO_PLATFORM=egl-dri, sdl, sdl2, egl-gles
-DAGP_PLATFORM=gl21, gles2, gles3, stub
VIDEO_PLATFORM=egl-dri options:
-DHYBRID_SDL=[Off|On] - Enable arcan_sdl output build
-DHYBRID_HEADLESS=[Off|On] - Enable arcan_headless output build
Cmake Options:
-DCMAKE_BUILD_TYPE=[Debug|Release|Profile|DebugTrace]
-DENABLE_WALL_SPAM=[Off|On] - More build warnings
-DENABLE_SIMD=[On|Off] - Enable SIMD optimized instructions
-DSIMD_ALIGNED=[Off|On] - SIMD support assumes 16-byte alignment
-DENABLE_LTO=[Off|On] - Build with Link-Time Optimizations
Dependency Management:
-DSTATIC_SQLite3=[Off|On] - In-source SQLite3
-DSTATIC_OPENAL=[Off|On] - In-source OpenAL, see external/README
-DSTATIC_FREETYPE=[Off|On] - In-source Freetype
-DSTATIC_LIBUVC=[Off|On] - In-source libuvc
Optional engine flags:
-DENABLE_LWA=[Off|On] - Build LWA Arcan client (nesting support)
-DDISABLE_JIT=[Off|On] - Don't Link with luajit51 (even if found)
-DBUILTIN_LUA=[Off|On] - Static build lua51 (with disable_jit)
-DNO_FSRV=[Off|On] - Build Arcan without support for frameservers
-DSHMIF_DISABLE_DEBUGIF=[Off|On] - Remove server- controlled debug layer
Frameserver flags:
Decode:
-DFSRV_DECODE_UVC=[Off|On] - Add support for libuvc- USB video cameras
Terminal:
-DFSRV_TERMINAL_NOEXEC=[Off|On] - Lock down 'exec' path from scripts
Install / Autodetection Overrides:
-D(DISABLE_FSRV_ (encode, decode, net, remoting, terminal, game)=ON
-D(APPL_DEST, RES_DEST, APIMAN_DEST, MAN_DEST, SCRIPTS_DEST)=/some/path
------------- Configuration Results ---------------
-- Stage 1: dependencies and configuration
evdev libxkbcommon
CMake Error at CMakeLists.txt:8 (_message):
error: could not find git for clone of luajit
Call Stack (most recent call first):
/nix/store/yb03if8wrzdzd4f4rnmaxkj7mr58l0w5-cmake-3.19.7/share/cmake-3.19/Modules/ExternalProject.cmake:2542 (message)
/nix/store/yb03if8wrzdzd4f4rnmaxkj7mr58l0w5-cmake-3.19.7/share/cmake-3.19/Modules/ExternalProject.cmake:3430 (_ep_add_download_command)
CMakeLists.txt:421 (ExternalProject_Add)
-- Configuring incomplete, errors occurred!
See also "/build/source/build/CMakeFiles/CMakeOutput.log".
See also "/build/source/build/CMakeFiles/CMakeError.log".
builder for '/nix/store/y89l0jp39ayfzf0n3i6m5mqkkbq4vdx3-arcan-master.drv' failed with exit code 1
error: build of '/nix/store/y89l0jp39ayfzf0n3i6m5mqkkbq4vdx3-arcan-master.drv' failed
And when I add git
to nativeBuildInputs
:
$ nix-build -A arcan
these derivations will be built:
/nix/store/n7zi9mh5qx70vbghnj5cy1ifj78g5lx6-arcan-master.drv
building '/nix/store/n7zi9mh5qx70vbghnj5cy1ifj78g5lx6-arcan-master.drv'...
unpacking sources
unpacking source archive /nix/store/ciacybnvkpdyxhhi8lg224r037l334km-source
source root is source
'source/external/git/luajit' -> '/nix/store/q8jjxs2bb5wgammhrhj3r6akxkxwani4-source'
'source/external/git/freetype' -> '/nix/store/g1v1303817n0gap10lnxgclrm5zhk9xx-freetype-2.10.4.tar.xz'
'source/external/git/openal' -> '/nix/store/hs28gwfaidfk65yx5n08fw89w9h0ggmy-source'
'source/external/git/libuvc' -> '/nix/store/gsq0wiv0di91bvy17f72idmkhvpyp3i2-source'
/build/source/doc /build
/build
patching sources
applying patch /nix/store/23a6mii03c05khppdvhqfvgv5azlwzn1-nosuid.patch
patching file src/CMakeLists.txt
configuring
fixing cmake files...
cmake flags: -DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_BUILD_RPATH=ON -DBUILD_TESTING=OFF -DCMAKE_INSTALL_LOCALEDIR=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master/share/locale -DCMAKE_INSTALL_LIBEXECDIR=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master/libexec -DCMAKE_INSTALL_LIBDIR=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master/lib -DCMAKE_INSTALL_DOCDIR=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master/share/doc/arcan -DCMAKE_INSTALL_INFODIR=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master/share/info -DCMAKE_INSTALL_MANDIR=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master/share/man -DCMAKE_INSTALL_OLDINCLUDEDIR=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master/include -DCMAKE_INSTALL_INCLUDEDIR=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master/include -DCMAKE_INSTALL_SBINDIR=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master/sbin -DCMAKE_INSTALL_BINDIR=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master/bin -DCMAKE_INSTALL_NAME_DIR=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master/lib -DCMAKE_POLICY_DEFAULT_CMP0025=NEW -DCMAKE_OSX_SYSROOT= -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_STRIP=/nix/store/7m6p435s1c9ysfs266n9ppfw9zkii697-binutils-2.35.1/bin/strip -DCMAKE_RANLIB=/nix/store/7m6p435s1c9ysfs266n9ppfw9zkii697-binutils-2.35.1/bin/ranlib -DCMAKE_AR=/nix/store/7m6p435s1c9ysfs266n9ppfw9zkii697-binutils-2.35.1/bin/ar -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_INSTALL_PREFIX=/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master -DBUILD_PRESET=everything -DISTR_TAG=Nixpkgs -DENGINE_BUILDTAG=master+Nixpkgs ../src
Build Presets:
-DBUILD_PRESET=everything client
Audio/Video/Input Support:
-DVIDEO_PLATFORM=egl-dri, sdl, sdl2, egl-gles
-DAGP_PLATFORM=gl21, gles2, gles3, stub
VIDEO_PLATFORM=egl-dri options:
-DHYBRID_SDL=[Off|On] - Enable arcan_sdl output build
-DHYBRID_HEADLESS=[Off|On] - Enable arcan_headless output build
Cmake Options:
-DCMAKE_BUILD_TYPE=[Debug|Release|Profile|DebugTrace]
-DENABLE_WALL_SPAM=[Off|On] - More build warnings
-DENABLE_SIMD=[On|Off] - Enable SIMD optimized instructions
-DSIMD_ALIGNED=[Off|On] - SIMD support assumes 16-byte alignment
-DENABLE_LTO=[Off|On] - Build with Link-Time Optimizations
Dependency Management:
-DSTATIC_SQLite3=[Off|On] - In-source SQLite3
-DSTATIC_OPENAL=[Off|On] - In-source OpenAL, see external/README
-DSTATIC_FREETYPE=[Off|On] - In-source Freetype
-DSTATIC_LIBUVC=[Off|On] - In-source libuvc
Optional engine flags:
-DENABLE_LWA=[Off|On] - Build LWA Arcan client (nesting support)
-DDISABLE_JIT=[Off|On] - Don't Link with luajit51 (even if found)
-DBUILTIN_LUA=[Off|On] - Static build lua51 (with disable_jit)
-DNO_FSRV=[Off|On] - Build Arcan without support for frameservers
-DSHMIF_DISABLE_DEBUGIF=[Off|On] - Remove server- controlled debug layer
Frameserver flags:
Decode:
-DFSRV_DECODE_UVC=[Off|On] - Add support for libuvc- USB video cameras
Terminal:
-DFSRV_TERMINAL_NOEXEC=[Off|On] - Lock down 'exec' path from scripts
Install / Autodetection Overrides:
-D(DISABLE_FSRV_ (encode, decode, net, remoting, terminal, game)=ON
-D(APPL_DEST, RES_DEST, APIMAN_DEST, MAN_DEST, SCRIPTS_DEST)=/some/path
------------- Configuration Results ---------------
-- Stage 1: dependencies and configuration
evdev libxkbcommon
linux-usb detected
---- Configuration results:
compiler GNU
video egl-dri
+support sdl platform
+support headless platform
accel gl21
audio openal
input evdev
headless egl-dri-rnode
lua luajit51 static
-- Stage 2, Frameservers and external clients
(a12) ffmpeg support found, H264 enc/dec enabled
wayland support enabled
game/retro 3D support (lwa)
(decode) addding support for text-to-speech
(decode) adding support for probe (libmagic)
encode+opts tesseract+leptonica(ocr) vnc
encode-opts
remoting support: a12 vnc
frameservers terminal game net decode encode encode remoting avfeed
-- Stage 3, LWA Build
-- Stage 4, Linking / Packaging (=>/nix/store/0baj5nmjc11w5hf09z6w04yfvm9x7j20-arcan-master)
-- Appending sdl platform build--
-- Appending headless platform build--
egl-dri+privsep installing SUID
API- manpages mantmp found
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:
BUILD_TESTING
CMAKE_EXPORT_NO_PACKAGE_REGISTRY
CMAKE_POLICY_DEFAULT_CMP0025
ISTR_TAG
-- Build files have been written to: /build/source/build
cmake: enabled parallel building
building
build flags: -j4 -l4 SHELL=/nix/store/75d0ra57gdcsmgqrrx42lrpvx97bvynb-bash-4.4-p23/bin/bash
Scanning dependencies of target luajit
Scanning dependencies of target arcan_db
Scanning dependencies of target arcan_shmif
Scanning dependencies of target arcan_shmif_int
[ 0%] Creating directories for 'luajit'
[ 0%] Building C object CMakeFiles/arcan_db.dir/tools/db/dbtool.c.o
[ 0%] Building C object shmif/CMakeFiles/arcan_shmif.dir/arcan_shmif_control.c.o
[ 0%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/arcan_shmif_control.c.o
[ 0%] Performing download step (git clone) for 'luajit'
CMake Error at luajit-prefix/src/luajit-stamp/luajit-download-Release.cmake:49 (message):
Command failed: 1
'/nix/store/yb03if8wrzdzd4f4rnmaxkj7mr58l0w5-cmake-3.19.7/bin/cmake' '-P' '/build/source/build/luajit-prefix/tmp/luajit-gitclone.cmake'
See also
/build/source/build/luajit-prefix/src/luajit-stamp/luajit-download-*.log
make[2]: *** [CMakeFiles/luajit.dir/build.make:110: luajit-prefix/src/luajit-stamp/luajit-download] Error 1
make[1]: *** [CMakeFiles/Makefile2:678: CMakeFiles/luajit.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 0%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/arcan_shmif_sub.c.o
[ 0%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/arcan_shmif_evpack.c.o
[ 0%] Building C object CMakeFiles/arcan_db.dir/engine/arcan_db.c.o
[ 1%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/__/engine/arcan_trace.c.o
[ 1%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/arcan_shmif_debugif.c.o
[ 1%] Building C object CMakeFiles/arcan_db.dir/platform/posix/warning.c.o
[ 2%] Building C object CMakeFiles/arcan_db.dir/platform/posix/dbpath.c.o
[ 2%] Building C object CMakeFiles/arcan_db.dir/platform/stub/mem.c.o
[ 2%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/__/platform/posix/shmemop.c.o
[ 2%] Linking C executable arcan_db
[ 3%] Building C object shmif/CMakeFiles/arcan_shmif.dir/arcan_shmif_sub.c.o
[ 3%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/__/platform/posix/warning.c.o
[ 3%] Built target arcan_db
[ 3%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/__/platform/posix/fdpassing.c.o
[ 4%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/__/platform/posix/random.c.o
[ 4%] Building C object shmif/CMakeFiles/arcan_shmif.dir/arcan_shmif_evpack.c.o
[ 4%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/__/platform/posix/fdscan.c.o
[ 4%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/__/platform/posix/time.c.o
[ 4%] Building C object shmif/CMakeFiles/arcan_shmif_int.dir/__/platform/posix/sem.c.o
[ 4%] Building C object shmif/CMakeFiles/arcan_shmif.dir/__/engine/arcan_trace.c.o
[ 4%] Building C object shmif/CMakeFiles/arcan_shmif.dir/arcan_shmif_debugif.c.o
[ 4%] Building C object shmif/CMakeFiles/arcan_shmif.dir/__/platform/posix/shmemop.c.o
[ 5%] Linking C static library libarcan_shmif.a
[ 5%] Built target arcan_shmif_int
[ 6%] Building C object shmif/CMakeFiles/arcan_shmif.dir/__/platform/posix/warning.c.o
[ 6%] Building C object shmif/CMakeFiles/arcan_shmif.dir/__/platform/posix/fdpassing.c.o
[ 6%] Building C object shmif/CMakeFiles/arcan_shmif.dir/__/platform/posix/random.c.o
[ 6%] Building C object shmif/CMakeFiles/arcan_shmif.dir/__/platform/posix/fdscan.c.o
[ 7%] Building C object shmif/CMakeFiles/arcan_shmif.dir/__/platform/posix/time.c.o
[ 7%] Building C object shmif/CMakeFiles/arcan_shmif.dir/__/platform/posix/sem.c.o
[ 7%] Linking C shared library libarcan_shmif.so
[ 7%] Built target arcan_shmif
make: *** [Makefile:149: all] Error 2
builder for '/nix/store/n7zi9mh5qx70vbghnj5cy1ifj78g5lx6-arcan-master.drv' failed with exit code 2
error: build of '/nix/store/n7zi9mh5qx70vbghnj5cy1ifj78g5lx6-arcan-master.drv' failed