Skip to content

Commit

Permalink
Script to tar up an already instaled package.
Browse files Browse the repository at this point in the history
  • Loading branch information
hubertf committed Feb 14, 2000
1 parent e8ae237 commit 6548ce7
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 0 deletions.
21 changes: 21 additions & 0 deletions pkgtools/pkg_tarup/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# $NetBSD: Makefile,v 1.1.1.1 2000/02/14 02:07:08 hubertf Exp $
#

DISTNAME= pkg_tarup-1.0
CATEGORIES= pkgtools
MASTER_SITES= # empty
DISTFILES= # empty

MAINTAINER= [email protected]

WRKSRC= ${WRKDIR}
NO_CHECKSUM= yes
NO_PATCH= yes
NO_CONFIGURE= yes
NO_BUILD= yes
NO_MTREE= yes

do-install:
${INSTALL_SCRIPT} ${FILESDIR}/pkg_tarup ${PREFIX}/bin

.include "../../mk/bsd.pkg.mk"
104 changes: 104 additions & 0 deletions pkgtools/pkg_tarup/files/pkg_tarup
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
#!/bin/sh
# $Id: pkg_tarup,v 1.1.1.1 2000/02/14 02:07:13 hubertf Exp $
#
# Tar up installed package
#
# (c) Copyright 2000 Hubert Feyrer <[email protected]>
#

PKG_DBDIR=${PKG_DBDIR:-/var/db/pkg}
PKGREPOSITORY=${PKGREPOSITORY:-/tmp}
PKG_SUFX=${PKG_SUFX:-tgz}

PKG="$1"
rPKG="`pkg_info -e \"$PKG\"`"

if [ "$PKG" = "" -o "$rPKG" = "" -o -f "${PKG_DBDIR}/${rPKG}" ]
then
echo Usage: $0 installed_pkg
exit 1
fi

PKG=$rPKG
echo "Taring up $PKG"


check_and_add() {
opt="$1"
file="$2"

if [ x"$opt" = x"" -o x"$file" = x"" ]; then
echo Usage: check_and_add -opt +FILE
exit 1
fi

if [ -f "$file" ]
then
PKG_ARGS="${PKG_ARGS} ${opt} ${file}"
fi
}

check_and_add -c ${PKG_DBDIR}/${PKG}/+COMMENT
check_and_add -d ${PKG_DBDIR}/${PKG}/+DESC
check_and_add -b ${PKG_DBDIR}/${PKG}/+BUILD_VERSION
check_and_add -B ${PKG_DBDIR}/${PKG}/+BUILD_INFO
check_and_add -s ${PKG_DBDIR}/${PKG}/+SIZE_PKG
check_and_add -S ${PKG_DBDIR}/${PKG}/+SIZE_ALL
check_and_add -i ${PKG_DBDIR}/${PKG}/+INSTALL #NOTYET#
check_and_add -k ${PKG_DBDIR}/${PKG}/+DEINSTALL
check_and_add -r ${PKG_DBDIR}/${PKG}/+REQUIRE
check_and_add -D ${PKG_DBDIR}/${PKG}/+DISPLAY
check_and_add -m ${PKG_DBDIR}/${PKG}/+MTREE #NOTYET#

PLIST=/tmp/+CONTENTS.$$
sed -n \
-e '/^@comment MD5:/d' \
-e '/^@cwd \.$/,$d' \
-e '/\$NetBSD/,$p' \
<${PKG_DBDIR}/${PKG}/+CONTENTS >$PLIST

# Duplicate first @cwd (work around pkg_create "feature" ...)
grep '^@cwd' $PLIST | head -1 >$PLIST.1
if [ -s ${PLIST}.1 ]
then
sed \
-e "/`cat ${PLIST}.1 | sed 's,/,\\\\/,g'`/r${PLIST}.1" \
<${PLIST} >${PLIST}.2
mv ${PLIST}.2 ${PLIST}
fi
rm ${PLIST}.1

# echo -----
# cat $PLIST
# echo -----
# exit 0

# Just for kicks ...
# pkg_admin check "${PKG}"

pkg_create \
${PKG_ARGS} \
-v \
-f ${PLIST} \
-l \
-p "`pkg_info -qp ${PKG} | head -1 | awk '{ print $2 }'`" \
-P "`pkg_info -qf ${PKG} | grep ^@pkgdep | awk '{ print $2 }'`" \
-C "`pkg_info -qf ${PKG} | grep ^@pkgcfl | awk '{ print $2 }'`" \
${PKGREPOSITORY}/${PKG}.${PKG_SUFX}

rm -f ${PLIST}
exit 0



mtree file considerations:
- keeping uncompressed mtree file adds ~10% too size of /var/db/pkg
- could gzip file, space saving: 5kb->850b (plus some intelligence to
uncompress them when needed)
- not keeping mtree file results in pkgs w/o mtree file (but should work)

integration:
- how/where? I'd prefer not to have yet another pkg_* utility flying
around, integration into pkg_admin would be nice. But how merge a
shell script into a C executable?
1 change: 1 addition & 0 deletions pkgtools/pkg_tarup/pkg/COMMENT
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Generates binary package from installed pkg
14 changes: 14 additions & 0 deletions pkgtools/pkg_tarup/pkg/DESCR
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Script to tar up an already instaled package.

Now my question is, how can we include this? I'd prefer to have it
available from pkg_admin, but that is C, and the other is a script -
rewrite in C?

The Script has still two problems, as the INSTALL and MTREE files are
removed after a pkg_add/make install. The INSTALL file isn't a problem to
keep, but the MTREE file will lead to a ~10% increase in space needed for
/var/db/pkg which I'm not sure we should do, esp. as the files are almost
always the same again. (On my notebook with ~250 installed pkgs, the size
increasement would be from 8.8MB to 10MB).

Send your thoughts to me <[email protected]> !
2 changes: 2 additions & 0 deletions pkgtools/pkg_tarup/pkg/PLIST
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
@comment $NetBSD: PLIST,v 1.1.1.1 2000/02/14 02:07:11 hubertf Exp $
bin/pkg_tarup

0 comments on commit 6548ce7

Please sign in to comment.