From ae2f69d3b8c8cd93c8f79aef17ad8092c5140355 Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:15:08 +0200 Subject: [PATCH 01/11] elf: add AT_EXECFN --- kernel-src/include/kernel/elf.h | 4 +++- kernel-src/sys/elf.c | 13 ++++++++++--- kernel-src/sys/proc.c | 2 +- kernel-src/sys/syscalls/execve.c | 2 +- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/kernel-src/include/kernel/elf.h b/kernel-src/include/kernel/elf.h index beec12ca..28aff67a 100644 --- a/kernel-src/include/kernel/elf.h +++ b/kernel-src/include/kernel/elf.h @@ -28,6 +28,7 @@ #define AT_PHENT 4 #define AT_PHNUM 5 #define AT_ENTRY 9 +#define AT_EXECFN 31 typedef struct { uint64_t type; @@ -39,6 +40,7 @@ typedef struct { auxv64_t phnum; auxv64_t phent; auxv64_t entry; + auxv64_t execfn; auxv64_t null; } auxv64list_t; @@ -83,6 +85,6 @@ typedef struct{ } __attribute__((packed)) elfph64_t; int elf_load(vnode_t *vnode, void *base, void **entry, char **interpreter, auxv64list_t *auxv64); -void *elf_preparestack(void *top, auxv64list_t *auxv64, char **argv, char **envp); +void *elf_preparestack(void *top, auxv64list_t *auxv64, char **argv, char **envp, char *path); #endif diff --git a/kernel-src/sys/elf.c b/kernel-src/sys/elf.c index 74b7a6a5..91cf57a4 100644 --- a/kernel-src/sys/elf.c +++ b/kernel-src/sys/elf.c @@ -215,11 +215,12 @@ int elf_load(vnode_t *vnode, void *base, void **entry, char **interpreter, auxv6 #define STACK_SIZE (1024 * 1024 * 4) #define STACK_TOP_BUFFER 8 -void *elf_preparestack(void *top, auxv64list_t *auxv64, char **argv, char **envp) { +void *elf_preparestack(void *top, auxv64list_t *auxv64, char **argv, char **envp, char *path) { size_t argc; size_t envc; size_t argdatasize = 0; size_t envdatasize = 0; + size_t pathsize = strlen(path) + 1; for (argc = 0; argv[argc]; ++argc) argdatasize += strlen(argv[argc]) + 1; @@ -231,7 +232,7 @@ void *elf_preparestack(void *top, auxv64list_t *auxv64, char **argv, char **envp int alignment = ((argc + 1) + (envc + 1) + 1) & 1 ? 8 : 0; // env data + arg data + pointers to arg and env data + argc + buffer at the top - size_t initialsize = argdatasize + envdatasize + (argc + envc) * sizeof(char *) + sizeof(size_t) + sizeof(auxv64list_t) + alignment + STACK_TOP_BUFFER; + size_t initialsize = argdatasize + envdatasize + pathsize + (argc + envc) * sizeof(char *) + sizeof(size_t) + sizeof(auxv64list_t) + alignment + STACK_TOP_BUFFER; size_t initialsizeround = ROUND_UP(initialsize, PAGE_SIZE); void *initialpagebase = (void *)((uintptr_t)top - initialsizeround); @@ -247,7 +248,8 @@ void *elf_preparestack(void *top, auxv64list_t *auxv64, char **argv, char **envp char *argdatastart = (char *)((uintptr_t)top - argdatasize); char *envdatastart = (char *)((uintptr_t)argdatastart - envdatasize); - auxv64list_t *auxvstart = (auxv64list_t *)envdatastart - 1; + char *pathdatastart = (char *)((uintptr_t)envdatastart - pathsize); + auxv64list_t *auxvstart = (auxv64list_t *)pathdatastart - 1; auxvstart = (auxv64list_t *)(((uintptr_t)auxvstart & ~(uintptr_t)0xf) - alignment); @@ -256,6 +258,11 @@ void *elf_preparestack(void *top, auxv64list_t *auxv64, char **argv, char **envp char **argstart = (char **)envstart - argc - 1; size_t *argcptr = (size_t *)argstart - 1; + auxv64->execfn.type = AT_EXECFN; + auxv64->execfn.val = (uint64_t)pathdatastart; + + memcpy(pathdatastart, path, pathsize); + memcpy(auxvstart, auxv64, sizeof(auxv64list_t)); for (int i = 0; i < argc; ++i) { diff --git a/kernel-src/sys/proc.c b/kernel-src/sys/proc.c index 89383060..f56ebb81 100644 --- a/kernel-src/sys/proc.c +++ b/kernel-src/sys/proc.c @@ -361,7 +361,7 @@ void proc_run_init() { char *argv[] = {"/init", cmdline_get("initarg"), NULL}; char *envp[] = {NULL}; - void *stack = elf_preparestack(STACK_TOP, &auxv64, argv, envp); + void *stack = elf_preparestack(STACK_TOP, &auxv64, argv, envp, "/init"); __assert(stack); // reenter kernel context diff --git a/kernel-src/sys/syscalls/execve.c b/kernel-src/sys/syscalls/execve.c index 51d87740..d067de4e 100644 --- a/kernel-src/sys/syscalls/execve.c +++ b/kernel-src/sys/syscalls/execve.c @@ -258,7 +258,7 @@ static syscallret_t execve(context_t *context, char *upath, char *uargv[], char VOP_RELEASE(interpnode); } - stack = elf_preparestack(STACK_TOP, &auxv64, argv, envp); + stack = elf_preparestack(STACK_TOP, &auxv64, argv, envp, path); if (stack == NULL) { ret.errno = ENOMEM; goto error; From 4e98bcf99d499fdbf7a4c3ac341fedbe1c1292a6 Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:15:58 +0200 Subject: [PATCH 02/11] elf: support loading PIE executables --- kernel-src/sys/elf.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/kernel-src/sys/elf.c b/kernel-src/sys/elf.c index 91cf57a4..3b60dd84 100644 --- a/kernel-src/sys/elf.c +++ b/kernel-src/sys/elf.c @@ -153,6 +153,10 @@ int elf_load(vnode_t *vnode, void *base, void **entry, char **interpreter, auxv6 if (headerok(&header) == false) return ENOEXEC; + if (!base && header.type == ELF_SHARED) { + base = (void *)0x400000; + } + auxv64->null.type = AT_NULL; auxv64->phdr.type = AT_PHDR; auxv64->phnum.type = AT_PHNUM; @@ -161,7 +165,7 @@ int elf_load(vnode_t *vnode, void *base, void **entry, char **interpreter, auxv6 auxv64->phnum.val = header.phcount; auxv64->phent.val = header.phsize; - auxv64->entry.val = header.entry; + auxv64->entry.val = header.entry + (uintptr_t)base; *entry = (void *)(header.entry + (uintptr_t)base); __assert(header.phsize == sizeof(elfph64_t)); From d3c79c06a45a477882e8bc84b2adc8e533bec14a Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:17:15 +0200 Subject: [PATCH 03/11] vmm: fix more logic bugs --- kernel-src/mm/vmm.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/kernel-src/mm/vmm.c b/kernel-src/mm/vmm.c index 98f59f31..21cee500 100644 --- a/kernel-src/mm/vmm.c +++ b/kernel-src/mm/vmm.c @@ -169,6 +169,9 @@ static void insertrange(vmmspace_t *space, vmmrange_t *newrange) { while (range->next) { if (newrange->start >= RANGE_TOP(range) && newrange->start < range->next->start) { // space inbetween two other ranges newrange->next = range->next; + if (newrange->next) + newrange->next->prev = newrange; + newrange->prev = range; range->next = newrange; goto fragcheck; @@ -659,21 +662,21 @@ bool vmm_pagefault(void *addr, bool user, int actions) { } void *vmm_getphysical(void *addr, bool hold) { - addr = (void *)ROUND_DOWN((uintptr_t)addr, PAGE_SIZE); + void *aligned_addr = (void *)ROUND_DOWN((uintptr_t)addr, PAGE_SIZE); - vmmspace_t *space = getspace(addr); + vmmspace_t *space = getspace(aligned_addr); if (space == NULL) return NULL; MUTEX_ACQUIRE(&space->lock); - void *physical = arch_mmu_getphysical(current_vmm_context()->pagetable, addr); + void *physical = arch_mmu_getphysical(current_vmm_context()->pagetable, aligned_addr); if (hold) pmm_hold(physical); MUTEX_RELEASE(&space->lock); - return physical + ((uintptr_t)addr - ROUND_DOWN((uintptr_t)addr, PAGE_SIZE)); + return physical + ((uintptr_t)addr - (uintptr_t)aligned_addr); } From 7a7ee890179264b63e16428bc791e8770d5b1fe0 Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:18:26 +0200 Subject: [PATCH 04/11] clockget: support CLOCK_MONOTONIC --- kernel-src/sys/syscalls/clockget.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel-src/sys/syscalls/clockget.c b/kernel-src/sys/syscalls/clockget.c index d0a2036e..c1b87aa6 100644 --- a/kernel-src/sys/syscalls/clockget.c +++ b/kernel-src/sys/syscalls/clockget.c @@ -5,6 +5,7 @@ #include #define CLOCK_REALTIME 0 +#define CLOCK_MONOTONIC 1 #define CLOCK_BOOTTIME 7 syscallret_t syscall_clockget(context_t *, int clockid, timespec_t *tp) { @@ -19,6 +20,7 @@ syscallret_t syscall_clockget(context_t *, int clockid, timespec_t *tp) { ret.errno = 0; break; } + case CLOCK_MONOTONIC: case CLOCK_BOOTTIME: { timespec_t ts = timekeeper_timefromboot(); usercopy_touser(tp, &ts, sizeof(timespec_t)); From 589ff4f476f1b78601022ba80fa1a8d048550d65 Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:18:52 +0200 Subject: [PATCH 05/11] fcntl: stub F_SETLK/F_SETWLK --- kernel-src/sys/syscalls/fcntl.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/kernel-src/sys/syscalls/fcntl.c b/kernel-src/sys/syscalls/fcntl.c index 95089f4b..fd7faab4 100644 --- a/kernel-src/sys/syscalls/fcntl.c +++ b/kernel-src/sys/syscalls/fcntl.c @@ -9,6 +9,8 @@ #define F_SETFD 2 #define F_GETFL 3 #define F_SETFL 4 +#define F_SETLK64 6 +#define F_SETLKW64 7 #define FD_CLOEXEC 1 @@ -52,6 +54,11 @@ syscallret_t syscall_fcntl(context_t *, int fd, int cmd, uint64_t arg) { ret.errno = fd_getflags(fd, &flg); ret.ret = flg ? FD_CLOEXEC : 0; break; + case F_SETLK64: + case F_SETLKW64: + ret.errno = 0; + ret.ret = 0; + break; default: ret.errno = EINVAL; goto cleanup; From 881f225b58ce00784c03f171d5f9fd04d7b31146 Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:19:13 +0200 Subject: [PATCH 06/11] mmap: allow MAP_NORESERVE --- kernel-src/sys/syscalls/mmap.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel-src/sys/syscalls/mmap.c b/kernel-src/sys/syscalls/mmap.c index 7f8b53bc..223554eb 100644 --- a/kernel-src/sys/syscalls/mmap.c +++ b/kernel-src/sys/syscalls/mmap.c @@ -13,9 +13,10 @@ #define MAP_FIXED 0x10 #define MAP_ANON 0x20 #define MAP_ANONYMOUS MAP_ANON +#define MAP_NORESERVE 0x4000 #define KNOWN_PROT (PROT_READ | PROT_WRITE | PROT_EXEC) -#define KNOWN_FLAGS (MAP_SHARED | MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS) +#define KNOWN_FLAGS (MAP_SHARED | MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS | MAP_NORESERVE) syscallret_t syscall_mmap(context_t *context, void *hint, size_t len, int prot, int flags, int fd, off_t offset) { syscallret_t ret = { From 19789ad04346279bc54e21dacabcd9eb4e213dd0 Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:23:29 +0200 Subject: [PATCH 07/11] seek: take offset into account with SEEK_END --- kernel-src/sys/syscalls/seek.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel-src/sys/syscalls/seek.c b/kernel-src/sys/syscalls/seek.c index c7560960..dbf7c034 100644 --- a/kernel-src/sys/syscalls/seek.c +++ b/kernel-src/sys/syscalls/seek.c @@ -67,7 +67,7 @@ syscallret_t syscall_seek(context_t *context, int fd, off_t offset, int whence) } break; case SEEK_END: - newoffset = size; + newoffset = size + offset; break; } From 0143b1e2560f37089bb57e7a9714f79ebf8e947c Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:25:13 +0200 Subject: [PATCH 08/11] ports: cups --- recipes/cups | 30 ++++++++++++++++++++++++++++++ source-recipes/cups | 9 +++++++++ 2 files changed, 39 insertions(+) create mode 100644 recipes/cups create mode 100644 source-recipes/cups diff --git a/recipes/cups b/recipes/cups new file mode 100644 index 00000000..1e64e31d --- /dev/null +++ b/recipes/cups @@ -0,0 +1,30 @@ +name=cups +revision=1 +from_source=cups +imagedeps="build-essential xdg-utils" +hostdeps="xgcc xbinutils pkgconfig" +deps="base libiconv zlib" + +configure() { + cp -r "${source_dir}/." "." + ./configure \ + --prefix=${prefix} \ + --host=x86_64-astral \ + --with-rcdir=/tmp/cupsinit \ + --with-docdir=/usr/share/cups/doc \ + --disable-dbus \ + --disable-gssapi \ + --disable-pam \ + --disable-browsing \ + --with-tls=no \ + --with-components=libcups + sed -i s/-Werror//g Makedefs +} + +build() { + make -j${parallelism} +} + +package() { + make DESTDIR=${dest_dir} install -j${parallelism} +} diff --git a/source-recipes/cups b/source-recipes/cups new file mode 100644 index 00000000..23547035 --- /dev/null +++ b/source-recipes/cups @@ -0,0 +1,9 @@ +name=cups +version=2.4.11 +source_method=tarball +tarball_url="https://github.com/OpenPrinting/cups/releases/download/v2.4.11/cups-2.4.11-source.tar.gz" +tarball_sha512=5868f069cb5eaa5c74e703ed7773914376fb819ebabd7881df8726092eab390c8a1db75c4d08377a836a87807765ad2c16a15b406ab0580fdda2b176e2da3162 +hostdeps="automake autoconf" +prepare() { + cp -v $(find /usr/local/share/automake* -name config.sub) . +} From d8cd368bed8914276a0d2f349d87803cbcd8c29e Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:25:33 +0200 Subject: [PATCH 09/11] ports: libxtst --- recipes/libxtst | 18 ++++++++++++++++++ source-recipes/libxtst | 9 +++++++++ 2 files changed, 27 insertions(+) create mode 100644 recipes/libxtst create mode 100644 source-recipes/libxtst diff --git a/recipes/libxtst b/recipes/libxtst new file mode 100644 index 00000000..01433fd1 --- /dev/null +++ b/recipes/libxtst @@ -0,0 +1,18 @@ +name=libxtst +revision=1 +from_source=libxtst +imagedeps="build-essential" +hostdeps="xgcc xbinutils pkgconfig util-macros" +deps="base xorgproto libx11 libxext libxi" + +configure() { + ${source_dir}/configure --prefix=${prefix} --host=x86_64-astral --enable-shared --disable-static +} + +build() { + make -j${parallelism} +} + +package() { + make DESTDIR=${dest_dir} install +} diff --git a/source-recipes/libxtst b/source-recipes/libxtst new file mode 100644 index 00000000..f01ab2bb --- /dev/null +++ b/source-recipes/libxtst @@ -0,0 +1,9 @@ +name=libxtst +version=1.2.5 +source_method=tarball +tarball_url="https://www.x.org/archive/individual/lib/libXtst-${version}.tar.xz" +tarball_sha512="848fa580d7abccd48c9ca3440f92e299839ada0912ed60d38d4d4f5bf37431cd02d7059265ab4e524c3e2cb9c368b9b90b863d1ed97d74979ef8811fc5e635a9" +hostdeps="autoconf automake util-macros pkgconfig libtool" +prepare() { + autoreconf -fvi +} From a23b83c74cf84875478a6e20ec2abf4b3e4506f9 Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:25:52 +0200 Subject: [PATCH 10/11] ports: alsa-lib --- patches/alsa-lib/jinx-working-patch.patch | 35 +++++++++++++++++++++++ recipes/alsa-lib | 19 ++++++++++++ source-recipes/alsa-lib | 9 ++++++ 3 files changed, 63 insertions(+) create mode 100644 patches/alsa-lib/jinx-working-patch.patch create mode 100644 recipes/alsa-lib create mode 100644 source-recipes/alsa-lib diff --git a/patches/alsa-lib/jinx-working-patch.patch b/patches/alsa-lib/jinx-working-patch.patch new file mode 100644 index 00000000..1c39ae0f --- /dev/null +++ b/patches/alsa-lib/jinx-working-patch.patch @@ -0,0 +1,35 @@ +diff --git alsa-lib-clean/src/conf.c alsa-lib-workdir/src/conf.c +index 468d41f..97e6f0f 100644 +--- alsa-lib-clean/src/conf.c ++++ alsa-lib-workdir/src/conf.c +@@ -435,6 +435,13 @@ beginning:

