From a91aee034628c498fe0e83eb2fdffb1c11aaa052 Mon Sep 17 00:00:00 2001 From: Czarek Nakamoto Date: Wed, 6 Mar 2024 13:14:06 +0100 Subject: [PATCH] bump zmq_version add musl build --- .env | 7 +- .woodpecker/linux.yaml | 51 +++++++-------- Makefile | 21 ++++-- external/alpine/libexecinfo/10-execinfo.patch | 64 +++++++++++++++++++ .../libexecinfo/20-define-gnu-source.patch | 24 +++++++ .../libexecinfo/30-linux-makefile.patch | 44 +++++++++++++ external/alpine/libexecinfo/APKBUILD | 50 +++++++++++++++ 7 files changed, 227 insertions(+), 34 deletions(-) create mode 100644 external/alpine/libexecinfo/10-execinfo.patch create mode 100644 external/alpine/libexecinfo/20-define-gnu-source.patch create mode 100644 external/alpine/libexecinfo/30-linux-makefile.patch create mode 100644 external/alpine/libexecinfo/APKBUILD diff --git a/.env b/.env index 1f92caa..79a8841 100644 --- a/.env +++ b/.env @@ -13,8 +13,8 @@ ZLIB_HASH=9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23 OPENSSL_VERSION=3.2.0 OPENSSL_HASH=14c826f07c7e433706fb5c69fa9e25dab95684844b4c962a2cf1bf183eb4690e # ZMQ -ZMQ_VERSION=v4.3.2 -ZMQ_HASH=a84ffa12b2eb3569ced199660bac5ad128bff1f0 +ZMQ_VERSION=v4.3.5 +ZMQ_HASH=622fc6dde99ee172ebaa9c8628d85a7a1995a21d # libsodium SODIUM_VERSION=1.0.18 SODIUM_HASH=4f5e89fa84ce1d178a6765b8b46f2b6f91216677 @@ -36,6 +36,3 @@ MONERO_TAG=release-v0.18.3.1-anonero PERL_VERSION_FULL=5.38.2 PERL_VERSION_MAJOR=5.0 PERL_HASH=a0a31534451eb7b83c7d6594a497543a54d488bc90ca00f5e34762577f40655e -# System env -CC=clang -CXX=clang++ diff --git a/.woodpecker/linux.yaml b/.woodpecker/linux.yaml index 5c9a996..45a4add 100644 --- a/.woodpecker/linux.yaml +++ b/.woodpecker/linux.yaml @@ -7,25 +7,44 @@ matrix: include: - image: git.mrcyjanek.net/mrcyjanek/debian:bookworm platform: linux/amd64 - monero_make: monero_linux_amd64 - moneroc_make: moneroc_linux_host64 + make_steps: depends_host monero_linux_amd64 moneroc_linux_host64 prepare_cmd: echo ok prepare_cmd_depends: echo ok triplet: x86_64-linux-gnu + cc: clang + cxx: clang++ - image: git.mrcyjanek.net/mrcyjanek/debian:bookworm platform: linux/aarch64 - monero_make: monero_linux_arm64 - moneroc_make: moneroc_linux_host64 + make_steps: depends_host monero_linux_arm64 moneroc_linux_host64 prepare_cmd: echo ok prepare_cmd_depends: echo ok triplet: aarch64-linux-gnu + cc: clang + cxx: clang++ + - image: alpine:3.19.1 + platform: linux/amd64 + make_steps: alpine_fix_libexecinfo depends_host monero_linux_amd64 moneroc_linux_host64 + prepare_cmd: echo ok + prepare_cmd_depends: apk add make git curl g++ linux-headers perl libtool autoconf automake pkgconfig cmake bash bison abuild + triplet: x86_64-alpine-linux-musl + cc: gcc + cxx: g++ + # - image: alpine:3.19.1 + # platform: linux/aarch64 + # make_steps: alpine_fix_libexecinfo depends_host monero_linux_arm64 moneroc_linux_host64 + # prepare_cmd: echo ok + # prepare_cmd_depends: apk add make git curl g++ linux-headers perl libtool autoconf automake pkgconfig cmake bash bison abuild + # triplet: aarch64-alpine-linux-musl + # cc: gcc + # cxx: g++ - image: git.mrcyjanek.net/mrcyjanek/sailfishos:4.5.0.18_aarch64 platform: linux/aarch64 - monero_make: monero_linux_arm64 - moneroc_make: moneroc_linux_host64 + make_steps: depends_host monero_linux_arm64 moneroc_linux_host64 prepare_cmd: zypper in -y git clang libxkbcommon-devel wayland-protocols-devel wayland-client wayland-egl-devel make glibc-static byacc prepare_cmd_depends: make host_tool_perl triplet: aarch64-linux-sailfishos + cc: clang + cxx: clang++ labels: platform: ${platform} @@ -41,25 +60,7 @@ steps: commands: - ${prepare_cmd} - ${prepare_cmd_depends} - - make libiconv_host - - make boost_host - - make zlib_host - - make openssl_host - - make openssl_host_alt - - make libzmq_host - - make libsodium_host - - make host_copy_libs - - make libexpat_host - - make unbound_host - - make polyseed_host - - make utf8proc_host - - make host_copy_libs - - make ${monero_make} - - name: build ${moneroc_make} - image: ${image} - commands: - - ${prepare_cmd} - - make ${moneroc_make} + - CC=${cc} CXX=${cxx} make ${make_steps} - name: info image: git.mrcyjanek.net/mrcyjanek/debian:bookworm commands: diff --git a/Makefile b/Makefile index 931a661..c3abae6 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,11 @@ include .env export $(shell sed 's/=.*//' .env) +CC ?= clang +CXX ?= clang++ +HOST ?= $(shell gcc -dumpmachin) + + PREFIX := ${PWD}/prefix .PHONY: clean_download @@ -66,10 +71,10 @@ download: # This is just a suggestion of the steps, you should figure on your own what is required # and what's not. -# A general rule of thumb is that `make host_depends` works everywhere, but not everything +# A general rule of thumb is that `make depends_host` works everywhere, but not everything # is required. But since we target so many different OS.. yeah. -.PHONY: host_depends -host_depends: libiconv_host boost_host zlib_host openssl_host openssl_host_alt libzmq_host libsodium_host host_copy_libs libexpat_host unbound_host polyseed_host utf8proc_host +.PHONY: depends_host +depends_host: libiconv_host boost_host zlib_host openssl_host openssl_host_alt libzmq_host libsodium_host host_copy_libs libexpat_host unbound_host polyseed_host utf8proc_host .PHONY: host_copy_libs host_copy_libs: @@ -197,4 +202,12 @@ host_tool_perl: rm perl-${PERL_VERSION_FULL}.tar.gz cd perl-${PERL_VERSION_FULL} && ./Configure -des -Dprefix=${PREFIX}/perl cd perl-${PERL_VERSION_FULL} && make -j${NPROC} - cd perl-${PERL_VERSION_FULL} && make install \ No newline at end of file + cd perl-${PERL_VERSION_FULL} && make install + +# + +.PHONY: alpine_fix_libexecinfo +alpine_fix_libexecinfo: + echo | abuild-keygen -a -q + cd external/alpine/libexecinfo && abuild -F -r + apk add --allow-untrusted $(shell find ${HOME}/packages -name '*libexecinfo*.apk') \ No newline at end of file diff --git a/external/alpine/libexecinfo/10-execinfo.patch b/external/alpine/libexecinfo/10-execinfo.patch new file mode 100644 index 0000000..44db530 --- /dev/null +++ b/external/alpine/libexecinfo/10-execinfo.patch @@ -0,0 +1,64 @@ +--- a/execinfo.c.orig ++++ b/execinfo.c +@@ -69,7 +69,8 @@ + char ** + backtrace_symbols(void *const *buffer, int size) + { +- int i, clen, alen, offset; ++ size_t clen, alen; ++ int i, offset; + char **rval; + char *cp; + Dl_info info; +@@ -78,7 +79,6 @@ + rval = malloc(clen); + if (rval == NULL) + return NULL; +- (char **)cp = &(rval[size]); + for (i = 0; i < size; i++) { + if (dladdr(buffer[i], &info) != 0) { + if (info.dli_sname == NULL) +@@ -92,14 +92,14 @@ + 2 + /* " <" */ + strlen(info.dli_sname) + /* "function" */ + 1 + /* "+" */ +- D10(offset) + /* "offset */ ++ 10 + /* "offset */ + 5 + /* "> at " */ + strlen(info.dli_fname) + /* "filename" */ + 1; /* "\0" */ + rval = realloc_safe(rval, clen + alen); + if (rval == NULL) + return NULL; +- snprintf(cp, alen, "%p <%s+%d> at %s", ++ snprintf((char *) rval + clen, alen, "%p <%s+%d> at %s", + buffer[i], info.dli_sname, offset, info.dli_fname); + } else { + alen = 2 + /* "0x" */ +@@ -108,12 +108,15 @@ + rval = realloc_safe(rval, clen + alen); + if (rval == NULL) + return NULL; +- snprintf(cp, alen, "%p", buffer[i]); ++ snprintf((char *) rval + clen, alen, "%p", buffer[i]); + } +- rval[i] = cp; +- cp += alen; ++ rval[i] = (char *) clen; ++ clen += alen; + } + ++ for (i = 0; i < size; i++) ++ rval[i] += (long) rval; ++ + return rval; + } + +@@ -155,6 +158,6 @@ + return; + snprintf(buf, len, "%p\n", buffer[i]); + } +- write(fd, buf, len - 1); ++ write(fd, buf, strlen(buf)); + } + } diff --git a/external/alpine/libexecinfo/20-define-gnu-source.patch b/external/alpine/libexecinfo/20-define-gnu-source.patch new file mode 100644 index 0000000..7255ecd --- /dev/null +++ b/external/alpine/libexecinfo/20-define-gnu-source.patch @@ -0,0 +1,24 @@ +--- a/execinfo.c.orig ++++ b/execinfo.c +@@ -26,6 +26,7 @@ + * $Id: execinfo.c,v 1.3 2004/07/19 05:21:09 sobomax Exp $ + */ + ++#define _GNU_SOURCE + #include + #include + #include +--- a/stacktraverse.c.orig ++++ b/stacktraverse.c +@@ -1,3 +1,4 @@ ++#define _GNU_SOURCE + #include + + #include "stacktraverse.h" +--- a/test.c.orig ++++ b/test.c +@@ -1,3 +1,4 @@ ++#define _GNU_SOURCE + #include + #include + diff --git a/external/alpine/libexecinfo/30-linux-makefile.patch b/external/alpine/libexecinfo/30-linux-makefile.patch new file mode 100644 index 0000000..6bc8a89 --- /dev/null +++ b/external/alpine/libexecinfo/30-linux-makefile.patch @@ -0,0 +1,44 @@ +--- a/Makefile.orig ++++ b/Makefile +@@ -23,24 +23,25 @@ + # SUCH DAMAGE. + # + # $Id: Makefile,v 1.3 2004/07/19 05:19:55 sobomax Exp $ ++# ++# Linux Makefile by Matt Smith , 2011/01/04 + +-LIB= execinfo ++CC=cc ++AR=ar ++EXECINFO_CFLAGS=$(CFLAGS) -O2 -pipe -fno-strict-aliasing -std=gnu99 -fstack-protector -c ++EXECINFO_LDFLAGS=$(LDFLAGS) + +-SRCS= stacktraverse.c stacktraverse.h execinfo.c execinfo.h ++all: static dynamic + +-INCS= execinfo.h ++static: ++ $(CC) $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) stacktraverse.c ++ $(CC) $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) execinfo.c ++ $(AR) rcs libexecinfo.a stacktraverse.o execinfo.o + +-SHLIB_MAJOR= 1 +-SHLIB_MINOR= 0 ++dynamic: ++ $(CC) -fpic -DPIC $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) stacktraverse.c -o stacktraverse.So ++ $(CC) -fpic -DPIC $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) execinfo.c -o execinfo.So ++ $(CC) -shared -Wl,-soname,libexecinfo.so.1 -o libexecinfo.so.1 stacktraverse.So execinfo.So + +-NOPROFILE= yes +- +-DPADD= ${LIBM} +-LDADD= -lm +- +-#WARNS?= 4 +- +-#stacktraverse.c: gen.py +-# ./gen.py > stacktraverse.c +- +-.include ++clean: ++ rm -rf *.o *.So *.a *.so diff --git a/external/alpine/libexecinfo/APKBUILD b/external/alpine/libexecinfo/APKBUILD new file mode 100644 index 0000000..0e91c2c --- /dev/null +++ b/external/alpine/libexecinfo/APKBUILD @@ -0,0 +1,50 @@ +# Contributor: Philipp Andronov +# Maintainer: Matt Smith +pkgname=libexecinfo +pkgver=1.1 +pkgrel=1 +pkgdesc="A quick-n-dirty BSD licensed clone of the GNU libc backtrace facility." +options="!check" # No testsuite +url="https://www.freshports.org/devel/libexecinfo" +arch="all" +license="BSD-2-Clause" +subpackages="$pkgname-static ${pkgname}-dev" +source="http://distcache.freebsd.org/local-distfiles/itetcu/$pkgname-$pkgver.tar.bz2 + 10-execinfo.patch + 20-define-gnu-source.patch + 30-linux-makefile.patch + " + +build() { + cd "$builddir" + export CFLAGS="${CFLAGS} -fno-omit-frame-pointer" + make +} + +package() { + cd "$builddir" + + install -D -m755 "$builddir"/execinfo.h \ + "$pkgdir"/usr/include/execinfo.h + install -D -m755 "$builddir"/stacktraverse.h \ + "$pkgdir"/usr/include/stacktraverse.h + install -D -m755 "$builddir"/libexecinfo.a \ + "$pkgdir"/usr/lib/libexecinfo.a + install -D -m755 "$builddir"/libexecinfo.so.1 \ + "$pkgdir"/usr/lib/libexecinfo.so.1 + ln -s /usr/lib/libexecinfo.so.1 \ + "$pkgdir"/usr/lib/libexecinfo.so +} + +static() { + depends="" + pkgdesc="$pkgdesc (static library)" + + mkdir -p "$subpkgdir"/usr/lib + mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib +} + +sha512sums="51fea7910ef6873061a25c22434ce4da724e9d8e37616a069ad0a58c0463755be4c6c7da88cd747484c2f3373909d7be4678b32a4bd91b6d9e0f74526094e92c libexecinfo-1.1.tar.bz2 +cd35c9046d88b39b05bc36faffb1e71ae3b2140632da7da37f374fff671d4ad812eebd0581011ff9e3b25d3cb4bc962cf35957074f713817b3b617511425af1a 10-execinfo.patch +c961b2f86cba291e8c69a507e3880354ad7369fd04c8948d54c4db0578fe30cca8f4250742cb63d1ab6e5875988f04c4729256197030369404f0e925f299a66c 20-define-gnu-source.patch +13d3df88a6dabd78ee2cf50092511f5a10f0e5ff3d81dbacb182fcf85ceb0c13a5f0252397b4eb0ac57f8d8bd3fc3af6c05865d6398cbc1517f347210c5750da 30-linux-makefile.patch"