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:
parent
e5afc541f2
commit
5a2cc5b5bd
35 changed files with 173 additions and 146 deletions
|
@ -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}"
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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"
|
||||
;;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue