Initial import of genpkgng, a utility which will convert a pkgsrc

binary package to a FreeBSD binary pkg.  pkgsrc binary packages keep
more metadata, and do Dewey matching on package version numbers, so
it's not possible to convert in the other direction.

The DESCR says:

	This is a small utility to generate a FreeBSD pkg binary package
	from a pkgsrc binary package. It is invoked simply, using a
	command like:

		genpkgng ssam-1.9nb1.tgz

	and it will convert the pkgsrc binary package to a pkg one:

		% ./genpkgng.sh perl-5.18.1nb2.tgz
		Converting perl-5.18.1nb2.tgz
		-rw-r--r--  1 agc  users  16597860 Apr 24 19:01 perl-5.18.1nb2.txz
		%
This commit is contained in:
agc 2014-04-27 00:10:34 +00:00
parent bbc7425f10
commit e629c60d76
8 changed files with 1223 additions and 0 deletions

12
pkgtools/genpkgng/DESCR Normal file
View file

@ -0,0 +1,12 @@
This is a small utility to generate a FreeBSD pkg binary package
from a pkgsrc binary package. It is invoked simply, using a command
like:
genpkgng ssam-1.9nb1.tgz
and it will convert the pkgsrc binary package to a pkg one:
% ./genpkgng.sh perl-5.18.1nb2.tgz
Converting perl-5.18.1nb2.tgz
-rw-r--r-- 1 agc users 16597860 Apr 24 19:01 perl-5.18.1nb2.txz
%

View file

@ -0,0 +1,29 @@
# $NetBSD: Makefile,v 1.1.1.1 2014/04/27 00:10:34 agc Exp $
DISTNAME= genpkgng-20140425
CATEGORIES= pkgtools
MASTER_SITES= # empty
DISTFILES= # empty
MAINTAINER= agc@NetBSD.org
HOMEPAGE= http://www.NetBSD.org/
COMMENT= Convert a pkgsrc binary package to a FreeBSD pkg
LICENSE= modified-bsd
AUTO_MKDIRS= yes
SUBST_CLASSES+= mtree
SUBST_STAGE.mtree= pre-configure
SUBST_MESSAGE.mtree= Fix location of MTREE_DIRS file
SUBST_FILES.mtree= genpkgng.sh
SUBST_SED.mtree= -e 's|@MTREE_DIR_DIR@|${PREFIX}/libdata/genpkgng|'
do-extract:
${CP} -R ${FILESDIR} ${WRKSRC}
do-install:
${INSTALL_SCRIPT} ${WRKSRC}/genpkgng ${DESTDIR}${PREFIX}/bin
${INSTALL_DATA} ${WRKSRC}/MTREE_DIRS ${DESTDIR}${PREFIX}/libdata/genpkgng/
${INSTALL_MAN} ${WRKSRC}/genpkgng.1 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man1/
.include "../../mk/bsd.pkg.mk"

4
pkgtools/genpkgng/PLIST Normal file
View file

@ -0,0 +1,4 @@
@comment $NetBSD: PLIST,v 1.1.1.1 2014/04/27 00:10:34 agc Exp $
bin/genpkgng
libdata/genpkgng/MTREE_DIRS
man/man1/genpkgng.1

View file

@ -0,0 +1 @@
$NetBSD: distinfo,v 1.1.1.1 2014/04/27 00:10:34 agc Exp $

View file

