[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: RFC: different/multiple LOCALBASEs
- To: ports_(_at_)_openbsd_(_dot_)_org
- Subject: Re: RFC: different/multiple LOCALBASEs
- From: Nikolay Sturm <sturm_(_at_)_sec_(_dot_)_informatik_(_dot_)_tu-darmstadt_(_dot_)_de>
- Date: Mon, 21 Apr 2003 21:16:02 +0200
- Mail-followup-to: ports_(_at_)_openbsd_(_dot_)_org
- Organization: Fnord!
Hi again!
The previous diff did not give LOCALBASE to the next instance, when
recursively installing dependencies, thus it only worked when defining
LOCALBASE in mk.conf.
This is a new version of the diff, dealing with this problem and
automatically creating PKG_DBDIR when installing a port. So, now it is
possible to specify LOCALBASE on the command line for a port and all its
dependencies.
bye,
Nikolay
--
OpenPGP: 0x5C0878D2 - BB55 EDCF A1F6 8057 B953 4C66 EFBD BA73 5C08 78D2
Index: db/fake.mtree
===================================================================
RCS file: /cvs/ports/infrastructure/db/fake.mtree,v
retrieving revision 1.8
diff -u -r1.8 fake.mtree
--- db/fake.mtree 18 Jan 2002 16:48:19 -0000 1.8
+++ db/fake.mtree 21 Apr 2003 19:08:11 -0000
@@ -2,8 +2,7 @@
.
etc
..
- usr
- local
+ ${PREFIX}PREFIX_MARK
bin
..
include
@@ -204,8 +203,7 @@
skel
..
..
- ..
- ..
+ PREFIX_DOTDOT
var
db
..
Index: install/mtree_path_subst
===================================================================
RCS file: install/mtree_path_subst
diff -N install/mtree_path_subst
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ install/mtree_path_subst 21 Apr 2003 19:08:11 -0000
@@ -0,0 +1,23 @@
+#!/usr/bin/perl -w
+
+use strict;
+
+my $number=1;
+
+while (<STDIN>) {
+ if (/PREFIX_MARK/) {
+ s,PREFIX_MARK,,;
+ # strip leading '/' from path
+ s,\s+/,,;
+ # strip trailing '/' from path
+ s,/$,,;
+ $number += s,/,\n,g;
+ } elsif (/PREFIX_DOTDOT/) {
+ s,PREFIX_DOTDOT,,;
+ for (my $i = 0; $i < $number; $i++) {
+ print "..\n"
+ }
+ next;
+ }
+ print $_;
+}
Index: mk/bsd.port.mk
===================================================================
RCS file: /cvs/ports/infrastructure/mk/bsd.port.mk,v
retrieving revision 1.544
diff -u -r1.544 bsd.port.mk
--- mk/bsd.port.mk 6 Apr 2003 14:34:36 -0000 1.544
+++ mk/bsd.port.mk 21 Apr 2003 19:08:15 -0000
@@ -455,7 +455,11 @@
PKGREPOSITORYSUBDIR?= All
PKG_SUFX?= .tgz
PKGREPOSITORY?= ${PACKAGES}/${PKGREPOSITORYSUBDIR}
+.if ${LOCALBASE} == "/usr/local"
PKG_DBDIR?= /var/db/pkg
+.else
+PKG_DBDIR?= /var/db/pkg${LOCALBASE:S-/-_-g}
+.endif
BULK_COOKIES_DIR?= ${PORTSDIR}/bulk/${MACHINE_ARCH}
PKGNAME?=${DISTNAME}
@@ -805,12 +809,16 @@
@fgrep -q '$${HOMEPAGE}' $? || echo "\nWWW: ${HOMEPAGE}" >>$@
.endif
+_MTREE_PATH_SUBST=${PORTSDIR}/infrastructure/install/mtree_path_subst
+
${WRKPKG}/mtree.spec: ${MTREE_FILE}
- @${_SED_SUBST} ${MTREE_FILE}>$_(_at_)__(_dot_)_tmp && mv -f $_(_at_)__(_dot_)_tmp $@
+ @${_SED_SUBST} ${MTREE_FILE}|${_MTREE_PATH_SUBST}>$_(_at_)__(_dot_)_tmp && mv -f $_(_at_)__(_dot_)_tmp $@
PKG_TMPDIR?= /var/tmp
PKG_CMD?= /usr/sbin/pkg_create
PKG_DELETE?= /usr/sbin/pkg_delete
+_PKG= ${SETENV} PKG_DBDIR='${PKG_DBDIR}' /usr/sbin/pkg
+_PKG_DELETE= ${SETENV} PKG_DBDIR='${PKG_DBDIR}' ${PKG_DELETE}
_SORT_DEPENDS?=tsort|tail -r
# Fill out package command, and package dependencies
@@ -1233,7 +1241,7 @@
# Various dependency styles
_fetch_depends_fragment= \
- if pkg dependencies check $$pkg; then \
+ if ${_PKG} dependencies check $$pkg; then \
found=true; \
fi
@@ -1863,19 +1871,20 @@
${_INSTALL_COOKIE}: ${_PACKAGE_COOKIES}
@cd ${.CURDIR} && DEPENDS_TARGET=package exec ${MAKE} run-depends lib-depends
@${ECHO_MSG} "===> Installing ${FULLPKGNAME${SUBPACKAGE}} from ${PKGFILE${SUBPACKAGE}}"
+ @${SUDO} mkdir -p ${PKG_DBDIR}
. for _m in ${MODULES}
. if defined(MOD${_m:U}_pre_install)
@${MOD${_m:U}_pre_install}
. endif
. endfor
. if ${TRUST_PACKAGES:L} == "yes"
- @if pkg dependencies check ${FULLPKGNAME${SUBPACKAGE}}; then \
+ @if ${_PKG} dependencies check ${FULLPKGNAME${SUBPACKAGE}}; then \
echo "Package ${FULLPKGNAME${SUBPACKAGE}} is already installed"; \
else \
- ${SUDO} ${SETENV} PKG_PATH=${PKGREPOSITORY}:${PKG_PATH} PKG_TMPDIR=${PKG_TMPDIR} pkg_add ${PKGFILE${SUBPACKAGE}}; \
+ ${SUDO} ${SETENV} PKG_PATH=${PKGREPOSITORY}:${PKG_PATH} PKG_TMPDIR=${PKG_TMPDIR} PKG_DBDIR=${PKG_DBDIR} pkg_add ${PKGFILE${SUBPACKAGE}}; \
fi
. else
- @${SUDO} ${SETENV} PKG_PATH=${PKGREPOSITORY}:${PKG_PATH} PKG_TMPDIR=${PKG_TMPDIR} pkg_add ${PKGFILE${SUBPACKAGE}}
+ @${SUDO} ${SETENV} PKG_PATH=${PKGREPOSITORY}:${PKG_PATH} PKG_TMPDIR=${PKG_TMPDIR} PKG_DBDIR=${PKG_DBDIR} pkg_add ${PKGFILE${SUBPACKAGE}}
. endif
@-${SUDO} ${_MAKE_COOKIE} $@
.endif
@@ -2045,7 +2054,7 @@
# Special target to re-run install
reinstall:
- @${SUDO} ${PKG_DELETE} -f ${FULLPKGNAME${SUBPACKAGE}}
+ @${SUDO} ${_PKG_DELETE} -f ${FULLPKGNAME${SUBPACKAGE}}
@cd ${.CURDIR} && DEPENDS_TARGET=${DEPENDS_TARGET} exec ${MAKE} install
# Rebuild
@@ -2061,7 +2070,7 @@
uninstall deinstall:
@${ECHO_MSG} "===> Deinstalling for ${FULLPKGNAME${SUBPACKAGE}}"
- @${SUDO} ${PKG_DELETE} -f ${FULLPKGNAME${SUBPACKAGE}}
+ @${SUDO} ${_PKG_DELETE} -f ${FULLPKGNAME${SUBPACKAGE}}
################################################################
@@ -2108,10 +2117,10 @@
. if ${clean:L:Minstall}
. if ${clean:L:Msub}
. for _s in ${MULTI_PACKAGES}
- -${SUDO} ${PKG_DELETE} ${clean:M-f} ${FULLPKGNAME${_s}}
+ -${SUDO} ${_PKG_DELETE} ${clean:M-f} ${FULLPKGNAME${_s}}
. endfor
. else
- -${SUDO} ${PKG_DELETE} ${clean:M-f} ${FULLPKGNAME${SUBPACKAGE}}
+ -${SUDO} ${_PKG_DELETE} ${clean:M-f} ${FULLPKGNAME${SUBPACKAGE}}
. endif
. endif
. if ${clean:L:Mpackages} || ${clean:L:Mpackage} && ${clean:L:Msub}
@@ -2246,7 +2255,8 @@
FULL_PACKAGE_NAME?=No
# Make variables to pass along on recursive builds
-_DEPEND_THRU=FULL_PACKAGE_NAME=${FULL_PACKAGE_NAME}
+_DEPEND_THRU=FULL_PACKAGE_NAME=${FULL_PACKAGE_NAME} LOCALBASE=${LOCALBASE} \
+ PKG_DBDIR=${PKG_DBDIR}
# XXX
package-name:
@@ -2643,7 +2653,7 @@
libspecs='';comma=''; \
default=`eval $$toset ${MAKE} _print-packagename`; \
case "X$$pkg" in X) pkg=`echo $$default|sed -e 's,-[0-9].*,-*,'`;; esac; \
- if pkg dependencies check $$pkg; then \
+ if ${_PKG} dependencies check $$pkg; then \
listlibs='ls $$shdir 2>/dev/null'; \
else \
eval $$toset ${MAKE} ${PKGREPOSITORY}/$$default.tgz; \
Visit your host, monkey.org