diff --git a/xbps-src/libexec/xbps-src-doinst-helper.sh.in b/xbps-src/libexec/xbps-src-doinst-helper.sh.in index 33faeec34f..2423276953 100644 --- a/xbps-src/libexec/xbps-src-doinst-helper.sh.in +++ b/xbps-src/libexec/xbps-src-doinst-helper.sh.in @@ -40,28 +40,6 @@ set_defvars . $XBPS_SHUTILSDIR/common_funcs.sh . $XBPS_SHUTILSDIR/builddep_funcs.sh -strip_files() -{ - local lver="$1" - - if [ ! -x /usr/bin/strip ]; then - return 0 - fi - [ -n "$nostrip" ] && return 0 - - msg_normal "Package '$pkgname ($lver)': stripping files, please wait..." - for f in $(find ${DESTDIR} -type f); do - case "$(file -biz $f)" in - application/x-executable*) - /usr/bin/strip $f && \ - echo " Stripped executable: $(basename $f)";; - application/x-sharedlib*|application/x-archive*) - /usr/bin/strip -S $f && \ - echo " Stripped library: $(basename $f)";; - esac - done -} - install_src_phase() { local f i subpkg lver spkgrev saved_wrksrc @@ -160,11 +138,6 @@ install_src_phase() msg_normal "Package '$pkgname ($lver)': removing empty dirs..." find ${DESTDIR} -depth -type d -exec rmdir 2>/dev/null {} \; fi - # Strip bins/libs. - if [ -z "$noarch" ]; then - strip_files "$lver" - fi - msg_normal "Package '$pkgname ($lver)': installed into destdir." if [ "$build_style" != "custom-install" -a -z "$distfiles" ]; then @@ -216,7 +189,6 @@ install_src_phase() # # Installs a package via 'make install ...'. # - make_install() { local lver="$1" @@ -224,10 +196,7 @@ make_install() if [ -z "$make_install_target" ]; then make_install_target="DESTDIR=${DESTDIR} install" fi - [ -z "$make_cmd" ] && make_cmd=make - . $XBPS_SHUTILSDIR/buildvars_funcs.sh - # # Install package via make. # diff --git a/xbps-src/shutils/build_funcs.sh b/xbps-src/shutils/build_funcs.sh index 687eed96d9..c2f484ac8d 100644 --- a/xbps-src/shutils/build_funcs.sh +++ b/xbps-src/shutils/build_funcs.sh @@ -74,9 +74,6 @@ build_src_phase() fi fi - . $XBPS_SHUTILSDIR/buildvars_funcs.sh - set_build_vars - msg_normal "Package '$pkgname ($lver)': running build phase." if [ "$build_style" = "custom-install" ]; then @@ -109,7 +106,6 @@ build_src_phase() fi unset makejobs - unset_build_vars touch -f $XBPS_BUILD_DONE } diff --git a/xbps-src/shutils/configure_funcs.sh b/xbps-src/shutils/configure_funcs.sh index 698a779510..01c1c90694 100644 --- a/xbps-src/shutils/configure_funcs.sh +++ b/xbps-src/shutils/configure_funcs.sh @@ -84,9 +84,6 @@ configure_src_phase() cd $build_wrksrc || return 1 fi - . $XBPS_SHUTILSDIR/buildvars_funcs.sh - set_build_vars - case "$build_style" in gnu_configure|gnu-configure) # @@ -141,7 +138,6 @@ configure_src_phase() for f in ${configure_env}; do unset eval ${f%=*} done - unset_build_vars touch -f $XBPS_CONFIGURE_DONE } diff --git a/xbps-src/shutils/pkgtarget_funcs.sh.in b/xbps-src/shutils/pkgtarget_funcs.sh.in index 0351d5c7bd..a745014aa1 100644 --- a/xbps-src/shutils/pkgtarget_funcs.sh.in +++ b/xbps-src/shutils/pkgtarget_funcs.sh.in @@ -25,6 +25,34 @@ . ${XBPS_SHUTILSDIR}/tmpl_funcs.sh +strip_files() +{ + local lver + + if ! command -v strip 2>&1 >/dev/null; then + return 0 + fi + [ -n "$nostrip" ] && return 0 + + if [ -n "$revision" ]; then + lver="${version}_${revision}" + else + lver="${version}" + fi + + msg_normal "Package '$pkgname ($lver)': stripping files, please wait..." + for f in $(find ${DESTDIR} -type f); do + case "$(file -biz $f)" in + application/x-executable*) + strip $f && \ + echo " Stripped executable: $(basename $f)";; + application/x-sharedlib*|application/x-archive*) + strip -S $f && \ + echo " Stripped library: $(basename $f)";; + esac + done +} + # # Installs a pkg by reading its build template file. # @@ -42,10 +70,7 @@ install_pkg() fi pkg="$curpkgn-$version" - if [ -n "$doing_deps" ]; then - reset_tmpl_vars - setup_tmpl $curpkgn - fi + [ -n "$doing_deps" ] && setup_tmpl $curpkgn # # Refuse to install the same package that is already installed. @@ -112,7 +137,6 @@ install_pkg() fi # Install pkg into destdir. - set_build_vars env xbps_machine=${xbps_machine} MASTERDIR=${_MASTERDIR} \ dontrm_builddir=${dontrm_builddir} wrksrc=${wrksrc} \ ${fakeroot_cmd} ${fakeroot_cmd_args} \ @@ -122,7 +146,12 @@ install_pkg() msg_red "xbps-src-doinst-helper failed for '$pkgname'!" return 1 fi - unset_build_vars + + # Strip binaries/libraries. + if [ -z "$noarch" ]; then + . $XBPS_SHUTILSDIR/strip_files.sh + strip_files + fi # Always write metadata to package's destdir. . $XBPS_SHUTILSDIR/metadata.sh diff --git a/xbps-src/shutils/buildvars_funcs.sh b/xbps-src/shutils/strip_files.sh similarity index 51% rename from xbps-src/shutils/buildvars_funcs.sh rename to xbps-src/shutils/strip_files.sh index bda8015509..06bb225366 100644 --- a/xbps-src/shutils/buildvars_funcs.sh +++ b/xbps-src/shutils/strip_files.sh @@ -1,5 +1,5 @@ #- -# Copyright (c) 2008-2010 Juan Romero Pardines. +# Copyright (c) 2010 Juan Romero Pardines. # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -23,47 +23,47 @@ # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #- -# -# Functions to set some env vars required to build the packages -# required by the xbps-base-chroot package. -# +. ${XBPS_SHUTILSDIR}/tmpl_funcs.sh -set_build_vars() +strip_files() { - local LDLIBPATH + local subpkg - if [ -z "$in_chroot" ]; then - SAVE_LDLIBPATH=$LD_LIBRARY_PATH - LDFLAGS="-L$XBPS_MASTERDIR/usr/lib" - if [ -d /usr/lib/libfakeroot ]; then - LDLIBPATH="/usr/lib/libfakeroot:$XBPS_MASTERDIR/usr/lib" - else - LDLIBPATH="$XBPS_MASTERDIR/usr/lib" - fi - if [ -n "$BUILD_32BIT" ]; then - LDLIBPATH="/lib32:/usr/lib32:$LDLIBPATH" - LDFLAGS="-L/lib32 -L/usr/lib32 $LDFLAGS" - export PATH="/bin:/usr/bin:$PATH" - export CC="gcc -m32" - export CXX="g++ -m32" - fi - export CPPFLAGS="-I$XBPS_MASTERDIR/usr/include" - export LDFLAGS="$LDFLAGS" - export LD_LIBRARY_PATH="$LDLIBPATH" - fi - export PKG_CONFIG="$XBPS_MASTERDIR/usr/bin/pkg-config" - export PKG_CONFIG_LIBDIR="$XBPS_MASTERDIR/usr/lib/pkgconfig" - export CFLAGS="$CFLAGS $XBPS_CFLAGS" - export CXXFLAGS="$CXXFLAGS $XBPS_CXXFLAGS" + for subpkg in ${subpackages}; do + . $XBPS_SRCPKGDIR/${sourcepkg}/${subpkg}.template + pkgname=${subpkg} + set_tmpl_common_vars + strip_files_real + setup_tmpl ${sourcepkg} + done + + strip_files_real } -unset_build_vars() +strip_files_real() { - if [ -z "$in_chroot" ]; then - unset LD_LIBRARY_PATH LDFLAGS - export LD_LIBRARY_PATH=$SAVE_LDLIBPATH - [ -n "$BUILD_32BIT" ] && unset CC CXX + local lver + + if ! command -v strip 2>&1 >/dev/null; then + return 0 fi - unset PKG_CONFIG PKG_CONFIG_LIBDIR - unset CPPFLAGS CFLAGS CXXFLAGS + [ -n "$nostrip" ] && return 0 + + if [ -n "$revision" ]; then + lver="${version}_${revision}" + else + lver="${version}" + fi + + msg_normal "Package '$pkgname ($lver)': stripping files, please wait..." + for f in $(find ${DESTDIR} -type f); do + case "$(file -biz $f)" in + application/x-executable*) + strip $f && \ + echo " Stripped executable: $(basename $f)";; + application/x-sharedlib*|application/x-archive*) + strip -S $f && \ + echo " Stripped library: $(basename $f)";; + esac + done } diff --git a/xbps-src/shutils/tmpl_funcs.sh.in b/xbps-src/shutils/tmpl_funcs.sh.in index 4978da437c..8f6b77e7ff 100644 --- a/xbps-src/shutils/tmpl_funcs.sh.in +++ b/xbps-src/shutils/tmpl_funcs.sh.in @@ -61,7 +61,6 @@ info_tmpl() # reset_tmpl_vars() { - local v= local TMPL_VARS="pkgname distfiles configure_args configure_env \ make_build_args make_install_args build_style \ short_desc maintainer long_desc checksum wrksrc \ @@ -81,14 +80,9 @@ reset_tmpl_vars() pre_remove post_remove post_stow do_build do_install \ XBPS_EXTRACT_DONE XBPS_CONFIGURE_DONE \ XBPS_BUILD_DONE XBPS_INSTALL_DONE FILESDIR DESTDIR \ - SRCPKGDESTDIR PATCHESDIR" - - for v in ${TMPL_VARS}; do - eval unset "$v" - done - - . $XBPS_SHUTILSDIR/buildvars_funcs.sh - unset_build_vars + SRCPKGDESTDIR PATCHESDIR CFLAGS CXXFLAGS CPPFLAGS \ + CC CXX LDFLAGS LD_LIBRARY_PATH" + eval unset "$TMPL_VARS" } # @@ -99,6 +93,7 @@ setup_tmpl() local pkg="$1" [ -z "$pkg" ] && return 1 + if [ "$pkgname" = "$pkg" ]; then [ -n "$DESTDIR" ] && return 0 fi @@ -111,7 +106,6 @@ setup_tmpl() reset_tmpl_vars . $XBPS_SRCPKGDIR/${pkg}/template prepare_tmpl - set_build_vars else msg_error "Cannot find $pkg build template file." fi @@ -242,14 +236,6 @@ prepare_tmpl() XBPS_POST_INSTALL_DONE="$wrksrc/.xbps_post_install_done" set_tmpl_common_vars - - if [ -z "$in_chroot" ]; then - export PATH="$XBPS_MASTERDIR/bin:$XBPS_MASTERDIR/sbin" - export PATH="$PATH:$XBPS_MASTERDIR/usr/bin" - export PATH="$PATH:$XBPS_MASTERDIR/usr/sbin" - export PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin" - export PATH="$PATH:/sbin:@@XBPS_INSTALL_PREFIX@@/sbin" - fi } remove_tmpl_wrksrc() @@ -260,7 +246,7 @@ remove_tmpl_wrksrc() return 1 fi - msg_normal "Cleaning '$pkgname' build directory... " + msg_normal "Cleaning '${sourcepkg}' build directory... " rm -rf $lwrksrc return $? } @@ -276,4 +262,24 @@ set_tmpl_common_vars() sourcepkg=${pkgname} fi SRCPKGDESTDIR=${XBPS_DESTDIR}/${sourcepkg}-${version} + + export CFLAGS="$XBPS_CFLAGS" + export CXXFLAGS="$XBPS_CXXFLAGS" + export CPPFLAGS="-I$XBPS_MASTERDIR/usr/include" + + if [ -z "$in_chroot" ]; then + if [ -d /usr/lib/libfakeroot ]; then + LDLIBPATH="/usr/lib/libfakeroot:$XBPS_MASTERDIR/usr/lib" + else + LDLIBPATH="$XBPS_MASTERDIR/usr/lib" + fi + if [ -n "$BUILD_32BIT" ]; then + export CC="gcc -m32" + export CXX="g++ -m32" + LDLIBPATH="$LDLIBPATH:/lib32:/usr/lib32" + LDFLAGS="-L/lib32 -L/usr/lib32" + fi + export LDFLAGS="$LDFLAGS -L$XBPS_MASTERDIR/usr/lib" + export LD_LIBRARY_PATH="$LDLIBPATH" + fi } diff --git a/xbps-src/xbps-src.sh.in b/xbps-src/xbps-src.sh.in index 5f4b88df20..06e77bcea5 100644 --- a/xbps-src/xbps-src.sh.in +++ b/xbps-src/xbps-src.sh.in @@ -138,32 +138,40 @@ run_file() check_config_vars() { - local val cffound f + local val cffound f cfpaths cf="xbps-src.conf" - if [ -z "$config_file_specified" ]; then - config_file_paths="$XBPS_CONFIG_FILE ./etc/xbps-src.conf" - for f in $config_file_paths; do - [ -f $f ] && XBPS_CONFIG_FILE=$f && \ - cffound=yes && break + if [ -z "$XBPS_CONFIG_FILE" ]; then + cfpaths="@@XBPS_INSTALL_PREFIX@@/etc/${cf} ./etc/${cf}" + for f in $cfpaths; do + if [ -f ${f} ]; then + XBPS_CONFIG_FILE=${f} + cffound=yes + break + fi done [ -z "$cffound" ] && msg_error "cannot find a config file" fi run_file ${XBPS_CONFIG_FILE} - XBPS_CONFIG_FILE=$path_fixed + export XBPS_CONFIG_FILE=$path_fixed if [ ! -f "$XBPS_CONFIG_FILE" ]; then msg_error "cannot find configuration file: $XBPS_CONFIG_FILE" fi - eval val="\$XBPS_MASTERDIR" - [ -z "$val" ] && msg_error "'XBPS_MASTERDIR' not set in configuration file" - if [ ! -d "$val" ]; then - mkdir "$val" - [ $? -ne 0 ] && msg_error "couldn't create 'XBPS_MASTERDIR' directory" + for f in XBPS_DISTRIBUTIONDIR XBPS_MASTERDIR; do + eval val="\$${f}" + if [ -z "$val" ]; then + msg_error "'${f}' not set in configuration file!" + fi + done + if [ ! -d "$XBPS_MASTERDIR" ]; then + mkdir -p "$val" + if [ $? -ne 0 ]; then + msg_error "couldn't create 'XBPS_MASTERDIR' directory" + fi fi - - export PATH="@@XBPS_INSTALL_PREFIX@@/sbin:$PATH" + export _MASTERDIR="$XBPS_MASTERDIR" } # @@ -172,7 +180,7 @@ check_config_vars() while getopts "Cc:hm:p:" opt; do case $opt in C) export dontrm_builddir=yes;; - c) config_file_specified=yes; XBPS_CONFIG_FILE="$OPTARG";; + c) XBPS_CONFIG_FILE="$OPTARG";; h) usage && exit 0;; m) _MASTERDIR="$OPTARG" @@ -205,6 +213,10 @@ fi # check_reqhost_utils +if [ -n "$in_chroot" ]; then + XBPS_CONFIG_FILE="/usr/local/etc/xbps-src.conf" +fi + # # Check configuration vars before anyting else, and set defaults vars. # @@ -217,6 +229,9 @@ set_defvars . $XBPS_SHUTILSDIR/common_funcs.sh +# +# Fix up some vars when XBPS_USE_CAPABILITIES is set. +# if [ -n "$XBPS_USE_CAPABILITIES" ]; then chroot_cmd="@@XBPS_INSTALL_LIBEXECDIR@@/xbps-src-capchroot" unset sudo_cmd @@ -234,7 +249,25 @@ fi [ -z "$dontrm_builddir" ] && dontrm_builddir=no -# Main switch +# +# Sanitize PATH. +# +if [ -z "$in_chroot" ]; then + # In non chroot case always prefer host tools. + MYPATH="/bin:/usr/bin:/sbin:/usr/sbin:$MYPATH" + MYPATH="$XBPS_MASTERDIR/bin:$XBPS_MASTERDIR/usr/bin:$MYPATH" + MYPATH="$XBPS_MASTERDIR/usr/local/bin:$MYPATH" + MYPATH="$XBPS_MASTERDIR/usr/local/sbin:$MYPATH" +else + # In chroot always prefer tools from bootstrap. + MYPATH="/tools/bin:/usr/local/sbin:/usr/local/bin" + MYPATH="/bin:/sbin:/usr/bin:/usr/sbin:$MYPATH" +fi +export PATH="$MYPATH" + +# +# Main switch. +# case "$target" in bootstrap) . $XBPS_SHUTILSDIR/tmpl_funcs.sh