]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - tools/tools/nanobsd/fill_pkg.sh
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / tools / tools / nanobsd / fill_pkg.sh
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
36 NANO_PKG_DUMP=$1
37 shift;
38 if [ ! -d $NANO_PKG_DUMP ] ; then
39         echo "$NANO_PKG_DUMP not a directory" 1>&2
40         exit 1
41 fi
42
43 NANO_PACKAGE_DIR=$1
44 shift;
45
46 ports_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`        
61                         ld=`make -V LIB_DEPENDS`        
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
74 rm -rf $NANO_PACKAGE_DIR
75 mkdir -p $NANO_PACKAGE_DIR
76
77 PL=$NANO_PACKAGE_DIR/_list
78 true > $PL
79 for i 
80 do
81         ports_recurse `pwd`/$PL $i
82 done
83
84 for i in `cat $PL`
85 do
86         p=`(cd $i && make -V PKGNAME)`
87         if [ -f $NANO_PKG_DUMP/$p.tbz ] ; then
88                 ln -s $NANO_PKG_DUMP/$p.tbz $NANO_PACKAGE_DIR
89         else
90                 echo "Package $p misssing in $NANO_PKG_DUMP" 1>&2
91                 exit 1
92         fi
93 done
94
95 rm -f $PL
96 exit 0