utilities. Unfortunately this overrides any PATH that may have been
set by the user and hence affects the ability of java to execute
external programmes. So, save the PATH before setting it and then
restore it immediately before executing java.
. Bump PORTREVISION for this fix.
Reported by: Christian Laursen <xi@borderworlds.dk>
allow the simple use of multiple VMs. Brief detail of the main changes:
. When a VM is registered, symbolic links for its executables are
created in ${LOCALBASE}/bin. This allows people to just type
'java', 'javac', etc. without having to add the VM installation
directory to their PATH.
. The actual 'java' that is executed via one of these symlinks is
determined by the order of the (sorted) configuration file
${LOCALBASE}/etc/javavms and by the environment variables
JAVA_VERSION, JAVA_OS and JAVA_VENDOR which function to select
a VM as they do in the ports framework.
. There is a new command, checkvms, to sanity check the configuration
and symlinks.
. The "javavm" executable is currently retained in its original capacity
as a synonym for Java for backward compatibility. However, its use
is deprecated.
. Temporarily set MAINTAINER to myself to make monitoring any initial
bug reports easier. The intent is to convert it to java@ at a later
date.
This is built on the ideas of znerd, hq and Shelton C. Johnson Jr., with
hq and Shelton contributing code and reviews.
PR: 27079, 39080
Reviewed by: hq, Shelton C. Johnson Jr. <shelton_c_j@yahoo.com>
This was found implicitly dependency on unzip by
pointyhat. In almost environment, this is not a
problem and isn't regist installed package
database. So I don't bump PORTREVISION.
Pointed out by: pointyhat via kris
o Reset MAINTAINER to java@.
o Bump PORTREVISION accordingly.
PR: ports/72802
Submitted by: Jeremy Faulkner <gldisater@gldis.ca>
Approved by: maintainer no response
o Use native JDK rather than linux-sun-jdk. [2]
o Utilize WITH_MOZILLA. It provies to use mozilla or firefox. [2]
o Fix some port's bugs. [2]
o Add zip to BUILD_DEPENDS and fix build error without zip. [3]
PR: ports/72990 [1], ports/72475 [2]
Submitted by: Jeremy Faulkner <gldisater@gldis.ca> [1], [2]
Pointed out by: pointy via kris [3]
existing the Solaris base, and similarly to what happened with NSPR, made
a bad assumption on undefined behavior. This broke locking in various
places in Java, for example, causing the the debugging support to be
totally broken. It is worth someone who knows the Java codebase taking
a look to see what other things could have been broken by this on
FreeBSD 5.x+.
The assumption is that pthread_mutex_trylock(3) on a default-type
mutex will fail with EBUSY. This assumption is wrong for our
libpthread, which returns EDEADLK if the owner thread is trying to
acquire the mutex again with trylock. The behavior of performing a
locking operation on a self-locked default-type mutex is explicitly
undefined for pthread_mutex_lock(3).
The POSIX specification is still not very clear. It defines
pthread_mutex_trylock(3) in terms of pthread_mutex_lock(3) yet
does not say what the defined behavior should be for a self-locked
pthread_mutex_trylock(3) for any of the various mutex types, so it is
ambiguous whether the result is clearly undefined or clearly to return
EBUSY.
It is a one line change whether or not to make libpthread return
EDEADLK in this case, where it seems that most implementations do not.
Reference: http://www.opengroup.org/onlinepubs/009695399/functions/pthread_mutex_lock.html
The HotSpot code (ab)uses named enums as ints in a number of places.
The problem with this is that according the the C++ spec, the compiler
(essentially) only needs to use an integral type wide enough to hold
the values defined in the enum. Earlier versions of gcc appear to have
just used an int whether they could have got away with a narrower type
or not, hence the code worked as expected. gcc 3.4 now appears to
implement this part of the spec, so using an enum blindly as an int
causes various problems due to overflow.
In this case the enum, Bytecodes::Code, appears to be a genuine enum,
its just assumed to be wide enough to hold an arbitrary int in various
places in the code. The correct fix would be to track down all those
places in the code and fix them. Since there are quite a lot of these
places and 5.3 is close to release for now we just add a value to the
enum set to INT_MAX, forcing the compiler to use at least an int for the
type.
Sleuth work, discussion and code suggestions: peadar
The HotSpot code (ab)uses named enums as ints in a number of places.
The problem with this is that according the the C++ spec, the compiler
(essentially) only needs to use an integral type wide enough to hold
the values defined in the enum. Earlier versions of gcc appear to have
just used an int whether they could have got away with a narrower type
or not, hence the code worked as expected. gcc 3.4 now appears to
implement this part of the spec, so using an enum blindly as an int
causes various problems due to overflow.
This case is particularly bogus since the enums are merely to define
a named integral type within a class (VMReg::Name doesn't even have
any values enumerated in the declaration). So, convert these two
enums to simply be typedef'ed ints.
Sleuth work, discussion and code suggestions: peadar
condition and return NULL". Take account of the NULL in the
appropriate place (which is somewhat worrisome in itself since
ReadChunk() has always had the possibility of returning NULL).
This makes loading a font file a little more resilient to specially
crafted font data which can be used, for example, by an applet to
crash the browser plugin by triggering the assert(). Such an applet
was mentioned on Bugtraq:
http://www.securityfocus.com/archive/1/367331/2004-06-26/2004-07-02/0
and can be found at
http://www.illegalaccess.org/cms/?q=node/view/9
This change stops the browser plugin from crashing.
. Fix some warnings regarding formats in debugging printf's.
(for FreeBSD 4.x neither are defined and for FreeBSD 5.x
O_DSYNC isn't defined). This caused them to be defined to
some bogus values. In particular, O_SYNC would be defined
as 0x800, which is O_EXCL (at least on FreeBSD 4.x). The
result being that the RandomAccessFile class would fail to
open an existing file if you specified "s" as part of the mode.
Fix this by defining O_SYNC and O_DSYNC to O_FSYNC if they
aren't defined.
agree to the company's license requirement before downloading (although
the agreement mostly pertains to their software available for purchase).
PR: ports/71510
Submitted by: mitsuru at riken dot jp (maintainer)
Approved by: portmgr (implicit)