source: hybrid/trunk/nanobsd/tools/package-build.sh@ 10123

Last change on this file since 10123 was 10123, checked in by richardvm, 13 years ago

creating trunk based on 9.0

  • Property svn:eol-style set to LF
  • Property svn:executable set to *
File size: 4.8 KB
Line 
1#!/bin/sh
2# Install all required packages
3# XXX: Welcome to port hell, if /usr/ports has been updated, you actually want
4# to delete all installed packages and start over again, hence why people used
5# to run this stuff in jails, etc.
6
7. $(dirname $0)/package-build.inc.sh
8
9DEBUG=${DEBUG:-0}
10DEP_CHECK_ONLY=${DEP_CHECK_ONLY:-0}
11
12# make options, for package building
13LOGDIR=`mktemp -d "/tmp/$(basename $0 .sh)-$(date +%Y%m%d-%H:%M:%S).X"`
14TARGET="`cd $(dirname $0);pwd -P`/../pkg/"
15
16# Package target
17MAKE_ARGS="$MAKE_ARGS PACKAGES=$TARGET"
18MAKE_ARGS="$MAKE_ARGS BATCH=yes PACKAGE_BUILDING=yes"
19
20# www/py-cherrypy
21MAKE_ARGS="${MAKE_ARGS} WITH_APACHE=yes"
22# net-mgmt/net-snmp
23MAKE_ARGS="${MAKE_ARGS} WITHOUT_PERL=yes"
24# net-mgmt/nagios-plugins
25MAKE_ARGS="${MAKE_ARGS} WITH_FPING=yes"
26# threads is broken in the version (atleast up to 9.0 - 20120213)
27# Should be fix in current version in linux, but for some reason
28# Not yet in BSD. We don't need threads
29MAKE_ARGS="${MAKE_ARGS} WITHOUT_THREADS=yes"
30
31p_info Log directory ${LOGDIR}
32p_info Make options are:
33p_info $(p_list ${MAKE_ARGS})
34
35p_info Checking whether there are currently unmet dependencies
36RETVAL=0
37PKGS=`pkg_info | awk '{print $1}'`
38for PKG in ${PKGS} ; do
39 PKG_DEP_FAIL=""
40 for PKGDEP in `pkg_info -qr ${PKG} | awk '{print $2}'`; do
41 pkg_info -e ${PKGDEP}
42 if [ $? -eq 1 ]; then
43 PKG_DEP_FAIL="${PKG_DEP_FAIL} ${PKGDEP}"
44 fi
45 done
46 if [ -n "${PKG_DEP_FAIL}" ]; then
47 p_err Unmet dependencies found at $PKG, please fix manually:
48 p_err $(p_list ${PKG_DEP_FAIL})
49 RETVAL=1
50 fi
51done
52if [ $RETVAL -eq 1 ]; then
53 exit 1
54fi
55p_info Dependecy check ok
56
57if [ ${DEP_CHECK_ONLY} -eq 1 ]; then
58 exit 0
59fi
60echo ""
61
62
63if [ -d "${TARGET}/All" ]; then
64 p_warn "Deleted all (old) packages at ${TARGET}"
65 rm -R $TARGET/*
66fi
67p_info Created target dir ${TARGET}/All
68mkdir -p ${TARGET}/All
69
70PORTSDIR='/usr/ports'
71WL_PORTSDIR="`cd $(dirname $0);pwd -P`/../ports/"
72
73# XXX: Make file dynamic
74# Dirty quirk to allow comments in part below
75PACKAGE_LIST=`cat <<EOF | sed 's/#.*$//g'
76$PORTSDIR/dns/dnsmasq
77$PORTSDIR/www/tinyproxy
78$PORTSDIR/www/thttpd
79$PORTSDIR/editors/vim-lite
80
81$PORTSDIR/lang/python
82
83$PORTSDIR/net-mgmt/net-snmp
84$PORTSDIR/net-mgmt/nrpe2
85$PORTSDIR/benchmarks/iperf
86$PORTSDIR/net/pen
87$PORTSDIR/net/rsync
88
89$PORTSDIR/devel/py-yaml
90
91$PORTSDIR/sysutils/ucspi-tcp
92
93# Wireless Leiden ports at $WL_PORTSDIR
94$WL_PORTSDIR/net/lvrouted
95$WL_PORTSDIR/net/transproxy
96`
97
98MAKE="make ${MAKE_ARGS}"
99
100BUILD_LIST=''
101# Build required packages
102set ${PACKAGE_LIST}
103while [ "$1" ]; do
104 PACKAGE=$1; shift
105 BUILD_LIST="${BUILD_LIST} ${PACKAGE}"
106
107 # Build new one
108 LOGFILE="$LOGDIR/build$(echo $PACKAGE | tr '/' '_').log"
109 echo ""
110 p_info Packaging $PACKAGE
111 cd ${PACKAGE}
112
113
114 # Check for build dependencies
115 BUILDDEP_PKG=`${MAKE} build-depends-list | awk -F: '{print $2}'`
116 if [ -n "${BUILDDEP_PKG}" ]; then
117 p_info Build dependencies needed are:
118 p_info $(p_list ${BUILDDEP_PKG})
119 fi
120
121 # Check for run dependencies
122 PKGDEP_PKGS=`${MAKE} package-depends-list | awk '{print $2}'`
123 if [ -n "${PKGDEP_PKGS}" ]; then
124 p_info Package dependencies also packaged are:
125 p_info $(p_list ${PKGDEP_PKGS})
126 fi
127
128 # Check if package is already installed
129 VERSION=`${MAKE} clean generate-plist check-already-installed | awk '/is already/ {print $2}'`
130 if [ -n "${VERSION}" ]; then
131 VERSION=`echo ${VERSION} | sed 's/^.*-//g'`
132 p_info ${PACKAGE} already installed at ${VERSION}
133 MAKE_OPTION=''
134 elif [ "${VERSION}" = "An" ]; then
135 #XXX: Better way to detect whether a package needs updating
136 # An older version of lang/python26 is already installed (python26-2.6.2)
137 p_warn ${PACKAGE} outdated, updating...
138 p_warn re-run package-build.sh to check for unmet ones done using:
139 p_warn $0
140 MAKE_OPTION='deinstall reinstall'
141 else
142 p_info ${PACKAGE} not installed, installing...
143 MAKE_OPTION='install'
144 fi
145
146 if [ -n "${MAKE_OPTION}" ]; then
147 p_info Buildlog: $LOGFILE
148 ${MAKE} ${MAKE_OPTION} 2>>$LOGFILE 1>> $LOGFILE
149 if [ $? -ne 0 ]; then
150 p_err building ${PACKAGE} FAILED, logging at $LOGFILE
151 exit 1
152 fi
153 fi
154 ${MAKE} package-links
155 PKGNAME=`make extract-message | awk '{print $NF}'`
156 pkg_create -b $PKGNAME $TARGET/All/${PKGNAME}.tbz
157
158 p_info Checking dependencies
159 for PKG in $PKGDEP_PKGS; do
160 echo "${BUILD_LIST}" | grep -q "$PKG"
161 if [ $? -eq 0 ]; then
162 # Already packaged
163 p_info ${PKG} Already packaged
164 else
165 echo $@ | grep -q "${PKG}"
166 if [ $? -eq 0 ]; then
167 p_info ${PKG} Already planned
168 else
169 set $@ ${PKG}
170 fi
171 fi
172 done
173 p_info Packaging $PACKAGE succesfull
174done
175
176p_info $(echo ${BUILD_LIST} | wc -w) packages build succesfully
177
178if [ ${DEBUG} -eq 0 ]; then
179 rm -R ${LOGDIR}
180else
181 p_info Debugging enabled ${LOGDIR} saved
182fi
183
Note: See TracBrowser for help on using the repository browser.