Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Keep pkg2ng to not break existing documentation, make it use pkg convert
Baptiste Daroussin committed 13 years ago
commit 8ec9bd005ce642ec7a5ff4fbbd28883f790d112e
parent 8373678
1 file changed +1 -131
modified ports/pkg2ng
@@ -1,133 +1,3 @@
#!/bin/sh

-
: "${PORTSDIR:=/usr/ports}"
-

-
export PKG_OLD_NOWARN=yes
-

-
if [ $( id -u ) -ne 0 ]
-
then
-
	echo "This program needs to be run as root"
-
	return 77	# EX_PERM
-
fi
-

-
: ${ARCH=$(uname -m)}
-
failed_pkgs=""
-
MOVED=0
-
PKGDB="$(make -C ${PORTSDIR}/ports-mgmt/pkg -VPKG_DBDIR)"
-
PKGBAK="$PKGDB.bak"
-

-
for PKG in $( pkg_info -Ea )
-
do
-
	DB="${PKGDB}/${PKG}"
-

-
	# Work around lingering portmaster distfiles showing "corruption"
-
	if [ ! -e "${DB}/+CONTENTS" ] && [ "$(/bin/ls ${DB})" = "distfiles" ]; then
-
		continue
-
	fi
-

-
	DESC="${DB}/+DESC"
-
	if [ ! -e "${PKGBAK}" ]; then
-
		echo "Creating backup pkg_info(1) database directory in ${PKGBAK}."
-
		mkdir -p ${PKGBAK}
-
	fi
-

-
	ORIGIN=$(pkg_info -qo ${PKG})
-
	# register a package only if it's not registered already
-
	if pkg info -e ${ORIGIN}; then
-
		echo "${PKG} is already registered."
-
		if [ -e ${DB} ]; then
-
			mv ${DB} ${PKGBAK}/${PKG}
-
			MOVED=1
-
		fi
-
		continue
-
	fi
-
	PREFX=$(pkg_info -qp ${PKG})
-
	if [ -d ${PORTSDIR}/${ORIGIN} ]; then
-
		MAINTAINER=$( make -C ${PORTSDIR}/${ORIGIN} -V MAINTAINER )
-
		CATEGORIES=$( make -C ${PORTSDIR}/${ORIGIN} -V CATEGORIES | sed -e "s/ /,/g")
-
		LICENSES=$( make -C ${PORTSDIR}/${ORIGIN} -V LICENSE | sed -e "s/ /,/g")
-
		LICLOGIC=$(make -C ${PORTSDIR}/${ORIGIN} -V LICENSE_COMB )
-
		OPTIONS=$(make -C ${PORTSDIR}/${ORIGIN} showconfig | awk 'BEGIN{ line=""; }!/^=/ { gsub(/=/,": ",$1); gsub(/:$/,"",$1); line=line" "$1","; } END{print line}')
-
		USERS=$(make -C ${PORTSDIR}/${ORIGIN} -V USERS | sed -e "s/ /,/g")
-
		GROUPS=$(make -C ${PORTSDIR}/${ORIGIN} -V GROUPS | sed -e "s/ /,/g")
-
	else
-
		MAINTAINER="unknown"
