bin/85619: [patch] allow portsnap to refuse ports categories
Luca Morettoni
luca at morettoni.net
Fri Sep 2 07:00:35 GMT 2005
>Number: 85619
>Category: bin
>Synopsis: [patch] allow portsnap to refuse ports categories
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Fri Sep 02 07:00:32 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: Luca Morettoni
>Release: FreeBSD 7.0-CURRENT i386
>Organization:
>Environment:
System: FreeBSD current.morettoni.local 7.0-CURRENT FreeBSD 7.0-CURRENT #289: Mon Aug 22 13:34:21 CEST 2005 luca at current.morettoni.local:/usr/obj/usr/src/sys/FRODO i386
>Description:
With this patch you can "refuse" one or more directory (categories) in
ports three. Now you can add, into portsnap.conf, a line like this:
REFUSE="games cad"
In "extract" command listed directory are skipped.
In "update" command listed directory are deleted and new (or
updated) files inside that are ignored.
>How-To-Repeat:
>Fix:
Apply this patch (into src/usr.sbin/portsnap/portsnap/):
--- portsnap.sh-refuse.patch begins here ---
*** portsnap.sh-orig Fri Sep 2 08:32:08 2005
--- portsnap.sh Fri Sep 2 08:32:17 2005
***************
*** 81,86 ****
--- 81,87 ----
DDSTATS=""
INDEXONLY=""
SERVERNAME=""
+ REFUSE=""
}
# Parse the command line
***************
*** 170,181 ****
fi
}
! # Read {KEYPRINT, SERVERNAME, WORKDIR, PORTSDIR} from the configuration
# file if they haven't already been set. If the configuration
# file doesn't exist, do nothing.
parse_conffile() {
if [ -r "${CONFFILE}" ]; then
! for X in KEYPRINT WORKDIR PORTSDIR SERVERNAME; do
eval _=\$${X}
if [ -z "${_}" ]; then
eval ${X}=`grep "^${X}=" "${CONFFILE}" |
--- 171,182 ----
fi
}
! # Read {KEYPRINT, SERVERNAME, WORKDIR, PORTSDIR, REFUSE} from the configuration
# file if they haven't already been set. If the configuration
# file doesn't exist, do nothing.
parse_conffile() {
if [ -r "${CONFFILE}" ]; then
! for X in KEYPRINT WORKDIR PORTSDIR SERVERNAME REFUSE; do
eval _=\$${X}
if [ -z "${_}" ]; then
eval ${X}=`grep "^${X}=" "${CONFFILE}" |
***************
*** 193,199 ****
_WORKDIR="/var/db/portsnap"
_PORTSDIR="/usr/ports"
_NDEBUG="-n"
! for X in QUIETREDIR QUIETFLAG STATSREDIR WORKDIR PORTSDIR NDEBUG; do
eval _=\$${X}
eval __=\$_${X}
if [ -z "${_}" ]; then
--- 194,201 ----
_WORKDIR="/var/db/portsnap"
_PORTSDIR="/usr/ports"
_NDEBUG="-n"
! _REFUSE=""
! for X in QUIETREDIR QUIETFLAG STATSREDIR WORKDIR PORTSDIR NDEBUG REFUSE; do
eval _=\$${X}
eval __=\$_${X}
if [ -z "${_}" ]; then
***************
*** 771,776 ****
--- 773,780 ----
if ! grep "^${EXTRACTPATH}" ${WORKDIR}/INDEX | while read LINE; do
FILE=`echo ${LINE} | cut -f 1 -d '|'`
HASH=`echo ${LINE} | cut -f 2 -d '|'`
+ # skip refused ports categories
+ echo ${REFUSE:-} | grep -q "${FILE%%/*}" && continue
echo ${PORTSDIR}/${FILE}
if ! [ -r "${WORKDIR}/files/${HASH}.gz" ]; then
echo "files/${HASH}.gz not found -- snapshot corrupt."
***************
*** 779,784 ****
--- 783,789 ----
case ${FILE} in
*/)
rm -rf ${PORTSDIR}/${FILE}
+
mkdir -p ${PORTSDIR}/${FILE}
tar -xzf ${WORKDIR}/files/${HASH}.gz \
-C ${PORTSDIR}/${FILE}
***************
*** 816,821 ****
--- 821,829 ----
echo -n "Removing old files and directories... "
sort ${WORKDIR}/INDEX | comm -23 ${PORTSDIR}/.portsnap.INDEX - |
cut -f 1 -d '|' | lam -s "${PORTSDIR}/" - | xargs rm -rf
+ for DIR in ${REFUSE:-}; do
+ rm -fr ${PORTSDIR}/${DIR}
+ done
echo "done."
# Install new files
***************
*** 825,830 ****
--- 833,840 ----
while read LINE; do
FILE=`echo ${LINE} | cut -f 1 -d '|'`
HASH=`echo ${LINE} | cut -f 2 -d '|'`
+ # skip refused ports categories
+ echo ${REFUSE:-} | grep -q "${FILE%%/*}" && continue
echo ${PORTSDIR}/${FILE}
if ! [ -r "${WORKDIR}/files/${HASH}.gz" ]; then
echo "files/${HASH}.gz not found -- snapshot corrupt."
--- portsnap.sh-refuse.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list