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