-
		CATEGORIES=${ORIGIN%/*}
-
	fi
-

-
	# +CONTENTS
-
	MDIR=$(mktemp -d /tmp/pkg2ngXXXXX)
-
	test -f ${DB}/+DISPLAY && cp -f ${DB}/+DISPLAY ${MDIR}
-
	test -f ${DB}/+MTREE_DIRS && cp -f ${DB}/+MTREE_DIRS ${MDIR}
-
	test -f ${DB}/+DESC && cp -f ${DB}/+DESC ${MDIR}
-
	MANIFEST=${MDIR}/+MANIFEST
-
	PLIST=${MDIR}/plist
-
	cp -f ${DB}/+INSTALL ${MDIR} 2>/dev/null
-
	echo "name: ${PKG%-*}" >> ${MANIFEST}
-
	echo "version: ${PKG##*-}" >> ${MANIFEST}
-
	echo "origin: ${ORIGIN}" >> ${MANIFEST}
-
	echo "comment: |" >> ${MANIFEST}
-
	echo -n "  " >> ${MANIFEST}
-
	cat ${DB}/+COMMENT >> ${MANIFEST}
-
	echo "maintainer: ${MAINTAINER}" >> ${MANIFEST}
-
	echo "prefix: ${PREFX##* }" >> ${MANIFEST}
-
	echo "licenselogic: ${LICLOGIC:-single}" >> ${MANIFEST}
-
	test -n "${LICENSES}" && echo "licenses: [${LICENSES}]" >> ${MANIFEST}
-
	echo "deps:" >> ${MANIFEST}
-
	pkg_info -qr ${PKG} | while read ignore dep; do
-
		deporigin=$(pkg_info -qo ${dep})
-
		echo -e "  ${dep%-*}: { origin: \"${deporigin}\", version: \"${dep##*-}\"}" >> ${MANIFEST}
-
	done
-
	egrep -v "^@(name|pkgdep|ignore|conflicts|display)" ${DB}/+CONTENTS >> ${PLIST}
-
	test -n "${CATEGORIES}" && echo "categories: [${CATEGORIES}]" >> ${MANIFEST}
-
	test -n "${OPTIONS}" && echo "options: {${OPTIONS}}" >> ${MANIFEST}
-
	test -n "${USERS}" && echo "users: [${USERS}]" >> ${MANIFEST}
-
	test -n "${GROUPS}" && echo "groups: [${GROUPS}]" >> ${MANIFEST}
-

-
	pkg register -l -m ${MDIR} -f ${PLIST} ${CMD_ARGS}
-
	if [ $? -ne 0 ]; then
-
		echo "Registration of ${PKG} failed." >&2
-
		cat ${MANIFEST}
-
		failed_pkgs="${failed_pkgs} ${PKG}"
-
	else
-
		rm -rf ${MANIFEST}
-
	fi
-

-
	rm -rf ${MDIR}
-
done
-

-
if [ ${MOVED} -eq 1 ]; then
-
	echo "Moved old package database to ${PKGBAK}."
-
fi
-

-
if [ -n "${failed_pkgs}" ]; then
-
	echo "" >&2
-
	echo "!!! Some packages failed to register !!!" >&2
-
	echo "Please fix them by upgrading them or removing them" >&2
-
	echo "or rerun \"PERMISSIVE=yes pkg2ng\" if you *really* must" >&2
-
	echo "Failed packages: ${failed_pkgs}" >&2
-
else
-
	for PKG in $( pkg_info -Ea ); do
-
		DB="${PKGDB}/${PKG}"
-
		# Ignore package dirs that only have portmaster 'distfiles' in them
-
		if [ -e ${DB} ] && [ "$(/bin/ls ${DB})" != "distfiles" ]; then
-
			cp -pr ${DB} ${PKGBAK}/${PKG}
-
			# Remove only the files documented in
-
			# pkg_add(1), then remove ${DB} only if empty
-
			for f in +COMMENT +CONTENTS +DEINSTALL +DESC \
-
                                 +DISPLAY +INSTALL +MTREE_DIRS \
-
			         +POST-DEINSTALL +POST-INSTALL  +REQUIRE \
-
                                 +REQUIRED_BY ;
-
			do
-
			    rm -f ${DB}/$f
-
			done
-
			rmdir ${DB} 2>/dev/null || true
-
			MOVED=1
-
		fi
-
	done
-
	echo "Conversion has been successfully finished"
-
	echo "Your old packages database has been moved to: ${PKGBAK}."
-
fi
-

-
# Delete the portupgrade pkgdb to avoid discrepencies. It will be auto recreated.
-
rm -f /var/db/pkg/pkgdb.db > /dev/null 2>&1
+
pkg convert