mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-05 22:43:24 +00:00
d36051792d
can be fetched even if the packaging fails. This is to ensure distfiles with correct checksums can be fetched and put on ftp.FreeBSD.org before they disappear from the original master sites. (2) Delete port and all dependencies after packaging, and print out list of (a) Security-related files (set[ug]id flag set or world-writable) (b) Extra files and directories Requested by: kris (2a only)
123 lines
3.3 KiB
Bash
Executable File
123 lines
3.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# usage: $0 DIRNAME PHASE
|
|
# PHASE is 1 (checksum) or 2 (package)
|
|
|
|
dir=$1
|
|
phase=$2
|
|
|
|
if [ $phase = 1 ]; then
|
|
|
|
cd $dir || exit 1
|
|
echo "maintained by: $(make maintainer)"
|
|
echo "build started at $(date)"
|
|
|
|
cd /tmp/depends
|
|
if [ "$(echo $(/bin/ls | wc -c))" != 0 ]; then
|
|
echo "adding dependencies"
|
|
for i in *.tgz; do
|
|
echo "pkg_add -f $i"
|
|
if ! pkg_add -f $i; then
|
|
echo "error in dependency $i, exiting"
|
|
echo "1" > /tmp/status
|
|
exit 1
|
|
fi
|
|
done
|
|
fi
|
|
|
|
cd $dir || exit 1
|
|
echo "================================================================"
|
|
echo "====================<phase 1: make checksum>===================="
|
|
|
|
if make checksum; then
|
|
echo "0" > /tmp/status
|
|
else
|
|
echo "1" > /tmp/status
|
|
echo "================================================================"
|
|
echo -n "build ended at "
|
|
date
|
|
fi
|
|
|
|
else
|
|
|
|
echo "====================<phase 2: make package>====================="
|
|
xvfb=0
|
|
if which -s Xvfb; then
|
|
xvfb=1
|
|
pid=$(echo $$ % 32768 | bc)
|
|
X11BASE=$(which Xvfb | sed -e 's./bin/Xvfb..')
|
|
Xvfb :${pid} -fp ${X11BASE}/lib/X11/fonts/misc &
|
|
DISPLAY=:${pid}
|
|
export DISPLAY
|
|
fi
|
|
|
|
cd $dir || exit 1
|
|
if make package; then
|
|
echo "0" > /tmp/status
|
|
pkgname=$(make package-name)
|
|
prefix=$(make -V PREFIX)
|
|
mtreefile=$(make -V MTREE_FILE)
|
|
echo "================================================================"
|
|
echo "checking installed files"
|
|
find ${prefix} -perm -2000 -o -perm -4000 -o -perm -0002 -ls | sort > /tmp/list1
|
|
echo "pkg_delete ${pkgname}"
|
|
pkg_delete ${pkgname}
|
|
find ${prefix} -perm -2000 -o -perm -4000 -o -perm -0002 -ls | sort > /tmp/list2
|
|
if ! diff -qb /tmp/list1 /tmp/list2 2>/dev/null; then
|
|
echo "================================================================"
|
|
echo "found set[ug]id or world-writable files and directories"
|
|
diff -b /tmp/list2 /tmp/list1 | grep '^>'
|
|
fi
|
|
cd /var/db/pkg
|
|
if [ $(echo $(echo * | wc -c)) != 2 ]; then
|
|
echo "================================================================"
|
|
echo "deleting dependencies"
|
|
prevlist=""
|
|
count=1
|
|
while [ $(echo $(echo * | wc -c)) != 2 -a $(echo $(echo * | wc -c)) != $(echo $(echo $prevlist | wc -c)) ]; do
|
|
echo "== phase $count =="
|
|
prevlist="$(echo *)"
|
|
for i in *; do
|
|
echo "pkg_delete $i"
|
|
pkg_delete $i
|
|
done
|
|
count=$(($count + 1))
|
|
done
|
|
if [ $(echo $(echo * | wc -c)) != 2 ]; then
|
|
echo "leftover packages:" *
|
|
# for i in *; do
|
|
# echo "pkg_delete -f $i"
|
|
# pkg_delete -f $i
|
|
# done
|
|
fi
|
|
fi
|
|
cd /var/db/pkg
|
|
if [ "x${mtreefile}" != "x" ]; then
|
|
mtree -f ${mtreefile} -p ${prefix} > /tmp/list3
|
|
if [ -s /tmp/list3 ]; then
|
|
echo "================================================================"
|
|
echo "list of extra files and directories in ${prefix}"
|
|
cat /tmp/list3
|
|
echo "list of all files and directories in ${prefix}"
|
|
cd ${prefix}
|
|
find . -exec echo -n 'path: ' \; -exec ls -1d \{} \; | sort
|
|
echo "ls -lR ${prefix}"
|
|
ls -lR ${prefix}
|
|
fi
|
|
fi
|
|
else
|
|
echo "1" > /tmp/status
|
|
fi
|
|
|
|
if [ ${xvfb} = 1 ]; then
|
|
kill $(jobid %1)
|
|
fi
|
|
|
|
echo "================================================================"
|
|
echo -n "build ended at "
|
|
date
|
|
|
|
fi
|
|
|
|
exit 0
|