Sometimes it is necessary to patch more than just /usr/src files from LOCAL_PATCHES in the 'make release' phase, however currently that hook is provided for *before* usr/ports is checked out. Sometimes it is necessary to use a proxy from behind a firewall when fetching distfiles, HTTP_PROXY and FTP_PROXY help here. OSVERSION and OSREL are used profusely by ports/Mk/bsd.*.mk files and other Makefiles to decide on actions. This is good but gets in the way when building 4.x releases on 5.x machines when they are undefined and the 5.x 5x0000 values kick in (perl not in base, for example). By exporting those values into the make release environment, make release of 4.x can be achieved on 5.x systems. How-To-Repeat: Investigate building 4.x releases on 5.x systems.
Adding to audit trail, from pending/50137 : Message-Id: <200303200648.HAA17570@marabu.marabu.ch> Date: Thu, 20 Mar 2003 07:48:27 +0100 From: Adrian Steinmann <ast@marabu.ch> To: freebsd-gnats-submit@FreeBSD.org, ast@marabu.ch As it stood in its first version, PR 50106 was kind of suboptimal for two reasons: 1) it expected LOCAL_PATCHES to be relative to CHROOTDIR and not CHROOTDIR/usr/src, which is the traditional root for src patches. 2) if say, NOPORTS=yes was specified, make release failed because when the patch was applied it returns non-zero when it tried to patch a nonexisting file (in spite of PATCH_FLAGS=--batch). I work around this by not using the LOCAL_PATCHES hook at all but doing the local patching in the moved-down LOCAL_SCRIPT like this: patch ${PATCH_FLAGS} < ${MY_LOCAL_PATCHES} || true making sure that MY_LOCAL_PATCHES is exported into in the 'make release' environment, and hence the LOCAL_SCRIPT. Attached is a slightly modified patch which just "moves down" running of the LOCAL_SCRIPT and leaves the traditional LOCAL_PATCHES where it has always been, respecting the POLA. Another approach would be to have a third hook LOCAL_PORT_PATCHES which are relative to CHROOTDIR/usr/ports, those would be protected by the existing .if ! defined (NOPORTS) ... .endif clauses within release/Makefile. Nevertheless, I advocate having LOCAL_SCRIPT after all checkouts are done, i.e. please commit at least that part of the patch! Index: usr/src/release/Makefile =================================================================== RCS file: /usr/cvs/src/release/Makefile,v retrieving revision 1.536.2.106 diff -u -r1.536.2.106 Makefile --- usr/src/release/Makefile 17 Mar 2003 05:50:32 -0000 1.536.2.106 +++ usr/src/release/Makefile 19 Mar 2003 21:57:08 -0000 @@ -288,9 +288,6 @@ .if defined(LOCAL_PATCHES) && exists(${LOCAL_PATCHES}) cd ${CHROOTDIR}/usr/src && patch ${PATCH_FLAGS} < ${LOCAL_PATCHES} .endif -.if defined(LOCAL_SCRIPT) && exists(${LOCAL_SCRIPT}) - cd ${CHROOTDIR} && env CHROOTDIR=${CHROOTDIR} BUILDNAME=${BUILDNAME} RELEASETAG=${RELEASETAG} ${LOCAL_SCRIPT} -.endif .if !defined(NOPORTS) .if defined(PORTSRELEASETAG) cd ${CHROOTDIR}/usr && rm -rf ports && cvs -R -d ${CVSROOT} co ${CVSCMDARGS} -P -r ${PORTSRELEASETAG} ${RELEASEPORTSMODULE} @@ -325,6 +322,9 @@ .endif .endif .endif +.if defined(LOCAL_SCRIPT) && exists(${LOCAL_SCRIPT}) + cd ${CHROOTDIR} && env CHROOTDIR=${CHROOTDIR} BUILDNAME=${BUILDNAME} RELEASETAG=${RELEASETAG} ${LOCAL_SCRIPT} +.endif .if make(rerelease) .if !defined(RELEASENOUPDATE) .if !defined(RELEASETAG) @@ -356,6 +356,8 @@ echo "_RELTARGET=\$${1:-doRELEASE}" >> ${CHROOTDIR}/mk echo "export MODULES_WITH_WORLD=YES" >> ${CHROOTDIR}/mk .for var in \ + OSREL \ + OSVERSION \ AUTO_KEYBOARD_DETECT \ BOOT_CONFIG \ BUILDNAME \ @@ -826,6 +828,8 @@ @for i in ${DOCPORTS}; do \ cd /usr/ports/$$i && \ env -i FTP_PASSIVE_MODE=$${FTP_PASSIVE_MODE:-no} PATH=$${PATH} \ + OSREL=$${OSREL} OSVERSION=$${OSVERSION} \ + HTTP_PROXY=$${HTTP_PROXY} FTP_PROXY=$${FTP_PROXY} \ make all install clean BATCH=yes WITHOUT_X11=yes JADETEX=no \ WITHOUT_PYTHON=yes FORCE_PKG_REGISTER=yes; \ done
release/Makefile has changed quite a bit in the last 10 years (in particular the last 2-3). Please open a new bug and submit a patch to re@ if you'd like to enhance it to improve the customizability of release/