[Midnightbsd-cvs] mports: old_pkg_tools.mk: add old package tools component.

ctriv at midnightbsd.org ctriv at midnightbsd.org
Tue Oct 28 18:53:52 EDT 2008


Log Message:
-----------
add old package tools component.

Added Files:
-----------
    mports/Mk/components:
        old_pkg_tools.mk (r1.1)

-------------- next part --------------
--- /dev/null
+++ Mk/components/old_pkg_tools.mk
@@ -0,0 +1,362 @@
+#
+# $MidnightBSD: mports/Mk/components/old_pkg_tools.mk,v 1.1 2008/10/28 22:53:52 ctriv Exp $
+#
+
+#
+# Compatibility layer for using the old FreeBSD pkg_* tools.
+#
+
+# PKG_DBDIR		- Where package installation is recorded; this directory
+#				  must not contain anything else.
+#				  Default: ${DESTDIR}/var/db/pkg
+
+
+#
+# Setup PKG_* variables.
+#
+.if !defined(DESTDIR)
+PKG_CMD?=		/usr/sbin/pkg_create
+PKG_ADD?=		/usr/sbin/pkg_add
+PKG_DELETE?=	/usr/sbin/pkg_delete
+PKG_INFO?=		/usr/sbin/pkg_info
+PKG_VERSION?=	/usr/sbin/pkg_version
+.else
+PKG_CMD?=		${CHROOT} ${DESTDIR} /usr/sbin/pkg_create
+PKG_ADD?=		${CHROOT} ${DESTDIR} /usr/sbin/pkg_add
+PKG_DELETE?=	${CHROOT} ${DESTDIR} /usr/sbin/pkg_delete
+PKG_INFO?=		${CHROOT} ${DESTDIR} /usr/sbin/pkg_info
+PKG_VERSION?=	${CHROOT} ${DESTDIR} /usr/sbin/pkg_version
+.endif
+
+.if !defined(PKG_ARGS)
+PKG_ARGS=	-v -c -${COMMENT:Q} -S ${FAKE_DESTDIR} -d ${DESCR} -f ${TMPPLIST} -p ${PREFIX}\
+			-P "`cd ${.CURDIR} && ${MAKE} package-depends | ${GREP} -v -E ${PKG_IGNORE_DEPENDS} | ${SORT} -u`" \
+			${EXTRA_PKG_ARGS} $${_LATE_PKG_ARGS} 
+.if !defined(NO_MTREE)
+PKG_ARGS+=		-m ${MTREE_FILE}
+.endif
+.if defined(PKGORIGIN)
+PKG_ARGS+=		-o ${PKGORIGIN}
+.endif
+.if defined(CONFLICTS) && !defined(DISABLE_CONFLICTS)
+PKG_ARGS+=		-C "${CONFLICTS}"
+.endif
+.endif
+
+.if defined(PKG_NOCOMPRESS)
+PKG_SUFX?=		.tar
+.else
+PKG_SUFX?=		.tbz
+.endif
+
+# where pkg_add records its dirty deeds.
+PKG_DBDIR?=		/var/db/pkg
+
+
+
+###############################################################################
+#
+# Targets
+#
+
+#
+# do-package, make a package file.
+#
+do-package: ${TMPPLIST}
+	@if ! ${MKDIR} -p ${PKGREPOSITORY}; then \
+		${ECHO_MSG} "=> Can't create directory ${PKGREPOSITORY}."; \
+		exit 1; \
+	fi; 
+	@__softMAKEFLAGS='${__softMAKEFLAGS:S/'/'\''/g}'; \
+	_LATE_PKG_ARGS=""; \
+	if [ -f ${PKGINSTALL} ]; then \
+		_LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -i ${PKGINSTALL}"; \
+	fi; \
+	if [ -f ${PKGDEINSTALL} ]; then \
+		_LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -k ${PKGDEINSTALL}"; \
+	fi; \
+	if [ -f ${PKGREQ} ]; then \
+		_LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -r ${PKGREQ}"; \
+	fi; \
+	if [ -f ${PKGMESSAGE} ]; then \
+		_LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -D ${PKGMESSAGE}"; \
+	fi; \
+	if ${PKG_CMD} -v ${PKG_ARGS} ${PKGFILE} >/dev/null; then \
+		${ECHO_MSG} "Created ${PKGFILE}"; \
+		cd ${.CURDIR} && eval ${MAKE} $${__softMAKEFLAGS} package-links; \
+	else \
+		cd ${.CURDIR} && eval ${MAKE} $${__softMAKEFLAGS} delete-package; \
+		exit 1; \
+	fi
+
+
+#
+# install-package, install a package file.
+#
+install-package:
+.	if defined(DESTDIR) 
+		@${CP} ${PKGFILE} ${DISTDIR}${PKGFILE}
+.	endif
+# $PKG_ADD calls chroot if DESTDIR is set.
+	@${SETENV} PKG_PATH=${PKGREPOSITORY} ${PKG_ADD} ${PKGNAME}
+
+
+
+#
+# deinstall, remove all packages with the current origin and same prefix.
+#
+deinstall:
+.if ${UID} != 0 && !defined(INSTALL_AS_USER)
+	@${ECHO_MSG} "===>  Switching to root credentials for '${.TARGET}' target"
+	@cd ${.CURDIR} && \
+		${SU_CMD} "${MAKE} ${__softMAKEFLAGS} ${.TARGET}"
+	@${ECHO_MSG} "===>  Returning to user credentials"
+.else
+.if !defined(DESTDIR)
+	@${ECHO_MSG} "===>  Deinstalling for ${PKGORIGIN}"
+.else
+	@${ECHO_MSG} "===>  Deinstalling for ${PKGORIGIN} from ${DESTDIR}"
+.endif
+	@found_names=`${PKG_INFO} -q -O ${PKGORIGIN}`; \
+	for p in $${found_names}; do \
+			check_name=`${ECHO_CMD} $${p} | ${SED} -e 's/-[^-]*$$//'`; \
+			if [ "$${check_name}" = "${PKGSUBNAME}" ]; then \
+					prfx=`${PKG_INFO} -q -p $${p} 2> /dev/null | ${SED} -ne '1s|^@cwd ||p'`; \
+					if [ "x${PREFIX}" = "x$${prfx}" ]; then \
+							if [ -z "${DESTDIR}" ] ; then \
+									${ECHO_MSG} "===>   Deinstalling $${p}"; \
+							else \
+									${ECHO_MSG} "===>   Deinstalling $${p} from ${DESTDIR}"; \
+							fi; \
+							${PKG_DELETE} -f $${p}; \
+					else \
+							${ECHO_MSG} "===>   $${p} has a different PREFIX: $${prfx}, skipping"; \
+					fi; \
+			fi; \
+	done; \
+	if [ -z "$${found_names}" ]; then \
+			if [ -z "${DESTDIR}" ] ; then \
+					${ECHO_MSG} "===>   ${PKGSUBNAME} not installed, skipping"; \
+			else \
+					${ECHO_MSG} "===>   ${PKGSUBNAME} not installed in ${DESTDIR}, skipping"; \
+			fi; \
+	fi
+	@${RM} -f ${INSTALL_COOKIE}
+.endif
+
+#
+# deinstall all packages matching our origin, regardless of prefix.
+#
+deinstall-all:
+.if ${UID} != 0 && !defined(INSTALL_AS_USER)
+	@${ECHO_MSG} "===>  Switching to root credentials for '${.TARGET}' target"
+	@cd ${.CURDIR} && \
+		${SU_CMD} "${MAKE} ${__softMAKEFLAGS} ${.TARGET}"
+	@${ECHO_MSG} "===>  Returning to user credentials"
+.else
+.if !defined(DESTDIR)
+	@${ECHO_MSG} "===>  Deinstalling for ${PKGORIGIN}"
+.else
+	@${ECHO_MSG} "===>  Deinstalling for ${PKGORIGIN} from ${DESTDIR}"
+.endif
+	@deinstall_names=`${PKG_INFO} -q -O ${PKGORIGIN}`; \
+	if [ -n "$${deinstall_names}" ]; then \
+		for d in $${deinstall_names}; do \
+			if [ -z "${DESTDIR}" ] ; then \
+				${ECHO_MSG} "===>   Deinstalling $${d}"; \
+			else \
+				${ECHO_MSG} "===>   Deinstalling $${d} from ${DESTDIR}"; \
+			fi; \
+			${PKG_DELETE} -f $${d}; \
+		done; \
+	else \
+		if [ -z "${DESTDIR}" ] ; then \
+			${ECHO_MSG} "===>   ${PKGORIGIN} not installed, skipping"; \
+		else \
+			${ECHO_MSG} "===>   ${PKGORIGIN} not installed in ${DESTDIR}, skipping"; \
+		fi; \
+	fi; \
+	${RM} -f ${INSTALL_COOKIE}
+.endif
+
+#
+# depends targets
+#
+.for deptype in EXTRACT PATCH FETCH BUILD RUN
+${deptype:L}-depends:
+.if defined(${deptype}_DEPENDS)
+.if !defined(NO_DEPENDS)
+	@for i in `${ECHO_CMD} "${${deptype}_DEPENDS}"`; do \
+		prog=`${ECHO_CMD} $$i | ${SED} -e 's/:.*//'`; \
+		dir=`${ECHO_CMD} $$i | ${SED} -e 's/[^:]*://'`; \
+		if ${EXPR} "$$dir" : '.*:' > /dev/null; then \
+			target=`${ECHO_CMD} $$dir | ${SED} -e 's/.*://'`; \
+			dir=`${ECHO_CMD} $$dir | ${SED} -e 's/:.*//'`; \
+		else \
+			target="${DEPENDS_TARGET}"; \
+			depends_args="${DEPENDS_ARGS}"; \
+		fi; \
+		if ${EXPR} "$$prog" : \\/ >/dev/null; then \
+			if [ -e "$$prog" ]; then \
+				if [ "$$prog" = "${NONEXISTENT}" ]; then \
+					${ECHO_MSG} "Error: ${NONEXISTENT} exists.  Please remove it, and restart the build."; \
+					${FALSE}; \
+				else \
+					if [ -z "${DESTDIR}" ] ; then \
+						${ECHO_MSG} "===>   ${PKGNAME} depends on file: $$prog - found"; \
+					else \
+						${ECHO_MSG} "===>   ${PKGNAME} depends on file in ${DESTDIR}: $$prog - found"; \
+					fi; \
+					if [ ${_DEPEND_ALWAYS} = 1 ]; then \
+						${ECHO_MSG} "       (but building it anyway)"; \
+						notfound=1; \
+					else \
+						notfound=0; \
+					fi; \
+				fi; \
+			else \
+				if [ -z "${DESTDIR}" ] ; then \
+					${ECHO_MSG} "===>   ${PKGNAME} depends on file: $$prog - not found"; \
+				else \
+					${ECHO_MSG} "===>   ${PKGNAME} depends on file in ${DESTDIR}: $$prog - not found"; \
+				fi; \
+				notfound=1; \
+			fi; \
+		else \
+			case $${prog} in \
+				*\>*|*\<*|*=*)	pkg=yes;; \
+				*)		pkg="";; \
+			esac; \
+			if [ "$$pkg" != "" ]; then \
+				if ${PKG_INFO} "$$prog" > /dev/null 2>&1 ; then \
+					if [ -z "${DESTDIR}" ] ; then \
+						${ECHO_MSG} "===>   ${PKGNAME} depends on package: $$prog - found"; \
+					else \
+						${ECHO_MSG} "===>   ${PKGNAME} depends on package in ${DESTDIR}: $$prog - found"; \
+					fi; \
+					if [ ${_DEPEND_ALWAYS} = 1 ]; then \
+						${ECHO_MSG} "       (but building it anyway)"; \
+						notfound=1; \
+					else \
+						notfound=0; \
+					fi; \
+				else \
+					if [ -z "${DESTDIR}" ] ; then \
+						${ECHO_MSG} "===>   ${PKGNAME} depends on package: $$prog - not found"; \
+					else \
+						${ECHO_MSG} "===>   ${PKGNAME} depends on package in ${DESTDIR}: $$prog - not found"; \
+					fi; \
+					notfound=1; \
+				fi; \
+				if [ $$notfound != 0 ]; then \
+					inverse_dep=`${ECHO_CMD} $$prog | ${SED} \
+						-e 's/<=/=gt=/; s/</=ge=/; s/>=/=lt=/; s/>/=le=/' \
+						-e 's/=gt=/>/; s/=ge=/>=/; s/=lt=/</; s/=le=/<=/'`; \
+					pkg_info=`${PKG_INFO} -E "$$inverse_dep" || ${TRUE}`; \
+					if [ "$$pkg_info" != "" ]; then \
+						${ECHO_MSG} "===>   Found $$pkg_info, but you need to upgrade to $$prog."; \
+						exit 1; \
+					fi; \
+				fi; \
+			elif ${WHICH} "$$prog" > /dev/null 2>&1 ; then \
+				if [ -z "${PREFIX}" ] ; then \
+					${ECHO_MSG} "===>   ${PKGNAME} depends on executable: $$prog - found"; \
+				else \
+					${ECHO_MSG} "===>   ${PKGNAME} depends on executable in ${DESTDIR}: $$prog - found"; \
+				fi; \
+				if [ ${_DEPEND_ALWAYS} = 1 ]; then \
+					${ECHO_MSG} "       (but building it anyway)"; \
+					notfound=1; \
+				else \
+					notfound=0; \
+				fi; \
+			else \
+				if [ -z "${DESTDIR}" ] ; then \
+					${ECHO_MSG} "===>   ${PKGNAME} depends on executable: $$prog - not found"; \
+				else \
+					${ECHO_MSG} "===>   ${PKGNAME} depends on executable in ${DESTDIR}: $$prog - not found"; \
+				fi; \
+				notfound=1; \
+			fi; \
+		fi; \
+		if [ $$notfound != 0 ]; then \
+			${ECHO_MSG} "===>    Verifying $$target for $$prog in $$dir"; \
+			if [ ! -d "$$dir" ]; then \
+				${ECHO_MSG} "     => No directory for $$prog.  Skipping.."; \
+			else \
+				${_INSTALL_DEPENDS} \
+			fi; \
+		fi; \
+	done
+.endif
+.else
+	@${DO_NADA}
+.endif
+.endfor
+
+
+PACKAGE-DEPENDS-LIST?= \
+	if [ "${CHILD_DEPENDS}" ]; then \
+		installed=$$(${PKG_INFO} -qO ${PKGORIGIN} 2>/dev/null || \
+			${TRUE}); \
+		if [ "$$installed" ]; then \
+			break; \
+		fi; \
+		if [ -z "$$installed" ]; then \
+			installed="${PKGNAME}"; \
+		fi; \
+		for pkgname in $$installed; do \
+			${ECHO_CMD} "$$pkgname ${.CURDIR} ${PKGORIGIN}"; \
+		done; \
+	fi; \
+	checked="${PARENT_CHECKED}"; \
+	for dir in $$(${ECHO_CMD} "${LIB_DEPENDS} ${RUN_DEPENDS}" | ${SED} -e 'y/ /\n/' | ${CUT} -f 2 -d ':') $$(${ECHO_CMD} ${DEPENDS} | ${SED} -e 'y/ /\n/' | ${CUT} -f 1 -d ':'); do \
+		dir=$$(${REALPATH} $$dir); \
+		if [ -d $$dir ]; then \
+			if (${ECHO_CMD} $$checked | ${GREP} -qwv "$$dir"); then \
+				childout=$$(cd $$dir; ${MAKE} CHILD_DEPENDS=yes PARENT_CHECKED="$$checked" package-depends-list); \
+				set -- $$childout; \
+				childdir=""; \
+				while [ $$\# != 0 ]; do \
+					childdir="$$childdir $$2"; \
+					${ECHO_CMD} "$$1 $$2 $$3"; \
+					shift 3; \
+				done; \
+				checked="$$dir $$childdir $$checked"; \
+			fi; \
+		else \
+			${ECHO_MSG} "${PKGNAME}: \"$$dir\" non-existent -- dependency list incomplete" >&2; \
+		fi; \
+	done
+
+package-depends:
+	@${PACKAGE-DEPENDS-LIST} | ${AWK} '{print $$1":"$$3}'
+
+
+# Show missing dependiencies
+missing:
+	@for dir in $$(${ALL-DEPENDS-LIST}); do \
+		THISORIGIN=$$(${ECHO_CMD} $$dir | ${SED} 's,${PORTSDIR}/,,'); \
+		installed=$$(${PKG_INFO} -qO $${THISORIGIN}); \
+		if [ -z "$$installed" ]; then \
+			${ECHO_CMD} $$THISORIGIN; \
+		fi \
+	done
+
+
+#
+# check to see how things went with a fake.
+#
+.if exists(${LOCALBASE}/bin/perl)
+_CHKFAKE=chkfake.pl
+.else
+_CHKFAKE=chkfake
+.endif
+
+_CHKFAKE_SCRIPT_ARGS=	${TMPPLIST} ${FAKE_DESTDIR} ${PREFIX}
+.if defined(SKIP_FAKE_CHECK)
+_CHKFAKE_SCRIPT_ARGS+=	-s "${SKIP_FAKE_CHECK}"
+.endif
+
+check-fake: 
+	@${PORTSDIR}/Tools/scripts/${_CHKFAKE} ${_CHKFAKE_SCRIPT_ARGS}


More information about the Midnightbsd-cvs mailing list