1#!/bin/sh 2# 3# Copyright (c) 2009 Poul-Henning Kamp. 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25# SUCH DAMAGE. 26# 27# $FreeBSD$ 28# 29# Usage: 30# $0 PACKAGE_DUMP NANO_PACKAGE_DIR /usr/ports/foo/bar ... 31# 32# Will symlink the packages listed, including their runtime dependencies, 33# from the PACKAGE_DUMP to the NANO_PACKAGE_DIR. 34# 35 36NANO_PKG_DUMP=$1 37shift; 38if [ ! -d $NANO_PKG_DUMP ] ; then 39 echo "$NANO_PKG_DUMP not a directory" 1>&2 40 exit 1 41fi 42 43NANO_PACKAGE_DIR=$1 44shift; 45 46ports_recurse() ( 47 of=$1 48 shift 49 for d 50 do 51 if [ ! -d $d ] ; then 52 echo "Missing port $d" 1>&2 53 exit 2 54 fi 55 if grep -q "^$d\$" $of ; then 56 true 57 else 58 ( 59 cd $d 60 rd=`make -V RUN_DEPENDS ${PORTS_OPTS}` 61 ld=`make -V LIB_DEPENDS ${PORTS_OPTS}` 62 63 for x in $rd $ld 64 do 65 ports_recurse $of `echo $x | 66 sed 's/^[^:]*:\([^:]*\).*$/\1/'` 67 done 68 ) 69 echo $d >> $of 70 fi 71 done 72) 73 74rm -rf $NANO_PACKAGE_DIR 75mkdir -p $NANO_PACKAGE_DIR 76 77PL=$NANO_PACKAGE_DIR/_list 78true > $PL 79for i 80do 81 ports_recurse `pwd`/$PL $i 82done 83 84for i in `cat $PL` 85do 86 p=`(cd $i && make -V PKGNAME)` 87 if [ -f $NANO_PKG_DUMP/$p.t[bx]z ] ; then 88 ln -s $NANO_PKG_DUMP/$p.t[bx]z $NANO_PACKAGE_DIR 89 else 90 echo "Package $p misssing in $NANO_PKG_DUMP" 1>&2 91 exit 1 92 fi 93done 94 95rm -f $PL 96exit 0 97