Merge #16810: guix: Remove ssp spec file hack
0065ead5eb
contrib: guix: Remove ssp spec file hack (Carl Dong)0093a5869a
contrib: guix: More robust search paths, add checks (Carl Dong) Pull request description: See commit messages for more details ACKs for top commit: fanquake: ACK0065ead5eb
Tree-SHA512: fde04005fb31cd4b75b80da4936a7c394f63f0b3bdcc33c20c99e05604a63efd9c850a8d097030ff0bf4b4e83f1a9997fc4621ce291ebcecd8397893447600a7
This commit is contained in:
commit
e4b974830e
1 changed files with 25 additions and 17 deletions
|
@ -30,23 +30,38 @@ fi
|
||||||
# Given a package name and an output name, return the path of that output in our
|
# Given a package name and an output name, return the path of that output in our
|
||||||
# current guix environment
|
# current guix environment
|
||||||
store_path() {
|
store_path() {
|
||||||
grep --extended-regexp "/[^-]{32}-${1}-cross-${HOST}-[^-]+${2:+-${2}}" "${GUIX_ENVIRONMENT}/manifest" \
|
grep --extended-regexp "/[^-]{32}-${1}-[^-]+${2:+-${2}}" "${GUIX_ENVIRONMENT}/manifest" \
|
||||||
| head --lines=1 \
|
| head --lines=1 \
|
||||||
| sed --expression='s|^[[:space:]]*"||' \
|
| sed --expression='s|^[[:space:]]*"||' \
|
||||||
--expression='s|"[[:space:]]*$||'
|
--expression='s|"[[:space:]]*$||'
|
||||||
}
|
}
|
||||||
|
|
||||||
# Determine output paths to use in CROSS_* environment variables
|
# Determine output paths to use in CROSS_* environment variables
|
||||||
CROSS_GLIBC="$(store_path glibc)"
|
CROSS_GLIBC="$(store_path glibc-cross-${HOST})"
|
||||||
CROSS_GLIBC_STATIC="$(store_path glibc static)"
|
CROSS_GLIBC_STATIC="$(store_path glibc-cross-${HOST} static)"
|
||||||
CROSS_KERNEL="$(store_path linux-libre-headers)"
|
CROSS_KERNEL="$(store_path linux-libre-headers-cross-${HOST})"
|
||||||
CROSS_GCC="$(store_path gcc)"
|
CROSS_GCC="$(store_path gcc-cross-${HOST})"
|
||||||
|
CROSS_GCC_LIBS=( "${CROSS_GCC}/lib/gcc/${HOST}"/* ) # This expands to an array of directories...
|
||||||
|
CROSS_GCC_LIB="${CROSS_GCC_LIBS[0]}" # ...we just want the first one (there should only be one)
|
||||||
|
|
||||||
# Set environment variables to point Guix's cross-toolchain to the right
|
# Set environment variables to point Guix's cross-toolchain to the right
|
||||||
# includes/libs for $HOST
|
# includes/libs for $HOST
|
||||||
export CROSS_C_INCLUDE_PATH="${CROSS_GCC}/include:${CROSS_GLIBC}/include:${CROSS_KERNEL}/include"
|
#
|
||||||
export CROSS_CPLUS_INCLUDE_PATH="${CROSS_GCC}/include/c++:${CROSS_GLIBC}/include:${CROSS_KERNEL}/include"
|
# NOTE: CROSS_C_INCLUDE_PATH is missing ${CROSS_GCC_LIB}/include-fixed, because
|
||||||
export CROSS_LIBRARY_PATH="${CROSS_GLIBC}/lib:${CROSS_GLIBC_STATIC}/lib:${CROSS_GCC}/lib:${CROSS_GCC}/${HOST}/lib:${CROSS_KERNEL}/lib"
|
# the limits.h in it is missing a '#include_next <limits.h>'
|
||||||
|
#
|
||||||
|
export CROSS_C_INCLUDE_PATH="${CROSS_GCC_LIB}/include:${CROSS_GLIBC}/include:${CROSS_KERNEL}/include"
|
||||||
|
export CROSS_CPLUS_INCLUDE_PATH="${CROSS_GCC}/include/c++:${CROSS_GCC}/include/c++/${HOST}:${CROSS_GCC}/include/c++/backward:${CROSS_C_INCLUDE_PATH}"
|
||||||
|
export CROSS_LIBRARY_PATH="${CROSS_GCC}/lib:${CROSS_GCC}/${HOST}/lib:${CROSS_GCC_LIB}:${CROSS_GLIBC}/lib:${CROSS_GLIBC_STATIC}/lib"
|
||||||
|
|
||||||
|
# Sanity check CROSS_*_PATH directories
|
||||||
|
IFS=':' read -ra PATHS <<< "${CROSS_C_INCLUDE_PATH}:${CROSS_CPLUS_INCLUDE_PATH}:${CROSS_LIBRARY_PATH}"
|
||||||
|
for p in "${PATHS[@]}"; do
|
||||||
|
if [ ! -d "$p" ]; then
|
||||||
|
echo "'$p' doesn't exist or isn't a directory... Aborting..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
# Disable Guix ld auto-rpath behavior
|
# Disable Guix ld auto-rpath behavior
|
||||||
export GUIX_LD_WRAPPER_DISABLE_RPATH=yes
|
export GUIX_LD_WRAPPER_DISABLE_RPATH=yes
|
||||||
|
@ -121,17 +136,10 @@ DISTNAME="$(basename "$SOURCEDIST" '.tar.gz')"
|
||||||
# Binary Tarball Building #
|
# Binary Tarball Building #
|
||||||
###########################
|
###########################
|
||||||
|
|
||||||
# Create a spec file to normalize ssp linking behaviour
|
|
||||||
spec_file="$(mktemp)"
|
|
||||||
cat << EOF > "$spec_file"
|
|
||||||
*link_ssp:
|
|
||||||
%{fstack-protector|fstack-protector-all|fstack-protector-strong|fstack-protector-explicit:}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Similar flags to Gitian
|
# Similar flags to Gitian
|
||||||
CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports --disable-bench --disable-gui-tests"
|
CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports --disable-bench --disable-gui-tests"
|
||||||
HOST_CFLAGS="-O2 -g -specs=${spec_file} -ffile-prefix-map=${PWD}=."
|
HOST_CFLAGS="-O2 -g -ffile-prefix-map=${PWD}=."
|
||||||
HOST_CXXFLAGS="-O2 -g -specs=${spec_file} -ffile-prefix-map=${PWD}=."
|
HOST_CXXFLAGS="-O2 -g -ffile-prefix-map=${PWD}=."
|
||||||
HOST_LDFLAGS="-Wl,--as-needed -Wl,--dynamic-linker=$glibc_dynamic_linker -static-libstdc++"
|
HOST_LDFLAGS="-Wl,--as-needed -Wl,--dynamic-linker=$glibc_dynamic_linker -static-libstdc++"
|
||||||
|
|
||||||
# Make $HOST-specific native binaries from depends available in $PATH
|
# Make $HOST-specific native binaries from depends available in $PATH
|
||||||
|
|
Loading…
Reference in a new issue