xbps-src: multiple changes to improve infrastructure.

- Remove buildvars_funcs.sh, its code has been moved into set_tmpl_common_vars().
- Move stripping code into its own file, and don't run it via fakeroot.
- Remove unnecesary reset_tmpl_vars() call in install_pkg().
- Misc changes.
This commit is contained in:
Juan RP 2010-05-26 15:41:26 +02:00
parent 90a9ea320b
commit c34e13336b
7 changed files with 146 additions and 117 deletions

View file

@ -40,28 +40,6 @@ set_defvars
. $XBPS_SHUTILSDIR/common_funcs.sh . $XBPS_SHUTILSDIR/common_funcs.sh
. $XBPS_SHUTILSDIR/builddep_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() install_src_phase()
{ {
local f i subpkg lver spkgrev saved_wrksrc local f i subpkg lver spkgrev saved_wrksrc
@ -160,11 +138,6 @@ install_src_phase()
msg_normal "Package '$pkgname ($lver)': removing empty dirs..." msg_normal "Package '$pkgname ($lver)': removing empty dirs..."
find ${DESTDIR} -depth -type d -exec rmdir 2>/dev/null {} \; find ${DESTDIR} -depth -type d -exec rmdir 2>/dev/null {} \;
fi fi
# Strip bins/libs.
if [ -z "$noarch" ]; then
strip_files "$lver"
fi
msg_normal "Package '$pkgname ($lver)': installed into destdir." msg_normal "Package '$pkgname ($lver)': installed into destdir."
if [ "$build_style" != "custom-install" -a -z "$distfiles" ]; then if [ "$build_style" != "custom-install" -a -z "$distfiles" ]; then
@ -216,7 +189,6 @@ install_src_phase()
# #
# Installs a package via 'make install ...'. # Installs a package via 'make install ...'.
# #
make_install() make_install()
{ {
local lver="$1" local lver="$1"
@ -224,10 +196,7 @@ make_install()
if [ -z "$make_install_target" ]; then if [ -z "$make_install_target" ]; then
make_install_target="DESTDIR=${DESTDIR} install" make_install_target="DESTDIR=${DESTDIR} install"
fi fi
[ -z "$make_cmd" ] && make_cmd=make [ -z "$make_cmd" ] && make_cmd=make
. $XBPS_SHUTILSDIR/buildvars_funcs.sh
# #
# Install package via make. # Install package via make.
# #

View file

@ -74,9 +74,6 @@ build_src_phase()
fi fi
fi fi
. $XBPS_SHUTILSDIR/buildvars_funcs.sh
set_build_vars
msg_normal "Package '$pkgname ($lver)': running build phase." msg_normal "Package '$pkgname ($lver)': running build phase."
if [ "$build_style" = "custom-install" ]; then if [ "$build_style" = "custom-install" ]; then
@ -109,7 +106,6 @@ build_src_phase()
fi fi
unset makejobs unset makejobs
unset_build_vars
touch -f $XBPS_BUILD_DONE touch -f $XBPS_BUILD_DONE
} }

View file

@ -84,9 +84,6 @@ configure_src_phase()
cd $build_wrksrc || return 1 cd $build_wrksrc || return 1
fi fi
. $XBPS_SHUTILSDIR/buildvars_funcs.sh
set_build_vars
case "$build_style" in case "$build_style" in
gnu_configure|gnu-configure) gnu_configure|gnu-configure)
# #
@ -141,7 +138,6 @@ configure_src_phase()
for f in ${configure_env}; do for f in ${configure_env}; do
unset eval ${f%=*} unset eval ${f%=*}
done done
unset_build_vars
touch -f $XBPS_CONFIGURE_DONE touch -f $XBPS_CONFIGURE_DONE
} }

View file