+ #include + #endif + ++#ifdef __astral__ ++#define versionsort64 versionsort ++#define scandir64 scandir ++#define dirent64 dirent ++#define ino64_t ino_t ++#endif ++ + #ifndef DOC_HIDDEN + + #ifdef HAVE_LIBPTHREAD +diff --git alsa-lib-clean/src/ucm/parser.c alsa-lib-workdir/src/ucm/parser.c +index 488a5c6..7a6d1db 100644 +--- alsa-lib-clean/src/ucm/parser.c ++++ alsa-lib-workdir/src/ucm/parser.c +@@ -36,6 +36,12 @@ + #include + #include + ++#ifdef __astral__ ++#define scandir64 scandir ++#define versionsort64 versionsort ++#define dirent64 dirent ++#endif ++ + static int filename_filter(const struct dirent64 *dirent); + + static int parse_sequence(snd_use_case_mgr_t *uc_mgr, diff --git a/recipes/alsa-lib b/recipes/alsa-lib new file mode 100644 index 00000000..86cd4c92 --- /dev/null +++ b/recipes/alsa-lib @@ -0,0 +1,19 @@ +name=alsa-lib +revision=1 +from_source=alsa-lib +imagedeps="build-essential" +hostdeps="xgcc xbinutils pkgconfig autoconf automake" +deps="base" + +configure() { + cp -r "${source_dir}/." "." + ./configure --prefix=${prefix} --host=x86_64-astral +} + +build() { + make -j${parallelism} +} + +package() { + make DESTDIR=${dest_dir} install +} diff --git a/source-recipes/alsa-lib b/source-recipes/alsa-lib new file mode 100644 index 00000000..34b2d8e4 --- /dev/null +++ b/source-recipes/alsa-lib @@ -0,0 +1,9 @@ +name=alsa-lib +version=1.2.13 +source_method=tarball +tarball_url="https://github.com/alsa-project/alsa-lib/archive/refs/tags/v${version}.tar.gz" +tarball_sha512=ae21380c75ab2f318b14d42b1f06e35d2a80b377fe0a12177e7f5c926b189bb242037891e3e7d780d77376e57d6f074abe5701eecd55035ff0498bdbca55e42a +hostdeps="autoconf automake util-macros pkgconfig libtool" +prepare() { + autoreconf -fvi +} From d431dae7f98d4858e400e52ebd74e9f944d2f726 Mon Sep 17 00:00:00 2001 From: Qwinci <32550582+Qwinci@users.noreply.github.com> Date: Mon, 13 Jan 2025 16:33:30 +0200 Subject: [PATCH 11/11] ports: openjdk17 --- host-recipes/host-openjdk-bin | 7 + patches/mlibc/jinx-working-patch.patch | 50 +++ patches/openjdk17/jinx-working-patch.patch | 470 +++++++++++++++++++++ recipes/openjdk17 | 35 ++ source-recipes/host-openjdk-bin | 5 + source-recipes/openjdk17 | 10 + 6 files changed, 577 insertions(+) create mode 100644 host-recipes/host-openjdk-bin create mode 100644 patches/openjdk17/jinx-working-patch.patch create mode 100644 recipes/openjdk17 create mode 100644 source-recipes/host-openjdk-bin create mode 100644 source-recipes/openjdk17 diff --git a/host-recipes/host-openjdk-bin b/host-recipes/host-openjdk-bin new file mode 100644 index 00000000..4e7d981e --- /dev/null +++ b/host-recipes/host-openjdk-bin @@ -0,0 +1,7 @@ +name=host-openjdk-bin +revision=1 +from_source=host-openjdk-bin + +package() { + cp -r "${source_dir}/." "${dest_dir}/${prefix}" +} diff --git a/patches/mlibc/jinx-working-patch.patch b/patches/mlibc/jinx-working-patch.patch index a6190d9d..845bb068 100644 --- a/patches/mlibc/jinx-working-patch.patch +++ b/patches/mlibc/jinx-working-patch.patch @@ -111,3 +111,53 @@ index 9219ef0..1ff679c 100644 #if __MLIBC_POSIX_OPTION #include #endif +diff --git mlibc-clean/sysdeps/astral/generic/generic.cpp mlibc-workdir/sysdeps/astral/generic/generic.cpp +index 2a504ab..61c3bf0 100644 +--- mlibc-clean/sysdeps/astral/generic/generic.cpp ++++ mlibc-workdir/sysdeps/astral/generic/generic.cpp +@@ -31,6 +31,12 @@ namespace mlibc { + return 0; + } + ++ int sys_getcpu(int *cpu) { ++ *cpu = 0; ++ // TODO unstub ++ return 0; ++ } ++ + int sys_getsockopt(int fd, int layer, int number, + void *__restrict buffer, socklen_t *__restrict size) { + (void)size; +@@ -161,7 +167,18 @@ namespace mlibc { + *bytes_written = writec; + return error; + } +- ++ ++ int sys_getrlimit(int resource, struct rlimit *limit) { ++ switch(resource) { ++ case RLIMIT_NOFILE: ++ limit->rlim_cur = RLIM_INFINITY; ++ limit->rlim_max = RLIM_INFINITY; ++ return 0; ++ default: ++ return EINVAL; ++ } ++ } ++ + #ifndef MLIBC_BUILDING_RTLD + + typedef struct { +@@ -487,6 +504,12 @@ namespace mlibc { + return ret; + } + ++ pid_t sys_gettid() { ++ long ret; ++ syscall(SYSCALL_GETTID, &ret); ++ return ret; ++ } ++ + #ifndef MLIBC_BUILDING_RTLD + + [[noreturn]] void sys_thread_exit() { diff --git a/patches/openjdk17/jinx-working-patch.patch b/patches/openjdk17/jinx-working-patch.patch new file mode 100644 index 00000000..9486a809 --- /dev/null +++ b/patches/openjdk17/jinx-working-patch.patch @@ -0,0 +1,470 @@ +diff --git openjdk17-clean/make/autoconf/platform.m4 openjdk17-workdir/make/autoconf/platform.m4 +index 2dd13d0..1aca7f7 100644 +--- openjdk17-clean/make/autoconf/platform.m4 ++++ openjdk17-workdir/make/autoconf/platform.m4 +@@ -214,6 +214,10 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS], + VAR_OS=aix + VAR_OS_TYPE=unix + ;; ++ *astral*) ++ VAR_OS=linux ++ VAR_OS_TYPE=unix ++ ;; + *) + AC_MSG_ERROR([unsupported operating system $1]) + ;; +diff --git openjdk17-clean/make/modules/java.desktop/lib/Awt2dLibraries.gmk openjdk17-workdir/make/modules/java.desktop/lib/Awt2dLibraries.gmk +index 4d0c0c0..0a95a24 100644 +--- openjdk17-clean/make/modules/java.desktop/lib/Awt2dLibraries.gmk ++++ openjdk17-workdir/make/modules/java.desktop/lib/Awt2dLibraries.gmk +@@ -751,6 +751,7 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false) + LIBS := $(JDKLIB_LIBS) $(LIBSPLASHSCREEN_LIBS) $(LIBZ_LIBS) \ + $(GIFLIB_LIBS) $(LIBJPEG_LIBS) $(PNG_LIBS), \ + LIBS_aix := -liconv, \ ++ LIBS_linux := -liconv, \ + )) + + TARGETS += $(BUILD_LIBSPLASHSCREEN) +diff --git openjdk17-clean/make/modules/java.instrument/Lib.gmk openjdk17-workdir/make/modules/java.instrument/Lib.gmk +index 3996ad2..727f312 100644 +--- openjdk17-clean/make/modules/java.instrument/Lib.gmk ++++ openjdk17-workdir/make/modules/java.instrument/Lib.gmk +@@ -49,7 +49,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBINSTRUMENT, \ + LDFLAGS_aix := -L$(SUPPORT_OUTPUTDIR)/native/java.base, \ + LIBS := $(JDKLIB_LIBS), \ + LIBS_unix := -ljava -ljvm $(LIBZ_LIBS), \ +- LIBS_linux := -ljli $(LIBDL), \ ++ LIBS_linux := -ljli -liconv $(LIBDL), \ + LIBS_aix := -liconv -ljli_static $(LIBDL), \ + LIBS_macosx := -ljli -liconv -framework Cocoa -framework Security \ + -framework ApplicationServices, \ +diff --git openjdk17-clean/make/modules/jdk.jdwp.agent/Lib.gmk openjdk17-workdir/make/modules/jdk.jdwp.agent/Lib.gmk +index aef358c..fbc1750 100644 +--- openjdk17-clean/make/modules/jdk.jdwp.agent/Lib.gmk ++++ openjdk17-workdir/make/modules/jdk.jdwp.agent/Lib.gmk +@@ -61,7 +61,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJDWP, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS := $(JDKLIB_LIBS), \ +- LIBS_linux := $(LIBDL), \ ++ LIBS_linux := -liconv $(LIBDL), \ + LIBS_macosx := -liconv, \ + LIBS_aix := -liconv, \ + )) +diff --git openjdk17-clean/src/hotspot/os/linux/gc/z/zSyscall_linux.cpp openjdk17-workdir/src/hotspot/os/linux/gc/z/zSyscall_linux.cpp +index ba26cbf..e72a9ea 100644 +--- openjdk17-clean/src/hotspot/os/linux/gc/z/zSyscall_linux.cpp ++++ openjdk17-workdir/src/hotspot/os/linux/gc/z/zSyscall_linux.cpp +@@ -27,14 +27,31 @@ + + #include + ++#ifdef __astral__ ++#include ++#include ++#endif ++ + int ZSyscall::memfd_create(const char *name, unsigned int flags) { ++#ifdef __astral__ ++ return ::memfd_create(name, flags); ++#else + return syscall(SYS_memfd_create, name, flags); ++#endif + } + + int ZSyscall::fallocate(int fd, int mode, size_t offset, size_t length) { ++#ifdef __astral__ ++ return ::fallocate(fd, mode, offset, length); ++#else + return syscall(SYS_fallocate, fd, mode, offset, length); ++#endif + } + + long ZSyscall::get_mempolicy(int* mode, unsigned long* nodemask, unsigned long maxnode, void* addr, unsigned long flags) { ++#ifdef __astral__ ++ return 0; ++#else + return syscall(SYS_get_mempolicy, mode, nodemask, maxnode, addr, flags); ++#endif + } +diff --git openjdk17-clean/src/hotspot/os/linux/os_linux.cpp openjdk17-workdir/src/hotspot/os/linux/os_linux.cpp +index 239cd0d..8090c53 100644 +--- openjdk17-clean/src/hotspot/os/linux/os_linux.cpp ++++ openjdk17-workdir/src/hotspot/os/linux/os_linux.cpp +@@ -98,7 +98,11 @@ + # include + # include + # include ++ ++#ifndef __astral__ + # include ++#endif ++ + # include + # include + # include +@@ -348,9 +352,13 @@ bool os::have_special_privileges() { + // Returns the kernel thread id of the currently running thread. Kernel + // thread id is used to access /proc. + pid_t os::Linux::gettid() { ++#ifdef __astral__ ++ return ::gettid(); ++#else + int rslt = syscall(SYS_gettid); + assert(rslt != -1, "must be."); // old linuxthreads implementation? + return (pid_t)rslt; ++#endif + } + + // Most versions of linux have a bug where the number of processors are +diff --git openjdk17-clean/src/hotspot/os/linux/waitBarrier_linux.cpp openjdk17-workdir/src/hotspot/os/linux/waitBarrier_linux.cpp +index 491f9e6..e9530f0 100644 +--- openjdk17-clean/src/hotspot/os/linux/waitBarrier_linux.cpp ++++ openjdk17-workdir/src/hotspot/os/linux/waitBarrier_linux.cpp +@@ -26,7 +26,11 @@ + #include "runtime/orderAccess.hpp" + #include "runtime/os.hpp" + #include "waitBarrier_linux.hpp" ++ ++#ifndef __astral__ + #include ++#endif ++ + #include + + #define check_with_errno(check_type, cond, msg) \ +@@ -38,8 +42,36 @@ + + #define guarantee_with_errno(cond, msg) check_with_errno(guarantee, cond, msg) + ++#ifdef __astral__ ++#define SYSCALL_FUTEX 51 ++static long syscall(long func, long* ret, uint64_t p1 = 0, uint64_t p2 = 0, uint64_t p3 = 0, uint64_t p4 = 0, uint64_t p5 = 0, uint64_t p6 = 0) { ++ volatile long err; ++ ++ register uint64_t r4 asm("r10") = p4; ++ register uint64_t r5 asm("r8") = p5; ++ register uint64_t r6 asm("r9") = p6; ++ ++ asm volatile("syscall" ++ : "=a"(*ret), "=d"(err) ++ : "a"(func), "D"(p1), "S"(p2), "d"(p3), "r"(r4), ++ "r"(r5), "r"(r6) ++ : "memory", "rcx", "r11"); ++ return err; ++} ++#endif ++ + static int futex(volatile int *addr, int futex_op, int op_arg) { ++#ifdef __astral__ ++ long ret; ++ long err = syscall(SYSCALL_FUTEX, &ret, (uint64_t)addr, futex_op & 1, op_arg, NULL); ++ if (err) { ++ errno = err; ++ return -1; ++ } ++ return 0; ++#else + return syscall(SYS_futex, addr, futex_op, op_arg, NULL, NULL, 0); ++#endif + } + + void LinuxWaitBarrier::arm(int barrier_tag) { +diff --git openjdk17-clean/src/hotspot/os/posix/vmError_posix.cpp openjdk17-workdir/src/hotspot/os/posix/vmError_posix.cpp +index 845dda6..ca61d72 100644 +--- openjdk17-clean/src/hotspot/os/posix/vmError_posix.cpp ++++ openjdk17-workdir/src/hotspot/os/posix/vmError_posix.cpp +@@ -35,7 +35,7 @@ + #include + #include + +-#ifdef LINUX ++#if defined(LINUX) && !defined(__astral__) + #include + #include + #endif +@@ -46,7 +46,9 @@ + #include + #include + #endif +- ++#ifdef __astral__ ++#include ++#endif + + // Needed for cancelable steps. + static volatile pthread_t reporter_thread_id; +diff --git openjdk17-clean/src/hotspot/os_cpu/linux_x86/gc/z/zSyscall_linux_x86.hpp openjdk17-workdir/src/hotspot/os_cpu/linux_x86/gc/z/zSyscall_linux_x86.hpp +index 8b578ab..9bd6978 100644 +--- openjdk17-clean/src/hotspot/os_cpu/linux_x86/gc/z/zSyscall_linux_x86.hpp ++++ openjdk17-workdir/src/hotspot/os_cpu/linux_x86/gc/z/zSyscall_linux_x86.hpp +@@ -24,7 +24,9 @@ + #ifndef OS_CPU_LINUX_X86_GC_Z_ZSYSCALL_LINUX_X86_HPP + #define OS_CPU_LINUX_X86_GC_Z_ZSYSCALL_LINUX_X86_HPP + ++#ifndef __astral__ + #include ++#endif + + // + // Support for building on older Linux systems +diff --git openjdk17-clean/src/java.base/linux/classes/sun/nio/ch/DefaultSelectorProvider.java openjdk17-workdir/src/java.base/linux/classes/sun/nio/ch/DefaultSelectorProvider.java +index fa925f5..df152da 100644 +--- openjdk17-clean/src/java.base/linux/classes/sun/nio/ch/DefaultSelectorProvider.java ++++ openjdk17-workdir/src/java.base/linux/classes/sun/nio/ch/DefaultSelectorProvider.java +@@ -36,7 +36,7 @@ import java.security.PrivilegedAction; + public class DefaultSelectorProvider { + private static final SelectorProviderImpl INSTANCE; + static { +- PrivilegedAction pa = EPollSelectorProvider::new; ++ PrivilegedAction pa = PollSelectorProvider::new; + INSTANCE = AccessController.doPrivileged(pa); + } + +diff --git openjdk17-clean/src/java.base/share/native/libjli/jli_util.h openjdk17-workdir/src/java.base/share/native/libjli/jli_util.h +index 3512b1e..727be0d 100644 +--- openjdk17-clean/src/java.base/share/native/libjli/jli_util.h ++++ openjdk17-workdir/src/java.base/share/native/libjli/jli_util.h +@@ -115,6 +115,9 @@ JLI_CmdToArgs(char *cmdline); + #define JLI_Lseek lseek + #endif + #endif /* _WIN32 */ ++#ifdef __astral__ ++#define JLI_Lseek lseek ++#endif + + /* + * Make launcher spit debug output. +diff --git openjdk17-clean/src/java.base/unix/native/jspawnhelper/jspawnhelper.c openjdk17-workdir/src/java.base/unix/native/jspawnhelper/jspawnhelper.c +index 1388201..db47119 100644 +--- openjdk17-clean/src/java.base/unix/native/jspawnhelper/jspawnhelper.c ++++ openjdk17-workdir/src/java.base/unix/native/jspawnhelper/jspawnhelper.c +@@ -33,8 +33,6 @@ + + #include "childproc.h" + +-extern int errno; +- + #define ALLOC(X,Y) { \ + void *mptr; \ + mptr = malloc (Y); \ +diff --git openjdk17-clean/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c openjdk17-workdir/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c +index d53e887..35d1121 100644 +--- openjdk17-clean/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c ++++ openjdk17-workdir/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c +@@ -485,10 +485,10 @@ void unix_getUserInfo(JNIEnv* env, jobject jinfo, uid_t uid) { + } + + /* +- * The following functions are common on Solaris, Linux and AIX. ++ * The following functions are common on Solaris, Linux, AIX and Astral. + */ + +-#if defined (__linux__) || defined(_AIX) ++#if defined (__linux__) || defined(_AIX) || defined(__astral__) + + /* + * Returns the children of the requested pid and optionally each parent and +@@ -607,7 +607,7 @@ jint unix_getChildren(JNIEnv *env, jlong jpid, jlongArray jarray, + return count; + } + +-#endif // defined (__linux__) || defined(_AIX) ++#endif // defined (__linux__) || defined(_AIX) || defined(__astral__) + + /* + * The following functions are for AIX. +diff --git openjdk17-clean/src/java.base/unix/native/libjava/TimeZone_md.c openjdk17-workdir/src/java.base/unix/native/libjava/TimeZone_md.c +index 94dfc20..af060ac 100644 +--- openjdk17-clean/src/java.base/unix/native/libjava/TimeZone_md.c ++++ openjdk17-workdir/src/java.base/unix/native/libjava/TimeZone_md.c +@@ -59,7 +59,7 @@ static char *isFileIdentical(char* buf, size_t size, char *pathname); + #define fstat64 fstat + #endif + +-#if defined(__linux__) || defined(_ALLBSD_SOURCE) ++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__astral__) + static const char *ETC_TIMEZONE_FILE = "/etc/timezone"; + static const char *ZONEINFO_DIR = "/usr/share/zoneinfo"; + static const char *DEFAULT_ZONEINFO_FILE = "/etc/localtime"; +@@ -75,7 +75,7 @@ static const char popularZones[][4] = {"UTC", "GMT"}; + static const char *ETC_ENVIRONMENT_FILE = "/etc/environment"; + #endif + +-#if defined(__linux__) || defined(MACOSX) ++#if defined(__linux__) || defined(MACOSX) || defined(__astral__) + + /* + * Returns a pointer to the zone ID portion of the given zoneinfo file +diff --git openjdk17-clean/src/java.base/unix/native/libjava/io_util_md.c openjdk17-workdir/src/java.base/unix/native/libjava/io_util_md.c +index e207c57..4311740 100644 +--- openjdk17-clean/src/java.base/unix/native/libjava/io_util_md.c ++++ openjdk17-workdir/src/java.base/unix/native/libjava/io_util_md.c +@@ -30,7 +30,7 @@ + #include + #include + +-#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(_AIX) ++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(_AIX) || defined(__astral__) + #include + #endif + +diff --git openjdk17-clean/src/java.base/unix/native/libjava/jni_util_md.c openjdk17-workdir/src/java.base/unix/native/libjava/jni_util_md.c +index 460503c..47a0236 100644 +--- openjdk17-clean/src/java.base/unix/native/libjava/jni_util_md.c ++++ openjdk17-workdir/src/java.base/unix/native/libjava/jni_util_md.c +@@ -31,7 +31,7 @@ + #include "jni_util.h" + #include "dlfcn.h" + +-#if defined(LINUX) && (defined(_GNU_SOURCE) || \ ++#if defined(__linux__) && (defined(_GNU_SOURCE) || \ + (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE < 200112L \ + && defined(_XOPEN_SOURCE) && _XOPEN_SOURCE < 600)) + extern int __xpg_strerror_r(int, char *, size_t); +diff --git openjdk17-clean/src/java.base/unix/native/libnet/Inet6AddressImpl.c openjdk17-workdir/src/java.base/unix/native/libnet/Inet6AddressImpl.c +index 058f3d3..bcfd46f 100644 +--- openjdk17-clean/src/java.base/unix/native/libnet/Inet6AddressImpl.c ++++ openjdk17-workdir/src/java.base/unix/native/libnet/Inet6AddressImpl.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include + + #if defined(_ALLBSD_SOURCE) +diff --git openjdk17-clean/src/java.base/unix/native/libnet/NetworkInterface.c openjdk17-workdir/src/java.base/unix/native/libnet/NetworkInterface.c +index 990bc1b..b231b8b 100644 +--- openjdk17-clean/src/java.base/unix/native/libnet/NetworkInterface.c ++++ openjdk17-workdir/src/java.base/unix/native/libnet/NetworkInterface.c +@@ -47,7 +47,7 @@ + + #include "java_net_InetAddress.h" + +-#if defined(__linux__) ++#if defined(__linux__) || defined(__astral__) + #define _PATH_PROCNET_IFINET6 "/proc/net/if_inet6" + #endif + +@@ -1144,7 +1144,7 @@ static int openSocket(JNIEnv *env, int proto) { + } + + /** Linux **/ +-#if defined(__linux__) ++#if defined(__linux__) || defined(__astral__) + + /* + * Opens a socket for further ioctl calls. Tries AF_INET socket first and +diff --git openjdk17-clean/src/java.base/unix/native/libnet/net_util_md.h openjdk17-workdir/src/java.base/unix/native/libnet/net_util_md.h +index 6883598..8a17572 100644 +--- openjdk17-clean/src/java.base/unix/native/libnet/net_util_md.h ++++ openjdk17-workdir/src/java.base/unix/native/libnet/net_util_md.h +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + + /************************************************************************ + * Macros and constants +diff --git openjdk17-clean/src/java.base/unix/native/libnio/ch/FileChannelImpl.c openjdk17-workdir/src/java.base/unix/native/libnio/ch/FileChannelImpl.c +index e0debb0..cdb7435 100644 +--- openjdk17-clean/src/java.base/unix/native/libnio/ch/FileChannelImpl.c ++++ openjdk17-workdir/src/java.base/unix/native/libnio/ch/FileChannelImpl.c +@@ -29,7 +29,7 @@ + #include + #include + +-#if defined(__linux__) ++#if defined(__linux__) || defined(__astral__) + #include + #elif defined(_AIX) + #include +diff --git openjdk17-clean/src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c openjdk17-workdir/src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c +index 8821461..f97ccda 100644 +--- openjdk17-clean/src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c ++++ openjdk17-workdir/src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c +@@ -40,6 +40,10 @@ + #include + #endif + ++#ifdef __astral__ ++#include ++#endif ++ + #if defined(_ALLBSD_SOURCE) + #define lseek64 lseek + #define stat64 stat +diff --git openjdk17-clean/src/java.base/unix/native/libnio/ch/NativeThread.c openjdk17-workdir/src/java.base/unix/native/libnio/ch/NativeThread.c +index 92dcb9e..15f3438 100644 +--- openjdk17-clean/src/java.base/unix/native/libnio/ch/NativeThread.c ++++ openjdk17-workdir/src/java.base/unix/native/libnio/ch/NativeThread.c +@@ -34,7 +34,7 @@ + #include + #include + +-#ifdef __linux__ ++#if defined(__linux__) || defined(__astral__) + /* Also defined in net/linux_close.c */ + #define INTERRUPT_SIGNAL (SIGRTMAX - 2) + #elif defined(_AIX) +diff --git openjdk17-clean/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c openjdk17-workdir/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c +index 9df8be1..be0aa40 100644 +--- openjdk17-clean/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c ++++ openjdk17-workdir/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c +@@ -41,7 +41,7 @@ + #endif + #include + +-#if defined(__linux__) || defined(_ALLBSD_SOURCE) ++#if defined(__linux__) || defined(_ALLBSD_SOURCE) || defined(__astral__) + #include + #endif + +diff --git openjdk17-clean/src/java.prefs/unix/native/libprefs/FileSystemPreferences.c openjdk17-workdir/src/java.prefs/unix/native/libprefs/FileSystemPreferences.c +index c591f04..a79b0a8 100644 +--- openjdk17-clean/src/java.prefs/unix/native/libprefs/FileSystemPreferences.c ++++ openjdk17-workdir/src/java.prefs/unix/native/libprefs/FileSystemPreferences.c +@@ -55,8 +55,9 @@ Java_java_util_prefs_FileSystemPreferences_chmod(JNIEnv *env, + return (jint) result; + } + +-#if defined(_ALLBSD_SOURCE) ++#if defined(_ALLBSD_SOURCE) || defined(__astral__) + typedef struct flock FLOCK; ++#define F_SETLK64 F_SETLK + #else + typedef struct flock64 FLOCK; + #endif +diff --git openjdk17-clean/src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c openjdk17-workdir/src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c +index e33d9b4..39f784f 100644 +--- openjdk17-clean/src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c ++++ openjdk17-workdir/src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c +@@ -63,7 +63,7 @@ + + static jlong page_size = 0; + +-#if defined(_ALLBSD_SOURCE) || defined(_AIX) ++#if defined(_ALLBSD_SOURCE) || defined(_AIX) || defined(__astral__) + #define MB (1024UL * 1024UL) + #else + +@@ -235,7 +235,7 @@ Java_com_sun_management_internal_OperatingSystemImpl_getFreeMemorySize0 + return -1; + } + return (jlong)vm_stats.free_count * page_size; +-#elif defined(_ALLBSD_SOURCE) ++#elif defined(_ALLBSD_SOURCE) || defined(__astral__) + /* + * XXBSDL no way to do it in FreeBSD + */ +@@ -276,6 +276,8 @@ Java_com_sun_management_internal_OperatingSystemImpl_getTotalMemorySize0 + return (jlong)(memory_info.real_total * 4L * 1024L); + } + return -1; ++#elif defined(__astral__) ++ return (128 * MB); + #else // solaris / linux + jlong num_physical_pages = sysconf(_SC_PHYS_PAGES); + return (num_physical_pages * page_size); diff --git a/recipes/openjdk17 b/recipes/openjdk17 new file mode 100644 index 00000000..4763aebf --- /dev/null +++ b/recipes/openjdk17 @@ -0,0 +1,35 @@ +name=openjdk17 +revision=1 +from_source=openjdk17 +imagedeps="build-essential zip unzip file" +hostdeps="xgcc xbinutils libstdc++-v3 pkgconfig autoconf host-openjdk-bin" +deps="base alsa-lib cups freetype fontconfig libpng libjpeg-turbo zlib libx11 libxext libxi libxrandr libxrender libxt libxtst xorgproto libiconv libffi" +allow_network="yes" + +configure() { + # TODO: figure out why zlib.h is not found on system zlib + ${source_dir}/configure \ + --prefix=${prefix} \ + --openjdk-target=x86_64-astral \ + --disable-ccache \ + --disable-precompiled-headers \ + --disable-warnings-as-errors \ + --enable-full-docs=no \ + --with-boot-jdk="/usr/local" \ + --with-freetype=system \ + --with-libjpeg=system \ + --with-libpng=system \ + --with-zlib=bundled +} + +build() { + make JOBS=${parallelism} product-images +} + +package() { + mkdir -p images/jdk/.systemPrefs + touch images/jdk/.systemPrefs/.system.lock + touch images/jdk/.systemPrefs/.systemRootModFile + mkdir -p "${dest_dir}/usr/lib/jvm" + cp -pPr images/jdk "${dest_dir}/usr/lib/jvm/java-17" +} diff --git a/source-recipes/host-openjdk-bin b/source-recipes/host-openjdk-bin new file mode 100644 index 00000000..707a236e --- /dev/null +++ b/source-recipes/host-openjdk-bin @@ -0,0 +1,5 @@ +name=host-openjdk-bin +version=17.0.9.9 +source_method=tarball +tarball_url="https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz" +tarball_blake2b=0bf5a6583f27a2d961fc72de11154e2fc6ba6383ebaf58fb328ea7ef40994188d1aee6fbdef5784f5629f552d6942c43e29fa3f7b99af250e4179da9bd7fcbe4 diff --git a/source-recipes/openjdk17 b/source-recipes/openjdk17 new file mode 100644 index 00000000..3a4f6e67 --- /dev/null +++ b/source-recipes/openjdk17 @@ -0,0 +1,10 @@ +name=openjdk17 +version=17.0.35 +source_method=tarball +tarball_url="https://github.com/openjdk/jdk17/archive/refs/tags/jdk-17+35.tar.gz" +tarball_sha512=c43fea864059ec2e5ca8c9ac96253cf429359774105842353c413a3bf0f4a348d6a2a4948f3a5a9af83667b0312b066002d5d5efa8234a37e2370b14ed6733df +hostdeps="autoconf automake pkgconfig libtool" +prepare() { + cp -v $(find /usr/local/share/automake* -name config.sub) make/autoconf/build-aux/ + chmod +x configure +}