1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-05 01:55:52 +00:00
freebsd-ports/Makefile

224 lines
7.1 KiB
Makefile
Raw Normal View History

SUBDIR += accessibility
SUBDIR += arabic
SUBDIR += archivers
1996-10-24 11:20:46 +00:00
SUBDIR += astro
SUBDIR += audio
SUBDIR += benchmarks
1997-12-13 05:55:08 +00:00
SUBDIR += biology
SUBDIR += cad
1996-09-14 02:07:26 +00:00
SUBDIR += chinese
SUBDIR += comms
SUBDIR += converters
SUBDIR += databases
SUBDIR += deskutils
SUBDIR += devel
SUBDIR += dns
SUBDIR += editors
SUBDIR += emulators
SUBDIR += finance
2000-09-22 06:25:45 +00:00
SUBDIR += french
1999-08-02 10:42:26 +00:00
SUBDIR += ftp
SUBDIR += games
1997-07-31 09:33:05 +00:00
SUBDIR += german
SUBDIR += graphics
SUBDIR += hebrew
SUBDIR += hungarian
SUBDIR += irc
SUBDIR += japanese
SUBDIR += java
SUBDIR += korean
SUBDIR += lang
SUBDIR += mail
SUBDIR += math
1995-11-27 03:50:07 +00:00
SUBDIR += misc
SUBDIR += multimedia
SUBDIR += net
SUBDIR += net-im
SUBDIR += net-mgmt
- Fix possibility of "infinite make fork" when "Registering install for ..." EMACS ports. [1] - Allow building a port as root using an NFS-mounted /usr/ports if the server maps root to a UID other than root. [2] - Make 'BROKEN' and 'IGNORED' ports exit their "make install" with a fail status rather than success. [3] - Improve behavior when dealing with versioned dependencies. [4] - Fix false positives in check-conflicts target. [5] - Remove obsolete bzip2 code. [6] - Add physical category net-p2p. [7] - Don't fetch INDEXFILE if not necessary; respect FETCH_ENV. [8], [11] - INDEX can now be moved outside of ports tree. [9] - Add ghostscript-gpl. [10] - Remove obsolete USE_MESA. [12] - Force pkg_install tools from ports on FreeBSD 4.10 and older. [13] - Document ALWAYS_KEEP_DISTFILES. [14] - Remove USE_REINPLACE from bsd.port.mk USE_DOS2UNIX patch. [15] PR: ports/37596 [1], ports/57259 [2], ports/63216 [3], ports/89448 [4], ports/89710 [5], ports/88996 [6], ports/89260 [7], ports/89363 [8], ports/89809 [9], ports/89853 [10], ports/91086 [11], ports/91710 [12], ports/91727 [13], ports/92111 [14], ports/92124 [15] Submitted by: Jay Sachs <jay at eziba dot com> [1], sem [1, 3, 8, 12], Andrew Heybey <ath at niksun dot com> [2], Jamie Jones <jamie at thompson dot bishopston dot net>, tobez [4], Mark Andrews <Mark_Andrews at isc dot org> [5], edwin [6, 11, 15], pav [7, 13], Peter Jeremy <PeterJeremy at optushome dot com dot au> [9], Ulrich Spoerlein <q at galgenberg dot net> [10], netchild [11], erwin [14] Reviewed by: kris, clement (partially)
2006-01-28 02:11:35 +00:00
SUBDIR += net-p2p
SUBDIR += news
SUBDIR += polish
SUBDIR += ports-mgmt
SUBDIR += portuguese
SUBDIR += print
SUBDIR += russian
SUBDIR += science
SUBDIR += security
1997-08-19 07:10:14 +00:00
SUBDIR += shells
SUBDIR += sysutils
SUBDIR += textproc
SUBDIR += ukrainian
1996-12-05 11:09:04 +00:00
SUBDIR += vietnamese
1995-11-27 03:50:07 +00:00
SUBDIR += www
SUBDIR += x11
SUBDIR += x11-clocks
2007-05-19 21:30:16 +00:00
SUBDIR += x11-drivers
SUBDIR += x11-fm
SUBDIR += x11-fonts
SUBDIR += x11-servers
SUBDIR += x11-themes
SUBDIR += x11-toolkits
SUBDIR += x11-wm
PORTSTOP= yes
.include <bsd.port.subdir.mk>
index: ${INDEXDIR}/${INDEXFILE}
INDEX_COMPRESSION_FORMAT?= xz
.if ${INDEX_COMPRESSION_FORMAT} != xz && \
${INDEX_COMPRESSION_FORMAT} != bz2 && ${INDEX_COMPRESSION_FORMAT} != zst
.error "Invalid compression format: ${INDEX_COMPRESSION_FORMAT}, expecting xz, bz2 or zst"
.endif
fetchindex: ${INDEXDIR}/${INDEXFILE}.${INDEX_COMPRESSION_FORMAT}
@if bsdcat < ${INDEXDIR}/${INDEXFILE}.${INDEX_COMPRESSION_FORMAT} > ${INDEXDIR}/${INDEXFILE}.tmp ; then \
chmod a+r ${INDEXDIR}/${INDEXFILE}.tmp; \
${MV} ${INDEXDIR}/${INDEXFILE}.tmp ${INDEXDIR}/${INDEXFILE}; \
${RM} ${INDEXDIR}/${INDEXFILE}.${INDEX_COMPRESSION_FORMAT} \
else ; \
${RM} ${INDEXDIR}/${INDEXFILE}.tmp ; \
fi
- Fix possibility of "infinite make fork" when "Registering install for ..." EMACS ports. [1] - Allow building a port as root using an NFS-mounted /usr/ports if the server maps root to a UID other than root. [2] - Make 'BROKEN' and 'IGNORED' ports exit their "make install" with a fail status rather than success. [3] - Improve behavior when dealing with versioned dependencies. [4] - Fix false positives in check-conflicts target. [5] - Remove obsolete bzip2 code. [6] - Add physical category net-p2p. [7] - Don't fetch INDEXFILE if not necessary; respect FETCH_ENV. [8], [11] - INDEX can now be moved outside of ports tree. [9] - Add ghostscript-gpl. [10] - Remove obsolete USE_MESA. [12] - Force pkg_install tools from ports on FreeBSD 4.10 and older. [13] - Document ALWAYS_KEEP_DISTFILES. [14] - Remove USE_REINPLACE from bsd.port.mk USE_DOS2UNIX patch. [15] PR: ports/37596 [1], ports/57259 [2], ports/63216 [3], ports/89448 [4], ports/89710 [5], ports/88996 [6], ports/89260 [7], ports/89363 [8], ports/89809 [9], ports/89853 [10], ports/91086 [11], ports/91710 [12], ports/91727 [13], ports/92111 [14], ports/92124 [15] Submitted by: Jay Sachs <jay at eziba dot com> [1], sem [1, 3, 8, 12], Andrew Heybey <ath at niksun dot com> [2], Jamie Jones <jamie at thompson dot bishopston dot net>, tobez [4], Mark Andrews <Mark_Andrews at isc dot org> [5], edwin [6, 11, 15], pav [7, 13], Peter Jeremy <PeterJeremy at optushome dot com dot au> [9], Ulrich Spoerlein <q at galgenberg dot net> [10], netchild [11], erwin [14] Reviewed by: kris, clement (partially)
2006-01-28 02:11:35 +00:00
${INDEXDIR}/${INDEXFILE}.${INDEX_COMPRESSION_FORMAT}: .PHONY
${FETCHINDEX} ${INDEXDIR}/${INDEXFILE}.${INDEX_COMPRESSION_FORMAT} \
${MASTER_SITE_INDEX}${INDEXFILE}.${INDEX_COMPRESSION_FORMAT}
MASTER_SITE_INDEX?= https://download.FreeBSD.org/ports/index/
- Fix possibility of "infinite make fork" when "Registering install for ..." EMACS ports. [1] - Allow building a port as root using an NFS-mounted /usr/ports if the server maps root to a UID other than root. [2] - Make 'BROKEN' and 'IGNORED' ports exit their "make install" with a fail status rather than success. [3] - Improve behavior when dealing with versioned dependencies. [4] - Fix false positives in check-conflicts target. [5] - Remove obsolete bzip2 code. [6] - Add physical category net-p2p. [7] - Don't fetch INDEXFILE if not necessary; respect FETCH_ENV. [8], [11] - INDEX can now be moved outside of ports tree. [9] - Add ghostscript-gpl. [10] - Remove obsolete USE_MESA. [12] - Force pkg_install tools from ports on FreeBSD 4.10 and older. [13] - Document ALWAYS_KEEP_DISTFILES. [14] - Remove USE_REINPLACE from bsd.port.mk USE_DOS2UNIX patch. [15] PR: ports/37596 [1], ports/57259 [2], ports/63216 [3], ports/89448 [4], ports/89710 [5], ports/88996 [6], ports/89260 [7], ports/89363 [8], ports/89809 [9], ports/89853 [10], ports/91086 [11], ports/91710 [12], ports/91727 [13], ports/92111 [14], ports/92124 [15] Submitted by: Jay Sachs <jay at eziba dot com> [1], sem [1, 3, 8, 12], Andrew Heybey <ath at niksun dot com> [2], Jamie Jones <jamie at thompson dot bishopston dot net>, tobez [4], Mark Andrews <Mark_Andrews at isc dot org> [5], edwin [6, 11, 15], pav [7, 13], Peter Jeremy <PeterJeremy at optushome dot com dot au> [9], Ulrich Spoerlein <q at galgenberg dot net> [10], netchild [11], erwin [14] Reviewed by: kris, clement (partially)
2006-01-28 02:11:35 +00:00
SETENV?= /usr/bin/env
FETCHINDEX?= ${SETENV} ${FETCH_ENV} fetch -am -o
.if !defined(INDEX_JOBS)
INDEX_JOBS!= ${SYSCTL} -n kern.smp.cpus
.endif
- Allow processing of info files in non-standard locations; the INFO_PATH variable may be used to specify their location. It defaults to 'share/info' for the standard PREFIX, and 'info' when PREFIX == /usr. [1] - Remove the <category>/pkg/COMMENT files in favour of a COMMENT variable in <category>/Makefile [2] - Prevent patch breakage with VERSION_CONTROL=numbered [3] - Fix some instances of incorrect WRKDIRPREFIX handling. [4] - remove useless ${MKDIR} ${WRKSRC} in config target [5] - remove reference to OpenBSD [6] - Exempt devel/p5-Module-Build from the self-dependency in PERL_MODBUILD so that this port may use the option without getting an infinite dependency list [7] - The default PERL_ARCH is currently determined as a function of OSVERSION. It should however be a function of PERL_LEVEL since the correct value depends on what Perl version one has installed (older Perl versions use ${ARCH}-freebsd, newer versions use mach). [8] - Fix PORTDOCS on older (4.7, 5.0) systems [9] - Allow 'make parallel' to generate a working makefile when not all categories are present (this does not mean you'll be able to build all ports, unless you make sure they don't have external dependencies) [10] - Don't report symlinks as world-writable in the security check [11] - Fix a comment that was broken by a mismerged patch [12] - Clarify the meaning of USE_*, WANT_*, WITH_* and WITHOUT_* [13] - Don't set _CHKSUMFILES/_IGNOREFILES if CKSUMFILES/IGNOREFILES is empty and DIST_SUBDIR is set. [14] - Fix comment for DISTDIR [15] - Update the documentation of the USE_GL variable [16] - Check to see if NONEXISTENT exists, and fail with an error if it does [17] - Fix fetching of new distfiles in 'make makesum' when SIZE is set [18] - Consistently set MAKE_ENV when USE_GCC=3.2 or 3.3 are set [19] - Rework INDEX builds: [20] * Fix the bsd.port.subdir.mk code that is supposed to report index breakage (the fallback code wasn't actually being run because make would halt immediately following the error). This should help with INDEX error reports because it will immediately show the cause of failure, so we won't have to pull teeth to extract it from the submitter. * Streamline the 'make describe' code a bit. * Provide some basic instructions to the user when an index build fails, on when and how to report index build failures (turn this off with INDEX_QUIET=1) * Removed INDEX_NOSORT, because I couldn't imagine it to be very useful and it doesn't cost very much anyway. * Don't prevent INDEX builds from seeing the local host environment. Since a lot of users are using 'make index' thesedays they should get an index that reflects their local settings and installed ports. If you want to build a 'default' index that isn't influenced by local settings (e.g. for release builds), set the INDEX_PRISTINE variable. * Allows parallel INDEX builds (using make -j). The most obvious way of doing this doesn't work, because I/O from child makes is broken up into 2k chunks, and output lines from 'make describe' that exceed this length (*cough* GNOME *cough*) will be intertwined with the output of other makes, leading to a corrupted INDEX. The I/O interleaving can be disabled using 'make -P', but this inserts extraneous output of its own, and redirects stderr, making it useless for our purposes. Instead, I collect the output from the child make processes in temporary files and recombine them at the end. * The number of concurrent make processes to spawn can be set using INDEX_JOBS. By default this is set to 2, which seems to be a sweet spot for both single and dual-processor systems. On my tests I do not see any significant performance changes on UP, but on a dual 4.x system the build time drops by 47% (6 minute index builds on one test machine!). Depending on your disk and CPU hardware you might see further gains with INDEX_JOBS=4 or higher, so you might like to experiment to see what works best. On a dual 5.x system the performance gains do not seem to be as great (20-30%), but this is still a significant net win. PR: 55493 [1], 59651 [2], 61552 [3], 62247 [4], 62329 [5], 62337 [6], 62422 [7], 62441 [8], 62627 [9], 62983 [10], 63112 [11], 63297 [12], 63335 [13], 64029 [14], 64069 [15], 64236 [16], 64519 [17], 62958 [18], 64237 [19] Submitted by: lev [1], Matthew Seaman <m.seaman@infracaninophile.co.uk> [2], Joel Ray Holveck <joelh@piquan.org> [3], ade [4], Sergey Matveychuk <sem@ciam.ru> [5], markus [6], mat [7], des [8], eik [9], Dmitry Morozovsky <marck@rinet.ru> [10], Andrew <andrew@ugh.net.au> [11], vs [12], linimon [13], edwin [14][15], gerald [16], marcus[17][18], kris [19][20]
2004-04-02 07:25:23 +00:00
* Support verbose index builds with INDEX_VERBOSE [1] * Don't assume root is using /bin/sh when switching credentials to configure OPTIONS. [2] * Support glob expressions in USE_GETTEXT to allow more flexibility in the face of future gratuitous library version bumps by the gettext developers [3]: USE_GETTEXT=yEs # Works as before (case-insensitive) USE_GETTEXT=[5-7] # Accepts any of those libintl.so.x versions # in the LIB_DEPENDS * Correctly register dependencies when a non-system perl port is used on 4.x [4] * Extend 'make search' support to allow much more flexible searching. Syntax will be documented in CHANGES for brevity. [5] * Reorder the post-install-script target to before add-plist-info for consistency [6] * Various fixes to support port operations when a port directory exists under /usr/obj [7] * Extend USE_PERL5_BUILD and USE_PERL5 to add EXTRACT and PATCH dependencies since many ports require perl in those stages [8] * Move info file deregistration later in the deinstallation process so it works properly. [9] * Improve wording in EXPIRATION_DATE message. [10] * Fix dependencies for XFREE86_VERSION==3 (obtain imake from x11/XFree86 now that the former port is gone) [11] * While building index, treat non-existent dependencies as fatal. Previously the error was being hidden by the stderr redirection. [12] * Don't always retry BROKEN ports when package building (it is taking too much time to continually rebuild ports that are usually going to really be broken). Set TRYBROKEN if you want to attempt a build of a BROKEN port. [12] * Revert incorrect change from 1.487 relating to ALL-DEPENDS-LIST [13] PR: 24214 [1], 67529 [2], 63937 [3], 65554 [4], 40699 [5], 59162 [6], 63372 66567 [7], 63394 [8], 65304 [9], 65931 [10], 66565 [11], 66743 [13] Submitted by: roam [1], will [1], hrs [2], mi [3], ade [4], Roman Neuhauser <roman@bellavista.cz> [5], Sergey Matveychuk <sem@ciam.ru> [6], gad [7], adamw [8], kris [8][12], dinoex [9], Alexey Dokuchaev <danfe@regency.nsu.ru> [10], eik [11][13]
2004-06-10 07:30:19 +00:00
.if !defined(INDEX_VERBOSE)
Major optimizations for 'make index' and other recursive traversal targets. * Use /rescue/sh for index builds instead of /bin/sh, when it exists. The former is statically linked and faster to execute, which becomes significant when executing it tens of thousands of times. This trick can be used with other recursive targets by passing in __MAKE_SHELL. * Get rid of make variable assignments that use != command invocations in the critical path, using several methods: - rewriting logic to use shell or make builtins instead of external command executions - macroizing commands and executing them in the targets where they are needed instead of with every invocation of make - precomputing the results of invariant commands in bsd.port.subdir.mk and passing them in explicitly to child makes, and using this to avoid recalculation in all the children. NB: the commands are still run one per top-level subdirectory but this does not currently seem to be a major issue. They could be moved further up into the top-level Makefile at the cost of some cleanliness. - Committers are strongly discouraged from adding further "bare" != assignments to the ports tree, even in their own ports. One of the above strategies should be used to avoid future bloat. * Rewrite the core 'describe' target to work entirely within a single shell process using only builtin commands. The old version is retained as a backup for use on systems older than 603104, which does not have the make :u modifier. This cuts down the number of processes executed during the course of a 'make index' by an order of magnitude, and we are essentially now amortized to the minimum of a single make + sh instance per port, plus whatever commands the port makefile itself executes (which are usually unnecessary and bogus). * Less validation of the WWW: target is performed; this can become policed at a port level by portlint. Specifically we look at the second word of the first line beginning with "WWW:" in pkg-descr, and append "http://" to it unless it already begins with "http://", "https://" or "ftp://". Thanks to dougb for the idea of how to extract WWW: using shell builtins. * Use the "true" shell builtin instead of echo > /dev/null for a measurable decrease in CPU use. * Add a note about dubious escaping strategy in bsd.port.subdir.mk * Minor change in output of 'make describe': it no longer strips trailing CR characters from pkg-descr files with MSDOS CR/LF termination. Instead the makeindex perl script that post-processes make describe into the INDEX is tweaked to strip on input. The bottom line is that on my test hardware INDEX builds are now faster by more than a factor of 2 and with a reduction in system time by a factor of 4-8 depending on configuration.
2008-07-19 17:59:41 +00:00
INDEX_ECHO_MSG= true
* Support verbose index builds with INDEX_VERBOSE [1] * Don't assume root is using /bin/sh when switching credentials to configure OPTIONS. [2] * Support glob expressions in USE_GETTEXT to allow more flexibility in the face of future gratuitous library version bumps by the gettext developers [3]: USE_GETTEXT=yEs # Works as before (case-insensitive) USE_GETTEXT=[5-7] # Accepts any of those libintl.so.x versions # in the LIB_DEPENDS * Correctly register dependencies when a non-system perl port is used on 4.x [4] * Extend 'make search' support to allow much more flexible searching. Syntax will be documented in CHANGES for brevity. [5] * Reorder the post-install-script target to before add-plist-info for consistency [6] * Various fixes to support port operations when a port directory exists under /usr/obj [7] * Extend USE_PERL5_BUILD and USE_PERL5 to add EXTRACT and PATCH dependencies since many ports require perl in those stages [8] * Move info file deregistration later in the deinstallation process so it works properly. [9] * Improve wording in EXPIRATION_DATE message. [10] * Fix dependencies for XFREE86_VERSION==3 (obtain imake from x11/XFree86 now that the former port is gone) [11] * While building index, treat non-existent dependencies as fatal. Previously the error was being hidden by the stderr redirection. [12] * Don't always retry BROKEN ports when package building (it is taking too much time to continually rebuild ports that are usually going to really be broken). Set TRYBROKEN if you want to attempt a build of a BROKEN port. [12] * Revert incorrect change from 1.487 relating to ALL-DEPENDS-LIST [13] PR: 24214 [1], 67529 [2], 63937 [3], 65554 [4], 40699 [5], 59162 [6], 63372 66567 [7], 63394 [8], 65304 [9], 65931 [10], 66565 [11], 66743 [13] Submitted by: roam [1], will [1], hrs [2], mi [3], ade [4], Roman Neuhauser <roman@bellavista.cz> [5], Sergey Matveychuk <sem@ciam.ru> [6], gad [7], adamw [8], kris [8][12], dinoex [9], Alexey Dokuchaev <danfe@regency.nsu.ru> [10], eik [11][13]
2004-06-10 07:30:19 +00:00
INDEX_ECHO_1ST= echo -n
.else
INDEX_ECHO_MSG= echo 1>&2
INDEX_ECHO_1ST= echo
.endif
Major optimizations for 'make index' and other recursive traversal targets. * Use /rescue/sh for index builds instead of /bin/sh, when it exists. The former is statically linked and faster to execute, which becomes significant when executing it tens of thousands of times. This trick can be used with other recursive targets by passing in __MAKE_SHELL. * Get rid of make variable assignments that use != command invocations in the critical path, using several methods: - rewriting logic to use shell or make builtins instead of external command executions - macroizing commands and executing them in the targets where they are needed instead of with every invocation of make - precomputing the results of invariant commands in bsd.port.subdir.mk and passing them in explicitly to child makes, and using this to avoid recalculation in all the children. NB: the commands are still run one per top-level subdirectory but this does not currently seem to be a major issue. They could be moved further up into the top-level Makefile at the cost of some cleanliness. - Committers are strongly discouraged from adding further "bare" != assignments to the ports tree, even in their own ports. One of the above strategies should be used to avoid future bloat. * Rewrite the core 'describe' target to work entirely within a single shell process using only builtin commands. The old version is retained as a backup for use on systems older than 603104, which does not have the make :u modifier. This cuts down the number of processes executed during the course of a 'make index' by an order of magnitude, and we are essentially now amortized to the minimum of a single make + sh instance per port, plus whatever commands the port makefile itself executes (which are usually unnecessary and bogus). * Less validation of the WWW: target is performed; this can become policed at a port level by portlint. Specifically we look at the second word of the first line beginning with "WWW:" in pkg-descr, and append "http://" to it unless it already begins with "http://", "https://" or "ftp://". Thanks to dougb for the idea of how to extract WWW: using shell builtins. * Use the "true" shell builtin instead of echo > /dev/null for a measurable decrease in CPU use. * Add a note about dubious escaping strategy in bsd.port.subdir.mk * Minor change in output of 'make describe': it no longer strips trailing CR characters from pkg-descr files with MSDOS CR/LF termination. Instead the makeindex perl script that post-processes make describe into the INDEX is tweaked to strip on input. The bottom line is that on my test hardware INDEX builds are now faster by more than a factor of 2 and with a reduction in system time by a factor of 4-8 depending on configuration.
2008-07-19 17:59:41 +00:00
# /rescue/sh is statically linked and much faster to execute than the
# dynamically linked /bin/sh. This is significant for targets like
# make index that execute the shell tens of thousands of times.
.if exists(/rescue/sh)
INDEX_SHELL= /rescue/sh
.else
INDEX_SHELL= /bin/sh
.endif
.if !defined(INDEX_PORTS)
INDEX_PORTS=.
.endif
.if exists(/usr/libexec/make_index)
MAKE_INDEX= /usr/libexec/make_index /dev/stdin
.else
MAKE_INDEX= perl ${.CURDIR}/Tools/make_index
.endif
${INDEXDIR}/${INDEXFILE}: .PHONY
* Support verbose index builds with INDEX_VERBOSE [1] * Don't assume root is using /bin/sh when switching credentials to configure OPTIONS. [2] * Support glob expressions in USE_GETTEXT to allow more flexibility in the face of future gratuitous library version bumps by the gettext developers [3]: USE_GETTEXT=yEs # Works as before (case-insensitive) USE_GETTEXT=[5-7] # Accepts any of those libintl.so.x versions # in the LIB_DEPENDS * Correctly register dependencies when a non-system perl port is used on 4.x [4] * Extend 'make search' support to allow much more flexible searching. Syntax will be documented in CHANGES for brevity. [5] * Reorder the post-install-script target to before add-plist-info for consistency [6] * Various fixes to support port operations when a port directory exists under /usr/obj [7] * Extend USE_PERL5_BUILD and USE_PERL5 to add EXTRACT and PATCH dependencies since many ports require perl in those stages [8] * Move info file deregistration later in the deinstallation process so it works properly. [9] * Improve wording in EXPIRATION_DATE message. [10] * Fix dependencies for XFREE86_VERSION==3 (obtain imake from x11/XFree86 now that the former port is gone) [11] * While building index, treat non-existent dependencies as fatal. Previously the error was being hidden by the stderr redirection. [12] * Don't always retry BROKEN ports when package building (it is taking too much time to continually rebuild ports that are usually going to really be broken). Set TRYBROKEN if you want to attempt a build of a BROKEN port. [12] * Revert incorrect change from 1.487 relating to ALL-DEPENDS-LIST [13] PR: 24214 [1], 67529 [2], 63937 [3], 65554 [4], 40699 [5], 59162 [6], 63372 66567 [7], 63394 [8], 65304 [9], 65931 [10], 66565 [11], 66743 [13] Submitted by: roam [1], will [1], hrs [2], mi [3], ade [4], Roman Neuhauser <roman@bellavista.cz> [5], Sergey Matveychuk <sem@ciam.ru> [6], gad [7], adamw [8], kris [8][12], dinoex [9], Alexey Dokuchaev <danfe@regency.nsu.ru> [10], eik [11][13]
2004-06-10 07:30:19 +00:00
@${INDEX_ECHO_1ST} "Generating ${INDEXFILE} - please wait.."; \
- Allow processing of info files in non-standard locations; the INFO_PATH variable may be used to specify their location. It defaults to 'share/info' for the standard PREFIX, and 'info' when PREFIX == /usr. [1] - Remove the <category>/pkg/COMMENT files in favour of a COMMENT variable in <category>/Makefile [2] - Prevent patch breakage with VERSION_CONTROL=numbered [3] - Fix some instances of incorrect WRKDIRPREFIX handling. [4] - remove useless ${MKDIR} ${WRKSRC} in config target [5] - remove reference to OpenBSD [6] - Exempt devel/p5-Module-Build from the self-dependency in PERL_MODBUILD so that this port may use the option without getting an infinite dependency list [7] - The default PERL_ARCH is currently determined as a function of OSVERSION. It should however be a function of PERL_LEVEL since the correct value depends on what Perl version one has installed (older Perl versions use ${ARCH}-freebsd, newer versions use mach). [8] - Fix PORTDOCS on older (4.7, 5.0) systems [9] - Allow 'make parallel' to generate a working makefile when not all categories are present (this does not mean you'll be able to build all ports, unless you make sure they don't have external dependencies) [10] - Don't report symlinks as world-writable in the security check [11] - Fix a comment that was broken by a mismerged patch [12] - Clarify the meaning of USE_*, WANT_*, WITH_* and WITHOUT_* [13] - Don't set _CHKSUMFILES/_IGNOREFILES if CKSUMFILES/IGNOREFILES is empty and DIST_SUBDIR is set. [14] - Fix comment for DISTDIR [15] - Update the documentation of the USE_GL variable [16] - Check to see if NONEXISTENT exists, and fail with an error if it does [17] - Fix fetching of new distfiles in 'make makesum' when SIZE is set [18] - Consistently set MAKE_ENV when USE_GCC=3.2 or 3.3 are set [19] - Rework INDEX builds: [20] * Fix the bsd.port.subdir.mk code that is supposed to report index breakage (the fallback code wasn't actually being run because make would halt immediately following the error). This should help with INDEX error reports because it will immediately show the cause of failure, so we won't have to pull teeth to extract it from the submitter. * Streamline the 'make describe' code a bit. * Provide some basic instructions to the user when an index build fails, on when and how to report index build failures (turn this off with INDEX_QUIET=1) * Removed INDEX_NOSORT, because I couldn't imagine it to be very useful and it doesn't cost very much anyway. * Don't prevent INDEX builds from seeing the local host environment. Since a lot of users are using 'make index' thesedays they should get an index that reflects their local settings and installed ports. If you want to build a 'default' index that isn't influenced by local settings (e.g. for release builds), set the INDEX_PRISTINE variable. * Allows parallel INDEX builds (using make -j). The most obvious way of doing this doesn't work, because I/O from child makes is broken up into 2k chunks, and output lines from 'make describe' that exceed this length (*cough* GNOME *cough*) will be intertwined with the output of other makes, leading to a corrupted INDEX. The I/O interleaving can be disabled using 'make -P', but this inserts extraneous output of its own, and redirects stderr, making it useless for our purposes. Instead, I collect the output from the child make processes in temporary files and recombine them at the end. * The number of concurrent make processes to spawn can be set using INDEX_JOBS. By default this is set to 2, which seems to be a sweet spot for both single and dual-processor systems. On my tests I do not see any significant performance changes on UP, but on a dual 4.x system the build time drops by 47% (6 minute index builds on one test machine!). Depending on your disk and CPU hardware you might see further gains with INDEX_JOBS=4 or higher, so you might like to experiment to see what works best. On a dual 5.x system the performance gains do not seem to be as great (20-30%), but this is still a significant net win. PR: 55493 [1], 59651 [2], 61552 [3], 62247 [4], 62329 [5], 62337 [6], 62422 [7], 62441 [8], 62627 [9], 62983 [10], 63112 [11], 63297 [12], 63335 [13], 64029 [14], 64069 [15], 64236 [16], 64519 [17], 62958 [18], 64237 [19] Submitted by: lev [1], Matthew Seaman <m.seaman@infracaninophile.co.uk> [2], Joel Ray Holveck <joelh@piquan.org> [3], ade [4], Sergey Matveychuk <sem@ciam.ru> [5], markus [6], mat [7], des [8], eik [9], Dmitry Morozovsky <marck@rinet.ru> [10], Andrew <andrew@ugh.net.au> [11], vs [12], linimon [13], edwin [14][15], gerald [16], marcus[17][18], kris [19][20]
2004-04-02 07:25:23 +00:00
if [ "${INDEX_PRISTINE}" != "" ]; then \
export LOCALBASE=/nonexistentlocal; \
fi; \
tmpdir=`/usr/bin/mktemp -d -t index` || exit 1; \
trap "rm -rf $${tmpdir}; exit 1" 1 2 3 5 10 13 15; \
2013-05-02 12:05:48 +00:00
( cd ${.CURDIR}; for i in ${INDEX_PORTS}; do (cd $${i} && ${MAKE} -j${INDEX_JOBS} INDEX_TMPDIR=$${tmpdir} BUILDING_INDEX=1 \
Major optimizations for 'make index' and other recursive traversal targets. * Use /rescue/sh for index builds instead of /bin/sh, when it exists. The former is statically linked and faster to execute, which becomes significant when executing it tens of thousands of times. This trick can be used with other recursive targets by passing in __MAKE_SHELL. * Get rid of make variable assignments that use != command invocations in the critical path, using several methods: - rewriting logic to use shell or make builtins instead of external command executions - macroizing commands and executing them in the targets where they are needed instead of with every invocation of make - precomputing the results of invariant commands in bsd.port.subdir.mk and passing them in explicitly to child makes, and using this to avoid recalculation in all the children. NB: the commands are still run one per top-level subdirectory but this does not currently seem to be a major issue. They could be moved further up into the top-level Makefile at the cost of some cleanliness. - Committers are strongly discouraged from adding further "bare" != assignments to the ports tree, even in their own ports. One of the above strategies should be used to avoid future bloat. * Rewrite the core 'describe' target to work entirely within a single shell process using only builtin commands. The old version is retained as a backup for use on systems older than 603104, which does not have the make :u modifier. This cuts down the number of processes executed during the course of a 'make index' by an order of magnitude, and we are essentially now amortized to the minimum of a single make + sh instance per port, plus whatever commands the port makefile itself executes (which are usually unnecessary and bogus). * Less validation of the WWW: target is performed; this can become policed at a port level by portlint. Specifically we look at the second word of the first line beginning with "WWW:" in pkg-descr, and append "http://" to it unless it already begins with "http://", "https://" or "ftp://". Thanks to dougb for the idea of how to extract WWW: using shell builtins. * Use the "true" shell builtin instead of echo > /dev/null for a measurable decrease in CPU use. * Add a note about dubious escaping strategy in bsd.port.subdir.mk * Minor change in output of 'make describe': it no longer strips trailing CR characters from pkg-descr files with MSDOS CR/LF termination. Instead the makeindex perl script that post-processes make describe into the INDEX is tweaked to strip on input. The bottom line is that on my test hardware INDEX builds are now faster by more than a factor of 2 and with a reduction in system time by a factor of 4-8 depending on configuration.
2008-07-19 17:59:41 +00:00
__MAKE_SHELL=${INDEX_SHELL} \
ECHO_MSG="${INDEX_ECHO_MSG}" describe); done ) || \
- Allow processing of info files in non-standard locations; the INFO_PATH variable may be used to specify their location. It defaults to 'share/info' for the standard PREFIX, and 'info' when PREFIX == /usr. [1] - Remove the <category>/pkg/COMMENT files in favour of a COMMENT variable in <category>/Makefile [2] - Prevent patch breakage with VERSION_CONTROL=numbered [3] - Fix some instances of incorrect WRKDIRPREFIX handling. [4] - remove useless ${MKDIR} ${WRKSRC} in config target [5] - remove reference to OpenBSD [6] - Exempt devel/p5-Module-Build from the self-dependency in PERL_MODBUILD so that this port may use the option without getting an infinite dependency list [7] - The default PERL_ARCH is currently determined as a function of OSVERSION. It should however be a function of PERL_LEVEL since the correct value depends on what Perl version one has installed (older Perl versions use ${ARCH}-freebsd, newer versions use mach). [8] - Fix PORTDOCS on older (4.7, 5.0) systems [9] - Allow 'make parallel' to generate a working makefile when not all categories are present (this does not mean you'll be able to build all ports, unless you make sure they don't have external dependencies) [10] - Don't report symlinks as world-writable in the security check [11] - Fix a comment that was broken by a mismerged patch [12] - Clarify the meaning of USE_*, WANT_*, WITH_* and WITHOUT_* [13] - Don't set _CHKSUMFILES/_IGNOREFILES if CKSUMFILES/IGNOREFILES is empty and DIST_SUBDIR is set. [14] - Fix comment for DISTDIR [15] - Update the documentation of the USE_GL variable [16] - Check to see if NONEXISTENT exists, and fail with an error if it does [17] - Fix fetching of new distfiles in 'make makesum' when SIZE is set [18] - Consistently set MAKE_ENV when USE_GCC=3.2 or 3.3 are set [19] - Rework INDEX builds: [20] * Fix the bsd.port.subdir.mk code that is supposed to report index breakage (the fallback code wasn't actually being run because make would halt immediately following the error). This should help with INDEX error reports because it will immediately show the cause of failure, so we won't have to pull teeth to extract it from the submitter. * Streamline the 'make describe' code a bit. * Provide some basic instructions to the user when an index build fails, on when and how to report index build failures (turn this off with INDEX_QUIET=1) * Removed INDEX_NOSORT, because I couldn't imagine it to be very useful and it doesn't cost very much anyway. * Don't prevent INDEX builds from seeing the local host environment. Since a lot of users are using 'make index' thesedays they should get an index that reflects their local settings and installed ports. If you want to build a 'default' index that isn't influenced by local settings (e.g. for release builds), set the INDEX_PRISTINE variable. * Allows parallel INDEX builds (using make -j). The most obvious way of doing this doesn't work, because I/O from child makes is broken up into 2k chunks, and output lines from 'make describe' that exceed this length (*cough* GNOME *cough*) will be intertwined with the output of other makes, leading to a corrupted INDEX. The I/O interleaving can be disabled using 'make -P', but this inserts extraneous output of its own, and redirects stderr, making it useless for our purposes. Instead, I collect the output from the child make processes in temporary files and recombine them at the end. * The number of concurrent make processes to spawn can be set using INDEX_JOBS. By default this is set to 2, which seems to be a sweet spot for both single and dual-processor systems. On my tests I do not see any significant performance changes on UP, but on a dual 4.x system the build time drops by 47% (6 minute index builds on one test machine!). Depending on your disk and CPU hardware you might see further gains with INDEX_JOBS=4 or higher, so you might like to experiment to see what works best. On a dual 5.x system the performance gains do not seem to be as great (20-30%), but this is still a significant net win. PR: 55493 [1], 59651 [2], 61552 [3], 62247 [4], 62329 [5], 62337 [6], 62422 [7], 62441 [8], 62627 [9], 62983 [10], 63112 [11], 63297 [12], 63335 [13], 64029 [14], 64069 [15], 64236 [16], 64519 [17], 62958 [18], 64237 [19] Submitted by: lev [1], Matthew Seaman <m.seaman@infracaninophile.co.uk> [2], Joel Ray Holveck <joelh@piquan.org> [3], ade [4], Sergey Matveychuk <sem@ciam.ru> [5], markus [6], mat [7], des [8], eik [9], Dmitry Morozovsky <marck@rinet.ru> [10], Andrew <andrew@ugh.net.au> [11], vs [12], linimon [13], edwin [14][15], gerald [16], marcus[17][18], kris [19][20]
2004-04-02 07:25:23 +00:00
(rm -rf $${tmpdir} ; \
if [ "${INDEX_QUIET}" = "" ]; then \
echo; \
echo "********************************************************************"; \
echo "Before reporting this error, verify that you are running a supported"; \
echo "version of FreeBSD (see https://www.FreeBSD.org/ports/) and that you"; \
echo "have a complete and up-to-date ports collection. (INDEX builds are"; \
echo "not supported with partial or out-of-date ports collections."; \
echo "If that is the case, then"; \
echo "report the failure to ports@FreeBSD.org together with relevant"; \
echo "details of your ports configuration (including FreeBSD version,"; \
echo "your architecture, your environment, and your /etc/make.conf"; \
echo "settings, especially compiler flags and OPTIONS_SET/UNSET settings)."; \
echo; \
echo "Note: the latest pre-generated version of INDEX may be fetched"; \
echo "automatically with \"make fetchindex\"."; \
- Allow processing of info files in non-standard locations; the INFO_PATH variable may be used to specify their location. It defaults to 'share/info' for the standard PREFIX, and 'info' when PREFIX == /usr. [1] - Remove the <category>/pkg/COMMENT files in favour of a COMMENT variable in <category>/Makefile [2] - Prevent patch breakage with VERSION_CONTROL=numbered [3] - Fix some instances of incorrect WRKDIRPREFIX handling. [4] - remove useless ${MKDIR} ${WRKSRC} in config target [5] - remove reference to OpenBSD [6] - Exempt devel/p5-Module-Build from the self-dependency in PERL_MODBUILD so that this port may use the option without getting an infinite dependency list [7] - The default PERL_ARCH is currently determined as a function of OSVERSION. It should however be a function of PERL_LEVEL since the correct value depends on what Perl version one has installed (older Perl versions use ${ARCH}-freebsd, newer versions use mach). [8] - Fix PORTDOCS on older (4.7, 5.0) systems [9] - Allow 'make parallel' to generate a working makefile when not all categories are present (this does not mean you'll be able to build all ports, unless you make sure they don't have external dependencies) [10] - Don't report symlinks as world-writable in the security check [11] - Fix a comment that was broken by a mismerged patch [12] - Clarify the meaning of USE_*, WANT_*, WITH_* and WITHOUT_* [13] - Don't set _CHKSUMFILES/_IGNOREFILES if CKSUMFILES/IGNOREFILES is empty and DIST_SUBDIR is set. [14] - Fix comment for DISTDIR [15] - Update the documentation of the USE_GL variable [16] - Check to see if NONEXISTENT exists, and fail with an error if it does [17] - Fix fetching of new distfiles in 'make makesum' when SIZE is set [18] - Consistently set MAKE_ENV when USE_GCC=3.2 or 3.3 are set [19] - Rework INDEX builds: [20] * Fix the bsd.port.subdir.mk code that is supposed to report index breakage (the fallback code wasn't actually being run because make would halt immediately following the error). This should help with INDEX error reports because it will immediately show the cause of failure, so we won't have to pull teeth to extract it from the submitter. * Streamline the 'make describe' code a bit. * Provide some basic instructions to the user when an index build fails, on when and how to report index build failures (turn this off with INDEX_QUIET=1) * Removed INDEX_NOSORT, because I couldn't imagine it to be very useful and it doesn't cost very much anyway. * Don't prevent INDEX builds from seeing the local host environment. Since a lot of users are using 'make index' thesedays they should get an index that reflects their local settings and installed ports. If you want to build a 'default' index that isn't influenced by local settings (e.g. for release builds), set the INDEX_PRISTINE variable. * Allows parallel INDEX builds (using make -j). The most obvious way of doing this doesn't work, because I/O from child makes is broken up into 2k chunks, and output lines from 'make describe' that exceed this length (*cough* GNOME *cough*) will be intertwined with the output of other makes, leading to a corrupted INDEX. The I/O interleaving can be disabled using 'make -P', but this inserts extraneous output of its own, and redirects stderr, making it useless for our purposes. Instead, I collect the output from the child make processes in temporary files and recombine them at the end. * The number of concurrent make processes to spawn can be set using INDEX_JOBS. By default this is set to 2, which seems to be a sweet spot for both single and dual-processor systems. On my tests I do not see any significant performance changes on UP, but on a dual 4.x system the build time drops by 47% (6 minute index builds on one test machine!). Depending on your disk and CPU hardware you might see further gains with INDEX_JOBS=4 or higher, so you might like to experiment to see what works best. On a dual 5.x system the performance gains do not seem to be as great (20-30%), but this is still a significant net win. PR: 55493 [1], 59651 [2], 61552 [3], 62247 [4], 62329 [5], 62337 [6], 62422 [7], 62441 [8], 62627 [9], 62983 [10], 63112 [11], 63297 [12], 63335 [13], 64029 [14], 64069 [15], 64236 [16], 64519 [17], 62958 [18], 64237 [19] Submitted by: lev [1], Matthew Seaman <m.seaman@infracaninophile.co.uk> [2], Joel Ray Holveck <joelh@piquan.org> [3], ade [4], Sergey Matveychuk <sem@ciam.ru> [5], markus [6], mat [7], des [8], eik [9], Dmitry Morozovsky <marck@rinet.ru> [10], Andrew <andrew@ugh.net.au> [11], vs [12], linimon [13], edwin [14][15], gerald [16], marcus[17][18], kris [19][20]
2004-04-02 07:25:23 +00:00
echo "********************************************************************"; \
echo; \
fi; \
exit 1); \
cat $${tmpdir}/${INDEXFILE}.desc.* | \
sed -e 's|${.CURDIR}|${PORTSDIR}|g' | \
(cd ${.CURDIR} ; ${MAKE_INDEX}) | \
- Allow processing of info files in non-standard locations; the INFO_PATH variable may be used to specify their location. It defaults to 'share/info' for the standard PREFIX, and 'info' when PREFIX == /usr. [1] - Remove the <category>/pkg/COMMENT files in favour of a COMMENT variable in <category>/Makefile [2] - Prevent patch breakage with VERSION_CONTROL=numbered [3] - Fix some instances of incorrect WRKDIRPREFIX handling. [4] - remove useless ${MKDIR} ${WRKSRC} in config target [5] - remove reference to OpenBSD [6] - Exempt devel/p5-Module-Build from the self-dependency in PERL_MODBUILD so that this port may use the option without getting an infinite dependency list [7] - The default PERL_ARCH is currently determined as a function of OSVERSION. It should however be a function of PERL_LEVEL since the correct value depends on what Perl version one has installed (older Perl versions use ${ARCH}-freebsd, newer versions use mach). [8] - Fix PORTDOCS on older (4.7, 5.0) systems [9] - Allow 'make parallel' to generate a working makefile when not all categories are present (this does not mean you'll be able to build all ports, unless you make sure they don't have external dependencies) [10] - Don't report symlinks as world-writable in the security check [11] - Fix a comment that was broken by a mismerged patch [12] - Clarify the meaning of USE_*, WANT_*, WITH_* and WITHOUT_* [13] - Don't set _CHKSUMFILES/_IGNOREFILES if CKSUMFILES/IGNOREFILES is empty and DIST_SUBDIR is set. [14] - Fix comment for DISTDIR [15] - Update the documentation of the USE_GL variable [16] - Check to see if NONEXISTENT exists, and fail with an error if it does [17] - Fix fetching of new distfiles in 'make makesum' when SIZE is set [18] - Consistently set MAKE_ENV when USE_GCC=3.2 or 3.3 are set [19] - Rework INDEX builds: [20] * Fix the bsd.port.subdir.mk code that is supposed to report index breakage (the fallback code wasn't actually being run because make would halt immediately following the error). This should help with INDEX error reports because it will immediately show the cause of failure, so we won't have to pull teeth to extract it from the submitter. * Streamline the 'make describe' code a bit. * Provide some basic instructions to the user when an index build fails, on when and how to report index build failures (turn this off with INDEX_QUIET=1) * Removed INDEX_NOSORT, because I couldn't imagine it to be very useful and it doesn't cost very much anyway. * Don't prevent INDEX builds from seeing the local host environment. Since a lot of users are using 'make index' thesedays they should get an index that reflects their local settings and installed ports. If you want to build a 'default' index that isn't influenced by local settings (e.g. for release builds), set the INDEX_PRISTINE variable. * Allows parallel INDEX builds (using make -j). The most obvious way of doing this doesn't work, because I/O from child makes is broken up into 2k chunks, and output lines from 'make describe' that exceed this length (*cough* GNOME *cough*) will be intertwined with the output of other makes, leading to a corrupted INDEX. The I/O interleaving can be disabled using 'make -P', but this inserts extraneous output of its own, and redirects stderr, making it useless for our purposes. Instead, I collect the output from the child make processes in temporary files and recombine them at the end. * The number of concurrent make processes to spawn can be set using INDEX_JOBS. By default this is set to 2, which seems to be a sweet spot for both single and dual-processor systems. On my tests I do not see any significant performance changes on UP, but on a dual 4.x system the build time drops by 47% (6 minute index builds on one test machine!). Depending on your disk and CPU hardware you might see further gains with INDEX_JOBS=4 or higher, so you might like to experiment to see what works best. On a dual 5.x system the performance gains do not seem to be as great (20-30%), but this is still a significant net win. PR: 55493 [1], 59651 [2], 61552 [3], 62247 [4], 62329 [5], 62337 [6], 62422 [7], 62441 [8], 62627 [9], 62983 [10], 63112 [11], 63297 [12], 63335 [13], 64029 [14], 64069 [15], 64236 [16], 64519 [17], 62958 [18], 64237 [19] Submitted by: lev [1], Matthew Seaman <m.seaman@infracaninophile.co.uk> [2], Joel Ray Holveck <joelh@piquan.org> [3], ade [4], Sergey Matveychuk <sem@ciam.ru> [5], markus [6], mat [7], des [8], eik [9], Dmitry Morozovsky <marck@rinet.ru> [10], Andrew <andrew@ugh.net.au> [11], vs [12], linimon [13], edwin [14][15], gerald [16], marcus[17][18], kris [19][20]
2004-04-02 07:25:23 +00:00
sed -e 's/ */ /g' -e 's/| */|/g' -e 's/ *|/|/g' -e 's./..g' | \
sort -t '|' -k 2,3 | \
sed -Ee 's../.g' -e ':a' -e 's|/[^/]+/\.\.||; ta' \
-e 's|${PORTSDIR}|/usr/ports|g' \
-e 's|${.CURDIR}|/usr/ports|g' > ${INDEXDIR}/${INDEXFILE}.tmp; \
- Allow processing of info files in non-standard locations; the INFO_PATH variable may be used to specify their location. It defaults to 'share/info' for the standard PREFIX, and 'info' when PREFIX == /usr. [1] - Remove the <category>/pkg/COMMENT files in favour of a COMMENT variable in <category>/Makefile [2] - Prevent patch breakage with VERSION_CONTROL=numbered [3] - Fix some instances of incorrect WRKDIRPREFIX handling. [4] - remove useless ${MKDIR} ${WRKSRC} in config target [5] - remove reference to OpenBSD [6] - Exempt devel/p5-Module-Build from the self-dependency in PERL_MODBUILD so that this port may use the option without getting an infinite dependency list [7] - The default PERL_ARCH is currently determined as a function of OSVERSION. It should however be a function of PERL_LEVEL since the correct value depends on what Perl version one has installed (older Perl versions use ${ARCH}-freebsd, newer versions use mach). [8] - Fix PORTDOCS on older (4.7, 5.0) systems [9] - Allow 'make parallel' to generate a working makefile when not all categories are present (this does not mean you'll be able to build all ports, unless you make sure they don't have external dependencies) [10] - Don't report symlinks as world-writable in the security check [11] - Fix a comment that was broken by a mismerged patch [12] - Clarify the meaning of USE_*, WANT_*, WITH_* and WITHOUT_* [13] - Don't set _CHKSUMFILES/_IGNOREFILES if CKSUMFILES/IGNOREFILES is empty and DIST_SUBDIR is set. [14] - Fix comment for DISTDIR [15] - Update the documentation of the USE_GL variable [16] - Check to see if NONEXISTENT exists, and fail with an error if it does [17] - Fix fetching of new distfiles in 'make makesum' when SIZE is set [18] - Consistently set MAKE_ENV when USE_GCC=3.2 or 3.3 are set [19] - Rework INDEX builds: [20] * Fix the bsd.port.subdir.mk code that is supposed to report index breakage (the fallback code wasn't actually being run because make would halt immediately following the error). This should help with INDEX error reports because it will immediately show the cause of failure, so we won't have to pull teeth to extract it from the submitter. * Streamline the 'make describe' code a bit. * Provide some basic instructions to the user when an index build fails, on when and how to report index build failures (turn this off with INDEX_QUIET=1) * Removed INDEX_NOSORT, because I couldn't imagine it to be very useful and it doesn't cost very much anyway. * Don't prevent INDEX builds from seeing the local host environment. Since a lot of users are using 'make index' thesedays they should get an index that reflects their local settings and installed ports. If you want to build a 'default' index that isn't influenced by local settings (e.g. for release builds), set the INDEX_PRISTINE variable. * Allows parallel INDEX builds (using make -j). The most obvious way of doing this doesn't work, because I/O from child makes is broken up into 2k chunks, and output lines from 'make describe' that exceed this length (*cough* GNOME *cough*) will be intertwined with the output of other makes, leading to a corrupted INDEX. The I/O interleaving can be disabled using 'make -P', but this inserts extraneous output of its own, and redirects stderr, making it useless for our purposes. Instead, I collect the output from the child make processes in temporary files and recombine them at the end. * The number of concurrent make processes to spawn can be set using INDEX_JOBS. By default this is set to 2, which seems to be a sweet spot for both single and dual-processor systems. On my tests I do not see any significant performance changes on UP, but on a dual 4.x system the build time drops by 47% (6 minute index builds on one test machine!). Depending on your disk and CPU hardware you might see further gains with INDEX_JOBS=4 or higher, so you might like to experiment to see what works best. On a dual 5.x system the performance gains do not seem to be as great (20-30%), but this is still a significant net win. PR: 55493 [1], 59651 [2], 61552 [3], 62247 [4], 62329 [5], 62337 [6], 62422 [7], 62441 [8], 62627 [9], 62983 [10], 63112 [11], 63297 [12], 63335 [13], 64029 [14], 64069 [15], 64236 [16], 64519 [17], 62958 [18], 64237 [19] Submitted by: lev [1], Matthew Seaman <m.seaman@infracaninophile.co.uk> [2], Joel Ray Holveck <joelh@piquan.org> [3], ade [4], Sergey Matveychuk <sem@ciam.ru> [5], markus [6], mat [7], des [8], eik [9], Dmitry Morozovsky <marck@rinet.ru> [10], Andrew <andrew@ugh.net.au> [11], vs [12], linimon [13], edwin [14][15], gerald [16], marcus[17][18], kris [19][20]
2004-04-02 07:25:23 +00:00
if [ "${INDEX_PRISTINE}" != "" ]; then \
sed -e "s,$${LOCALBASE},/usr/local," ${INDEXDIR}/${INDEXFILE}.tmp > ${INDEXDIR}/${INDEXFILE}; \
- Allow processing of info files in non-standard locations; the INFO_PATH variable may be used to specify their location. It defaults to 'share/info' for the standard PREFIX, and 'info' when PREFIX == /usr. [1] - Remove the <category>/pkg/COMMENT files in favour of a COMMENT variable in <category>/Makefile [2] - Prevent patch breakage with VERSION_CONTROL=numbered [3] - Fix some instances of incorrect WRKDIRPREFIX handling. [4] - remove useless ${MKDIR} ${WRKSRC} in config target [5] - remove reference to OpenBSD [6] - Exempt devel/p5-Module-Build from the self-dependency in PERL_MODBUILD so that this port may use the option without getting an infinite dependency list [7] - The default PERL_ARCH is currently determined as a function of OSVERSION. It should however be a function of PERL_LEVEL since the correct value depends on what Perl version one has installed (older Perl versions use ${ARCH}-freebsd, newer versions use mach). [8] - Fix PORTDOCS on older (4.7, 5.0) systems [9] - Allow 'make parallel' to generate a working makefile when not all categories are present (this does not mean you'll be able to build all ports, unless you make sure they don't have external dependencies) [10] - Don't report symlinks as world-writable in the security check [11] - Fix a comment that was broken by a mismerged patch [12] - Clarify the meaning of USE_*, WANT_*, WITH_* and WITHOUT_* [13] - Don't set _CHKSUMFILES/_IGNOREFILES if CKSUMFILES/IGNOREFILES is empty and DIST_SUBDIR is set. [14] - Fix comment for DISTDIR [15] - Update the documentation of the USE_GL variable [16] - Check to see if NONEXISTENT exists, and fail with an error if it does [17] - Fix fetching of new distfiles in 'make makesum' when SIZE is set [18] - Consistently set MAKE_ENV when USE_GCC=3.2 or 3.3 are set [19] - Rework INDEX builds: [20] * Fix the bsd.port.subdir.mk code that is supposed to report index breakage (the fallback code wasn't actually being run because make would halt immediately following the error). This should help with INDEX error reports because it will immediately show the cause of failure, so we won't have to pull teeth to extract it from the submitter. * Streamline the 'make describe' code a bit. * Provide some basic instructions to the user when an index build fails, on when and how to report index build failures (turn this off with INDEX_QUIET=1) * Removed INDEX_NOSORT, because I couldn't imagine it to be very useful and it doesn't cost very much anyway. * Don't prevent INDEX builds from seeing the local host environment. Since a lot of users are using 'make index' thesedays they should get an index that reflects their local settings and installed ports. If you want to build a 'default' index that isn't influenced by local settings (e.g. for release builds), set the INDEX_PRISTINE variable. * Allows parallel INDEX builds (using make -j). The most obvious way of doing this doesn't work, because I/O from child makes is broken up into 2k chunks, and output lines from 'make describe' that exceed this length (*cough* GNOME *cough*) will be intertwined with the output of other makes, leading to a corrupted INDEX. The I/O interleaving can be disabled using 'make -P', but this inserts extraneous output of its own, and redirects stderr, making it useless for our purposes. Instead, I collect the output from the child make processes in temporary files and recombine them at the end. * The number of concurrent make processes to spawn can be set using INDEX_JOBS. By default this is set to 2, which seems to be a sweet spot for both single and dual-processor systems. On my tests I do not see any significant performance changes on UP, but on a dual 4.x system the build time drops by 47% (6 minute index builds on one test machine!). Depending on your disk and CPU hardware you might see further gains with INDEX_JOBS=4 or higher, so you might like to experiment to see what works best. On a dual 5.x system the performance gains do not seem to be as great (20-30%), but this is still a significant net win. PR: 55493 [1], 59651 [2], 61552 [3], 62247 [4], 62329 [5], 62337 [6], 62422 [7], 62441 [8], 62627 [9], 62983 [10], 63112 [11], 63297 [12], 63335 [13], 64029 [14], 64069 [15], 64236 [16], 64519 [17], 62958 [18], 64237 [19] Submitted by: lev [1], Matthew Seaman <m.seaman@infracaninophile.co.uk> [2], Joel Ray Holveck <joelh@piquan.org> [3], ade [4], Sergey Matveychuk <sem@ciam.ru> [5], markus [6], mat [7], des [8], eik [9], Dmitry Morozovsky <marck@rinet.ru> [10], Andrew <andrew@ugh.net.au> [11], vs [12], linimon [13], edwin [14][15], gerald [16], marcus[17][18], kris [19][20]
2004-04-02 07:25:23 +00:00
else \
- Fix possibility of "infinite make fork" when "Registering install for ..." EMACS ports. [1] - Allow building a port as root using an NFS-mounted /usr/ports if the server maps root to a UID other than root. [2] - Make 'BROKEN' and 'IGNORED' ports exit their "make install" with a fail status rather than success. [3] - Improve behavior when dealing with versioned dependencies. [4] - Fix false positives in check-conflicts target. [5] - Remove obsolete bzip2 code. [6] - Add physical category net-p2p. [7] - Don't fetch INDEXFILE if not necessary; respect FETCH_ENV. [8], [11] - INDEX can now be moved outside of ports tree. [9] - Add ghostscript-gpl. [10] - Remove obsolete USE_MESA. [12] - Force pkg_install tools from ports on FreeBSD 4.10 and older. [13] - Document ALWAYS_KEEP_DISTFILES. [14] - Remove USE_REINPLACE from bsd.port.mk USE_DOS2UNIX patch. [15] PR: ports/37596 [1], ports/57259 [2], ports/63216 [3], ports/89448 [4], ports/89710 [5], ports/88996 [6], ports/89260 [7], ports/89363 [8], ports/89809 [9], ports/89853 [10], ports/91086 [11], ports/91710 [12], ports/91727 [13], ports/92111 [14], ports/92124 [15] Submitted by: Jay Sachs <jay at eziba dot com> [1], sem [1, 3, 8, 12], Andrew Heybey <ath at niksun dot com> [2], Jamie Jones <jamie at thompson dot bishopston dot net>, tobez [4], Mark Andrews <Mark_Andrews at isc dot org> [5], edwin [6, 11, 15], pav [7, 13], Peter Jeremy <PeterJeremy at optushome dot com dot au> [9], Ulrich Spoerlein <q at galgenberg dot net> [10], netchild [11], erwin [14] Reviewed by: kris, clement (partially)
2006-01-28 02:11:35 +00:00
mv ${INDEXDIR}/${INDEXFILE}.tmp ${INDEXDIR}/${INDEXFILE}; \
- Allow processing of info files in non-standard locations; the INFO_PATH variable may be used to specify their location. It defaults to 'share/info' for the standard PREFIX, and 'info' when PREFIX == /usr. [1] - Remove the <category>/pkg/COMMENT files in favour of a COMMENT variable in <category>/Makefile [2] - Prevent patch breakage with VERSION_CONTROL=numbered [3] - Fix some instances of incorrect WRKDIRPREFIX handling. [4] - remove useless ${MKDIR} ${WRKSRC} in config target [5] - remove reference to OpenBSD [6] - Exempt devel/p5-Module-Build from the self-dependency in PERL_MODBUILD so that this port may use the option without getting an infinite dependency list [7] - The default PERL_ARCH is currently determined as a function of OSVERSION. It should however be a function of PERL_LEVEL since the correct value depends on what Perl version one has installed (older Perl versions use ${ARCH}-freebsd, newer versions use mach). [8] - Fix PORTDOCS on older (4.7, 5.0) systems [9] - Allow 'make parallel' to generate a working makefile when not all categories are present (this does not mean you'll be able to build all ports, unless you make sure they don't have external dependencies) [10] - Don't report symlinks as world-writable in the security check [11] - Fix a comment that was broken by a mismerged patch [12] - Clarify the meaning of USE_*, WANT_*, WITH_* and WITHOUT_* [13] - Don't set _CHKSUMFILES/_IGNOREFILES if CKSUMFILES/IGNOREFILES is empty and DIST_SUBDIR is set. [14] - Fix comment for DISTDIR [15] - Update the documentation of the USE_GL variable [16] - Check to see if NONEXISTENT exists, and fail with an error if it does [17] - Fix fetching of new distfiles in 'make makesum' when SIZE is set [18] - Consistently set MAKE_ENV when USE_GCC=3.2 or 3.3 are set [19] - Rework INDEX builds: [20] * Fix the bsd.port.subdir.mk code that is supposed to report index breakage (the fallback code wasn't actually being run because make would halt immediately following the error). This should help with INDEX error reports because it will immediately show the cause of failure, so we won't have to pull teeth to extract it from the submitter. * Streamline the 'make describe' code a bit. * Provide some basic instructions to the user when an index build fails, on when and how to report index build failures (turn this off with INDEX_QUIET=1) * Removed INDEX_NOSORT, because I couldn't imagine it to be very useful and it doesn't cost very much anyway. * Don't prevent INDEX builds from seeing the local host environment. Since a lot of users are using 'make index' thesedays they should get an index that reflects their local settings and installed ports. If you want to build a 'default' index that isn't influenced by local settings (e.g. for release builds), set the INDEX_PRISTINE variable. * Allows parallel INDEX builds (using make -j). The most obvious way of doing this doesn't work, because I/O from child makes is broken up into 2k chunks, and output lines from 'make describe' that exceed this length (*cough* GNOME *cough*) will be intertwined with the output of other makes, leading to a corrupted INDEX. The I/O interleaving can be disabled using 'make -P', but this inserts extraneous output of its own, and redirects stderr, making it useless for our purposes. Instead, I collect the output from the child make processes in temporary files and recombine them at the end. * The number of concurrent make processes to spawn can be set using INDEX_JOBS. By default this is set to 2, which seems to be a sweet spot for both single and dual-processor systems. On my tests I do not see any significant performance changes on UP, but on a dual 4.x system the build time drops by 47% (6 minute index builds on one test machine!). Depending on your disk and CPU hardware you might see further gains with INDEX_JOBS=4 or higher, so you might like to experiment to see what works best. On a dual 5.x system the performance gains do not seem to be as great (20-30%), but this is still a significant net win. PR: 55493 [1], 59651 [2], 61552 [3], 62247 [4], 62329 [5], 62337 [6], 62422 [7], 62441 [8], 62627 [9], 62983 [10], 63112 [11], 63297 [12], 63335 [13], 64029 [14], 64069 [15], 64236 [16], 64519 [17], 62958 [18], 64237 [19] Submitted by: lev [1], Matthew Seaman <m.seaman@infracaninophile.co.uk> [2], Joel Ray Holveck <joelh@piquan.org> [3], ade [4], Sergey Matveychuk <sem@ciam.ru> [5], markus [6], mat [7], des [8], eik [9], Dmitry Morozovsky <marck@rinet.ru> [10], Andrew <andrew@ugh.net.au> [11], vs [12], linimon [13], edwin [14][15], gerald [16], marcus[17][18], kris [19][20]
2004-04-02 07:25:23 +00:00
fi; \
rm -rf $${tmpdir}; \
echo " Done."
- Fix possibility of "infinite make fork" when "Registering install for ..." EMACS ports. [1] - Allow building a port as root using an NFS-mounted /usr/ports if the server maps root to a UID other than root. [2] - Make 'BROKEN' and 'IGNORED' ports exit their "make install" with a fail status rather than success. [3] - Improve behavior when dealing with versioned dependencies. [4] - Fix false positives in check-conflicts target. [5] - Remove obsolete bzip2 code. [6] - Add physical category net-p2p. [7] - Don't fetch INDEXFILE if not necessary; respect FETCH_ENV. [8], [11] - INDEX can now be moved outside of ports tree. [9] - Add ghostscript-gpl. [10] - Remove obsolete USE_MESA. [12] - Force pkg_install tools from ports on FreeBSD 4.10 and older. [13] - Document ALWAYS_KEEP_DISTFILES. [14] - Remove USE_REINPLACE from bsd.port.mk USE_DOS2UNIX patch. [15] PR: ports/37596 [1], ports/57259 [2], ports/63216 [3], ports/89448 [4], ports/89710 [5], ports/88996 [6], ports/89260 [7], ports/89363 [8], ports/89809 [9], ports/89853 [10], ports/91086 [11], ports/91710 [12], ports/91727 [13], ports/92111 [14], ports/92124 [15] Submitted by: Jay Sachs <jay at eziba dot com> [1], sem [1, 3, 8, 12], Andrew Heybey <ath at niksun dot com> [2], Jamie Jones <jamie at thompson dot bishopston dot net>, tobez [4], Mark Andrews <Mark_Andrews at isc dot org> [5], edwin [6, 11, 15], pav [7, 13], Peter Jeremy <PeterJeremy at optushome dot com dot au> [9], Ulrich Spoerlein <q at galgenberg dot net> [10], netchild [11], erwin [14] Reviewed by: kris, clement (partially)
2006-01-28 02:11:35 +00:00
print-index: ${INDEXDIR}/${INDEXFILE}
@awk -F\| '{ printf("Port:\t%s\nPath:\t%s\nInfo:\t%s\nMaint:\t%s\nIndex:\t%s\nB-deps:\t%s\nR-deps:\t%s\nE-deps:\t%s\nP-deps:\t%s\nF-deps:\t%s\nWWW:\t%s\n\n", $$1, $$2, $$4, $$6, $$7, $$8, $$9, $$11, $$12, $$13, $$10); }' < ${INDEXDIR}/${INDEXFILE}
1999-06-01 02:55:43 +00:00
GIT?= git
.if !defined(SVN) || empty(SVN)
. for _P in /usr/bin /usr/local/bin
. for _S in svn svnlite
. if exists(${_P}/${_S})
SVN= ${_P}/${_S}
. endif
. endfor
. endfor
.endif
RSYNC?= rsync
- Fix 'all-depends-list' target in cases if dependencies list is very long and if some dependencies can't be added into the list. [1] - Fix FAM support. Make gamin the default FAM system. [2] - Introduce new 'quicksearch' target to show only port, path and info section of the matching ports. [3] - Introduce new category - rubygems. [4] - Fix stale dependencies while installing qmail slaveport and another port that depends on qmail. [5] - Add commentary for describes target in bsd.port.mk. [6] - Fix warning issued during make index on archs !368. [7] - Add USE_DOS2UNIX variable. If set to "YES", remove the ^M from all files under ${WRKSRC}. If set to a string, remove in all files under ${WRKSRC} with one of these names the ^Ms. [8] - Add new variables PERL_RUN_DEPENDS and PERL_BUILD_DEPENDS by checking the existance of the Perl modules with the "perl -e 'use module;'" command. [9] - Fix bsd.port.mk variable quoting issues. No quoting is necessary anymore either in the Makefile or on the command line. Affected variables include: BROKEN FORBIDDEN IGNORE MANUAL_PACKAGE_BUILD NO_CDROM NO_PACKAGE RESTRICTED [10] - Add NOFETCHFILES variable. If set, don't download these files from the ${MASTER_SITES} or ${MASTER_SITE_BACKUP} (but do from ${MASTER_SITE_OVERRIDE}). [11] - Improve 'search' target output. [12] - Add a new virtual category for Amateur Radio - hamradio. [13] - Cleanup some old/unused pathes in bsd.port.mk. [14] - Add @dirrmtry for plists which does the same as: "@unexec rmdir %D/foo 2>/dev/null || true" [15] - Remove virtual category - offix. [16] - Use portsnap instead of cvsup or cvs on "make update" in /usr/ports. [17] - Move location of bsd.autotools.mk within bsd.port.mk [18] - Add bsd.linux-rpm.mk, fix INSTALLS_SHLIB for Linux ports [19] - Use new USE_RC_SUBR format for FreeBSD version >= 700007 [20] - Replace the string "FreeBSD" by "The FreeBSD Project" in the security warning [21] - Add bsd.local.mk for local modification to ports framework. [22] - Replace rcNG spelling by rc.d [23] - Remove superfluous USE_REINPLACE. [24] Special thanks to: linimon for spending hours with all these patches clement for fixes kris for help with pointyhat PR: ports/86310 [1], ports/89498 [2], ports/83530 [3], ports/83789 [4], ports/84053 [5], ports/86281 [6], ports/87214 [7], ports/87234 [8], ports/87318 [9], ports/87396 [10], ports/87605 [11], ports/87840 [12], ports/88230 [13], ports/88493 [14], ports/88711 [15], ports/88751 [16], ports/89281 [17], ports/89999 [18], ports/90031 [19], ports/90150 [20], ports/90668 [21], ports/91433 [23], ports/88754 [24] Submitted by: mi [1], marcus [2], Lars Engels <lars.engels@0x20.net> [3], pav [4, 16, 20, 24], garga [5], cperciva [6], vd [7], edwin [8, 9, 11, 15, 21], fenner [10], Arseny Nasokin <tarc.po.cs.msu.su@tarc.po.cs.msu.su> [12], Carl Makin <carl@stagecraft.cx> [13], arved [14], NIIMI Satoshi <sa2c@sa2c.net> [17], thierry [18], jylefort [19], linimon [22], dougb [23]
2006-01-21 17:37:14 +00:00
PORTSNAP?= portsnap
PORTSNAP_FLAGS?= -p ${.CURDIR}
.if !target(update)
1999-06-01 02:55:43 +00:00
update:
.if exists(${.CURDIR}/.svn)
@echo "--------------------------------------------------------------"
@echo ">>> Updating ${.CURDIR} using Subversion"
@echo "--------------------------------------------------------------"
cd ${.CURDIR}; ${SVN} update
.elif exists(${.CURDIR}/.git)
. if exists(${.CURDIR}/.git/svn)
@echo "--------------------------------------------------------------"
@echo ">>> Updating ${.CURDIR} from git+svn repository"
@echo "--------------------------------------------------------------"
cd ${.CURDIR}; ${GIT} svn rebase
. else
@echo "--------------------------------------------------------------"
@echo ">>> Updating ${.CURDIR} from git repository"
@echo "--------------------------------------------------------------"
cd ${.CURDIR}; ${GIT} pull --rebase
. endif
.elif defined(RSYNC_UPDATE) && defined(PORTS_RSYNC_SOURCE)
@echo "--------------------------------------------------------------"
@echo ">>> Updating with ${RSYNC} from ${PORTS_RSYNC_SOURCE}"
@echo "--------------------------------------------------------------"
@${RSYNC} ${RSYNC_FLAGS} ${PORTS_RSYNC_SOURCE}/ ${.CURDIR}/
.else
@echo "--------------------------------------------------------------"
@echo ">>> Running ${PORTSNAP}"
@echo "--------------------------------------------------------------"
.if !exists(${PORTSDIR}/.portsnap.INDEX)
@echo "Error: 'make update' uses portsnap(8) by default and"
@echo "needs ${PORTSDIR} to be created by portsnap on its first run."
@echo "Please run 'portsnap fetch extract' first."
.else
@${PORTSNAP} ${PORTSNAP_FLAGS} fetch
@${PORTSNAP} ${PORTSNAP_FLAGS} update
.endif
1999-06-01 02:55:43 +00:00
.endif
.endif