@ -25,6 +25,34 @@
. ${XBPS_SHUTILSDIR}/tmpl_funcs.sh . ${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. # Installs a pkg by reading its build template file.
# #
@ -42,10 +70,7 @@ install_pkg()
fi fi
pkg="$curpkgn-$version" pkg="$curpkgn-$version"
if [ -n "$doing_deps" ]; then [ -n "$doing_deps" ] && setup_tmpl $curpkgn
reset_tmpl_vars
setup_tmpl $curpkgn
fi
# #
# Refuse to install the same package that is already installed. # Refuse to install the same package that is already installed.
@ -112,7 +137,6 @@ install_pkg()
fi fi
# Install pkg into destdir. # Install pkg into destdir.
set_build_vars
env xbps_machine=${xbps_machine} MASTERDIR=${_MASTERDIR} \ env xbps_machine=${xbps_machine} MASTERDIR=${_MASTERDIR} \
dontrm_builddir=${dontrm_builddir} wrksrc=${wrksrc} \ dontrm_builddir=${dontrm_builddir} wrksrc=${wrksrc} \
${fakeroot_cmd} ${fakeroot_cmd_args} \ ${fakeroot_cmd} ${fakeroot_cmd_args} \
@ -122,7 +146,12 @@ install_pkg()
msg_red "xbps-src-doinst-helper failed for '$pkgname'!" msg_red "xbps-src-doinst-helper failed for '$pkgname'!"
return 1 return 1
fi 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. # Always write metadata to package's destdir.
. $XBPS_SHUTILSDIR/metadata.sh . $XBPS_SHUTILSDIR/metadata.sh

View file

@ -1,5 +1,5 @@
#- #-
# Copyright (c) 2008-2010 Juan Romero Pardines. # Copyright (c) 2010 Juan Romero Pardines.
# All rights reserved. # All rights reserved.
# #
# Redistribution and use in source and binary forms, with or without # 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. # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#- #-
# . ${XBPS_SHUTILSDIR}/tmpl_funcs.sh
# Functions to set some env vars required to build the packages
# required by the xbps-base-chroot package.
#
set_build_vars() strip_files()
{ {
local LDLIBPATH local subpkg
if [ -z "$in_chroot" ]; then for subpkg in ${subpackages}; do
SAVE_LDLIBPATH=$LD_LIBRARY_PATH . $XBPS_SRCPKGDIR/${sourcepkg}/${subpkg}.template
LDFLAGS="-L$XBPS_MASTERDIR/usr/lib" pkgname=${subpkg}
if [ -d /usr/lib/libfakeroot ]; then set_tmpl_common_vars
LDLIBPATH="/usr/lib/libfakeroot:$XBPS_MASTERDIR/usr/lib" strip_files_real
else setup_tmpl ${sourcepkg}
LDLIBPATH="$XBPS_MASTERDIR/usr/lib" done
fi
if [ -n "$BUILD_32BIT" ]; then strip_files_real
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"
} }
unset_build_vars() strip_files_real()
{ {
if [ -z "$in_chroot" ]; then local lver
unset LD_LIBRARY_PATH LDFLAGS
export LD_LIBRARY_PATH=$SAVE_LDLIBPATH if ! command -v strip 2>&1 >/dev/null; then
[ -n "$BUILD_32BIT" ] && unset CC CXX return 0
fi fi
unset PKG_CONFIG PKG_CONFIG_LIBDIR [ -n "$nostrip" ] && return 0
unset CPPFLAGS CFLAGS CXXFLAGS
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
} }

View file

@ -61,7 +61,6 @@ info_tmpl()
# #
reset_tmpl_vars() reset_tmpl_vars()
{ {
local v=
local TMPL_VARS="pkgname distfiles configure_args configure_env \ local TMPL_VARS="pkgname distfiles configure_args configure_env \
make_build_args make_install_args build_style \ make_build_args make_install_args build_style \
short_desc maintainer long_desc checksum wrksrc \ short_desc maintainer long_desc checksum wrksrc \
@ -81,14 +80,9 @@ reset_tmpl_vars()
pre_remove post_remove post_stow do_build do_install \ pre_remove post_remove post_stow do_build do_install \
XBPS_EXTRACT_DONE XBPS_CONFIGURE_DONE \ XBPS_EXTRACT_DONE XBPS_CONFIGURE_DONE \
XBPS_BUILD_DONE XBPS_INSTALL_DONE FILESDIR DESTDIR \ XBPS_BUILD_DONE XBPS_INSTALL_DONE FILESDIR DESTDIR \
SRCPKGDESTDIR PATCHESDIR" SRCPKGDESTDIR PATCHESDIR CFLAGS CXXFLAGS CPPFLAGS \
CC CXX LDFLAGS LD_LIBRARY_PATH"
for v in ${TMPL_VARS}; do eval unset "$TMPL_VARS"
eval unset "$v"
done
. $XBPS_SHUTILSDIR/buildvars_funcs.sh
unset_build_vars
} }
# #
@ -99,6 +93,7 @@ setup_tmpl()
local pkg="$1" local pkg="$1"
[ -z "$pkg" ] && return 1 [ -z "$pkg" ] && return 1
if [ "$pkgname" = "$pkg" ]; then if [ "$pkgname" = "$pkg" ]; then
[ -n "$DESTDIR" ] && return 0 [ -n "$DESTDIR" ] && return 0
fi fi
@ -111,7 +106,6 @@ setup_tmpl()
reset_tmpl_vars reset_tmpl_vars
. $XBPS_SRCPKGDIR/${pkg}/template . $XBPS_SRCPKGDIR/${pkg}/template
prepare_tmpl prepare_tmpl
set_build_vars
else else
msg_error "Cannot find $pkg build template file." msg_error "Cannot find $pkg build template file."
fi fi
@ -242,14 +236,6 @@ prepare_tmpl()
XBPS_POST_INSTALL_DONE="$wrksrc/.xbps_post_install_done" XBPS_POST_INSTALL_DONE="$wrksrc/.xbps_post_install_done"
set_tmpl_common_vars 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() remove_tmpl_wrksrc()
@ -260,7 +246,7 @@ remove_tmpl_wrksrc()
return 1 return 1
fi fi
msg_normal "Cleaning '$pkgname' build directory... " msg_normal "Cleaning '${sourcepkg}' build directory... "
rm -rf $lwrksrc rm -rf $lwrksrc
return $? return $?
} }
@ -276,4 +262,24 @@ set_tmpl_common_vars()
sourcepkg=${pkgname} sourcepkg=${pkgname}
fi fi
SRCPKGDESTDIR=${XBPS_DESTDIR}/${sourcepkg}-${version} 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
} }

