xbps-src: infrastructure changes required for "nonfree" keyword in tmpls.

- The chroot target now execs masterdir/bin/xbps-shell to set up correct envvars.
- 2 pkgs are now in nonfree repo: adobe-flash-plugin and jre.
- Renamed some vars in xbps-src to be in uppercase, notably XBPS_MACHINE.
- make-repoidx target now creates the index for all "known" directories specified
  via XBPS_PACKAGESDIR: XBPS_MACHINE, noarch, and nonfree/XBPS_MACHINE.
This commit is contained in:
Juan RP 2011-11-08 11:56:17 +01:00
parent e5afc541f2
commit 5a2cc5b5bd
35 changed files with 173 additions and 146 deletions

View file

@ -30,12 +30,11 @@
#
install_pkg_from_repos()
{
local cmd rval tmplogf tmpdepf xver
local cmd rval tmplogf tmpdepf
msg_normal "$pkgver: installing '$1'... "
xver=$($XBPS_BIN_CMD -V|awk '{print $2}')
case "$xver" in
case "${XBPS_VERSION}" in
0.1[1-9].[0-9]*)
_pkgdepname=$($XBPS_PKGDB_CMD getpkgdepname "$1")
$XBPS_REPO_CMD -oversion show ${_pkgdepname} >/dev/null 2>&1
@ -50,7 +49,7 @@ install_pkg_from_repos()
*) msg_normal_append "\n";;
esac
cmd="${fakeroot_cmd} ${fakeroot_cmd_args} ${XBPS_BIN_CMD} -Ay install"
cmd="${FAKEROOT_CMD} ${FAKEROOT_CMD_ARGS} ${XBPS_BIN_CMD} -Ay install"
tmplogf=$(mktemp)
tmpdepf=$(mktemp)
echo "'${1}'" > $tmpdepf
@ -82,7 +81,7 @@ autoremove_pkg_dependencies()
[ -n "$1" ] && return 0
cmd="${fakeroot_cmd} ${fakeroot_cmd_args} ${XBPS_BIN_CMD}"
cmd="${FAKEROOT_CMD} ${FAKEROOT_CMD_ARGS} ${XBPS_BIN_CMD}"
# If XBPS_PREFER_BINPKG_DEPS is set, we should remove those
# package dependencies installed by the target package, do it.
@ -105,9 +104,9 @@ autoremove_pkg_dependencies()
install_pkg_deps()
{
local curpkg="$1"
local curpkgname="$(${XBPS_PKGDB_CMD} getpkgdepname $1)"
local saved_prevpkg="$(${XBPS_PKGDB_CMD} getpkgdepname $2)"
local j jver jname reqver missing_deps
local curpkgname=$(${XBPS_PKGDB_CMD} getpkgdepname "$1")
local saved_prevpkg=$(${XBPS_PKGDB_CMD} getpkgdepname "$2")
local j jver jname reqver
[ -z "$curpkg" -o -z "$curpkgname" ] && return 2
@ -137,16 +136,11 @@ install_pkg_deps()
echo " ${j}: found '$jname-$jver'."
else
echo " ${j}: not found."
if [ -z "$missing_deps" ]; then
missing_deps="${j}"
else
missing_deps="${missing_deps} ${j}"
fi
fi
done
fi
for j in ${missing_deps}; do
for j in ${build_depends}; do
prev_pkg="$j"
if [ -n "$XBPS_PREFER_BINPKG_DEPS" -a -z "$bootstrap" ]; then
install_pkg_from_repos "${j}"

View file

@ -26,7 +26,7 @@
_mount()
{
MASTERDIR="${XBPS_MASTERDIR}" DISTRIBUTIONDIR="${XBPS_DISTRIBUTIONDIR}" \
HOSTDIR="${XBPS_HOSTDIR}" ${sudo_cmd} \
HOSTDIR="${XBPS_HOSTDIR}" ${SUDO_CMD} \
@@XBPS_INSTALL_LIBEXECDIR@@/chroot-helper mount
return $?
}
@ -34,7 +34,7 @@ _mount()
_umount()
{
MASTERDIR="${XBPS_MASTERDIR}" DISTRIBUTIONDIR="${XBPS_DISTRIBUTIONDIR}" \
HOSTDIR="${XBPS_HOSTDIR}" ${sudo_cmd} \
HOSTDIR="${XBPS_HOSTDIR}" ${SUDO_CMD} \
@@XBPS_INSTALL_LIBEXECDIR@@/chroot-helper umount
return $?
}
@ -45,7 +45,7 @@ chroot_init()
[ -n "$bootstrap" ] && return 0
if [ "${chroot_cmd}" = "chroot" ]; then
if [ "${CHROOT_CMD}" = "chroot" ]; then
if [ "$(id -u)" -ne 0 ]; then
msg_error "Root permissions are required for the chroot, try again."
fi
@ -100,6 +100,20 @@ _EOF
[ -h ${XBPS_MASTERDIR}/tmp ] || rm -rf $XBPS_MASTERDIR/tmp/*
fi
fi
[ -s $XBPS_MASTERDIR/bin/xbps-shell ] && return 0
# Create custom script to start the chroot bash shell.
cat > $XBPS_MASTERDIR/bin/xbps-shell <<_EOF
#!/bin/sh
. /usr/local/etc/xbps-src.conf
. /usr/local/share/xbps-src/shutils/init_funcs.sh
set_defvars
exec env PS1="[\u@masterdir-chroot \W]$ " /bin/bash "$@"
_EOF
chmod 755 $XBPS_MASTERDIR/bin/xbps-shell
}
prepare_chroot()
@ -198,10 +212,9 @@ create_binsh_symlink()
prepare_binpkg_repos()
{
local repo xver CONF_FILE
local repo CONF_FILE
xver=$($XBPS_PKGDB_CMD -V|awk '{print $2}')
case "$xver" in
case "${XBPS_VERSION}" in
0.1[0-9].[0-9]*)
mkdir -p ${XBPS_MASTERDIR}/usr/local/etc/xbps
for f in /etc /usr/local/etc; do
@ -310,19 +323,18 @@ xbps_chroot_handler()
# Reinstall xbps-src in the chroot
msg_normal "Installing xbps-src in the masterdir...\n"
env IN_CHROOT=yes LANG=C PATH=$PATH:/usr/local/bin \
${chroot_cmd} $XBPS_MASTERDIR sh -c \
env IN_CHROOT=yes LANG=C \
${CHROOT_CMD} $XBPS_MASTERDIR sh -c \
"cd /xbps/xbps-src && make IN_CHROOT=1 install clean" \
2>&1 >/dev/null || return $?
# Update ld.so(8) cache
msg_normal "Updating ld.so(8) cache...\n"
env PATH=$PATH:/usr/local/bin \
${chroot_cmd} $XBPS_MASTERDIR sh -c "ldconfig" || return $?
${CHROOT_CMD} $XBPS_MASTERDIR sh -c "ldconfig" || return $?
if [ "$action" = "chroot" ]; then
env IN_CHROOT=1 LANG=C PATH=$PATH:/usr/local/bin \
${chroot_cmd} $XBPS_MASTERDIR /bin/sh || rv=$?
env IN_CHROOT=1 LANG=C \
${CHROOT_CMD} $XBPS_MASTERDIR /bin/xbps-shell || rv=$?
else
[ -n "$KEEP_WRKSRC" ] && arg="$arg -C"
[ -n "$KEEP_AUTODEPS" ] && arg="$arg -K"
@ -331,8 +343,7 @@ xbps_chroot_handler()
action="$arg $action"
env in_chroot=1 IN_CHROOT=1 LANG=C _ORIGINPKG="$pkg" \
PATH=$PATH:/usr/local/bin \
${chroot_cmd} $XBPS_MASTERDIR sh -c \
${CHROOT_CMD} $XBPS_MASTERDIR sh -c \
"xbps-src $action $pkg" || rv=$?
fi

View file

@ -25,13 +25,11 @@
set_defvars()
{
local DDIRS i instsharedir
local DDIRS i
instsharedir=@@XBPS_INSTALL_SHAREDIR@@
XBPS_HELPERSDIR=$instsharedir/helpers
XBPS_SHUTILSDIR=$instsharedir/shutils
XBPS_COMMONVARSDIR=$instsharedir/common
XBPS_HELPERSDIR=@@XBPS_INSTALL_SHAREDIR@@/helpers
XBPS_SHUTILSDIR=@@XBPS_INSTALL_SHAREDIR@@/shutils
XBPS_COMMONVARSDIR=@@XBPS_INSTALL_SHAREDIR@@/common
XBPS_META_PATH=$XBPS_MASTERDIR/var/db/xbps
XBPS_PKGMETADIR=$XBPS_META_PATH/metadata
XBPS_SRCPKGDIR=$XBPS_DISTRIBUTIONDIR/srcpkgs
@ -70,8 +68,8 @@ set_defvars()
fi
done
xver=$(xbps-bin.static -V|awk '{print $2}')
case "${xver}" in
export XBPS_VERSION=$(xbps-bin.static -V|awk '{print $2}')
case "${XBPS_VERSION}" in
0.1[0-9].[0-9]*)
xbps_conf="-C $XBPS_MASTERDIR/usr/local/etc/xbps"
;;

View file

@ -30,7 +30,7 @@ xbps_make_binpkg()
[ -z "$pkgname" ] && return 1
for subpkg in ${subpackages}; do
unset revision noarch
unset revision noarch nonfree
. $XBPS_SRCPKGDIR/$pkgname/$subpkg.template
pkgname=${subpkg}
set_tmpl_common_vars
@ -70,10 +70,14 @@ xbps_make_binpkg_real()
if [ -n "$noarch" ]; then
arch=noarch
else
arch=$xbps_machine
arch=$XBPS_MACHINE
fi
binpkg=$pkgver.$arch.xbps
pkgdir=$XBPS_PACKAGESDIR/$arch
if [ -n "$nonfree" ]; then
pkgdir=$XBPS_PACKAGESDIR/nonfree/$arch
else
pkgdir=$XBPS_PACKAGESDIR/$arch
fi
#
# Don't overwrite existing binpkgs by default, skip them.
#
@ -107,7 +111,7 @@ xbps_make_binpkg_real()
# Remove binpkg if interrupted...
trap "binpkg_cleanup $pkgdir $binpkg" INT
msg_normal "Building $binpkg... "
${fakeroot_cmd} ${fakeroot_cmd_args} \
${FAKEROOT_CMD} ${FAKEROOT_CMD_ARGS} \
tar --exclude "var/db/xbps/metadata/*/flist" \
-cpf - ${mfiles} ${dirs} | \
$XBPS_COMPRESS_CMD ${clevel} -qf > $pkgdir/$binpkg

View file

@ -89,7 +89,7 @@ xbps_write_metadata_pkg_real()
if [ -n "$noarch" ]; then
arch=noarch
else
arch=$xbps_machine
arch=$XBPS_MACHINE
fi
if [ -n "$revision" ]; then

View file

@ -26,6 +26,43 @@
#
# Installs a pkg by reading its build template file.
#
make_repoidx()
{
local f
case "${XBPS_VERSION}" in
# >= 0.11.0
[0-9].[1-9][1-9].[0-9])
for f in ${XBPS_MACHINE} noarch nonfree/${XBPS_MACHINE}; do
msg_normal "Updating pkg-index for local repository at:\n"
msg_normal " $XBPS_PACKAGESDIR/$f\n"
${XBPS_REPO_CMD} genindex ${XBPS_PACKAGESDIR}/${f} 2>/dev/null
done
;;
*)
msg_normal "Updating pkg-index for local repository at:\n"
msg_normal " $XBPS_PACKAGESDIR\n"
${XBPS_REPO_CMD} genindex ${XBPS_PACKAGESDIR} 2>/dev/null
;;
esac
}
_build_pkg_and_update_repos()
{
local rval f
[ -z "$BUILD_BINPKG" ] && return 0
# Build binary package and update local repo index if -B is set.
xbps_make_binpkg
if [ $? -ne 0 -a $? -ne 6 ]; then
return $?
fi
make_repoidx
return 0
}
install_pkg()
{
local curpkgn="$1" fullpkg pkg cdestdir
@ -87,12 +124,12 @@ install_pkg()
fi
# Install pkg into destdir.
env xbps_machine=${xbps_machine} MASTERDIR=${_MASTERDIR} \
wrksrc=${wrksrc} \
BOOTSTRAP_PKG_REBUILD=$BOOTSTRAP_PKG_REBUILD \
CONFIG_FILE=${XBPS_CONFIG_FILE} \
${fakeroot_cmd} ${fakeroot_cmd_args} \
@@XBPS_INSTALL_LIBEXECDIR@@/doinst-helper \
env XBPS_MACHINE=${XBPS_MACHINE} wrksrc=${wrksrc} \
MASTERDIR="${XBPS_MASTERDIR}" \
BOOTSTRAP_PKG_REBUILD=$BOOTSTRAP_PKG_REBUILD \
CONFIG_FILE=${XBPS_CONFIG_FILE} \
${FAKEROOT_CMD} ${FAKEROOT_CMD_ARGS} \
@@XBPS_INSTALL_LIBEXECDIR@@/doinst-helper \
${curpkgn} || return $?
# Strip binaries/libraries.
@ -114,24 +151,8 @@ install_pkg()
remove_tmpl_wrksrc $wrksrc
fi
autoremove_pkg_dependencies $KEEP_AUTODEPS
# Build binary package and update local repo index if
# -B is set.
if [ -n "$BUILD_BINPKG" ]; then
xbps_make_binpkg
rval=$?
if [ $rval -ne 0 -a $rval -ne 6 ]; then
return $?
elif [ $rval -eq 6 ]; then
# binpkg exists, no need to update
# repo pkg-index.
:
else
msg_normal "Updating pkg-index for local repository at:\n"
msg_normal " $XBPS_PACKAGESDIR\n"
${XBPS_REPO_CMD} genindex ${XBPS_PACKAGESDIR} 2>/dev/null
fi
fi
return 0
_build_pkg_and_update_repos
return $?
fi
# Stow package into masterdir.

View file

@ -92,7 +92,7 @@ reset_tmpl_vars()
short_desc maintainer long_desc checksum wrksrc \
make_cmd bootstrap register_shell keep_empty_dirs \
make_build_target configure_script noextract nofetch \
build_depends nostrip \
build_depends nostrip nonfree \
make_install_target version revision patch_args \
sgml_catalogs xml_catalogs xml_entries sgml_entries \
disable_parallel_build run_depends font_dirs preserve \
@ -263,7 +263,7 @@ prepare_tmpl()
done
for i in ${only_for_archs}; do
[ "$i" = "$xbps_machine" ] && found=si && break
[ "$i" = "$XBPS_MACHINE" ] && found=si && break
done
if [ -n "${only_for_archs}" -a -z "$found" ]; then
msg_error "this package is only for: ${only_for_archs}.\n"

View file

@ -26,12 +26,12 @@
XBPS_CONFIG_FILE=@@XBPS_INSTALL_ETCDIR@@/xbps-src.conf
progname=$(basename $0)
fakeroot_cmd=/usr/bin/fakeroot
fakeroot_cmd_args="--"
sudo_cmd=sudo
chroot_cmd=chroot
xbps_machine=$(uname -m)
PROGNAME=$(basename $0)
FAKEROOT_CMD=/usr/bin/fakeroot
FAKEROOT_CMD_ARGS="--"
SUDO_CMD=sudo
CHROOT_CMD=chroot
XBPS_MACHINE=$(uname -m)
# Required utilities in host system.
REQHOST_UTILS="awk bash bison sed gcc msgfmt patch makeinfo \
@ -57,7 +57,7 @@ check_reqhost_utils()
usage()
{
cat << _EOF
$progname: [-BCDhKS] [-c file] [-m dir] [-p dir] [-s dir] [target] [pkgname]
$PROGNAME: [-BCDhKS] [-c file] [-m dir] [-p dir] [-s dir] [target] [pkgname]
Targets:
bootstrap
@ -222,7 +222,6 @@ check_config_vars()
echo "ERROR: not enough perms for masterdir $XBPS_MASTERDIR.\n"
exit 1
fi
[ -z "${_MASTERDIR_FLAG}" ] && export _MASTERDIR="$XBPS_MASTERDIR"
}
#
@ -246,7 +245,7 @@ while getopts "CBc:DhKm:p:Ss:" opt; do
p)
_PACKAGEDIR="$OPTARG"
if [ ! -d ${_PACKAGEDIR} ]; then
mkdir -p ${_PACKAGEDIR}/${xbps_machine}
mkdir -p ${_PACKAGEDIR}/${XBPS_MACHINE}
mkdir -p ${_PACKAGEDIR}/noarch
fi
;;
@ -296,17 +295,17 @@ check_reqhost_utils
# Fix up some vars when XBPS_USE_CAPABILITIES is set.
#
if [ -n "$XBPS_USE_CAPABILITIES" ]; then
chroot_cmd="@@XBPS_INSTALL_LIBEXECDIR@@/capchroot"
unset sudo_cmd
CHROOT_CMD="@@XBPS_INSTALL_LIBEXECDIR@@/capchroot"
unset SUDO_CMD
fi
if [ "$(id -u)" -eq 0 ]; then
# disable sudo and fakeroot if uid==0
chroot_cmd="chroot"
unset sudo_cmd
CHROOT_CMD="chroot"
unset SUDO_CMD
if [ -n "$IN_CHROOT" ]; then
unset fakeroot_cmd
unset fakeroot_cmd_args
unset FAKEROOT_CMD
unset FAKEROOT_CMD_ARGS
fi
fi
@ -361,7 +360,7 @@ bootstrap-update)
if [ -z "$IN_CHROOT" ]; then
xbps_chroot_handler ${target} dummy
else
${fakeroot_cmd} ${fakeroot_cmd_args} ${XBPS_BIN_CMD} -y autoupdate
${FAKEROOT_CMD} ${FAKEROOT_CMD_ARGS} ${XBPS_BIN_CMD} -y autoupdate
fi
;;
build|configure)
@ -466,9 +465,7 @@ make-repoidx)
if [ -n "${_PACKAGEDIR}" ]; then
export XBPS_PACKAGESDIR=${_PACKAGEDIR}
fi
msg_normal "Updating pkg-index for local repository at:\n"
msg_normal " $XBPS_PACKAGESDIR\n"
${XBPS_REPO_CMD} genindex ${XBPS_PACKAGESDIR} 2>/dev/null
make_repoidx
;;
remove)
if [ -z "${_pkgname}" ]; then