1191275Sphk#!/bin/sh 2191275Sphk# 3191275Sphk# Copyright (c) 2009 Poul-Henning Kamp. 4191275Sphk# All rights reserved. 5191275Sphk# 6191275Sphk# Redistribution and use in source and binary forms, with or without 7191275Sphk# modification, are permitted provided that the following conditions 8191275Sphk# are met: 9191275Sphk# 1. Redistributions of source code must retain the above copyright 10191275Sphk# notice, this list of conditions and the following disclaimer. 11191275Sphk# 2. Redistributions in binary form must reproduce the above copyright 12191275Sphk# notice, this list of conditions and the following disclaimer in the 13191275Sphk# documentation and/or other materials provided with the distribution. 14191275Sphk# 15191275Sphk# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16191275Sphk# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17191275Sphk# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18191275Sphk# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19191275Sphk# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20191275Sphk# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21191275Sphk# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22191275Sphk# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23191275Sphk# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24191275Sphk# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25191275Sphk# SUCH DAMAGE. 26191275Sphk# 27191275Sphk# $FreeBSD$ 28191275Sphk# 29191275Sphk# Usage: 30191275Sphk# $0 PACKAGE_DUMP NANO_PACKAGE_DIR /usr/ports/foo/bar ... 31191275Sphk# 32191275Sphk# Will symlink the packages listed, including their runtime dependencies, 33191275Sphk# from the PACKAGE_DUMP to the NANO_PACKAGE_DIR. 34191275Sphk# 35191275Sphk 36191275SphkNANO_PKG_DUMP=$1 37191275Sphkshift; 38191275Sphkif [ ! -d $NANO_PKG_DUMP ] ; then 39191275Sphk echo "$NANO_PKG_DUMP not a directory" 1>&2 40191275Sphk exit 1 41191275Sphkfi 42191275Sphk 43191275SphkNANO_PACKAGE_DIR=$1 44191275Sphkshift; 45191275Sphk 46191275Sphkports_recurse() ( 47191275Sphk of=$1 48191275Sphk shift 49191275Sphk for d 50191275Sphk do 51191275Sphk if [ ! -d $d ] ; then 52191275Sphk echo "Missing port $d" 1>&2 53191275Sphk exit 2 54191275Sphk fi 55191275Sphk if grep -q "^$d\$" $of ; then 56191275Sphk true 57191275Sphk else 58191275Sphk ( 59191275Sphk cd $d 60191275Sphk rd=`make -V RUN_DEPENDS` 61191275Sphk ld=`make -V LIB_DEPENDS` 62191275Sphk 63191275Sphk for x in $rd $ld 64191275Sphk do 65191275Sphk ports_recurse $of `echo $x | 66191275Sphk sed 's/^[^:]*:\([^:]*\).*$/\1/'` 67191275Sphk done 68191275Sphk ) 69191275Sphk echo $d >> $of 70191275Sphk fi 71191275Sphk done 72191275Sphk) 73191275Sphk 74191275Sphkrm -rf $NANO_PACKAGE_DIR 75191275Sphkmkdir -p $NANO_PACKAGE_DIR 76191275Sphk 77191275SphkPL=$NANO_PACKAGE_DIR/_list 78191275Sphktrue > $PL 79191275Sphkfor i 80191275Sphkdo 81191275Sphk ports_recurse `pwd`/$PL $i 82191275Sphkdone 83191275Sphk 84191275Sphkfor i in `cat $PL` 85191275Sphkdo 86191275Sphk p=`(cd $i && make -V PKGNAME)` 87191275Sphk if [ -f $NANO_PKG_DUMP/$p.tbz ] ; then 88191275Sphk ln -s $NANO_PKG_DUMP/$p.tbz $NANO_PACKAGE_DIR 89191275Sphk else 90191275Sphk echo "Package $p misssing in $NANO_PKG_DUMP" 1>&2 91191275Sphk exit 1 92191275Sphk fi 93191275Sphkdone 94191275Sphk 95191275Sphkrm -f $PL 96191275Sphkexit 0 97