From 8b40d5cd68bb98df5826de5a66f50852a0509a4a Mon Sep 17 00:00:00 2001 From: Juan RP Date: Sun, 26 Jun 2011 01:45:12 +0200 Subject: [PATCH] xbps-src: added suport for XBPS_CACHEDIR in configuration file. XBPS_CACHEDIR will be bind mounted as read/write in target masterdir into /cachedir. This directory must have read/write perms for the user running xbps-src. --- xbps-src/etc/xbps-src.conf.in | 9 ++++++++- xbps-src/libexec/xbps-src-chroot-helper.sh.in | 13 ++++++++++--- xbps-src/shutils/chroot.sh.in | 6 ++++-- xbps-src/shutils/init_funcs.sh.in | 3 +++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/xbps-src/etc/xbps-src.conf.in b/xbps-src/etc/xbps-src.conf.in index a163c192611..ec617261e20 100644 --- a/xbps-src/etc/xbps-src.conf.in +++ b/xbps-src/etc/xbps-src.conf.in @@ -4,7 +4,8 @@ # # Directory where the xbps-src GIT repository is stored. This is -# required to be mounted in the chroot. +# required to be mounted in the chroot. You shouldn't need to modify this +# one unless your vanilla/xbps-templates repo has been moved to another path. # XBPS_DISTRIBUTIONDIR=@@XBPS_DISTRIBDIR@@ @@ -13,6 +14,12 @@ XBPS_DISTRIBUTIONDIR=@@XBPS_DISTRIBDIR@@ # XBPS_MASTERDIR=$XBPS_DISTRIBUTIONDIR/masterdir +# +# Cache directory for downloaded binary packages; it's bind mounted +# to $XBPS_MASTERDIR/cachedir for chroot operations. +# +#XBPS_CACHEDIR=/path/to/cachedir/with/user/permissions/to/write + # # Compilation flags for cc and c++. # diff --git a/xbps-src/libexec/xbps-src-chroot-helper.sh.in b/xbps-src/libexec/xbps-src-chroot-helper.sh.in index 0b19356a8ad..1c4a1cd0880 100644 --- a/xbps-src/libexec/xbps-src-chroot-helper.sh.in +++ b/xbps-src/libexec/xbps-src-chroot-helper.sh.in @@ -1,6 +1,6 @@ #!/bin/sh #- -# Copyright (c) 2010 Juan Romero Pardines. +# Copyright (c) 2010-2011 Juan Romero Pardines. # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -31,8 +31,11 @@ HANDLER="$1" if [ -n "${MASTERDIR}" ]; then export XBPS_MASTERDIR="${MASTERDIR}" fi +if [ -n "${CACHEDIR}" ]; then + export XBPS_CACHEDIR="${CACHEDIR}" +fi -REQFS="sys proc dev xbps" +REQFS="sys proc dev xbps cachedir" mount_chroot_fs() { @@ -50,6 +53,10 @@ mount_chroot_fs() blah=${XBPS_DISTRIBUTIONDIR} dowrite="-w" ;; + cachedir) + blah=${XBPS_CACHEDIR} + dowrite="-w" + ;; *) blah=/${f};; esac [ ! -d ${blah} ] && echo "failed." && continue @@ -60,7 +67,7 @@ mount_chroot_fs() echo 1 > ${XBPS_MASTERDIR}/.${f}_mount_bind_done echo "done." else - echo "FAILED!!!!!" + echo "FAILED!" exit 1 fi else diff --git a/xbps-src/shutils/chroot.sh.in b/xbps-src/shutils/chroot.sh.in index c2304f643e4..e0c09af4bb3 100644 --- a/xbps-src/shutils/chroot.sh.in +++ b/xbps-src/shutils/chroot.sh.in @@ -31,14 +31,16 @@ trap "_umount && return $?" 0 INT QUIT TERM _mount() { - MASTERDIR="${XBPS_MASTERDIR}" ${sudo_cmd} \ + MASTERDIR="${XBPS_MASTERDIR}" CACHEDIR="${XBPS_CACHEDIR}" \ + ${sudo_cmd} \ @@XBPS_INSTALL_LIBEXECDIR@@/xbps-src-chroot-helper mount return $? } _umount() { - MASTERDIR="${XBPS_MASTERDIR}" ${sudo_cmd} \ + MASTERDIR="${XBPS_MASTERDIR}" CACHEDIR="${XBPS_CACHEDIR}" \ + ${sudo_cmd} \ @@XBPS_INSTALL_LIBEXECDIR@@/xbps-src-chroot-helper umount return $? } diff --git a/xbps-src/shutils/init_funcs.sh.in b/xbps-src/shutils/init_funcs.sh.in index bab29c5eaab..eaa006234ed 100644 --- a/xbps-src/shutils/init_funcs.sh.in +++ b/xbps-src/shutils/init_funcs.sh.in @@ -65,6 +65,9 @@ set_defvars() if [ -n "$xver" ]; then # XBPS utils >= 0.9.0. xbps_conf="-C $XBPS_MASTERDIR/usr/local/etc/xbps-conf.plist" + if [ -n "$XBPS_CACHEDIR" ]; then + xbps_conf="$xbps_conf -c $XBPS_CACHEDIR" + fi fi export XBPS_PKGDB_CMD="xbps-uhelper.static -r $XBPS_MASTERDIR" export XBPS_BIN_CMD="xbps-bin.static $xbps_conf -r $XBPS_MASTERDIR"