guix: Build dmg as a static binary

This relatively easy change eliminates all runtime dependencies (except
for the kernel) for dmg, which is the only native build tool that gets
put in our output tarballs.

This allows much more flexibility when constructing the codesigning
environment, and is much more robust.
This commit is contained in:
Carl Dong 2021-03-23 12:59:59 -04:00
parent 06d6cf6784
commit 7476b46f18
3 changed files with 8 additions and 4 deletions

View File

@ -54,6 +54,7 @@ store_path() {
# Set environment variables to point the NATIVE toolchain to the right # Set environment variables to point the NATIVE toolchain to the right
# includes/libs # includes/libs
NATIVE_GCC="$(store_path gcc-toolchain)" NATIVE_GCC="$(store_path gcc-toolchain)"
NATIVE_GCC_STATIC="$(store_path gcc-toolchain static)"
unset LIBRARY_PATH unset LIBRARY_PATH
unset CPATH unset CPATH
@ -62,7 +63,7 @@ unset CPLUS_INCLUDE_PATH
unset OBJC_INCLUDE_PATH unset OBJC_INCLUDE_PATH
unset OBJCPLUS_INCLUDE_PATH unset OBJCPLUS_INCLUDE_PATH
export LIBRARY_PATH="${NATIVE_GCC}/lib:${NATIVE_GCC}/lib64" export LIBRARY_PATH="${NATIVE_GCC}/lib:${NATIVE_GCC}/lib64:${NATIVE_GCC_STATIC}/lib:${NATIVE_GCC_STATIC}/lib64"
export C_INCLUDE_PATH="${NATIVE_GCC}/include" export C_INCLUDE_PATH="${NATIVE_GCC}/include"
export CPLUS_INCLUDE_PATH="${NATIVE_GCC}/include/c++:${NATIVE_GCC}/include" export CPLUS_INCLUDE_PATH="${NATIVE_GCC}/include/c++:${NATIVE_GCC}/include"
export OBJC_INCLUDE_PATH="${NATIVE_GCC}/include" export OBJC_INCLUDE_PATH="${NATIVE_GCC}/include"
@ -76,8 +77,9 @@ case "$HOST" in
*darwin*) *darwin*)
# When targeting darwin, zlib is required by native_libdmg-hfsplus. # When targeting darwin, zlib is required by native_libdmg-hfsplus.
zlib_store_path=$(store_path "zlib") zlib_store_path=$(store_path "zlib")
zlib_static_store_path=$(store_path "zlib" static)
prepend_to_search_env_var LIBRARY_PATH "${zlib_store_path}/lib" prepend_to_search_env_var LIBRARY_PATH "${zlib_static_store_path}/lib:${zlib_store_path}/lib"
prepend_to_search_env_var C_INCLUDE_PATH "${zlib_store_path}/include" prepend_to_search_env_var C_INCLUDE_PATH "${zlib_store_path}/include"
prepend_to_search_env_var CPLUS_INCLUDE_PATH "${zlib_store_path}/include" prepend_to_search_env_var CPLUS_INCLUDE_PATH "${zlib_store_path}/include"
prepend_to_search_env_var OBJC_INCLUDE_PATH "${zlib_store_path}/include" prepend_to_search_env_var OBJC_INCLUDE_PATH "${zlib_store_path}/include"

View File

@ -214,6 +214,7 @@ chain for " target " development."))
gzip gzip
xz xz
zlib zlib
(list zlib "static")
;; Build tools ;; Build tools
gnu-make gnu-make
libtool libtool
@ -227,7 +228,8 @@ chain for " target " development."))
;; Git ;; Git
git git
;; Native gcc 7 toolchain ;; Native gcc 7 toolchain
gcc-toolchain-7) gcc-toolchain-7
(list gcc-toolchain-7 "static"))
(let ((target (getenv "HOST"))) (let ((target (getenv "HOST")))
(cond ((string-suffix? "-mingw32" target) (cond ((string-suffix? "-mingw32" target)
;; Windows ;; Windows

View File

@ -12,7 +12,7 @@ define $(package)_preprocess_cmds
endef endef
define $(package)_config_cmds define $(package)_config_cmds
$($(package)_cmake) -DCMAKE_C_FLAGS="$$($(1)_cflags) -Wl,--build-id=none" -DCMAKE_SKIP_RPATH="ON" .. $($(package)_cmake) -DCMAKE_C_FLAGS="$$($(1)_cflags) -Wl,--build-id=none" -DCMAKE_SKIP_RPATH="ON" -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_FIND_LIBRARY_SUFFIXES=".a" ..
endef endef
define $(package)_build_cmds define $(package)_build_cmds