diff --git a/.gitignore b/.gitignore index db636cbee..acdad780d 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ *.dir *~ .build +*.sw? diff --git a/Packaging/Sources/1_build_libcorefoundation.sh b/Packaging/Sources/1_build_libcorefoundation.sh index 27e0e0a4a..76fadc64f 100755 --- a/Packaging/Sources/1_build_libcorefoundation.sh +++ b/Packaging/Sources/1_build_libcorefoundation.sh @@ -7,7 +7,7 @@ ${ECHO} ">>> Installing ${OS_ID} packages for CoreFoundation library build" if [ ${OS_ID} = "freebsd" ]; then ${ECHO} "FreeBSD: calling 'pkg install'..." - sudo pkg install --yes --quiet ${CORE_SYSTEM_DEPS} + ${PRIV_CMD} pkg install --yes --quiet ${CORE_SYSTEM_DEPS} elif [ ${OS_ID} = "debian" ] || [ ${OS_ID} = "ubuntu" ]; then ${ECHO} "Debian-based Linux distribution: calling 'apt-get install'." sudo apt-get install -y ${RUNTIME_DEPS} || exit 1 @@ -40,16 +40,16 @@ cd ${BUILD_ROOT}/${CF_PKG_NAME} || exit 1 rm -rf .build 2>/dev/null mkdir -p .build cd .build -C_FLAGS="-I/usr/local/include -I/usr/NextSpace/include -Wno-switch -Wno-enum-conversion" +C_FLAGS="-I/usr/local/include -I${NEXTSPACE_ROOT}/include -Wno-switch -Wno-enum-conversion" $CMAKE_CMD .. \ -DCMAKE_C_COMPILER=${C_COMPILER} \ -DCMAKE_C_FLAGS="${C_FLAGS}" \ - -DCMAKE_SHARED_LINKER_FLAGS="-L/usr/local/lib -L/usr/NextSpace/lib -luuid" \ + -DCMAKE_SHARED_LINKER_FLAGS="-L/usr/local/lib -L${NEXTSPACE_ROOT}/lib -luuid" \ -DCF_DEPLOYMENT_SWIFT=NO \ -DBUILD_SHARED_LIBS=YES \ - -DCMAKE_INSTALL_PREFIX=/usr/NextSpace \ - -DCMAKE_INSTALL_LIBDIR=/usr/NextSpace/lib \ - -DCMAKE_LIBRARY_PATH=/usr/NextSpace/lib \ + -DCMAKE_INSTALL_PREFIX=${NEXTSPACE_ROOT} \ + -DCMAKE_INSTALL_LIBDIR=${NEXTSPACE_ROOT}/lib \ + -DCMAKE_LIBRARY_PATH=${NEXTSPACE_ROOT}/lib \ \ -DCMAKE_SKIP_RPATH=ON \ -DCMAKE_BUILD_TYPE=Debug \ @@ -65,16 +65,16 @@ if [ ${OS_ID} != "freebsd" ]; then rm -rf .build 2>/dev/null mkdir -p .build cd .build - CFN_CFLAGS="-F../../${CF_PKG_NAME}/.build -I/usr/local/include -I/usr/NextSpace/include" - CFN_LD_FLAGS="-L/usr/NextSpace/lib -L../../${CF_PKG_NAME}/.build/CoreFoundation.framework" + CFN_CFLAGS="-F../../${CF_PKG_NAME}/.build -I/usr/local/include -I${NEXTSPACE_ROOT}/include" + CFN_LD_FLAGS="-L${NEXTSPACE_ROOT}/lib -L../../${CF_PKG_NAME}/.build/CoreFoundation.framework" cmake .. \ -DCMAKE_C_COMPILER=${C_COMPILER} \ -DCMAKE_CXX_COMPILER=clang++ \ -DCFNETWORK_CFLAGS="${CFN_CFLAGS}" \ -DCFNETWORK_LDLAGS="${CFN_LD_FLAGS}" \ -DBUILD_SHARED_LIBS=YES \ - -DCMAKE_INSTALL_PREFIX=/usr/NextSpace \ - -DCMAKE_INSTALL_LIBDIR=/usr/NextSpace/lib \ + -DCMAKE_INSTALL_PREFIX=${NEXTSPACE_ROOT} \ + -DCMAKE_INSTALL_LIBDIR=${NEXTSPACE_ROOT}/lib \ \ -DCMAKE_SKIP_RPATH=ON \ -DCMAKE_BUILD_TYPE=Debug @@ -90,7 +90,7 @@ fi cd ${BUILD_ROOT}/${CF_PKG_NAME}/.build || exit 1 $INSTALL_CMD -CF_DIR=${DEST_DIR}/usr/NextSpace/Frameworks/CoreFoundation.framework +CF_DIR=${DEST_DIR}${NEXTSPACE_ROOT}/Frameworks/CoreFoundation.framework $MKDIR_CMD ${CF_DIR}/Versions/${libcorefoundation_version} cd $CF_DIR @@ -114,7 +114,7 @@ if [ ${OS_ID} != "freebsd" ]; then cd ${BUILD_ROOT}/${CFNET_PKG_NAME}/.build || exit 1 $INSTALL_CMD - CFNET_DIR=${DEST_DIR}/usr/NextSpace/Frameworks/CFNetwork.framework + CFNET_DIR=${DEST_DIR}${NEXTSPACE_ROOT}/Frameworks/CFNetwork.framework $MKDIR_CMD $CFNET_DIR/Versions/${libcfnetwork_version} cd $CFNET_DIR @@ -135,5 +135,11 @@ if [ ${OS_ID} != "freebsd" ]; then fi if [ "$DEST_DIR" = "" ]; then - sudo ldconfig + if [ ${OS_ID} = "freebsd" ]; then + ${ECHO} "Configuring ldconfig for NextSpace libraries..." + echo "${NEXTSPACE_ROOT}/lib" | ${PRIV_CMD} tee /usr/local/libdata/ldconfig/nextspace > /dev/null + ${PRIV_CMD} ldconfig -R + else + ${PRIV_CMD} ldconfig + fi fi diff --git a/Packaging/Sources/freebsd-15.deps.sh b/Packaging/Sources/freebsd-15.deps.sh index 2b0caaadb..b1236a92b 100644 --- a/Packaging/Sources/freebsd-15.deps.sh +++ b/Packaging/Sources/freebsd-15.deps.sh @@ -13,6 +13,7 @@ CORE_SYSTEM_DEPS=" curl libuuid pkgconf + cmake " # libwraster diff --git a/Packaging/environment.sh b/Packaging/environment.sh index 3e8950aef..8328bf3f7 100644 --- a/Packaging/environment.sh +++ b/Packaging/environment.sh @@ -56,6 +56,17 @@ else fi printf "OS:\t\t${OS_ID}-${OS_VERSION}\n" +#--------------------------------------- +# Privilege escalation command +#--------------------------------------- +if [ "$(id -u)" = "0" ]; then + PRIV_CMD="" +elif [ ${OS_ID} = "freebsd" ] && command -v doas >/dev/null 2>&1; then + PRIV_CMD="doas" +else + PRIV_CMD="sudo" +fi + #--------------------------------------- # Machine #--------------------------------------- @@ -81,6 +92,14 @@ PROJECT_DIR=`pwd` printf "NextSpace repo:\t${PROJECT_DIR}\n" cd ${_PWD} +# NextSpace installation root +if [ ${OS_ID} = "freebsd" ]; then + NEXTSPACE_ROOT="/usr/local/NextSpace" +else + NEXTSPACE_ROOT="/usr/NextSpace" +fi +printf "Install root:\t${NEXTSPACE_ROOT}\n" + if [ -z $BUILD_RPM ]; then BUILD_ROOT="${_PWD}/BUILD_ROOT" if [ ! -d ${BUILD_ROOT} ]; then @@ -133,11 +152,15 @@ if type "gmake" 2>/dev/null >/dev/null ;then else MAKE_CMD=make fi -# + if [ "$1" != "" ];then INSTALL_CMD="${MAKE_CMD} install DESTDIR=${1}" else - INSTALL_CMD="sudo -E ${MAKE_CMD} install" + if [ "$PRIV_CMD" = "sudo" ]; then + INSTALL_CMD="${PRIV_CMD} -E ${MAKE_CMD} install" + else + INSTALL_CMD="${PRIV_CMD} ${MAKE_CMD} install" + fi fi # Utilities @@ -148,11 +171,11 @@ if [ "$1" != "" ];then CP_CMD="cp -R" MKDIR_CMD="mkdir -p" else - RM_CMD="sudo rm" - LN_CMD="sudo ln -sf" - MV_CMD="sudo mv -v" - CP_CMD="sudo cp -R" - MKDIR_CMD="sudo mkdir -p" + RM_CMD="${PRIV_CMD} rm" + LN_CMD="${PRIV_CMD} ln -sf" + MV_CMD="${PRIV_CMD} mv -v" + CP_CMD="${PRIV_CMD} cp -R" + MKDIR_CMD="${PRIV_CMD} mkdir -p" fi # Linker diff --git a/Packaging/functions.sh b/Packaging/functions.sh index 15194a717..9bf210ca1 100644 --- a/Packaging/functions.sh +++ b/Packaging/functions.sh @@ -144,10 +144,5 @@ prepare_redhat_environment() prepare_freebsd_environment() { - pkg info --quiet sudo - if [ $? = 1 ];then - print_ERR "There's no 'sudo' package installed. Please run 'pkg install sudo' command as root." - exit 1 - fi - sudo pkg install --yes --quiet ${BUILD_TOOLS} + ${PRIV_CMD} pkg install --yes --quiet ${BUILD_TOOLS} }