Bug 238855 - java/bootstrap-openjdk8 requires binary compatibility on 12.0-RELEASE
Summary: java/bootstrap-openjdk8 requires binary compatibility on 12.0-RELEASE
Status: Open
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Jung-uk Kim
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-06-27 20:17 UTC by chadf
Modified: 2020-02-21 01:55 UTC (History)
1 user (show)

See Also:


Attachments
GENERIC kernel diff for only 10.x binary compat (1.38 KB, patch)
2020-02-21 01:55 UTC, chadf
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description chadf 2019-06-27 20:17:36 UTC
On FreeBSD 12.0, without binary compatibility enabled, bootstrap-openjdk8 fails when building openjdk8.

# /usr/local/bootstrap-openjdk8/bin/javac
Bad system call (core dumped)

# file /usr/local/bootstrap-openjdk8/bin/javac
/usr/local/bootstrap-openjdk8/bin/javac: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 10.3, FreeBSD-style, stripped

# uname -a
FreeBSD myhostname 12.0-RELEASE-p6 FreeBSD 12.0-RELEASE-p6 MYKERNELNAME  amd64


This port requires appropriate COMPAT_FREEBSDxx kernel options for FreeBSD 12.0 (and 11.x, presumably). Perhaps it could check and give a noticeable warning if not enabled in the running kernel. If currently undetectable, maybe sysctl entries could be added to communicate such functionality (or lack of) to userland, e.g. "compat.10x.enabled" (but adding such a feature is probably beyond the scope of this bug report).


Note #1: ktrace shows the failing syscall for be one for compat11. This seemes odd for a 10.3 binary. Maybe it is normal, but I thought it was worth mentioning in case it was a symptom of a hidden problem. I also had to enable COMPAT_FREEBSD11 in the kernel to get this port to work.

    . . .
  1067 javac    CALL  compat11.stat
  1067 javac    RET   compat11.stat -1 errno 78 Function not implemented
  1067 javac    PSIG  SIGSYS SIG_DFL code=SI_KERNEL
  1067 javac    NAMI  "javac.core"


Note #2: It does not appear to require the misc/compat10x port (when used to build java/openjdk8).
Comment 1 Greg Lewis freebsd_committer freebsd_triage 2019-11-06 18:31:17 UTC
I can't reproduce this on my 12.1 machine.  Can you update to 12.1 and see if you still need the compat package?
Comment 2 chadf 2020-02-21 01:55:09 UTC
Created attachment 211787 [details]
GENERIC kernel diff for only 10.x binary compat

Tried it again with fresh 12.1 release install and same issue. Attached is diff for kernel config, which disables all binary compatibility except 10.x (which should be enough for the FreeBSD 10.3 bootstrap javac binary).

-<>-<>-<>-<>-

% uname -a
FreeBSD freebsd-12-1 12.1-RELEASE-p2 FreeBSD 12.1-RELEASE-p2 GENERIC_COMPAT10  amd64


% /usr/local/bootstrap-openjdk8/bin/javac
Bad system call (core dumped)


% ktrace -i /usr/local/bootstrap-openjdk8/bin/javac
Bad system call (core dumped)

% kdump
  .
  .
  .
   824 javac    CALL  compat11.stat
   824 javac    RET   compat11.stat -1 errno 78 Function not implemented
   824 javac    PSIG  SIGSYS SIG_DFL code=SI_KERNEL
   824 javac    NAMI  "javac.core"


% file /usr/local/bootstrap-openjdk8/bin/javac
/usr/local/bootstrap-openjdk8/bin/javac: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 10.3, FreeBSD-style, stripped


% pkg info | grep '^compat'
compat10x-amd64-10.4.1004000.20181014 Convenience package to install the compat10x libraries
compat11x-amd64-11.2.1102000.20181014 Convenience package to install the compat11x libraries