@ -0,0 +1,961 @@
#mtree
# $FreeBSD: /tmp/pcvs/ports/Templates/BSD.local.dist,v 1.3 2010-11-12 20:57:14 pav Exp $
#
# Please see the file src/etc/mtree/README before making changes to this file.
#
/set type=dir uname=root gname=wheel mode=0755
.
bin
..
etc
devd
..
man.d
..
pam.d
..
rc.d
..
..
include
X11
..
..
info
..
lib
X11
app-defaults
..
fonts
local
..
..
..
..
libdata
ldconfig
..
ldconfig32
..
pkgconfig
..
..
libexec
..
man
/set uname=man
cat1
..
cat2
..
cat3
..
cat4
..
cat5
..
cat6
..
cat7
..
cat8
..
cat9
..
catl
..
catn
..
de.ISO8859-1 uname=root
cat1
..
cat2
..
cat3
..
cat4
..
cat5
..
cat6
..
cat7
..
cat8
..
cat9
..
catl
..
catn
..
/set uname=root
man1
..
man2
..
man3
..
man4
..
man5
..
man6
..
man7
..
man8
..
man9
..
manl
..
mann
..
..
en.ISO8859-1
/set uname=man
cat1
..
cat1aout
..
cat2
..
cat3
..
cat4
i386
..
..
cat5
..
cat6
..
cat7
..
cat8
i386
..
..
cat9
i386
..
..
catn
..
..
ja uname=root
cat1
..
cat2
..
cat3
..
cat4
..
cat5
..
cat6
..
cat7
..
cat8
..
cat9
..
catl
..
catn
..
/set uname=root
man1
..
man2
..
man3
..
man4
..
man5
..
man6
..
man7
..
man8
..
man9
..
manl
..
mann
..
..
man1
..
man2
..
man3
..
man4
..
man5
..
man6
..
man7
..
man8
..
man9
..
manl
..
mann
..
ru.KOI8-R
/set uname=man
cat1
..
cat2
..
cat3
..
cat4
..
cat5
..
cat6
..
cat7
..
cat8
..
cat9
..
catl
..
catn
..
/set uname=root
man1
..
man2
..
man3
..
man4
..
man5
..
man6
..
man7
..
man8
..
man9
..
manl
..
mann
..
..
..
sbin
..
share
aclocal
..
applications
..
dict
..
doc
ja
..
..
emacs
site-lisp
..
..
examples
..
java
classes
..
..
locale
af
LC_MESSAGES
..
..
am
LC_MESSAGES
..
..
ar
LC_MESSAGES
..
..
az
LC_MESSAGES
..
..
be
LC_MESSAGES
..
..
bg
LC_MESSAGES
..
..
bn
LC_MESSAGES
..
..
br
LC_MESSAGES
..
..
bs
LC_MESSAGES
..
..
ca
LC_MESSAGES
..
..
cs
LC_MESSAGES
..
..
cy
LC_MESSAGES
..
..
da
LC_MESSAGES
..
..
de
LC_MESSAGES
..
..
de_AT
LC_MESSAGES
..
..
dk
LC_MESSAGES
..
..
ee
LC_MESSAGES
..
..
el
LC_MESSAGES
..
..
en
LC_MESSAGES
..
..
en_AU
LC_MESSAGES
..
..
en_CA
LC_MESSAGES
..
..
en_GB
LC_MESSAGES
..
..
eo
LC_MESSAGES
..
..
es
LC_MESSAGES
..
..
es_ES
LC_MESSAGES
..
..
es_MX
LC_MESSAGES
..
..
et
LC_MESSAGES
..
..
eu
LC_MESSAGES
..
..
fa
LC_MESSAGES
..
..
fa_IR
LC_MESSAGES
..
..
fi
LC_MESSAGES
..
..
fr
LC_MESSAGES
..
..
fr_FR
LC_MESSAGES
..
..
ga
LC_MESSAGES
..
..
gl
LC_MESSAGES
..
..
gu
LC_MESSAGES
..
..
he
LC_MESSAGES
..
..
hi
LC_MESSAGES
..
..
hr
LC_MESSAGES
..
..
hu
LC_MESSAGES
..
..
id
LC_MESSAGES
..
..
is
LC_MESSAGES
..
..
it
LC_MESSAGES
..
..
ja
LC_MESSAGES
..
..
ka
LC_MESSAGES
..
..
kn
LC_MESSAGES
..
..
ko
LC_MESSAGES
..
..
li
LC_MESSAGES
..
..
lt
LC_MESSAGES
..
..
lv
LC_MESSAGES
..
..
mk
LC_MESSAGES
..
..
ml
LC_MESSAGES
..
..
mn
LC_MESSAGES
..
..
ms
LC_MESSAGES
..
..
mt
LC_MESSAGES
..
..
nb
LC_MESSAGES
..
..
ne
LC_MESSAGES
..
..
nl
LC_MESSAGES
..
..
nn
LC_MESSAGES
..
..
no
LC_MESSAGES
..
..
or
LC_MESSAGES
..
..
pa
LC_MESSAGES
..
..
pl
LC_MESSAGES
..
..
pt
LC_MESSAGES
..
..
pt_BR
LC_MESSAGES
..
..
pt_PT
LC_MESSAGES
..
..
ro
LC_MESSAGES
..
..
ru
LC_MESSAGES
..
..
sk
LC_MESSAGES
..
..
sl
LC_MESSAGES
..
..
sq
LC_MESSAGES
..
..
sr
LC_MESSAGES
..
..
sr@Latn
LC_MESSAGES
..
..
sv
LC_MESSAGES
..
..
ta
LC_MESSAGES
..
..
tg
LC_MESSAGES
..
..
th
LC_MESSAGES
..
..
tk
LC_MESSAGES
..
..
tr
LC_MESSAGES
..
..
uk
LC_MESSAGES
..
..
uz
LC_MESSAGES
..
..
vi
LC_MESSAGES
..
..
wa
LC_MESSAGES
..
..
zh
LC_MESSAGES
..
..
zh_CN
LC_MESSAGES
..
..
zh_CN.GB2312
LC_MESSAGES
..
..
zh_TW
LC_MESSAGES
..
..
zh_TW.Big5
LC_MESSAGES
..
..
..
misc
..
nls
C
..
af_ZA.ISO8859-1
..
af_ZA.ISO8859-15
..
af_ZA.UTF-8
..
am_ET.UTF-8
..
be_BY.CP1131
..
be_BY.CP1251
..
be_BY.ISO8859-5
..
be_BY.UTF-8
..
bg_BG.CP1251
..
bg_BG.UTF-8
..
ca_ES.ISO8859-1
..
ca_ES.ISO8859-15
..
ca_ES.UTF-8
..
cs_CZ.ISO8859-2
..
cs_CZ.UTF-8
..
da_DK.ISO8859-1
..
da_DK.ISO8859-15
..
da_DK.UTF-8
..
de_AT.ISO8859-1
..
de_AT.ISO8859-15
..
de_AT.UTF-8
..
de_CH.ISO8859-1
..
de_CH.ISO8859-15
..
de_CH.UTF-8
..
de_DE.ISO8859-1
..
de_DE.ISO8859-15
..
de_DE.UTF-8
..
el_GR.ISO8859-7
..
el_GR.UTF-8
..
en_AU.ISO8859-1
..
en_AU.ISO8859-15
..
en_AU.US-ASCII
..
en_AU.UTF-8
..
en_CA.ISO8859-1
..
en_CA.ISO8859-15
..
en_CA.US-ASCII
..
en_CA.UTF-8
..
en_GB.ISO8859-1
..
en_GB.ISO8859-15
..
en_GB.US-ASCII
..
en_GB.UTF-8
..
en_IE.UTF-8
..
en_NZ.ISO8859-1
..
en_NZ.ISO8859-15
..
en_NZ.US-ASCII
..
en_NZ.UTF-8
..
en_US.ISO8859-1
..
en_US.ISO8859-15
..
en_US.UTF-8
..
es_ES.ISO8859-1
..
es_ES.ISO8859-15
..
es_ES.UTF-8
..
et_EE.ISO8859-15
..
et_EE.UTF-8
..
fi_FI.ISO8859-1
..
fi_FI.ISO8859-15
..
fi_FI.UTF-8
..
fr_BE.ISO8859-1
..
fr_BE.ISO8859-15
..
fr_BE.UTF-8
..
fr_CA.ISO8859-1
..
fr_CA.ISO8859-15
..
fr_CA.UTF-8
..
fr_CH.ISO8859-1
..
fr_CH.ISO8859-15
..
fr_CH.UTF-8
..
fr_FR.ISO8859-1
..
fr_FR.ISO8859-15
..
fr_FR.UTF-8
..
he_IL.UTF-8
..
hi_IN.ISCII-DEV
..
hr_HR.ISO8859-2
..
hr_HR.UTF-8
..
hu_HU.ISO8859-2
..
hu_HU.UTF-8
..
hy_AM.ARMSCII-8
..
hy_AM.UTF-8
..
is_IS.ISO8859-1
..
is_IS.ISO8859-15
..
is_IS.UTF-8
..
it_CH.ISO8859-1
..
it_CH.ISO8859-15
..
it_CH.UTF-8
..
it_IT.ISO8859-1
..
it_IT.ISO8859-15
..
it_IT.UTF-8
..
ja_JP.SJIS
..
ja_JP.UTF-8
..
ja_JP.eucJP
..
kk_KZ.PT154
..
kk_KZ.UTF-8
..
ko_KR.CP949
..
ko_KR.UTF-8
..
ko_KR.eucKR
..
la_LN.ISO8859-1
..
la_LN.ISO8859-15
..
la_LN.ISO8859-2
..
la_LN.ISO8859-4
..
la_LN.US-ASCII
..
lt_LT.ISO8859-13
..
lt_LT.ISO8859-4
..
lt_LT.UTF-8
..
nl_BE.ISO8859-1
..
nl_BE.ISO8859-15
..
nl_BE.UTF-8
..
nl_NL.ISO8859-1
..
nl_NL.ISO8859-15
..
nl_NL.UTF-8
..
no_NO.ISO8859-1
..
no_NO.ISO8859-15
..
no_NO.UTF-8
..
pl_PL.ISO8859-2
..
pl_PL.UTF-8
..
pt_BR.ISO8859-1
..
pt_BR.UTF-8
..
pt_PT.ISO8859-1
..
pt_PT.ISO8859-15
..
pt_PT.UTF-8
..
ro_RO.ISO8859-2
..
ro_RO.UTF-8
..
ru_RU.CP1251
..
ru_RU.CP866
..
ru_RU.ISO8859-5
..
ru_RU.KOI8-R
..
ru_RU.UTF-8
..
sk_SK.ISO8859-2
..
sk_SK.UTF-8
..
sl_SI.ISO8859-2
..
sl_SI.UTF-8
..
sr_YU.ISO8859-2
..
sr_YU.ISO8859-5
..
sr_YU.UTF-8
..
sv_SE.ISO8859-1
..
sv_SE.ISO8859-15
..
sv_SE.UTF-8
..
tr_TR.ISO8859-9
..
tr_TR.UTF-8
..
uk_UA.ISO8859-5
..
uk_UA.KOI8-U
..
uk_UA.UTF-8
..
zh_CN.GB18030
..
zh_CN.GB2312
..
zh_CN.GBK
..
zh_CN.UTF-8
..
zh_CN.eucCN
..
zh_HK.Big5HKSCS
..
zh_HK.UTF-8
..
zh_TW.Big5
..
zh_TW.UTF-8
..
..
pixmaps
..
sgml
..
skel
..
xml
..
..
tests
..
www
..
..

