From 644c0a04ff48eb2cc875b33446483d7878696de4 Mon Sep 17 00:00:00 2001 From: Tee KOBAYASHI Date: Mon, 28 Mar 2022 07:45:41 +0900 Subject: [PATCH] mercury: Use libandroid-sysv-semaphore --- packages/mercury/build.sh | 12 +-- packages/mercury/compiler-make.build.c.patch | 18 ----- packages/mercury/compiler-make.build.m.patch | 18 ----- packages/mercury/sys_sem.c | 79 -------------------- 4 files changed, 4 insertions(+), 123 deletions(-) delete mode 100644 packages/mercury/compiler-make.build.c.patch delete mode 100644 packages/mercury/compiler-make.build.m.patch delete mode 100644 packages/mercury/sys_sem.c diff --git a/packages/mercury/build.sh b/packages/mercury/build.sh index 6f2d4873a..b1b91230a 100644 --- a/packages/mercury/build.sh +++ b/packages/mercury/build.sh @@ -3,9 +3,10 @@ TERMUX_PKG_DESCRIPTION="A logic/functional programming language" TERMUX_PKG_LICENSE="GPL-2.0, LGPL-2.0" TERMUX_PKG_MAINTAINER="@termux" TERMUX_PKG_VERSION=20.06.1 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SRCURL=https://dl.mercurylang.org/release-${TERMUX_PKG_VERSION:0:5}/mercury-srcdist-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_SHA256=ef093ae81424c4f3fe696eff9aefb5fb66899e11bb17ae0326adfb70d09c1c1f +TERMUX_PKG_DEPENDS="libandroid-sysv-semaphore-static" TERMUX_PKG_BUILD_IN_SRC=true TERMUX_PKG_HOSTBUILD=true TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" @@ -46,6 +47,7 @@ termux_step_pre_configure() { export MERCURY_MKINIT=$_BUILD_UTIL/mkinit export MERCURY_DEMANGLER=$_BUILD_UTIL/mdemangle export MERCURY_COMPILER=$_BUILD_COMPILER/mercury_compile + export MERCURY_ALL_LOCAL_C_INCL_DIRS=-I$TERMUX_PREFIX/include find "$TERMUX_PKG_SRCDIR" -name '*.c' -o -name '*.m' | \ xargs -n 1 sed -i \ @@ -54,13 +56,7 @@ termux_step_pre_configure() { } termux_step_post_configure() { - cp $TERMUX_PKG_BUILDER_DIR/sys_sem.c ./ - $CC $CPPFLAGS $CFLAGS -c sys_sem.c - rm -f libsys_sem.a - $AR cru libsys_sem.a sys_sem.o - local lib=$TERMUX_PREFIX/lib/mercury/lib - install -Dm600 -t $lib libsys_sem.a - sed -i -e 's:^\(LINKER_POST_FLAGS=.*\)"$:\1 '"$lib"'/libsys_sem.a":g' \ + sed -i -e 's:^\(LINKER_POST_FLAGS=.*\)"$:\1 '"$TERMUX_PREFIX"'/lib/libandroid-sysv-semaphore.a":g' \ $TERMUX_PKG_SRCDIR/scripts/ml sed -i -e 's,\([^A-Za-z0-9_]PATH=\)\.\.,\1'$_BUILD_UTIL':..,g' \ diff --git a/packages/mercury/compiler-make.build.c.patch b/packages/mercury/compiler-make.build.c.patch deleted file mode 100644 index 1853507f8..000000000 --- a/packages/mercury/compiler-make.build.c.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/compiler/make.build.c -+++ b/compiler/make.build.c -@@ -128,6 +128,15 @@ - #include - - #define MC_HAVE_JOBCTL_IPC 1 -+ #elif defined(__ANDROID__) -+ #include -+ #define semid_ds semid64_ds -+int semctl(int, int, int, ...); -+int semget(key_t, int, int); -+int semop(int, struct sembuf *, size_t); -+ -+ #define MC_USE_SYSV_SEMAPHORE 1 -+ #define MC_HAVE_JOBCTL_IPC 1 - #elif defined(MR_HAVE_SYS_SEM_H) - #include - diff --git a/packages/mercury/compiler-make.build.m.patch b/packages/mercury/compiler-make.build.m.patch deleted file mode 100644 index d1016baaa..000000000 --- a/packages/mercury/compiler-make.build.m.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- a/compiler/make.build.m -+++ b/compiler/make.build.m -@@ -612,6 +612,15 @@ - #include - - #define MC_HAVE_JOBCTL_IPC 1 -+ #elif defined(__ANDROID__) -+ #include -+ #define semid_ds semid64_ds -+int semctl(int, int, int, ...); -+int semget(key_t, int, int); -+int semop(int, struct sembuf *, size_t); -+ -+ #define MC_USE_SYSV_SEMAPHORE 1 -+ #define MC_HAVE_JOBCTL_IPC 1 - #elif defined(MR_HAVE_SYS_SEM_H) - #include - diff --git a/packages/mercury/sys_sem.c b/packages/mercury/sys_sem.c deleted file mode 100644 index fad76ac65..000000000 --- a/packages/mercury/sys_sem.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include - -#include -#include -#include - -#pragma GCC visibility push(hidden) - -int semtimedop(int id, struct sembuf* ops, size_t op_count, const struct timespec* ts) { -#if defined(SYS_semtimedop) - return syscall(SYS_semtimedop, id, ops, op_count, ts); -#else - return syscall(SYS_ipc, SEMTIMEDOP, id, op_count, 0, ops, ts); -#endif -} - -union semun { - int val; - struct semid_ds *buf; - unsigned short *array; -} semu; - -int semctl(int id, int num, int cmd, ...) { -#if !defined(__LP64__) - // Annoyingly, the kernel requires this for 32-bit but rejects it for 64-bit. - cmd |= IPC_64; -#endif - va_list ap; - va_start(ap, cmd); - union semun arg = va_arg(ap, union semun); - va_end(ap); -#if defined(SYS_semctl) - return syscall(SYS_semctl, id, num, cmd, arg); -#else - return syscall(SYS_ipc, SEMCTL, id, num, cmd, &arg, 0); -#endif -} - -int semget(key_t key, int n, int flags) { -#if defined(SYS_semget) - return syscall(SYS_semget, key, n, flags); -#else - return syscall(SYS_ipc, SEMGET, key, n, flags, 0, 0); -#endif -} - -int semop(int id, struct sembuf* ops, size_t op_count) { - return semtimedop(id, ops, op_count, NULL); -} - -#pragma GCC visibility pop