mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-08-05 13:27:09 +02:00
testing/ponyc: fix on aarch64
This commit is contained in:
parent
396eb82cd1
commit
923cd1e698
@ -7,7 +7,12 @@ pkgdesc="An open-source, actor-model, capabilities-secure, high performance prog
|
|||||||
url="https://www.ponylang.org"
|
url="https://www.ponylang.org"
|
||||||
arch="x86_64 aarch64"
|
arch="x86_64 aarch64"
|
||||||
license="BSD-2-Clause"
|
license="BSD-2-Clause"
|
||||||
_llvmver=3.9
|
# LLVM 5 support is denoted as experimental, but libponyc.tests segfault on
|
||||||
|
# LLVM 3.9.1 and 4.0.0 (see https://github.com/ponylang/ponyc/issues/2689).
|
||||||
|
case "$CARCH" in
|
||||||
|
aarch64) _llvmver=5;;
|
||||||
|
*) _llvmver=3.9;;
|
||||||
|
esac
|
||||||
depends="binutils-gold clang"
|
depends="binutils-gold clang"
|
||||||
checkdepends="libressl-dev pcre2-dev"
|
checkdepends="libressl-dev pcre2-dev"
|
||||||
makedepends="clang-dev libexecinfo-dev libunwind-dev llvm$_llvmver-dev
|
makedepends="clang-dev libexecinfo-dev libunwind-dev llvm$_llvmver-dev
|
||||||
@ -15,6 +20,8 @@ makedepends="clang-dev libexecinfo-dev libunwind-dev llvm$_llvmver-dev
|
|||||||
subpackages="$pkgname-dev $pkgname-doc"
|
subpackages="$pkgname-dev $pkgname-doc"
|
||||||
source="$pkgname-$pkgver.tar.gz::https://github.com/ponylang/$pkgname/archive/$pkgver.tar.gz
|
source="$pkgname-$pkgver.tar.gz::https://github.com/ponylang/$pkgname/archive/$pkgver.tar.gz
|
||||||
disable-avx512f-for-x86-only.patch
|
disable-avx512f-for-x86-only.patch
|
||||||
|
fix-aarch64.patch
|
||||||
|
fix-atomic-initializer.patch
|
||||||
makefile-remove-march-mtune.patch
|
makefile-remove-march-mtune.patch
|
||||||
fix-tests.patch"
|
fix-tests.patch"
|
||||||
builddir="$srcdir/$pkgname-$pkgver"
|
builddir="$srcdir/$pkgname-$pkgver"
|
||||||
@ -51,6 +58,8 @@ build() {
|
|||||||
build/release/ponyc packages/stdlib -rexpr -g -o docs
|
build/release/ponyc packages/stdlib -rexpr -g -o docs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# NOTE: libponyc.tests segfaults on some aarch64 machines when libnuma is
|
||||||
|
# installed (e.g. on our 96cores machine).
|
||||||
check() {
|
check() {
|
||||||
cd "$builddir"
|
cd "$builddir"
|
||||||
make test -j1 $_make_opts
|
make test -j1 $_make_opts
|
||||||
@ -88,5 +97,7 @@ dev() {
|
|||||||
|
|
||||||
sha512sums="f89389142d77e93038c77d3fbe9e64c13ce76b9737430969fcdf2916023d0b7195f4d551895eab999798594352b40848be8dcc63af6927e8cc62b7c7000be65d ponyc-0.21.3.tar.gz
|
sha512sums="f89389142d77e93038c77d3fbe9e64c13ce76b9737430969fcdf2916023d0b7195f4d551895eab999798594352b40848be8dcc63af6927e8cc62b7c7000be65d ponyc-0.21.3.tar.gz
|
||||||
0f1d7e45639db17343db675a740922b2c1ef1317fd1a7678a0d30040407c91c930b7439dc12282541384336da1af5f0bc143ea0f5725eb8aa2ab3646b1cf00f7 disable-avx512f-for-x86-only.patch
|
0f1d7e45639db17343db675a740922b2c1ef1317fd1a7678a0d30040407c91c930b7439dc12282541384336da1af5f0bc143ea0f5725eb8aa2ab3646b1cf00f7 disable-avx512f-for-x86-only.patch
|
||||||
|
4ff47633e878890d9400b7ab7d7fad42119707d8b1f69c0192266f4b2d386be698bb0e8f2accae9b440bcfece39e1c6baf10047436dc184b1c3885c2ac33d569 fix-aarch64.patch
|
||||||
|
f78ff44de59fe486bdfa8a7fbde14786825e549b23759ef798ba7632d556203de49b522562a04cfcab1ef3ef323e226ff9217abebafcb414e647ebd17877b67d fix-atomic-initializer.patch
|
||||||
0dac51826c0fcd47e6d4e7fe9928a5221c66da2f24d7931d7c53e591d325375b88e98cc0b3b6d538f9ec9bcbba906de7c00fff5434e427c94cea4bd2fb0477f6 makefile-remove-march-mtune.patch
|
0dac51826c0fcd47e6d4e7fe9928a5221c66da2f24d7931d7c53e591d325375b88e98cc0b3b6d538f9ec9bcbba906de7c00fff5434e427c94cea4bd2fb0477f6 makefile-remove-march-mtune.patch
|
||||||
46c0125b60cd1db89d7ae958602b087acb2ae1fd8298cd9141828999693a9e39b60d2dac338853406081fc1c138e506243357618197ffd118fe4ac9737bd1565 fix-tests.patch"
|
46c0125b60cd1db89d7ae958602b087acb2ae1fd8298cd9141828999693a9e39b60d2dac338853406081fc1c138e506243357618197ffd118fe4ac9737bd1565 fix-tests.patch"
|
||||||
|
56
testing/ponyc/fix-aarch64.patch
Normal file
56
testing/ponyc/fix-aarch64.patch
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
From 62dee527de27d0899331ebeb0362b60cd39cfcdd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vassil Kovatchev <vkovatchev@deloitte.com>
|
||||||
|
Date: Thu, 3 May 2018 09:48:52 -0400
|
||||||
|
Subject: [PATCH] Fix failing aarch64 (ARM64) build
|
||||||
|
|
||||||
|
ARM64 systems do not use ARM Exception Handling ABI (EHABI), but rather the DWARF exception handling standard.
|
||||||
|
The fix turns off special ARM handling of exceptions when the target platform is ARM64.
|
||||||
|
This enables builds of the codebase on ARM64 systems with standard implementation of libunwind as shipped with gcc 5+.
|
||||||
|
|
||||||
|
Patch-Source: https://github.com/ponylang/ponyc/pull/2688
|
||||||
|
|
||||||
|
--- a/src/common/platform.h
|
||||||
|
+++ b/src/common/platform.h
|
||||||
|
@@ -170,6 +170,11 @@
|
||||||
|
*/
|
||||||
|
#if defined(ARMV2) || defined(__arm__) || defined(__aarch64__)
|
||||||
|
# define PLATFORM_IS_ARM
|
||||||
|
+# if defined(__aarch64__)
|
||||||
|
+# define PLATFORM_IS_ARM64
|
||||||
|
+# else
|
||||||
|
+# define PLATFORM_IS_ARM32
|
||||||
|
+# endif
|
||||||
|
#elif defined(__i386__) || defined(_M_IX86) || defined(_X86_) || \
|
||||||
|
defined(__amd64__) || defined(__x86_64__) || defined(_M_X64) || \
|
||||||
|
defined(_M_AMD64)
|
||||||
|
--- a/src/libponyrt/lang/posix_except.c
|
||||||
|
+++ b/src/libponyrt/lang/posix_except.c
|
||||||
|
@@ -9,7 +9,7 @@
|
||||||
|
|
||||||
|
PONY_EXTERN_C_BEGIN
|
||||||
|
|
||||||
|
-#ifdef PLATFORM_IS_ARM
|
||||||
|
+#ifdef PLATFORM_IS_ARM32
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#endif
|
||||||
|
@@ -26,7 +26,7 @@
|
||||||
|
|
||||||
|
PONY_API void pony_error()
|
||||||
|
{
|
||||||
|
-#ifdef PLATFORM_IS_ARM
|
||||||
|
+#ifdef PLATFORM_IS_ARM32
|
||||||
|
memcpy(exception.exception_class, "Pony\0\0\0\0", 8);
|
||||||
|
#else
|
||||||
|
exception.exception_class = 0x506F6E7900000000; // "Pony"
|
||||||
|
@@ -46,7 +46,9 @@
|
||||||
|
_Unwind_SetIP(context, landing_pad);
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifdef PLATFORM_IS_ARM
|
||||||
|
+// Switch to ARM EHABI for ARM32 devices.
|
||||||
|
+// Note that this does not apply to ARM64 devices which use DWARF Exception Handling.
|
||||||
|
+#ifdef PLATFORM_IS_ARM32
|
||||||
|
|
||||||
|
_Unwind_Reason_Code __gnu_unwind_frame(_Unwind_Exception*, _Unwind_Context*);
|
||||||
|
|
53
testing/ponyc/fix-atomic-initializer.patch
Normal file
53
testing/ponyc/fix-atomic-initializer.patch
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
change atomic initializer in pool_global
|
||||||
|
|
||||||
|
Patch backported to 0.21.3 from https://github.com/ponylang/ponyc/pull/2668
|
||||||
|
|
||||||
|
--- a/src/libponyrt/mem/pool.c
|
||||||
|
+++ b/src/libponyrt/mem/pool.c
|
||||||
|
@@ -97,24 +97,30 @@
|
||||||
|
#define THREAD_MAX_BEFORE_SHARE(MAX_MEM, SIZE) \
|
||||||
|
(((MAX_MEM / SIZE)>=(1))?(MAX_MEM / SIZE):(1))
|
||||||
|
|
||||||
|
+#ifdef PLATFORM_IS_X86
|
||||||
|
+# define POOL_CENTRAL_INIT {{NULL, 0}}
|
||||||
|
+#else
|
||||||
|
+# define POOL_CENTRAL_INIT NULL
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
static pool_global_t pool_global[POOL_COUNT] =
|
||||||
|
{
|
||||||
|
- {POOL_MIN << 0, THREAD_MAX_BEFORE_SHARE(0x8000, POOL_MIN << 0), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 1, THREAD_MAX_BEFORE_SHARE(0x8000, POOL_MIN << 1), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 2, THREAD_MAX_BEFORE_SHARE(0x8000, POOL_MIN << 2), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 3, THREAD_MAX_BEFORE_SHARE(0x8000, POOL_MIN << 3), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 4, THREAD_MAX_BEFORE_SHARE(0x8000, POOL_MIN << 4), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 5, THREAD_MAX_BEFORE_SHARE(0x10000, POOL_MIN << 5), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 6, THREAD_MAX_BEFORE_SHARE(0x20000, POOL_MIN << 6), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 7, THREAD_MAX_BEFORE_SHARE(0x40000, POOL_MIN << 7), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 8, THREAD_MAX_BEFORE_SHARE(0x80000, POOL_MIN << 8), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 9, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 9), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 10, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 10), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 11, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 11), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 12, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 12), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 13, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 13), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 14, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 14), {{NULL, 0}}},
|
||||||
|
- {POOL_MIN << 15, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 15), {{NULL, 0}}},
|
||||||
|
+ {POOL_MIN << 0, THREAD_MAX_BEFORE_SHARE(0x8000, POOL_MIN << 0), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 1, THREAD_MAX_BEFORE_SHARE(0x8000, POOL_MIN << 1), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 2, THREAD_MAX_BEFORE_SHARE(0x8000, POOL_MIN << 2), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 3, THREAD_MAX_BEFORE_SHARE(0x8000, POOL_MIN << 3), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 4, THREAD_MAX_BEFORE_SHARE(0x8000, POOL_MIN << 4), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 5, THREAD_MAX_BEFORE_SHARE(0x10000, POOL_MIN << 5), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 6, THREAD_MAX_BEFORE_SHARE(0x20000, POOL_MIN << 6), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 7, THREAD_MAX_BEFORE_SHARE(0x40000, POOL_MIN << 7), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 8, THREAD_MAX_BEFORE_SHARE(0x80000, POOL_MIN << 8), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 9, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 9), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 10, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 10), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 11, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 11), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 12, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 12), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 13, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 13), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 14, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 14), POOL_CENTRAL_INIT},
|
||||||
|
+ {POOL_MIN << 15, THREAD_MAX_BEFORE_SHARE(POOL_MAX, POOL_MIN << 15), POOL_CENTRAL_INIT},
|
||||||
|
};
|
||||||
|
|
||||||
|
static pool_block_t pool_block_global;
|
Loading…
Reference in New Issue
Block a user