View file

@ -0,0 +1,9 @@
# $NetBSD: Makefile,v 1.1.1.1 2014/04/27 00:10:34 agc Exp $
SCRIPTS=genpkgng
all: genpkgng
genpkgng: genpkgng.sh
cp genpkgng.sh genpkgng
chmod 755 genpkgng

View file

@ -0,0 +1,77 @@
.\" $NetBSD: genpkgng.1,v 1.1.1.1 2014/04/27 00:10:34 agc Exp $
.\"
.\" Copyright (c) 2014 Alistair Crooks <agc@NetBSD.org>
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd April 25, 2014
.Dt GENPKGNG 1
.Os
.Sh NAME
.Nm genraidconf
.Nd utility to configure RAID sets
.Sh SYNOPSIS
.Nm
.Fl nv
.Op Fl v
.Ar binpkg ...
.Sh DESCRIPTION
The
.Nm
command converts from a binary package
generated from the pkgsrc infratsructure to a binary
package which can be installed using the
.Fx
pkg packaging tool.
.Pp
It generates
.Dq +MANIFEST
and
.Dq +COMPACT_MANIFEST
metadata files, and also preserves the
.Dq build information
and
.Dq build versions
pkgsrc metadata, placing entries in the file system.
.Sh RETURN VALUES
The
.Nm
utility will return 0 for success,
and non-zero for failure.
.Sh EXAMPLES
.Bd -literal
% cp /usr/pkgsrc/packages/All/nettle-2.7.1nb1.tgz .
% genpkgng nettle-2.7.1nb1.tgz
Converting nettle-2.7.1nb1.tgz
-rw-r--r-- 1 agc agc 3962779 Apr 25 16:25 nettle-2.7.1nb1.txz
%
.Ed
.Sh SEE ALSO
.Xr pkg_info 1
.Sh HISTORY
The
.Nm
command first appeared in
.Nx 7.0 .
.Sh AUTHORS
.An -nosplit
.An Alistair Crooks Aq Mt agc@NetBSD.org

