source: hybrid/branches/releng-10/nanobsd/tools/package-build.sh@ 12888

Last change on this file since 12888 was 12888, checked in by rick, 10 years ago

Never commit untested code late at night.

  • Property svn:eol-style set to LF
  • Property svn:executable set to *
File size: 3.3 KB
Line 
1#!/bin/sh
2# Install all required packages
3#
4# XXX: Welcome to port hell, if /usr/ports has been updated, you actually want
5# to delete all installed packages and start over again, hence why people used
6# to run this stuff in jails, etc.
7#
8# Rick van der Zwet <rick@wirelessleiden.nl>
9#
10
11. `dirname $0`/package-build.inc.sh
12
13DEBUG=${DEBUG:-'0'}
14DEP_CHECK_ONLY=${DEP_CHECK_ONLY:-'0'}
15
16# make options, for package building
17LOGDIR=`mktemp -d /tmp/$(basename $0 .sh)-$(date '+%Y%m%d-%H:%M:%S')X`
18
19p_info Log directory ${LOGDIR}
20p_info Make arguments are:
21p_info `p_list ${PKG_MAKE_ARGS}`
22p_info Make configuration is:
23echo "${PKG_MAKE_CONF}" | sed 's/^/## /'
24
25# HACK: install our own ports _inside_ the normal ports dir
26cp -fR $WL_PORTSDIR/* $PORTSDIR || exit 1
27
28# Pre-req dependency fixing
29p_info Checking whether there are currently unmet dependencies
30RETVAL=0
31PKGS=`pkg info | awk '{print $1}'`
32for PKG in ${PKGS} ; do
33 PKG_DEP_FAIL=""
34 for PKGDEP in `pkg info -qr ${PKG} | awk '{print $2}'`; do
35 pkg info -e ${PKGDEP}
36 if [ $? -eq 1 ]; then
37 PKG_DEP_FAIL="${PKG_DEP_FAIL} ${PKGDEP}"
38 fi
39 done
40 if [ -n "${PKG_DEP_FAIL}" ]; then
41 p_err Unmet dependencies found at $PKG, please fix manually:
42 p_err `p_list ${PKG_DEP_FAIL}`
43 RETVAL=1
44 fi
45done
46if [ $RETVAL -eq 1 ]; then
47 exit 1
48fi
49p_info Dependecy check ok
50
51if [ ${DEP_CHECK_ONLY} -eq 1 ]; then
52 exit 0
53fi
54echo ""
55
56
57# Cleanup of old packages
58if [ -d "${NANO_PACKAGE_DIR}" ]; then
59 p_warn "Deleted all (old) packages at ${NANO_PACKAGE_DIR}"
60 rm -R ${NANO_PACKAGE_DIR}/*
61fi
62p_info Created target dir ${NANO_PACKAGE_DIR}
63mkdir -p ${NANO_PACKAGE_DIR}
64
65
66# Build required packages
67MAKE_CONF=`mktemp -t $(basename $0)`
68echo "${PKG_MAKE_CONF}" > $MAKE_CONF
69MAKE="make __MAKE_CONF=$MAKE_CONF ${PKG_MAKE_ARGS}"
70BUILD_LIST=''
71set `echo ${PACKAGE_LIST} | xargs -n1 -I% echo $PORTSDIR/%`
72while [ "$1" ]; do
73 PACKAGE=$1; shift
74 BUILD_LIST="${BUILD_LIST} ${PACKAGE}"
75
76 # Build new one
77 LOGFILE="$LOGDIR/build_`echo $PACKAGE | tr '/' '_'`.log"
78 echo ""
79 p_info Packaging $PACKAGE
80 cd $PACKAGE || exit 1
81
82 # Check for build dependencies
83 BUILDDEP_PKG=`${MAKE} build-depends-list | awk -F: '{print $2}'`
84 if [ -n "${BUILDDEP_PKG}" ]; then
85 p_info Build dependencies needed are:
86 p_info `p_list ${BUILDDEP_PKG}`
87 fi
88
89 # Check for run dependencies
90 PKGDEP_PKGS=`${MAKE} package-depends-list | awk '{print $2}'`
91 if [ -n "${PKGDEP_PKGS}" ]; then
92 p_info Package dependencies also packaged are:
93 p_info `p_list ${PKGDEP_PKGS}`
94 fi
95
96 PKGNAME=`${MAKE} extract-message | awk '{print $NF}'`
97 PKGBUILDLOG=/tmp/build.$$.`basename $PACKAGE`.log
98 p_info Packaging $PACKAGE ... details at $PKGBUILDLOG
99 ${MAKE} PACKAGES=/root/nanobsd/pkg package do-package package-links 2>&1 >$PKGBUILDLOG || exit 1
100
101 p_info Checking dependencies
102 for PKG in $PKGDEP_PKGS; do
103 echo "${BUILD_LIST}" | grep -q "$PKG"
104 if [ $? -eq 0 ]; then
105 # Already packaged
106 p_info ${PKG} Already packaged
107 else
108 echo $@ | grep -q "${PKG}"
109 if [ $? -eq 0 ]; then
110 p_info ${PKG} Already planned
111 else
112 set $@ ${PKG}
113 fi
114 fi
115 done
116 p_info Packaging $PACKAGE succesfull
117done
118
119p_info `echo ${BUILD_LIST} | wc -w` packages build succesfully
120
121if [ ${DEBUG} -eq 0 ]; then
122 rm -R ${LOGDIR}
123else
124 p_info Debugging enabled ${LOGDIR} saved
125fi
126
127# House keeping
128rm $MAKE_CONF
129
Note: See TracBrowser for help on using the repository browser.