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.
To ease upgrade, bsd.java.mk now substitutes JAVA_VERSION values of 1.1+ and
1.2+ as 1.3+.
The related JDK ports that have been marked as deprecated and scheduled for
removal some time ago are now safe to be removed.
The patch has been tested successfully on the cluster.
PR: 116724
[1] Remove DEPENDS
[2] Add a new pkg-plist keyword @stopdaemon
[3] Provide rc.subr script suffix as RC_SUBR_SUFFIX
[4] Add USE_CDRTOOLS to abstract dependency on sysutils/cdrtool[-cjk]
[5] Add DOS2UNIX_REGEX, allowing to pass a filename regex to CRLF replacement
routine
[6] Support partially translated manpages in MAN* variables
[7] Fix USE_LDCONFIG on ports with @cwd in pkg-plist
[8] Remove support for XFree86 3.X
[9] Add user settable WITH_DEBUG flag that turns on -g in CFLAGS and resets
STRIP
[9] Fix `make install' to refuse overwriting of older version of the port
[10] New category ports-mgmt
[11] New category gnustep
[12] Removed category picobsd
bsd.java.mk
[13] Remove deprecated syntax
bsd.tcl.mk
[14] Provide TCL_VER when USE_TK[_BUILD] is defined. Fixes cad/netgen
ports/Makefile
[15] Make csup default `make update' method on FreeBSD 6.2 and up
PR: ports/99742 [1], ports/93373 [2], ports/100915 [3],
ports/105161 [4], ports/106029 [5], ports/106252 [6],
ports/106235 [7], ports/100939 [9], ports/97507 [10],
ports/103931 [11], ports/106921 [12], ports/104136 [13],
ports/105215 [15]
Submitted by: sem [1] [2], Matthias Andree <matthias.andree@gmx.de> [3],
nork [4], pav [5] [7] [14], Nick Barkas <snb@threerings.net> [6],
flz [8], gabor [9], shaun [10], erwin [12], hq [13],
Gurkan Sengun <gurkan@linuks.mine.nu> [11]
. Make Diablo Caffe 1.5.0 the default JDK for all the versions/architecture
that its available for.
. Make the standard jdk15 the default on FreeBSD 4.x as this should now be
stable with the release of patchset 3.
Reviewed by: hq
of Jikes not does support all of Java 1.5 extensions.
Porters may still enforce the use of Jikes with Java 1.5 by explicitely
setting:
USE_JIKES= yes
This fix is a temporary one and is bound to be removed whenever Java 1.5 gets
fully supported in Jikes.
Reported by: lawrance
Approved by: glewis (co-maintainer)
NOTE: these are only added if the related variables are defined by the port.
This should ease the configuration of launcher shell scripts used for Java
application ports, when they are using javavmwrapper to invoke a JVM. From now,
a simple launcher that suits most of the Java application ports can be writen
using the following scheme:
#!/bin/sh
JAVA_VERSION="%%JAVA_VERSION%%" \
"%%LOCALBASE%%/bin/java" -jar "%%JAVAJARDIR%%/myport.jar" "$@"
As mentioned above, this is of course only correct provided that the port
defines JAVA_VERSION.
Approved by: glewis (co-maintainer)
conflicts with the default values for JAVA_BUILD and JAVA_RUN. Those variables
are indeed set a default value when none of the them (together with
JAVA_EXTRACT) is defined. Having USE_ANT set a value for JAVA_BUILD will cause
JAVA_RUN not to be set its default value.
This has RUN_DEPENDS not correctly set (missing the JDK entry) on many ports
that use USE_ANT.
This patch addresses this issue by moving the statements dealing with default
values to have them executed before USE_ANT handling.
Approved by: glewis (co-maintainer)
this patch, for instance:
$ cd /usr/port/devel/apache-ant
$ make JAVA_HOME=toto
apache-ant-1.6.2: Environement error: "JAVA_HOME" should not be defined.
*** Error code 1
PR: 70914
Reported by: Rong-En Fan <rafan@infor.org>
Approved by: glewis (co-maintainer)
building the port but not added to BUILD_DEPENDS)
- Use ${VAR:U} to test YES/NO values a more simple way
- Refactor: Jikes now has its own sub-stages (error-handling and support)
together in Stage 6
- New variable to be used by porters (and used internally by bsd.java.mk),
HAVE_JIKES
Approved by: glewis (mentor)
performing all of the recent changes.
. Add to the header comment to document JAVASHAREDIR, JAVAJARDIR and
JAVALIBDIR.
. Add a definition for JAVALIBDIR. This is where other ports have
installed their JAR files (a port should install in JAVAJARDIR but
look for other JARs in JAVALIBDIR).
Java-based port with ant, using MAKE_ENV, MAKE_ARGS and ALL_TARGET but
using ant instead of make. When a port is built this way it also
causes ant to respect the JDK selected by bsd.java.mk rather than
using the JDK that ant was build with.
Most ports should just be able to do
USE_ANT= yes
You may also need to set ALL_TARGET if your port doesn't use the
default ant target.
See the comments on USE_ANT at the head of bsd.java.mk for more
information.
PR: 59997
Reviewed by: hq (who spotted a bug and provided the comments
documenting USE_ANT).
got spammed in the update to bsd.java.mk 2.0. They replace .BEGIN blocks
with check-makevars:: targets.
PR: 68516
Submitted by: Herve Quiroz <herve.quiroz@esil.univ-mrs.fr>
PLIST_SUB.
. Define java utility variables such as JAVA, JAVAC, JAVAH, APPLETVIEWER,
etc. conditionally (?=) rather than explicitly (=). This is in line with
both bsd.port.mk and the earlier version of bsd.java.mk.
Reviewed by: Herve Quiroz <herve.quiroz@esil.univ-mrs.fr>
. Added '-bootclasspath ${JAVA_CLASSES}' to the command-line for JAVAC when
jikes is used as a substitute for javac.
PR: 66349
Submitted by: Herve Quiroz <herve.quiroz@esil.univ-mrs.fr>
line with bsd.port.mk and prevents errors when ${OSVERSION} is (somehow)
undefined.
Problem report from: Thomas Abthorpe <thomas@stthomas.stthomasanglican.org>
. Make the USE_JIKES setting to actually work.
. Simplified backwards compatibility with the old bsd.java.mk.
. Allowed java dependency selection with JAVA_PREFERRED_PORTS.
. More error checking on variable settings.
. Allowed USE_JAVA=yes to work without specifying a version.
. Expanded the meta-info for the individual ports so the full version
is now available, among other things.
Submitted by: Herve Quiroz <herve.quiroz@esil.univ-mrs.fr>
. Use the appropriate command variable (e.g. ${SED}) rather than the raw
command itself. Most of the files in Mk appear to do this, although
there are some exceptions. Certainly bsd.port.mk does.
The one exception is uniq, for which there isn't yet a defined variable.
PR: 65210
Submitted by: Herve Quiroz <herve.quiroz@esil.univ-mrs.fr>
bsd.java.mk now provides a new set of macros to be used by ports that
require a JDK. When USE_JAVA is set, the following variables may be set
in order to give to precision regarding the requirements of the port:
- JAVA_VERSION: A list of space-separated suitable java versions for the
port. An optional "+" allows you to specify a range of versions.
(allowed values: 1.1[+] 1.2[+] 1.3[+] 1.4[+])
- JAVA_OS: A list of space-separated suitable JDK port operating systems
for the port. (allowed values: native linux)
- JAVA_VENDOR: A list of space-sperated suitable JDK port vendors for
the port. (allowed values: freebsd bsdjava sun ibm blackdown)
- JAVA_BUILD: When set, it means that the selected JDK port should be
added to build dependencies for the port.
- JAVA_RUN: This variable works exactly the same as JAVA_BUILD but
regarding run dependencies.
Here are some of the macros defined after setting USE_JAVA:
- JAVA_PORT: The name of the JDK port (e.g. java/jdk14)
- JAVA_HOME: The home of the JDK port in the local base
- JAVA_PORT_VERSION: The version of the JDK port.
- JAVA_PORT_OS: The operating system used by the JDK port.
- JAVA_PORT_VENDOR: The vendor of the JDK port.
- And many macros for the commonly used java executables, such as JAVA,
JAVAC, JAVADOC, JAVAH, RMID, JAR...
bsd.java.mk 2.0 is backward compatible with the previous version. Using
the new features is strongly encouraged, since the old bsd.java.mk 1.0
features will be deprecated and removed in the near future.
You will find more detailed info (as well as a quick tutorial) at:
http://www.esil.univ-mrs.fr/~hquiroz/freebsd/bsd.java.mk-2.0.html
If you experience any problems with java based ports that you believe
is due to this change then please let me know.
PR: 63511
Submitted by: Herve Quiroz <herve.quiroz@esil.univ-mrs.fr>
* Add ghostscript knobs [1]
* Add per-port persistent build options with a menu-driven front-end [2]
* Allow porters to override the message generated when do-configure fails [3]
* Add patch to obviate many pkg-plist files [4]
* Fix the PKG_DBDIR comment [5]
* Make ports framework more robust with regard to make index [6]
* Add new command macros to bsd.port.mk [7]
* Remove direct command use from bsd.port.mk [8]
* Make the ports system respect WITHOUT_CPU_CFLAGS [9]
* Break the SDL code out into bsd.sdl.mk [10]
* Add working support for USE_SIZE [11]
* Fix RANDOMIZE_MASTER_SITES on -CURRENT [12]
* Convert some spaces to tabs [13]
* Add new physcial categories accessibility and x11-themes [14]
* Speed up GNU configure scripts [15]
* Remove "//" from MLINKS items in PLISTs and fix make -s install and
make -s deinstall [16]
* Be more specific about looking for files in distinfo [17]
* Add new run-autotools target, and resort configure targets [18]
* Make CONFLICTS compare prefix for installed packages and PREFIX [19]
* Change directory to ${.CURDIR} before running certain make commands [20]
* When INSTALL_AS_USER is set, run ldconfig with failures ignored [21]
* Speed up the security check phase [22]
* Fix some corner cases in the PORTDOCS code [23]
* Add a new DEPRECATED macro [24]
* Make INDEX breakage more informative [25]
Look for a full write-up to follow on ports@ and ports-developers@.
PR: 36112 [1]
59909 [4]
61351 [6]
59058 [7]
59058 [8]
59493 [9]
55494 [10]
59058 [11]
59315 [12]
59058 [13]
59811 [15]
59058 [16]
59058 [17]
60882 [18]
58149 [19]
59058 [20]
61133 [21]
55331 [22]
59070 [23]
59362 [24]
59626 [25]
Submitted by: linimon [1]
eivind [2]
marcus [3]
trevor [4]
gerald [5]
linimon [6]
eik [7]
eik [8]
jeh [9]
edwin [10]
eik [11]
Sergey Matveychuk <sem@ciam.ru> [12]
eik [13]
trevor gnome [14]
adamw [15]
eik [16]
eik [17]
edwin [18]
clement [19]
eik [20]
edwin lev [21]
Eugene M. Kim <ab@astralblue.com> [22]
eik [23]
linimon [24]
eik [25]
would not have been picked up if USE_JAVA was set to "1.3+".
The behaviour is now as follows if USE_JAVA is set to
"1.3+":
- If the setting is 1.3+, then use an already installed 1.3
or 1.4 JDK. If there is no such JDK, then set USE_JAVA to
1.3. The FreeBSD JDK 1.4 is preferred over all other
JDK's.
Noticed by: pav