View file

@ -0,0 +1,130 @@
#! /bin/sh
# $NetBSD: genpkgng.sh,v 1.1.1.1 2014/04/27 00:10:34 agc Exp $
# Copyright (c) 2014 Alistair Crooks <agc@NetBSD.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# script to convert from a pkgsrc package to a pkgng one
# usage: genpkgng [-v] binpkg...
# small function to get information from build info
getvar() {
echo "$1" | awk '/^'$2'=/ { sub("'$2'=", ""); print }'
}
# process command line args
while [ $# -gt 0 ]; do
case "$1" in
-v) set -x ;;
*) break ;;
esac
shift
done
here=$(pwd)
while [ $# -gt 0 ]; do
binpkg=$1
echo "Converting ${binpkg}"
# get the package metadata from the pkgsrc binary package
pkgname=${binpkg%.tgz}
buildinfo=$(pkg_info -B ${binpkg})
name=${binpkg%-*}
name=${name##*/}
origin=$(getvar "${buildinfo}" PKGPATH)
version=${binpkg##*-}
version=${version%.tgz}
comment=$(pkg_info -qc ${binpkg})
os=$(getvar "${buildinfo}" OPSYS)
os_version=$(getvar "${buildinfo}" OS_VERSION)
os_version=${os_version%%.*}
machine_arch=$(getvar "${buildinfo}" MACHINE_ARCH | awk '{ sub("_", ":"); print }')
arch="${os}:${os_version}:${machine_arch}"
maintainer=$(getvar "${buildinfo}" MAINTAINER)
prefix=$(getvar "${buildinfo}" LOCALBASE)
www=$(getvar "${buildinfo}" HOMEPAGE)
licenselogic="single"
flatsize="$(pkg_info -qs ${binpkg})"
desc="$(pkg_info -qd ${binpkg} | awk '{ gsub("\"", "\\\""); printf("%s\\\\n", $0) }')"
categories=$(getvar "${buildinfo}" CATEGORIES)
categories=$(echo "${categories}" | awk 'NF == 1 { printf("\"%s\"", $0) } NF > 1 { gsub("[ ]+", "\",\""); printf("\"%s\"", $0) }' )
# make the temp dir
newpkgdir=$(mktemp -d -t genpkgng)
mkdir ${newpkgdir}/metadata ${newpkgdir}/archive
# create the basis for the compact and large manifests
(cd ${newpkgdir} && tar -s'|^[a-z]|archive/usr/pkg/&|' -s'|^\+|metadata/&|' -xzf ${here}/${binpkg})
awk -v name="${name}" -v origin="${origin}" -v version="${version}" -v arch="${arch}" \
-v comment="${comment}" -v arch="${arch}" -v maintainer="${maintainer}" \
-v prefix="${prefix}" -v www="${www}" -v licenselogic="${licenselogic}" \
-v flatsize="${flatsize}" -v desc="${desc}" -v categories="${categories}" \
'BEGIN {
printf("{\"name\":\"%s\",\"origin\":\"%s\",\"version\":\"%s\",\"comment\":\"%s\",\"arch\":\"%s\",\"maintainer\":\"%s\",\"prefix\":\"%s\",\"www\":\"%s\",\"licenselogic\":\"%s\",\"flatsize\":%s,\"desc\":\"%s\",\"categories\":[%s]",
name, origin, version, comment, arch, maintainer, prefix, www, licenselogic, flatsize, desc, categories)
}' > ${newpkgdir}/archive/+COMPACT_MANIFEST
cp ${newpkgdir}/archive/+COMPACT_MANIFEST ${newpkgdir}/archive/+MANIFEST
echo -n '}' >> ${newpkgdir}/archive/+COMPACT_MANIFEST
# copy metadata information
mkdir -p ${newpkgdir}/archive/${prefix}/etc/metadata/${pkgname}
cp ${newpkgdir}/metadata/+BUILD_VERSION ${newpkgdir}/archive/${prefix}/etc/metadata/${pkgname}/build_version
cp ${newpkgdir}/metadata/+BUILD_INFO ${newpkgdir}/archive/${prefix}/etc/metadata/${pkgname}/build_info
# add the files and digests to the manifest
echo -n ',"files":{' >> ${newpkgdir}/archive/+MANIFEST
sep=""
for f in $(pkg_info -qL ${binpkg}) ${prefix}/etc/metadata/${pkgname}/build_version ${prefix}/etc/metadata/${pkgname}/build_info; do
if [ -f ${newpkgdir}/archive/${f} ]; then
# redirect digest input so that filenames are omitted
echo -n "${sep}\"${f}\":\"$(digest sha256 < ${newpkgdir}/archive/${f})\"" >> ${newpkgdir}/archive/+MANIFEST
fi
sep=","
done
echo -n '},"directories":{' >> ${newpkgdir}/archive/+MANIFEST
directories="$(awk '/^[^+@]/ { match($0, ".*/"); a[substr($0, 1, RLENGTH-1)] = 1 } END { for (i in a) print i }' ${newpkgdir}/metadata/+CONTENTS)"
sep=""
for d in ${directories} etc/metadata etc/metadata/${pkgname}; do
if [ -d ${newpkgdir}/archive/${prefix}/${d} ]; then
echo -n "${sep}\"${prefix}/${d}\":\"n\"" >> ${newpkgdir}/archive/+MANIFEST
fi
sep=","
done
echo -n '}' >> ${newpkgdir}/archive/+MANIFEST
if [ -f ${newpkgdir}/metadata/+INSTALL ]; then
echo -n ",\"scripts\":{\"pre-install\":\"cd ${prefix}\",\"post-install\":\"cd ${prefix}\",\"pre-install\":\"cd ${prefix}\",\"post-install\":\"cd ${prefix}\"}" >> ${newpkgdir}/archive/+MANIFEST
fi
echo -n '}' >> ${newpkgdir}/archive/+MANIFEST
# now make the pkgng binary package
cp @MTREE_DIR_DIR@/MTREE_DIRS ${newpkgdir}/archive/+MTREE_DIRS
(cd ${newpkgdir}/archive && tar -czf ${here}/${pkgname}.txz *)
ls -l ${pkgname}.txz
rm -rf ${newpkgdir}
shift
done
exit 0