#!/bin/sh # $NetBSD: mkbinarykit,v 1.16 2007/04/12 20:31:04 joerg Exp $ # # Make a binary bootstrap kit and place it in targetdir (or current # working directory if not specified). The mk.conf.example file is # copied to ${PREFIX}/etc/mk.conf or to the location specified # by using --mkconf. Run this program from the pkgsrc/bootstrap # directory. usage="Usage: $0 "' [ --force ] [ --targetdir= ] [ --mkconf= ] [ --no-build ] [ --workdir= ] [ bootstrap script arguments ] [ --fetch-cmd= ]' opsys=`uname -s` osrev=`uname -r` ospro=`uname -p` date=`date +%Y%m%d` prefix=/usr/pkg sysconfdir=$prefix/etc pkgdbdir=/var/db/pkg mkfile= ignorecasecheck=no ignoreusercheck=no force=no build=yes fetch_cmd="" targetdir=`pwd` wrkdir=`pwd`/work # default: relative to pkgsrc/bootstrap sedprog="sed" case "$opsys" in AIX) syscondir=$prefix/etc pkgdbdir=$prefix/pkgdb ;; DragonFly) case "$osrev" in 1.1[0-9]*) ;; 1.0* | 1.1 | 1.2.* | 1.3.*) # Don't use the ports /var/db/pkg pkgdbdir=$prefix/pkgdb ;; esac ;; FreeBSD) # Don't use the ports /var/db/pkg pkgdbdir=$prefix/pkgdb ;; Interix) # Don't use the interopsystems.com package dir pkgdbdir=$prefix/pkgdb ospro=i386 ;; NetBSD) ;; OpenBSD) # Don't use the ports /var/db/pkg pkgdbdir=$prefix/pkgdb # Use "arch -s" instead of uname -p ospro=`arch -s` ;; SunOS) sedprog=/usr/xpg4/bin/sed ;; esac while [ $# -gt 0 ]; do case $1 in --force) force=yes ;; --no-build) build=no ;; --targetdir=*) targetdir=`echo $1 | $sedprog -e 's|--targetdir=||'` ;; --prefix=*) prefix=`echo $1 | $sedprog -e 's|--prefix=||'` ;; --fetch-cmd=*) fetch_cmd="$1" ;; --mkconf=*) mkfile=`echo $1 | $sedprog -e 's|--mkconf=||'` ;; --pkgdbdir=*) pkgdbdir=`echo $1 | $sedprog -e 's|--pkgdbdir=||'` ;; --ignore-case-check) ignorecasecheck=yes ;; --ignore-user-check) ignoreusercheck=yes ;; --workdir=*) wrkdir=`echo $1 | $sedprog -e 's|--workdir=||'` ;; --*) echo "$usage"; exit 1 ;; esac shift done [ -z "${mkfile}" ] && mkfile="$prefix/etc/mk.conf" if [ "$build" = "yes" ] && [ "$force" != "yes" ]; then if [ -d "$prefix" ] || [ -d "$pkgdbdir" ]; then echo "Some pkgsrc infrastructure exists on this system already." echo "Use --force to move it out of the way." exit 1 fi elif [ "$build" = "yes" ]; then mv -f "$prefix" "$prefix.$$" mv -f "$pkgdbdir" "$pkgdbdir.$$" mv -f "$mkfile" "$mkfile.$$" fi if [ "$build" != "no" ]; then # Bootstrap bootstrap_flags="--prefix=$prefix --pkgdbdir=$pkgdbdir --workdir=$wrkdir $fetch_cmd" if [ "$ignorecasecheck" = "yes" ]; then bootstrap_flags="$bootstrap_flags --ignore-case-check" fi if [ "$ignoreusercheck" = "yes" ]; then bootstrap_flags="$bootstrap_flags --ignore-user-check" fi echo "Making bootstrap kit with" echo "prefix = $prefix" echo "pkgdbdir = $pkgdbdir" echo "mk.conf.example will be copied to $mkfile" echo "" ./cleanup $wrkdir ./bootstrap $bootstrap_flags if [ $? != "0" ]; then echo "Bootstrap error." exit 1; fi fi # Make a tar ball strip=strip if [ -x /usr/ccs/bin/strip ]; then strip=/usr/ccs/bin/strip fi echo "Stripping binaries..." $strip "$prefix/"bin/* $strip "$prefix/"sbin/* echo "Making binary kit." PATH="$prefix/bin:$PATH"; export PATH # in case tar was built by bootstrap [ ! -d $sysconfdir ] && mkdir -p $sysconfdir cp ${wrkdir}/mk.conf.example $mkfile && \ cd / && \ tar -hcf "$targetdir/bootstrap-pkgsrc-$opsys-$osrev-$ospro-$date.tar" \ .$prefix .$pkgdbdir .$mkfile && \ ls -l "$targetdir/bootstrap-pkgsrc-$opsys-$osrev-$ospro-$date.tar"