Due to a bug in compileall.py script distributed with Python pyc/pyo files’ modification times are earlier than tat of py files. If any Python packages (such as java-config which is used for all Java packages) are used during compile phase the bytecode is regeneretad and sandbox-1.3.3 started catching that as a violation. Sandbx version 1.3.4 and above ignores this problem as a workaround. So if you hit any issues similar to bug 256953 or its duplicates, please update your sanbox. I thank Martin von Gagern for working on fixing the issue and taking it to upstream.

The tool Betelgeuse wrote was scanning Java packages for unneeded dependencies. It was scanning the registered jar’s for any referenced classes and generated a list of classes in dependent packages/jars to see if any of them are redundant. Back on December I came up with an idea to use that information to dig out for an opposite fact. Packages that reference classes which are not provided by it’s dependencies not itself. It was bug #252249 which inspired me. The initial ebuild was definitely missing a dev-java/sun-jai-bin .dependency which I wanted to verify. The intention was to discover missing dependencies. of binary Java packages.

After I got it working without (hopefully) false positives it was then time to see the results. I first ran it in over the packages installed on my system. Thanks to Diego who kindly ran it in his tinderbox which had most of the Java packages in portage installed and posted the output. I was surprised about the outcome. There were many source based packages that it reported to depend on missing classes. Roughly examining the list I saw that some packages installing ant tasks were missing an ant core dependency and fixed a few. Another set of packages seem to package its unit tests (see java-wakeonlan for example) Digging out others I figured out a third kind of problem. Packages missing already generated jars or classes in the final package.env entry. Those (openoffice,xulrunner,java-access-bridge) reported missing classes that was already provided by themselves. They either didn’t install the jar at all or installed but not registered them (we have java-pkg_regjar provided by java-utils-2 eclass which registers an already installed jar). But java-access-bridge had an interesting bug which was there for ages. The generated jar misses already compiled classes due to wildcards not being expanded recursively during make and reported the bug to upstream. Mindterm exibits a similar bug. Classes were missed out in jars because they weren’t in the hardcoded list of classes to package.

As a final word, I’ll be taking next days investigating output generated in Diego’s tinderbox, and fixing the packages.

Following up Petteri’s post about icedtea6-bin package we now have 1.6.0.12 versions of sun-jdk and sun-jre-bin in tree. This version finally adds long awaited (6 year old bug in sun bug database) 64-bit browser plugin along with 64-bit Javaws. Simply install any of the two with nsplugin USE flag and start running Java applets. Note that it only works with Firefox 3.