Bug 50106 - [build] [patch] make 'make release' more flexible behind FWs and local patches
Summary: [build] [patch] make 'make release' more flexible behind FWs and local patches
Status: Closed Overcome By Events
Alias: None
Product: Base System
Classification: Unclassified
Component: misc (show other bugs)
Version: Unspecified
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-03-18 21:10 UTC by Adrian Steinmann
Modified: 2015-11-10 13:51 UTC (History)
1 user (show)

See Also:


Attachments
file.diff (1.94 KB, patch)
2003-03-18 21:10 UTC, Adrian Steinmann
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Adrian Steinmann 2003-03-18 21:10:05 UTC
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.
Comment 1 Ceri Davies freebsd_committer freebsd_triage 2003-03-22 09:30:36 UTC
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
Comment 2 Enji Cooper freebsd_committer freebsd_triage 2015-11-10 13:51:18 UTC
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/