On 01/03/2014 07:55 AM, David Prévot wrote:
> Hi,
> 
> Le 03/01/2014 11:34, tony mancill a écrit :
>> On 01/02/2014 08:46 PM, Ben Finney wrote:
>>> On 02-Jan-2014, David Prévot wrote:
> 
>>>> Calling closure-compiler inside pbuilder or sbuild (e.g. from d/rules)
>>>> fails with:
>>>>
>>>>    run-detectors: unable to find an interpreter for 
>>>> /usr/bin/closure-compiler
> 
>> […] I'll try to figure out
>> what's going on with jarwrappers.  The only change with -4 upload is to
>> depend on jarwrappers.
> 
> Haven’t double checked (so I don’t tag it directly with “found
> 20130227+dfsg1-3”), but I’m pretty sure I ran into this bug with -3, and
> only filled it against -4 after trying to understand it.

Hi David,

I'm seeing the same behavior with other packages that depend on
jarwrapper - e.g. sat4j and logisim.

When I install them into a base sid chroot, they start correctly.  But
when I install them into a chroot that has already has a JDK and a few
other tools installed, the same error is emitted as you're seeing for
closure-compiler:

(jdksid-chroot)$ sat4j
run-detectors: unable to find an interpreter for /usr/bin/sat4j
(jdksid-chroot)$ logisim
run-detectors: unable to find an interpreter for /usr/bin/logisim

Focusing on just jarwrappers, in the "good" case (base sid install),
update-binfmts is successful:

> (sid-chroot) apt-get install jarwrapper
> [...]
> The following extra packages will be installed:
>   binfmt-support fastjar init-system-helpers libpipeline1
> The following NEW packages will be installed:
>   binfmt-support fastjar init-system-helpers jarwrapper libpipeline1
> [...]
> Setting up binfmt-support (2.1.1-1) ...
> update-rc.d: warning: start and stop actions are no longer supported; falling 
> back to defaults
> invoke-rc.d: policy-rc.d denied execution of start.
> Setting up fastjar (2:0.98-5) ...
> Setting up jarwrapper (0.45) ...
> update-binfmts: warning: jarwrapper already enabled in kernel.

And I think more to the point, /var/lib/binfmts/jarwrapper exists.

> (sid-chroot) ls -al /var/lib/binfmts/
> total 12
> drwxr-xr-x  2 root root 4096 Jan  4 04:32 .
> drwxr-xr-x 14 root root 4096 Jan  4 04:32 ..
> -rw-r--r--  1 root root   64 Jan  4 04:32 jarwrapper

And is registered with binfmts:

> (sid-chroot) update-binfmts --display jarwrapper
> jarwrapper (enabled):
>      package = <local>
>         type = magic
>       offset = 0
>        magic = PK\x03\x04
>         mask = 
>  interpreter = /usr/bin/jarwrapper
>     detector = /usr/bin/jardetector

Attempting the same in the non-base sid chroot (still stock sid, but
just created a while back with the JDK already installed), the
jarwrapper postinst output is different:

> (jdksid-chroot) apt-get install jarwrapper
> [...]
> The following extra packages will be installed:
>   binfmt-support fastjar init-system-helpers
> The following NEW packages will be installed:
>   binfmt-support fastjar init-system-helpers jarwrapper
> [...]
> Setting up binfmt-support (2.1.1-1) ...
> update-binfmts: warning: python3.3 already enabled in kernel.
> update-binfmts: warning: found manually created entry for python2.7 in 
> /proc/sys/fs/binfmt_misc; leaving it alone
> update-binfmts: warning: found manually created entry for jar in 
> /proc/sys/fs/binfmt_misc; leaving it alone
> update-rc.d: warning: start and stop actions are no longer supported; falling 
> back to defaults
> invoke-rc.d: policy-rc.d denied execution of start.
> Setting up fastjar (2:0.98-5) ...
> Setting up jarwrapper (0.45) ...
> update-binfmts: warning: found manually created entry for jarwrapper in 
> /proc/sys/fs/binfmt_misc; leaving it alone

And no entry is created for jarwrapper, so the magic number for jars
isn't known to run-detectors.

> (jdksid-chroot) ls -al /var/lib/binfmts/
> total 12
> drwxr-xr-x  2 root root 4096 Jan  4 04:31 .
> drwxr-xr-x 19 root root 4096 Jan  4 04:31 ..
> -rw-r--r--  1 root root   57 Jan  4 04:31 python3.3

update-binfmts agrees...

> (jdksid-chroot) update-binfmts --display jarwrapper
> update-binfmts: warning: jarwrapper not in database of installed binary 
> formats.
> update-binfmts: exiting due to previous errors

It doesn't appear to be related to the most recent update to
binfmt-support because I see the same behavior in jessie as on sid if I
install default-jre *before* installing jarwrapper and binfmt-support.
Put another way, it seems to boil down to whether binfmt-support and
jarwrapper are able to be configured before the JRE/JDK/java-common
packages.

If jarwrapper is installed first, we have this situation:

$ update-binfmts --display jarwrapper
jarwrapper (enabled):
     package = <local>
        type = magic
      offset = 0
       magic = PK\x03\x04
        mask =
 interpreter = /usr/bin/jarwrapper
    detector = /usr/bin/jardetector

But the "jar" binfmt is unhappy:

$ update-binfmts --display jar
update-binfmts: warning: jar not in database of installed binary formats.
update-binfmts: exiting due to previous errors

Reverse the order of package installation, and you get this:

$ update-binfmts --display jarwrapper
update-binfmts: warning: jarwrapper not in database of installed binary
formats.
update-binfmts: exiting due to previous errors

$ update-binfmts --display jar
jar (enabled):
     package = openjdk-7
        type = magic
      offset = 0
       magic = PK\x03\x04
        mask =
 interpreter = /usr/bin/jexec
    detector =

In any event, I feel pretty confident that this bug doesn't belong to
libclosure-compiler-java, but instead with jarwrappers and/or openjdk-7,
although it's going to take some more digging to figure out what to do
about two packages trying to register the same magic number with
binfmt-support.  (Colin, I hope that you don't mind that I added you to
the cc:  I thought you could probably say right off whether its feasible
to have two packages trying to use binfmt-support in this manner.)

Perhaps jarwrapper's days are numbered, and we should count on jexec,
but that may require that we have openjdk on all architectures - I'm not
sure...

Thank you,
tony

Attachment: signature.asc
Description: OpenPGP digital signature

__
This is the maintainer address of Debian's Java team
<http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-maintainers>. 
Please use
debian-j...@lists.debian.org for discussions and questions.

Reply via email to