View file

@ -138,32 +138,40 @@ run_file()
check_config_vars() check_config_vars()
{ {
local val cffound f local val cffound f cfpaths cf="xbps-src.conf"
if [ -z "$config_file_specified" ]; then if [ -z "$XBPS_CONFIG_FILE" ]; then
config_file_paths="$XBPS_CONFIG_FILE ./etc/xbps-src.conf" cfpaths="@@XBPS_INSTALL_PREFIX@@/etc/${cf} ./etc/${cf}"
for f in $config_file_paths; do for f in $cfpaths; do
[ -f $f ] && XBPS_CONFIG_FILE=$f && \ if [ -f ${f} ]; then
cffound=yes && break XBPS_CONFIG_FILE=${f}
cffound=yes
break
fi
done done
[ -z "$cffound" ] && msg_error "cannot find a config file" [ -z "$cffound" ] && msg_error "cannot find a config file"
fi fi
run_file ${XBPS_CONFIG_FILE} run_file ${XBPS_CONFIG_FILE}
XBPS_CONFIG_FILE=$path_fixed export XBPS_CONFIG_FILE=$path_fixed
if [ ! -f "$XBPS_CONFIG_FILE" ]; then if [ ! -f "$XBPS_CONFIG_FILE" ]; then
msg_error "cannot find configuration file: $XBPS_CONFIG_FILE" msg_error "cannot find configuration file: $XBPS_CONFIG_FILE"
fi fi
eval val="\$XBPS_MASTERDIR" for f in XBPS_DISTRIBUTIONDIR XBPS_MASTERDIR; do
[ -z "$val" ] && msg_error "'XBPS_MASTERDIR' not set in configuration file" eval val="\$${f}"
if [ ! -d "$val" ]; then if [ -z "$val" ]; then
mkdir "$val" msg_error "'${f}' not set in configuration file!"
[ $? -ne 0 ] && msg_error "couldn't create 'XBPS_MASTERDIR' directory" fi
done
if [ ! -d "$XBPS_MASTERDIR" ]; then
mkdir -p "$val"
if [ $? -ne 0 ]; then
msg_error "couldn't create 'XBPS_MASTERDIR' directory"
fi
fi fi
export _MASTERDIR="$XBPS_MASTERDIR"
export PATH="@@XBPS_INSTALL_PREFIX@@/sbin:$PATH"
} }
# #
@ -172,7 +180,7 @@ check_config_vars()
while getopts "Cc:hm:p:" opt; do while getopts "Cc:hm:p:" opt; do
case $opt in case $opt in
C) export dontrm_builddir=yes;; C) export dontrm_builddir=yes;;
c) config_file_specified=yes; XBPS_CONFIG_FILE="$OPTARG";; c) XBPS_CONFIG_FILE="$OPTARG";;
h) usage && exit 0;; h) usage && exit 0;;
m) m)
_MASTERDIR="$OPTARG" _MASTERDIR="$OPTARG"
@ -205,6 +213,10 @@ fi
# #
check_reqhost_utils 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. # Check configuration vars before anyting else, and set defaults vars.
# #
@ -217,6 +229,9 @@ set_defvars
. $XBPS_SHUTILSDIR/common_funcs.sh . $XBPS_SHUTILSDIR/common_funcs.sh
#
# Fix up some vars when XBPS_USE_CAPABILITIES is set.
#
if [ -n "$XBPS_USE_CAPABILITIES" ]; then if [ -n "$XBPS_USE_CAPABILITIES" ]; then
chroot_cmd="@@XBPS_INSTALL_LIBEXECDIR@@/xbps-src-capchroot" chroot_cmd="@@XBPS_INSTALL_LIBEXECDIR@@/xbps-src-capchroot"
unset sudo_cmd unset sudo_cmd
@ -234,7 +249,25 @@ fi
[ -z "$dontrm_builddir" ] && dontrm_builddir=no [ -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 case "$target" in
bootstrap) bootstrap)
. $XBPS_SHUTILSDIR/tmpl_funcs.sh . $XBPS_SHUTILSDIR/tmpl_funcs.sh