diff options
author | davidovski <david@davidovski.xyz> | 2022-06-15 20:02:02 +0100 |
---|---|---|
committer | davidovski <david@davidovski.xyz> | 2022-06-15 20:02:02 +0100 |
commit | d2567bfbdf0e9fa6db0a6ed1534831ec859a3e03 (patch) | |
tree | 684a17eebf446aa1adab1097616f1882c8d51568 /repo | |
parent | d1fc3393cca72e8e432f827f7624e38734fad6dc (diff) |
added deps for qemu
Diffstat (limited to 'repo')
248 files changed, 8503 insertions, 64 deletions
diff --git a/repo/apache-ant/apache-ant.xibuild b/repo/apache-ant/apache-ant.xibuild new file mode 100644 index 0000000..4808d2a --- /dev/null +++ b/repo/apache-ant/apache-ant.xibuild @@ -0,0 +1,42 @@ +#!/bin/sh + +NAME="apache-ant" +DESC="A java-based build tool" + +MAKEDEPS="adoptopenjdk11" + +PKG_VER=1.10.12 +SOURCE="https://downloads.apache.org/ant/binaries/apache-ant-$PKG_VER-bin.tar.xz" + +anthome="/usr/share/java/apache-ant" +build() { + cat > apache-ant.sh <<-EOF + ANT_HOME="$anthome" + export ANT_HOME + EOF +} + +package() { + local destdir="$PKG_DEST/$anthome" + + install -dm755 "$destdir"/bin + rm bin/*.bat bin/*.cmd + install -m755 bin/* "$destdir"/bin + + install -dm755 "$PKG_DEST"/usr/bin + ln -sf $anthome/bin/ant "$PKG_DEST"/usr/bin/ant + + cp -r etc "$destdir"/ + + install -dm755 "$destdir"/lib + install -m644 lib/*.jar "$destdir"/lib + + ln -sf ../../junit.jar "$destdir"/lib/junit.jar + + local file; for file in LICENSE NOTICE; do + install -m644 -D $file "$PKG_DEST"/usr/share/licenses/apache-ant/$file + done + + install -m644 -D apache-ant.sh "$PKG_DEST"/etc/profile.d/apache-ant.sh +} + diff --git a/repo/apr/apr-1.6.2-dont-test-dlclose.patch b/repo/apr/apr-1.6.2-dont-test-dlclose.patch new file mode 100644 index 0000000..df24254 --- /dev/null +++ b/repo/apr/apr-1.6.2-dont-test-dlclose.patch @@ -0,0 +1,22 @@ +dlclose is a no-op on musl. Test will always fail. + +--- apr-1.6.2/test/testdso.c.old 2010-01-03 19:35:07.000000000 -0600 ++++ apr-1.6.2/test/testdso.c 2017-09-10 18:43:43.374983090 -0500 +@@ -244,7 +244,7 @@ + abts_run_test(suite, test_load_module, NULL); + abts_run_test(suite, test_dso_sym, NULL); + abts_run_test(suite, test_dso_sym_return_value, NULL); +- abts_run_test(suite, test_unload_module, NULL); ++ /* abts_run_test(suite, test_unload_module, NULL); */ + + #ifdef LIB_NAME + apr_filepath_merge(&libname, NULL, LIB_NAME, 0, p); +@@ -252,7 +252,7 @@ + abts_run_test(suite, test_load_library, NULL); + abts_run_test(suite, test_dso_sym_library, NULL); + abts_run_test(suite, test_dso_sym_return_value_library, NULL); +- abts_run_test(suite, test_unload_library, NULL); ++ /* abts_run_test(suite, test_unload_library, NULL); */ + #endif + + abts_run_test(suite, test_load_notthere, NULL); diff --git a/repo/apr/apr.xibuild b/repo/apr/apr.xibuild new file mode 100644 index 0000000..247dd3f --- /dev/null +++ b/repo/apr/apr.xibuild @@ -0,0 +1,30 @@ +#!/bin/sh + +NAME="apr" +DESC="The Apache Portable Runtime" + +MAKEDEPS="util-linux" + +PKG_VER=1.7.0 +SOURCE="https://www.apache.org/dist/apr/apr-$PKG_VER.tar.bz2" + +ADDITIONAL=" +apr-1.6.2-dont-test-dlclose.patch +semtimedop-s390x.patch +" + +prepare () { + apply_patches +} + +build() { + ./configure \ + --prefix=/usr \ + --datadir=/usr/share \ + --enable-nonportable-atomics \ + --with-devrandom=/dev/urandom + make +} +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/apr/semtimedop-s390x.patch b/repo/apr/semtimedop-s390x.patch new file mode 100644 index 0000000..7c0d2cf --- /dev/null +++ b/repo/apr/semtimedop-s390x.patch @@ -0,0 +1,16 @@ +the testsuite hangs on s390x when testing locking mechanism sysvsem. Work +around by avoid use semtimedop for s390x. + +diff --git a/locks/unix/proc_mutex.c b/locks/unix/proc_mutex.c +index 8e2187f..cad6c4a 100644 +--- a/locks/unix/proc_mutex.c ++++ b/locks/unix/proc_mutex.c +@@ -449,7 +449,7 @@ static const apr_proc_mutex_unix_lock_methods_t mutex_sysv_methods = + proc_mutex_sysv_create, + proc_mutex_sysv_acquire, + proc_mutex_sysv_tryacquire, +-#if defined(HAVE_SEMTIMEDOP) ++#if defined(HAVE_SEMTIMEDOP) && !defined(__s390x__) + proc_mutex_sysv_timedacquire, + #else + proc_mutex_spinsleep_timedacquire, diff --git a/repo/argon2/argon2.xibuild b/repo/argon2/argon2.xibuild new file mode 100644 index 0000000..936794b --- /dev/null +++ b/repo/argon2/argon2.xibuild @@ -0,0 +1,22 @@ +#!/bin/sh + +NAME="argon2" +DESC="The password hash Argon2, winner of PHC" + +MAKEDEPS="" + +PKG_VER=20190702 +SOURCE="https://github.com/P-H-C/phc-winner-argon2/archive/$PKG_VER.tar.gz" + +build() { + make OPTTARGET=none ARGON2_VERSION=$PKG_VER +} + +check() { + make OPTTARGET=none test +} + +package() { + make OPTTARGET=none LIBRARY_REL=lib DESTDIR="$PKG_DEST" install +} + diff --git a/repo/box2d/box2d.xibuild b/repo/box2d/box2d.xibuild new file mode 100644 index 0000000..8723618 --- /dev/null +++ b/repo/box2d/box2d.xibuild @@ -0,0 +1,32 @@ +#!/bin/sh + +NAME="box2d" +DESC="2D Physics Engine for Games" + +MAKEDEPS="cmake doxygen libx11 libxcursor libxinerama libxrandr ninja" + +PKG_VER=2.4.1 +SOURCE="https://github.com/erincatto/box2d/archive/v$PKG_VER.tar.gz" + +build() { + cmake -B build \ + -GNinja \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DBUILD_SHARED_LIBS=ON \ + -DBOX2D_BUILD_DOCS=ON \ + -DBOX2D_BUILD_TESTBED=OFF \ + -DBOX2D_BUILD_UNIT_TESTS=ON + cmake --build build +} + +check() { + echo "Running unit_test" + build/bin/unit_test +} + +package() { + DESTDIR="$PKG_DEST" cmake --install build +} + diff --git a/repo/btrfs-progs/btrfs-progs.xibuild b/repo/btrfs-progs/btrfs-progs.xibuild new file mode 100644 index 0000000..7b80314 --- /dev/null +++ b/repo/btrfs-progs/btrfs-progs.xibuild @@ -0,0 +1,41 @@ +#!/bin/sh + +NAME="btrfs-progs" +DESC="BTRFS filesystem utilities" + +MAKEDEPS="linux-headers acl asciidoc attr autoconf automake e2fsprogs libtool lzo python util-linux xmlto zlib zstd eudev" + +PKG_VER=5.16.2 +SOURCE="https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v$PKG_VER.tar.xz" + +prepare() { + ./autogen.sh +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --disable-documentation \ + --disable-backtrace + make +} + +package() { + make -j1 DESTDIR="$PKG_DEST" install install_python + + mkdir -p "$PKG_DEST"/usr/share/doc/btrfs-progs + install -m644 README.md CHANGES \ + "$PKG_DEST"/usr/share/doc/btrfs-progs + + mkdir "$PKG_DEST"/sbin + local i; for i in btrfs btrfsck fsck.btrfs mkfs.btrfs; do + mv "$PKG_DEST"/usr/bin/$i "$PKG_DEST"/sbin/ + done + mv "$PKG_DEST"/usr/bin "$PKG_DEST"/usr/sbin + + install -Dm644 btrfs-completion \ + "$PKG_DEST"/usr/share/bash-completion/completions/btrfs +} diff --git a/repo/calf/calf.xibuild b/repo/calf/calf.xibuild new file mode 100644 index 0000000..1629a87 --- /dev/null +++ b/repo/calf/calf.xibuild @@ -0,0 +1,30 @@ +#!/bin/sh + +NAME="calf" +DESC="Calf Studio Gear" + +MAKEDEPS="autoconf automake expat fluidsynth gtk2 jack libtool lv2" + +PKG_VER=0.90.3 +SOURCE="http://calf-studio-gear.org/files/calf-$PKG_VER.tar.gz" + +prepare() { + autoreconf -vif +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/carla/carla.xibuild b/repo/carla/carla.xibuild new file mode 100644 index 0000000..77d8a7a --- /dev/null +++ b/repo/carla/carla.xibuild @@ -0,0 +1,19 @@ +#!/bin/sh + +NAME="carla" +DESC="Fully-featured audio plugin host" + +MAKEDEPS="alsa-lib file fluidsynth liblo libsndfile libx11 linux-headers pulseaudio qt5-qtbase qt5-qtsvg" + +PKG_VER=2.4.3 +SOURCE="https://github.com/falkTX/Carla/archive/refs/tags/v$PKG_VER.tar.gz" + +build() { + make features + make +} + +package() { + make install PREFIX=/usr DESTDIR="$PKG_DEST" +} + diff --git a/repo/ceph/10-musl-fixes.patch b/repo/ceph/10-musl-fixes.patch new file mode 100644 index 0000000..1b7c907 --- /dev/null +++ b/repo/ceph/10-musl-fixes.patch @@ -0,0 +1,15 @@ +fix for musl + +diff -Nurp a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc +--- a/src/tools/rbd_nbd/rbd-nbd.cc 2020-11-21 08:06:35.834423310 +0000 ++++ b/src/tools/rbd_nbd/rbd-nbd.cc 2020-11-21 08:21:12.067978842 +0000 +@@ -576,7 +576,8 @@ private: + for (unsigned i = 0; i < cmdline.size(); i++) { + char *arg = &cmdline[i]; + if (i == 0) { +- if (strcmp(basename(arg) , "rbd-nbd") != 0) { ++ const char *fname = strrchr(arg, '/'); ++ if (strcmp(fname ? fname+1 : arg, "rbd-nbd") != 0) { + return -EINVAL; + } + } else { diff --git a/repo/ceph/11-dump_time_header_impl.patch b/repo/ceph/11-dump_time_header_impl.patch new file mode 100644 index 0000000..d19e7ed --- /dev/null +++ b/repo/ceph/11-dump_time_header_impl.patch @@ -0,0 +1,34 @@ +Patch by Robin Mueller + +The strftime method of the libmusl writes 'UTC' instead of 'GMT' when +the character Z is used in the format pattern, and it looks like the +S3 clients don't like 'UTC' in the date strings. + +This patch replaces 'UTC' with 'GMT' at the relevant location. + +--- a/src/rgw/rgw_rest.cc 2021-07-08 16:03:56.000000000 +0200 ++++ b/src/rgw/rgw_rest.cc 2021-08-19 09:48:30.339492024 +0200 +@@ -436,8 +436,21 @@ + return 0; + } + +- return strftime(timestr, sizeof(timestr), +- "%a, %d %b %Y %H:%M:%S %Z", tmp); ++ size_t len = strftime(timestr, sizeof(timestr), ++ "%a, %d %b %Y %H:%M:%S %Z", tmp); ++ ++ int position = 0; ++ while (timestr[position] != 'U' && len - position > 3) ++ position++; ++ ++ if (len - position == 3) { ++ char substr[4]; ++ memcpy(substr, ×tr[position], 4); ++ ++ if (strcmp(substr, "UTC") == 0) ++ memcpy(×tr[position], "GMT", 3); ++ } ++ return len; + } + + void dump_time_header(struct req_state *s, const char *name, real_time t) diff --git a/repo/ceph/11-parse_rfc1123_alt.patch b/repo/ceph/11-parse_rfc1123_alt.patch new file mode 100644 index 0000000..5b54c4e --- /dev/null +++ b/repo/ceph/11-parse_rfc1123_alt.patch @@ -0,0 +1,53 @@ +Patch by Robin Mueller + +libmusl doesn't support the z character in the format pattern for strptime this +is a special functionality of glibc. + +patch is slightly adapted version of glibc code: +https://elixir.bootlin.com/glibc/latest/source/time/strptime_l.c#L776 + +--- a/src/rgw/rgw_common.cc 2021-07-08 16:03:56.000000000 +0200 ++++ b/src/rgw/rgw_common.cc 2021-08-18 13:08:22.938903459 +0200 +@@ -531,7 +531,41 @@ + { + // FIPS zeroization audit 20191115: this memset is not security related. + memset(t, 0, sizeof(*t)); +- return check_str_end(strptime(s, "%a, %d %b %Y %H:%M:%S %z", t)); ++ s = strptime(s, "%a, %d %b %Y %H:%M:%S", t); ++ if (s) { ++ s++; ++ int val; ++ val = 0; ++ while (isspace(*s)) ++ ++s; ++ if (*s == 'Z') { ++ ++s; ++ t->tm_gmtoff = 0; ++ } else { ++ if (*s != '+' && *s != '-') ++ return 0; ++ bool neg = *s++ == '-'; ++ int n = 0; ++ while (n < 4 && *s >= '0' && *s <= '9') { ++ val = val * 10 + *s++ - '0'; ++ ++n; ++ if (*s == ':' && n == 2 && isdigit (*(s + 1))) ++ ++s; ++ } ++ if (n == 2) ++ val *= 100; ++ else if (n != 4) ++ /* Only two or four digits recognized. */ ++ return 0; ++ else if (val % 100 >= 60) ++ /* Minutes valid range is 0 through 59. */ ++ return 0; ++ t->tm_gmtoff = (val / 100) * 3600 + (val % 100) * 60; ++ if (neg) ++ t->tm_gmtoff = -t->tm_gmtoff; ++ } ++ } ++ return check_str_end(s); + } + + bool parse_rfc2616(const char *s, struct tm *t) diff --git a/repo/ceph/11-s3_expiration_header.patch b/repo/ceph/11-s3_expiration_header.patch new file mode 100644 index 0000000..ac12a83 --- /dev/null +++ b/repo/ceph/11-s3_expiration_header.patch @@ -0,0 +1,30 @@ +Patch by Robin Mueller + +Fix musl date handling + +--- a/src/rgw/rgw_lc.cc 2021-09-16 16:27:19.000000000 +0200 ++++ b/src/rgw/rgw_lc.cc 2021-10-01 09:17:06.996639952 +0200 +@@ -2238,8 +2238,21 @@ + // Fri, 23 Dec 2012 00:00:00 GMT + char exp_buf[100]; + time_t exp = ceph::real_clock::to_time_t(*expiration_date); +- if (std::strftime(exp_buf, sizeof(exp_buf), +- "%a, %d %b %Y %T %Z", std::gmtime(&exp))) { ++ std::size_t len = std::strftime(exp_buf, sizeof(exp_buf), "%a, %d %b %Y %T %Z", std::gmtime(&exp)); ++ ++ if (len) { ++ int position = 0; ++ while (exp_buf[position] != 'U' && len - position > 3) ++ position++; ++ ++ if (len - position == 3) { ++ char substr[4]; ++ memcpy(substr, &exp_buf[position], 4); ++ ++ if (strcmp(substr, "UTC") == 0) ++ memcpy(&exp_buf[position], "GMT", 3); ++ } ++ + hdr = fmt::format("expiry-date=\"{0}\", rule-id=\"{1}\"", exp_buf, + *rule_id); + } else { diff --git a/repo/ceph/12-package.json-resolutions.patch b/repo/ceph/12-package.json-resolutions.patch new file mode 100644 index 0000000..ddc4ea2 --- /dev/null +++ b/repo/ceph/12-package.json-resolutions.patch @@ -0,0 +1,31 @@ +--- a/src/pybind/mgr/dashboard/CMakeLists.txt ++++ b/src/pybind/mgr/dashboard/CMakeLists.txt +@@ -76,7 +76,7 @@ + + add_npm_command( + OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/node_modules" +- COMMAND CYPRESS_CACHE_FOLDER=${CMAKE_SOURCE_DIR}/build/src/pybind/mgr/dashboard/cypress NG_CLI_ANALYTICS=false npm ci ${mgr-dashboard-userconfig} ++ COMMAND CYPRESS_CACHE_FOLDER=${CMAKE_SOURCE_DIR}/build/src/pybind/mgr/dashboard/cypress NG_CLI_ANALYTICS=false yarn install --network-timeout 600000 --frozen-lockfile ${mgr-dashboard-userconfig} + DEPENDS frontend/package.json + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend + COMMENT "dashboard frontend dependencies are being installed" +@@ -119,7 +119,7 @@ + + add_npm_command( + OUTPUT "${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend/dist" +- COMMAND DASHBOARD_FRONTEND_LANGS="${DASHBOARD_FRONTEND_LANGS}" npm run build:localize -- ${npm_args} ++ COMMAND DASHBOARD_FRONTEND_LANGS="${DASHBOARD_FRONTEND_LANGS}" yarn run build:localize ${npm_args} + DEPENDS ${frontend_src} frontend/node_modules + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/frontend + COMMENT "dashboard frontend is being created" +--- a/src/pybind/mgr/dashboard/frontend/package.json ++++ b/src/pybind/mgr/dashboard/frontend/package.json +@@ -142,8 +142,5 @@ + "ts-node": "9.0.0", + "tslint": "6.1.3", + "typescript": "4.1.6" +- }, +- "resolutions": { +- "fsevents": "2.1.3" + } + } diff --git a/repo/ceph/20-pci.patch b/repo/ceph/20-pci.patch new file mode 100644 index 0000000..c16e276 --- /dev/null +++ b/repo/ceph/20-pci.patch @@ -0,0 +1,63 @@ +Musl patch for pci + +diff -Nurp a/src/spdk/dpdk/drivers/bus/pci/linux/pci_uio.c b/src/spdk/dpdk/drivers/bus/pci/linux/pci_uio.c +--- a/src/spdk/dpdk/drivers/bus/pci/linux/pci_uio.c 2020-11-21 13:07:44.255206657 +0000 ++++ b/src/spdk/dpdk/drivers/bus/pci/linux/pci_uio.c 2020-11-21 13:04:06.488285583 +0000 +@@ -14,6 +14,32 @@ + + #if defined(RTE_ARCH_X86) + #include <sys/io.h> ++#if defined(__GLIBC__) ++#define pci_uio_outl_p outl_p ++#define pci_uio_outw_p outw_p ++#define pci_uio_outb_p outb_p ++#else ++static inline void ++pci_uio_outl_p(unsigned int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outl %0,%w1\noutb %%al,$0x80" : : "a" (value), ++ "Nd" (port)); ++} ++ ++static inline void ++pci_uio_outw_p(unsigned short int value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80" : : "a" (value), ++ "Nd" (port)); ++} ++ ++static inline void ++pci_uio_outb_p(unsigned char value, unsigned short int port) ++{ ++ __asm__ __volatile__ ("outb %b0,%w1\noutb %%al,$0x80" : : "a" (value), ++ "Nd" (port)); ++} ++#endif + #endif + + #include <rte_string_fns.h> +@@ -528,21 +554,21 @@ pci_uio_ioport_write(struct rte_pci_iopo + if (len >= 4) { + size = 4; + #if defined(RTE_ARCH_X86) +- outl_p(*(const uint32_t *)s, reg); ++ pci_uio_outl_p(*(const uint32_t *)s, reg); + #else + *(volatile uint32_t *)reg = *(const uint32_t *)s; + #endif + } else if (len >= 2) { + size = 2; + #if defined(RTE_ARCH_X86) +- outw_p(*(const uint16_t *)s, reg); ++ pci_uio_outw_p(*(const uint16_t *)s, reg); + #else + *(volatile uint16_t *)reg = *(const uint16_t *)s; + #endif + } else { + size = 1; + #if defined(RTE_ARCH_X86) +- outb_p(*s, reg); ++ pci_uio_outb_p(*s, reg); + #else + *(volatile uint8_t *)reg = *s; + #endif diff --git a/repo/ceph/30-32bit_fix.patch.noauto b/repo/ceph/30-32bit_fix.patch.noauto new file mode 100644 index 0000000..aba21d6 --- /dev/null +++ b/repo/ceph/30-32bit_fix.patch.noauto @@ -0,0 +1,110 @@ +32bit specific patches + +diff -uNr ceph-15.2.4/src/client/Client.cc ceph-15.2.4-arm32_fix/src/client/Client.cc +--- ceph-15.2.4/src/client/Client.cc 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-arm32_fix/src/client/Client.cc 2020-11-21 22:11:16.061796876 +1030 +@@ -10948,7 +10948,7 @@ + ldout(cct, 20) << __func__ << " " << in << " " << in->ino << " -> " << in->ll_ref << dendl; + } + +-int Client::_ll_put(Inode *in, uint64_t num) ++int Client::_ll_put(Inode *in, size_t num) + { + in->ll_put(num); + ldout(cct, 20) << __func__ << " " << in << " " << in->ino << " " << num << " -> " << in->ll_ref << dendl; +@@ -10989,7 +10989,7 @@ + } + } + +-bool Client::_ll_forget(Inode *in, uint64_t count) ++bool Client::_ll_forget(Inode *in, size_t count) + { + inodeno_t ino = in->ino; + +@@ -11018,7 +11018,7 @@ + return last; + } + +-bool Client::ll_forget(Inode *in, uint64_t count) ++bool Client::ll_forget(Inode *in, size_t count) + { + std::lock_guard lock(client_lock); + return _ll_forget(in, count); +diff -uNr ceph-15.2.4/src/mds/PurgeQueue.h ceph-15.2.4-arm32_fix/src/mds/PurgeQueue.h +--- ceph-15.2.4/src/mds/PurgeQueue.h 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-arm32_fix/src/mds/PurgeQueue.h 2020-11-21 22:11:16.065796889 +1030 +@@ -219,6 +219,6 @@ + size_t purge_item_journal_size; + + uint64_t ops_high_water = 0; +- uint64_t files_high_water = 0; ++ size_t files_high_water = 0; + }; + #endif +diff -uNr ceph-15.2.4/src/test/common/test_json_formattable.cc ceph-15.2.4-arm32_fix/src/test/common/test_json_formattable.cc +--- ceph-15.2.4/src/test/common/test_json_formattable.cc 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-arm32_fix/src/test/common/test_json_formattable.cc 2020-11-21 22:11:16.065796889 +1030 +@@ -371,7 +371,7 @@ + + struct2() { + void *p = (void *)this; +- long i = (long)p; ++ unsigned long i = (unsigned long)p; + v.resize((i >> 16) % 16 + 1); + } + +diff -uNr ceph-15.2.4/src/test/libcephfs/ceph_pthread_self.h ceph-15.2.4-arm32_fix/src/test/libcephfs/ceph_pthread_self.h +--- ceph-15.2.4/src/test/libcephfs/ceph_pthread_self.h 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-arm32_fix/src/test/libcephfs/ceph_pthread_self.h 2020-11-21 22:11:16.066796893 +1030 +@@ -25,7 +25,7 @@ + static_assert(std::is_convertible_v<decltype(me), uint64_t> || + std::is_pointer_v<decltype(me)>, + "we need to use pthread_self() for the owner parameter"); +- return reinterpret_cast<uint64_t>(me); ++ return reinterpret_cast<uint64_t>((uint64_t) me); + } + + #endif +diff -uNr ceph-15.2.4/src/test/rbd_mirror/image_deleter/test_mock_TrashWatcher.cc ceph-15.2.4-arm32_fix/src/test/rbd_mirror/image_deleter/test_mock_TrashWatcher.cc +--- ceph-15.2.4/src/test/rbd_mirror/image_deleter/test_mock_TrashWatcher.cc 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-arm32_fix/src/test/rbd_mirror/image_deleter/test_mock_TrashWatcher.cc 2020-11-21 22:11:16.066796893 +1030 +@@ -162,7 +162,7 @@ + int r) { + bufferlist bl; + encode(last_image_id, bl); +- encode(static_cast<size_t>(1024), bl); ++ encode(static_cast<uint64_t>(1024), bl); + + bufferlist out_bl; + encode(images, out_bl); +diff -Nurp a/src/client/Client.h b/src/client/Client.h +--- a/src/client/Client.h ++++ b/src/client/Client.h +@@ -525,7 +525,7 @@ + int ll_lookupx(Inode *parent, const char *name, Inode **out, + struct ceph_statx *stx, unsigned want, unsigned flags, + const UserPerm& perms); +- bool ll_forget(Inode *in, uint64_t count); ++ bool ll_forget(Inode *in, size_t count); + bool ll_put(Inode *in); + int ll_get_snap_ref(snapid_t snap); + +@@ -1241,7 +1241,7 @@ + void _fragmap_remove_stopped_mds(Inode *in, mds_rank_t mds); + + void _ll_get(Inode *in); +- int _ll_put(Inode *in, uint64_t num); ++ int _ll_put(Inode *in, size_t num); + void _ll_drop_pins(); + + Fh *_create_fh(Inode *in, int flags, int cmode, const UserPerm& perms); +@@ -1405,7 +1405,7 @@ + int _lookup_parent(Inode *in, const UserPerm& perms, Inode **parent=NULL); + int _lookup_name(Inode *in, Inode *parent, const UserPerm& perms); + int _lookup_vino(vinodeno_t ino, const UserPerm& perms, Inode **inode=NULL); +- bool _ll_forget(Inode *in, uint64_t count); ++ bool _ll_forget(Inode *in, size_t count); + + void collect_and_send_metrics(); + void collect_and_send_global_metrics(); + diff --git a/repo/ceph/30-cypress.patch.noauto b/repo/ceph/30-cypress.patch.noauto new file mode 100644 index 0000000..fecf055 --- /dev/null +++ b/repo/ceph/30-cypress.patch.noauto @@ -0,0 +1,14 @@ +remove cypress as not availiable on 32bit platforms + +diff -Nurp a/src/pybind/mgr/dashboard/frontend/package.json b/src/pybind/mgr/dashboard/frontend/package.json +--- a/src/pybind/mgr/dashboard/frontend/package.json 2021-04-03 08:58:07.611941559 +0100 ++++ b/src/pybind/mgr/dashboard/frontend/package.json 2021-04-03 08:59:13.903122038 +0100 +@@ -119,8 +119,6 @@ + "@types/node": "12.12.62", + "@types/simplebar": "5.1.1", + "codelyzer": "6.0.1", +- "cypress": "5.3.0", +- "cypress-multi-reporters": "1.4.0", + "html-linter": "1.1.1", + "htmllint-cli": "0.0.7", + "identity-obj-proxy": "3.0.0", diff --git a/repo/ceph/30-ubuntu-32bit-fixes.patch.noauto b/repo/ceph/30-ubuntu-32bit-fixes.patch.noauto new file mode 100644 index 0000000..9b9318d --- /dev/null +++ b/repo/ceph/30-ubuntu-32bit-fixes.patch.noauto @@ -0,0 +1,137 @@ +Description: Misc fixes for 32 bit architecture builds. +Author: James Page <james.page@ubuntu.com> +Forwarded: no + +--- a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc ++++ b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc +@@ -235,7 +235,8 @@ bool Replayer<I>::get_replay_status(std: + + json_spirit::mObject root_obj; + root_obj["replay_state"] = replay_state; +- root_obj["remote_snapshot_timestamp"] = remote_snap_info->timestamp.sec(); ++ root_obj["remote_snapshot_timestamp"] = static_cast<uint64_t>( ++ remote_snap_info->timestamp.sec()); + + auto matching_remote_snap_id = util::compute_remote_snap_id( + m_state_builder->local_image_ctx->image_lock, +@@ -249,8 +250,8 @@ bool Replayer<I>::get_replay_status(std: + // use the timestamp from the matching remote image since + // the local snapshot would just be the time the snapshot was + // synced and not the consistency point in time. +- root_obj["local_snapshot_timestamp"] = +- matching_remote_snap_it->second.timestamp.sec(); ++ root_obj["local_snapshot_timestamp"] = static_cast<uint64_t>( ++ matching_remote_snap_it->second.timestamp.sec()); + } + + matching_remote_snap_it = m_state_builder->remote_image_ctx->snap_info.find( +@@ -258,7 +259,8 @@ bool Replayer<I>::get_replay_status(std: + if (m_remote_snap_id_end != CEPH_NOSNAP && + matching_remote_snap_it != + m_state_builder->remote_image_ctx->snap_info.end()) { +- root_obj["syncing_snapshot_timestamp"] = remote_snap_info->timestamp.sec(); ++ root_obj["syncing_snapshot_timestamp"] = static_cast<uint64_t>( ++ remote_snap_info->timestamp.sec()); + root_obj["syncing_percent"] = static_cast<uint64_t>( + 100 * m_local_mirror_snap_ns.last_copied_object_number / + static_cast<float>(std::max<uint64_t>(1U, m_local_object_count))); +--- a/src/s3select/include/s3select_functions.h ++++ b/src/s3select/include/s3select_functions.h +@@ -585,7 +585,7 @@ struct _fn_diff_timestamp : public base_ + { + boost::gregorian::date_period dp = + boost::gregorian::date_period( val_dt1.timestamp()->date(), val_dt2.timestamp()->date()); +- result->set_value( dp.length().days() ); ++ result->set_value( (int64_t)dp.length().days() ); + } + else if (strcmp(val_date_part.str(), "hours") == 0) + { +--- a/src/os/bluestore/BlueFS.cc ++++ b/src/os/bluestore/BlueFS.cc +@@ -3744,11 +3744,11 @@ int BlueFS::do_replay_recovery_read(File + + size_t BlueFS::probe_alloc_avail(int dev, uint64_t alloc_size) + { +- size_t total = 0; +- auto iterated_allocation = [&](size_t off, size_t len) { ++ uint64_t total = 0; ++ auto iterated_allocation = [&](uint64_t off, uint64_t len) { + //only count in size that is alloc_size aligned +- size_t dist_to_alignment; +- size_t offset_in_block = off & (alloc_size - 1); ++ uint64_t dist_to_alignment; ++ uint64_t offset_in_block = off & (alloc_size - 1); + if (offset_in_block == 0) + dist_to_alignment = 0; + else +--- a/src/tools/neorados.cc ++++ b/src/tools/neorados.cc +@@ -146,7 +146,7 @@ void create(R::RADOS& r, const std::vect + obj, pname)); + } + +-inline constexpr std::size_t io_size = 4 << 20; ++inline constexpr std::uint64_t io_size = 4 << 20; + + void write(R::RADOS& r, const std::vector<std::string>& p, s::yield_context y) + { +@@ -156,7 +156,7 @@ void write(R::RADOS& r, const std::vecto + + bs::error_code ec; + std::unique_ptr<char[]> buf = std::make_unique<char[]>(io_size); +- std::size_t off = 0; ++ std::uint64_t off = 0; + boost::io::ios_exception_saver ies(std::cin); + + std::cin.exceptions(std::istream::badbit); +@@ -203,7 +203,7 @@ void read(R::RADOS& r, const std::vector + obj, pname)); + } + +- std::size_t off = 0; ++ std::uint64_t off = 0; + ceph::buffer::list bl; + while (auto toread = std::max(len - off, io_size)) { + R::ReadOp op; +--- a/src/tools/cephfs_mirror/FSMirror.cc ++++ b/src/tools/cephfs_mirror/FSMirror.cc +@@ -334,7 +334,7 @@ void FSMirror::handle_acquire_directory( + std::scoped_lock locker(m_lock); + m_directories.emplace(dir_path); + m_service_daemon->add_or_update_fs_attribute(m_filesystem.fscid, SERVICE_DAEMON_DIR_COUNT_KEY, +- m_directories.size()); ++ static_cast<uint64_t>(m_directories.size())); + + for (auto &[peer, peer_replayer] : m_peer_replayers) { + dout(10) << ": peer=" << peer << dendl; +@@ -352,7 +352,7 @@ void FSMirror::handle_release_directory( + if (it != m_directories.end()) { + m_directories.erase(it); + m_service_daemon->add_or_update_fs_attribute(m_filesystem.fscid, SERVICE_DAEMON_DIR_COUNT_KEY, +- m_directories.size()); ++ static_cast<uint64_t>(m_directories.size())); + for (auto &[peer, peer_replayer] : m_peer_replayers) { + dout(10) << ": peer=" << peer << dendl; + peer_replayer->remove_directory(dir_path); +--- a/src/librbd/object_map/DiffRequest.cc ++++ b/src/librbd/object_map/DiffRequest.cc +@@ -175,7 +175,7 @@ void DiffRequest<I>::handle_load_object_ + m_object_map.resize(num_objs); + } + +- size_t prev_object_diff_state_size = m_object_diff_state->size(); ++ uint64_t prev_object_diff_state_size = m_object_diff_state->size(); + if (prev_object_diff_state_size < num_objs) { + // the diff state should be the largest of all snapshots in the set + m_object_diff_state->resize(num_objs); +--- a/src/SimpleRADOSStriper.cc ++++ b/src/SimpleRADOSStriper.cc +@@ -140,7 +140,7 @@ int SimpleRADOSStriper::remove() + return 0; + } + +-int SimpleRADOSStriper::truncate(uint64_t size) ++int SimpleRADOSStriper::truncate(size_t size) + { + d(5) << size << dendl; + diff --git a/repo/ceph/31-32bit_fix_tests.patch.noauto b/repo/ceph/31-32bit_fix_tests.patch.noauto new file mode 100644 index 0000000..939c550 --- /dev/null +++ b/repo/ceph/31-32bit_fix_tests.patch.noauto @@ -0,0 +1,66 @@ +--- a/src/test/objectstore/test_bdev.cc ++++ b/src/test/objectstore/test_bdev.cc +@@ -54,8 +54,8 @@ + BlockDevice::create(g_ceph_context, bdev.path, NULL, NULL, + [](void* handle, void* aio) {}, NULL)); + bufferlist bl; +- // writing a bit less than 4GB +- for (auto i = 0; i < 4000; i++) { ++ // writing a bit less than 1GB ++ for (auto i = 0; i < 1000; i++) { + string s(1048576, 'a' + (i % 28)); + bl.append(s); + } +--- a/src/test/objectstore/test_bluefs.cc ++++ b/src/test/objectstore/test_bluefs.cc +@@ -237,7 +237,7 @@ + } + + TEST(BlueFS, very_large_write) { +- // we'll write a ~5G file, so allocate more than that for the whole fs ++ // we'll write a ~1G file, so allocate more than that for the whole fs + uint64_t size = 1048576 * 1024 * 6ull; + TempBdev bdev{size}; + BlueFS fs(g_ceph_context); +@@ -260,12 +260,12 @@ + BlueFS::FileWriter *h; + ASSERT_EQ(0, fs.mkdir("dir")); + ASSERT_EQ(0, fs.open_for_write("dir", "bigfile", &h, false)); +- for (unsigned i = 0; i < 3*1024*1048576ull / sizeof(buf); ++i) { ++ for (unsigned i = 0; i < 1*1024*1048576ull / sizeof(buf); ++i) { + h->append(buf, sizeof(buf)); + total_written += sizeof(buf); + } + fs.fsync(h); +- for (unsigned i = 0; i < 2*1024*1048576ull / sizeof(buf); ++i) { ++ for (unsigned i = 0; i < 1*1024*1048576ull / sizeof(buf); ++i) { + h->append(buf, sizeof(buf)); + total_written += sizeof(buf); + } +@@ -278,7 +278,7 @@ + bufferlist bl; + BlueFS::FileReaderBuffer readbuf(10485760); + ASSERT_EQ(h->file->fnode.size, total_written); +- for (unsigned i = 0; i < 3*1024*1048576ull / sizeof(buf); ++i) { ++ for (unsigned i = 0; i < 1*1024*1048576ull / sizeof(buf); ++i) { + bl.clear(); + fs.read(h, &readbuf, i * sizeof(buf), sizeof(buf), &bl, NULL); + int r = memcmp(buf, bl.c_str(), sizeof(buf)); +@@ -288,7 +288,7 @@ + } + ASSERT_EQ(0, r); + } +- for (unsigned i = 0; i < 2*1024*1048576ull / sizeof(buf); ++i) { ++ for (unsigned i = 0; i < 1*1024*1048576ull / sizeof(buf); ++i) { + bl.clear(); + fs.read(h, &readbuf, i * sizeof(buf), sizeof(buf), &bl, NULL); + int r = memcmp(buf, bl.c_str(), sizeof(buf)); +@@ -313,7 +313,7 @@ + } + + TEST(BlueFS, very_large_write2) { +- // we'll write a ~5G file, so allocate more than that for the whole fs ++ // we'll write a ~1G file, so allocate more than that for the whole fs + uint64_t size_full = 1048576 * 1024 * 6ull; + uint64_t size = 1048576 * 1024 * 5ull; + TempBdev bdev{ size_full }; diff --git a/repo/ceph/32-PurgeQueue.cc-cast.patch b/repo/ceph/32-PurgeQueue.cc-cast.patch new file mode 100644 index 0000000..19a0719 --- /dev/null +++ b/repo/ceph/32-PurgeQueue.cc-cast.patch @@ -0,0 +1,85 @@ +Submitted as: https://github.com/ceph/ceph/pull/41235 + +commit 953e7dc0f911f84a4bb377aee45b22e2ffad6867 +Author: Duncan Bellamy <dunk@denkimushi.com> +Date: Sat May 8 11:52:35 2021 +0100 + + mds: PurgeQueue.cc add static cast for 32bit compilation + + files_high_water is defined as uint64_t but when compiling on 32bit these max functions + fail as they are both not considered uint64_t by gcc 10 even though they are + + files_high_water = std::max(files_high_water, + static_cast<uint64_t>(in_flight.size())); + + Fixes: https://tracker.ceph.com/issues/50707 + + Signed-off-by: Duncan Bellamy <dunk@denkimushi.com> + +diff --git a/src/mds/PurgeQueue.cc b/src/mds/PurgeQueue.cc +index 977be2c118..3104a3ccc4 100644 +--- a/src/mds/PurgeQueue.cc ++++ b/src/mds/PurgeQueue.cc +@@ -7,9 +7,9 @@ + * + * This is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +- * License version 2.1, as published by the Free Software ++ * License version 2.1, as published by the Free Software + * Foundation. See file COPYING. +- * ++ * + */ + + #include "common/debug.h" +@@ -594,8 +594,8 @@ void PurgeQueue::_execute_item( + + in_flight[expire_to] = item; + logger->set(l_pq_executing, in_flight.size()); +- files_high_water = std::max(files_high_water, +- static_cast<uint64_t>(in_flight.size())); ++ files_high_water = std::max<uint64_t>(files_high_water, ++ in_flight.size()); + logger->set(l_pq_executing_high_water, files_high_water); + auto ops = _calculate_ops(item); + ops_in_flight += ops; +@@ -662,8 +662,8 @@ void PurgeQueue::_execute_item( + logger->set(l_pq_executing_ops_high_water, ops_high_water); + in_flight.erase(expire_to); + logger->set(l_pq_executing, in_flight.size()); +- files_high_water = std::max(files_high_water, +- static_cast<uint64_t>(in_flight.size())); ++ files_high_water = std::max<uint64_t>(files_high_water, ++ in_flight.size()); + logger->set(l_pq_executing_high_water, files_high_water); + return; + } +@@ -716,19 +716,19 @@ void PurgeQueue::_execute_item_complete( + + in_flight.erase(iter); + logger->set(l_pq_executing, in_flight.size()); +- files_high_water = std::max(files_high_water, +- static_cast<uint64_t>(in_flight.size())); ++ files_high_water = std::max<uint64_t>(files_high_water, ++ in_flight.size()); + logger->set(l_pq_executing_high_water, files_high_water); + dout(10) << "in_flight.size() now " << in_flight.size() << dendl; + +- uint64_t write_pos = journaler.get_write_pos(); +- uint64_t read_pos = journaler.get_read_pos(); +- uint64_t expire_pos = journaler.get_expire_pos(); +- uint64_t item_num = (write_pos - (in_flight.size() ? expire_pos : read_pos)) ++ uint64_t write_pos = journaler.get_write_pos(); ++ uint64_t read_pos = journaler.get_read_pos(); ++ uint64_t expire_pos = journaler.get_expire_pos(); ++ uint64_t item_num = (write_pos - (in_flight.size() ? expire_pos : read_pos)) + / purge_item_journal_size; +- dout(10) << "left purge items in journal: " << item_num +- << " (purge_item_journal_size/write_pos/read_pos/expire_pos) now at " +- << "(" << purge_item_journal_size << "/" << write_pos << "/" << read_pos ++ dout(10) << "left purge items in journal: " << item_num ++ << " (purge_item_journal_size/write_pos/read_pos/expire_pos) now at " ++ << "(" << purge_item_journal_size << "/" << write_pos << "/" << read_pos + << "/" << expire_pos << ")" << dendl; + + logger->set(l_pq_item_in_journal, item_num); diff --git a/repo/ceph/32-upstream32bit.patch b/repo/ceph/32-upstream32bit.patch new file mode 100644 index 0000000..917cd03 --- /dev/null +++ b/repo/ceph/32-upstream32bit.patch @@ -0,0 +1,92 @@ +commit 72a5993da70955182a73755ddba35005a6d9fc11 +Author: Kefu Chai <kchai@redhat.com> +Date: Tue Apr 27 18:24:24 2021 +0800 + + cls/rbd, librbd: use uint64_t for sparse_size + + the size of `size_t` is varies from architecture to architecture. the + C++ standard only requires it to be able to represent the maximum possible + size of object of any type. on 32-bit architectures, it's very likely a + 32-bit unsigned integer. to ensure the interoperability between the + 64-bit systems and 32-bit systems, we should use a type with explicitly + defined size. + + also, we don't define the dencoder for size_t. so on systems where + size_t is not backed by uint32_t or uint64_t, the tree does not compile. + + in this change, use uint64_t for sparse_size. and leave + `C_SparsifyObject::m_sparse_size` intact. as the latter should be able + to be promoted to uint64_t when necessary. + + this change is backward compatible on 64-bit systems. + + Signed-off-by: Kefu Chai <kchai@redhat.com> + +diff --git a/src/cls/rbd/cls_rbd.cc b/src/cls/rbd/cls_rbd.cc +index 33910b7df5..e3e05d85ed 100644 +--- a/src/cls/rbd/cls_rbd.cc ++++ b/src/cls/rbd/cls_rbd.cc +@@ -7996,7 +7996,7 @@ int namespace_list(cls_method_context_t hctx, bufferlist *in, bufferlist *out) + */ + int sparsify(cls_method_context_t hctx, bufferlist *in, bufferlist *out) + { +- size_t sparse_size; ++ uint64_t sparse_size; + bool remove_empty; + try { + auto iter = in->cbegin(); +diff --git a/src/cls/rbd/cls_rbd_client.cc b/src/cls/rbd/cls_rbd_client.cc +index cefa1fed79..fee3ac8923 100644 +--- a/src/cls/rbd/cls_rbd_client.cc ++++ b/src/cls/rbd/cls_rbd_client.cc +@@ -2974,7 +2974,7 @@ int namespace_list(librados::IoCtx *ioctx, + return namespace_list_finish(&iter, entries); + } + +-void sparsify(librados::ObjectWriteOperation *op, size_t sparse_size, ++void sparsify(librados::ObjectWriteOperation *op, uint64_t sparse_size, + bool remove_empty) + { + bufferlist bl; +@@ -2983,7 +2983,7 @@ void sparsify(librados::ObjectWriteOperation *op, size_t sparse_size, + op->exec("rbd", "sparsify", bl); + } + +-int sparsify(librados::IoCtx *ioctx, const std::string &oid, size_t sparse_size, ++int sparsify(librados::IoCtx *ioctx, const std::string &oid, uint64_t sparse_size, + bool remove_empty) + { + librados::ObjectWriteOperation op; +diff --git a/src/cls/rbd/cls_rbd_client.h b/src/cls/rbd/cls_rbd_client.h +index 12b34c4832..ef2b05fd84 100644 +--- a/src/cls/rbd/cls_rbd_client.h ++++ b/src/cls/rbd/cls_rbd_client.h +@@ -652,9 +652,9 @@ int sparse_copyup(librados::IoCtx *ioctx, const std::string &oid, + const std::map<uint64_t, uint64_t> &extent_map, + ceph::buffer::list data); + +-void sparsify(librados::ObjectWriteOperation *op, size_t sparse_size, ++void sparsify(librados::ObjectWriteOperation *op, uint64_t sparse_size, + bool remove_empty); +-int sparsify(librados::IoCtx *ioctx, const std::string &oid, size_t sparse_size, ++int sparsify(librados::IoCtx *ioctx, const std::string &oid, uint64_t sparse_size, + bool remove_empty); + + } // namespace cls_client +diff --git a/src/librbd/WatchNotifyTypes.h b/src/librbd/WatchNotifyTypes.h +index ca0b40f28f..4fad31ffac 100644 +--- a/src/librbd/WatchNotifyTypes.h ++++ b/src/librbd/WatchNotifyTypes.h +@@ -410,10 +410,10 @@ struct MigratePayload : public AsyncRequestPayloadBase { + }; + + struct SparsifyPayload : public AsyncRequestPayloadBase { +- size_t sparse_size = 0; ++ uint64_t sparse_size = 0; + + SparsifyPayload() {} +- SparsifyPayload(const AsyncRequestId &id, size_t sparse_size) ++ SparsifyPayload(const AsyncRequestId &id, uint64_t sparse_size) + : AsyncRequestPayloadBase(id), sparse_size(sparse_size) { + } + diff --git a/repo/ceph/32-upstream32bitcleanup.patch b/repo/ceph/32-upstream32bitcleanup.patch new file mode 100644 index 0000000..1fe036e --- /dev/null +++ b/repo/ceph/32-upstream32bitcleanup.patch @@ -0,0 +1,143 @@ +submitted as https://github.com/ceph/ceph/pull/41239 + +commit 558adef26a2149b0dd644a2c9a7e2db8d370b556 +Author: Kefu Chai <kchai@redhat.com> +Date: Sat May 8 21:02:54 2021 +0800 + + librbd/deep_copy: cast uint64_t to size_t for constructing SparseBufferlistExtent + + SparseBufferlistExtent's ctor accepts size_t, so, on a 32-bit platform, + the parameter would be narrowed before passing to the ctor, and GCC + complains at seeing this: + + /builds/a16bitsysop/aports/community/ceph/src/ceph-16.2.3/src/librbd/deep_copy/ObjectCopyRequest.cc:789:60: warning: narrowing conversion of 'object_extent.striper::LightweightObjectExtent::length' + from 'uint64_t' {aka 'long long unsigned int'} to 'size_t' {aka 'unsigned int'} [-Wnarrowing] + 789 | {io::SPARSE_EXTENT_STATE_ZEROED, object_extent.length}); + | ~~~~~~~~~~~~~~^~~~~~ + + this change make this cast explicit and silences the warning. + + Signed-off-by: Kefu Chai <kchai@redhat.com> + +diff --git a/src/librbd/deep_copy/ObjectCopyRequest.cc b/src/librbd/deep_copy/ObjectCopyRequest.cc +index e86ed5ea1c..efc6749536 100644 +--- a/src/librbd/deep_copy/ObjectCopyRequest.cc ++++ b/src/librbd/deep_copy/ObjectCopyRequest.cc +@@ -614,7 +614,8 @@ void ObjectCopyRequest<I>::merge_write_ops() { + + m_snapshot_sparse_bufferlist[src_snap_seq].insert( + object_extent.offset, object_extent.length, +- {io::SPARSE_EXTENT_STATE_DATA, object_extent.length,\ ++ {io::SPARSE_EXTENT_STATE_DATA, ++ static_cast<size_t>(object_extent.length), + std::move(sub_bl)}); + + buffer_offset += object_extent.length; +diff --git a/src/librbd/io/CopyupRequest.cc b/src/librbd/io/CopyupRequest.cc +index d70851409f..a3af713151 100644 +--- a/src/librbd/io/CopyupRequest.cc ++++ b/src/librbd/io/CopyupRequest.cc +@@ -711,7 +711,9 @@ int CopyupRequest<I>::prepare_copyup_data() { + + sparse_bufferlist.insert( + object_offset, object_length, +- {SPARSE_EXTENT_STATE_DATA, object_length, std::move(sub_bl)}); ++ {SPARSE_EXTENT_STATE_DATA, ++ static_cast<size_t>(object_length), ++ std::move(sub_bl)}); + } + } else { + // copyup that will concurrently written to the HEAD revision with the +commit 130fdf7bcfd2b4c5a5b34809952b69b70e9c11a4 +Author: Kefu Chai <kchai@redhat.com> +Date: Sat May 8 20:59:07 2021 +0800 + + mgr/PyModule: use Py_ssize_t for the PyList index + + also silences the warnings like: + + mgr/PyModule.cc:574:30: warning: comparison of integer expressions of different signedness: 'unsigned int' and 'Py_ssize_t' {aka 'int'} [-Wsign-compare] + 574 | for (unsigned i = 0; i < PyList_Size(p); ++i) { + | ~~^~~~~~~~~~~~~~~~ + + Signed-off-by: Kefu Chai <kchai@redhat.com> + +diff --git a/src/mgr/PyModule.cc b/src/mgr/PyModule.cc +index 28c76fe7ed..ff1ff85e7e 100644 +--- a/src/mgr/PyModule.cc ++++ b/src/mgr/PyModule.cc +@@ -562,7 +562,7 @@ int PyModule::load_options() + } + p = PyDict_GetItemString(pOption, "enum_allowed"); + if (p && PyObject_TypeCheck(p, &PyList_Type)) { +- for (unsigned i = 0; i < PyList_Size(p); ++i) { ++ for (Py_ssize_t i = 0; i < PyList_Size(p); ++i) { + auto q = PyList_GetItem(p, i); + if (q) { + auto r = PyObject_Str(q); +@@ -573,7 +573,7 @@ int PyModule::load_options() + } + p = PyDict_GetItemString(pOption, "see_also"); + if (p && PyObject_TypeCheck(p, &PyList_Type)) { +- for (unsigned i = 0; i < PyList_Size(p); ++i) { ++ for (Py_ssize_t i = 0; i < PyList_Size(p); ++i) { + auto q = PyList_GetItem(p, i); + if (q && PyObject_TypeCheck(q, &PyUnicode_Type)) { + option.see_also.insert(PyUnicode_AsUTF8(q)); +@@ -582,7 +582,7 @@ int PyModule::load_options() + } + p = PyDict_GetItemString(pOption, "tags"); + if (p && PyObject_TypeCheck(p, &PyList_Type)) { +- for (unsigned i = 0; i < PyList_Size(p); ++i) { ++ for (Py_ssize_t i = 0; i < PyList_Size(p); ++i) { + auto q = PyList_GetItem(p, i); + if (q && PyObject_TypeCheck(q, &PyUnicode_Type)) { + option.tags.insert(PyUnicode_AsUTF8(q)); +commit 3bf4b32c9bd15652b24bc4b8c8ea07fb6bb04357 +Author: Kefu Chai <kchai@redhat.com> +Date: Sat May 8 20:51:19 2021 +0800 + + os/bluestore: print size_t using %xz + + we cannot assume that size_t is an alias of "long" + + Signed-off-by: Kefu Chai <kchai@redhat.com> + +diff --git a/src/os/bluestore/Allocator.cc b/src/os/bluestore/Allocator.cc +index 75f3172ca5..3428545414 100644 +--- a/src/os/bluestore/Allocator.cc ++++ b/src/os/bluestore/Allocator.cc +@@ -81,8 +81,8 @@ public: + f->open_object_section("free"); + char off_hex[30]; + char len_hex[30]; +- snprintf(off_hex, sizeof(off_hex) - 1, "0x%lx", off); +- snprintf(len_hex, sizeof(len_hex) - 1, "0x%lx", len); ++ snprintf(off_hex, sizeof(off_hex) - 1, "0x%zx", off); ++ snprintf(len_hex, sizeof(len_hex) - 1, "0x%zx", len); + f->dump_string("offset", off_hex); + f->dump_string("length", len_hex); + f->close_section(); +commit 3af466ee84209896f8671046c837350e736f15de +Author: Kefu Chai <kchai@redhat.com> +Date: Sat May 8 20:50:08 2021 +0800 + + client: print int64_t using PRId64 + + we cannot assume that int64_t is an alias of "long" + + Signed-off-by: Kefu Chai <kchai@redhat.com> + +diff --git a/src/client/Client.cc b/src/client/Client.cc +index acdd8f0934..7352824f6c 100644 +--- a/src/client/Client.cc ++++ b/src/client/Client.cc +@@ -12772,7 +12772,7 @@ size_t Client::_vxattrcb_cluster_fsid(Inode *in, char *val, size_t size) + size_t Client::_vxattrcb_client_id(Inode *in, char *val, size_t size) + { + auto name = messenger->get_myname(); +- return snprintf(val, size, "%s%ld", name.type_str(), name.num()); ++ return snprintf(val, size, "%s%" PRId64, name.type_str(), name.num()); + } + + #define CEPH_XATTR_NAME(_type, _name) "ceph." #_type "." #_name diff --git a/repo/ceph/35-fix_ErasureCodeShec.patch b/repo/ceph/35-fix_ErasureCodeShec.patch new file mode 100644 index 0000000..0ab2cc2 --- /dev/null +++ b/repo/ceph/35-fix_ErasureCodeShec.patch @@ -0,0 +1,17 @@ +patch by Vladimir Bashkirtsev + +diff -uNr ceph-15.2.4/src/erasure-code/shec/ErasureCodeShec.cc ceph-15.2.4-fix_ErasureCodeShec/src/erasure-code/shec/ErasureCodeShec.cc +--- ceph-15.2.4/src/erasure-code/shec/ErasureCodeShec.cc 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-fix_ErasureCodeShec/src/erasure-code/shec/ErasureCodeShec.cc 2020-11-14 00:46:20.029488684 +1030 +@@ -197,7 +197,10 @@ + } + unsigned int k = get_data_chunk_count(); + unsigned int m = get_chunk_count() - k; +- unsigned blocksize = (*chunks.begin()).second.length(); ++ unsigned blocksize = 0; ++ if (chunks.size() > 0) { ++ blocksize = (*chunks.begin()).second.length(); ++ } + for (unsigned int i = 0; i < k + m; i++) { + if (chunks.find(i) == chunks.end()) { + bufferlist tmp; diff --git a/repo/ceph/37-fix_tests.patch b/repo/ceph/37-fix_tests.patch new file mode 100644 index 0000000..169f6ef --- /dev/null +++ b/repo/ceph/37-fix_tests.patch @@ -0,0 +1,86 @@ +patch by Vladimir Bashkirtsev +increase timeouts for armv7 ci + +diff -uNr ceph-15.2.4/src/test/CMakeLists.txt ceph-15.2.4-fix_tests/src/test/CMakeLists.txt +--- ceph-15.2.4/src/test/CMakeLists.txt 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-fix_tests/src/test/CMakeLists.txt 2020-11-08 17:37:15.788767448 +1030 +@@ -528,11 +528,17 @@ + # Run rbd-unit-tests separate so they an run in parallel + # For values see: src/include/rbd/features.h + add_ceph_test(run-rbd-unit-tests-N.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh N) ++ set_tests_properties(run-rbd-unit-tests-N.sh PROPERTIES TIMEOUT 7200) + add_ceph_test(run-rbd-unit-tests-0.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh 0) ++ set_tests_properties(run-rbd-unit-tests-0.sh PROPERTIES TIMEOUT 7200) + add_ceph_test(run-rbd-unit-tests-1.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh 1) ++ set_tests_properties(run-rbd-unit-tests-1.sh PROPERTIES TIMEOUT 7200) + add_ceph_test(run-rbd-unit-tests-61.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh 61) ++ set_tests_properties(run-rbd-unit-tests-61.sh PROPERTIES TIMEOUT 7200) + add_ceph_test(run-rbd-unit-tests-109.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh 109) ++ set_tests_properties(run-rbd-unit-tests-109.sh PROPERTIES TIMEOUT 7200) + add_ceph_test(run-rbd-unit-tests-127.sh ${CMAKE_CURRENT_SOURCE_DIR}/run-rbd-unit-tests.sh 127) ++ set_tests_properties(run-rbd-unit-tests-127.sh PROPERTIES TIMEOUT 7200) + if(FREEBSD) + add_ceph_test(rbd-ggate.sh ${CMAKE_CURRENT_SOURCE_DIR}/rbd-ggate.sh) + endif(FREEBSD) +@@ -546,6 +552,7 @@ + #add_ceph_test(test_pidfile.sh ${CMAKE_CURRENT_SOURCE_DIR}/test_pidfile.sh) + + add_ceph_test(smoke.sh ${CMAKE_CURRENT_SOURCE_DIR}/smoke.sh) ++set_tests_properties(smoke.sh PROPERTIES TIMEOUT 14400) + + set_property( + TEST ${tox_tests} +diff -uNr ceph-15.2.4/src/test/encoding/CMakeLists.txt ceph-15.2.4-fix_tests/src/test/encoding/CMakeLists.txt +--- ceph-15.2.4/src/test/encoding/CMakeLists.txt 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-fix_tests/src/test/encoding/CMakeLists.txt 2020-11-08 17:37:15.789767451 +1030 +@@ -1,3 +1,5 @@ + # scripts + add_ceph_test(check-generated.sh ${CMAKE_CURRENT_SOURCE_DIR}/check-generated.sh) ++set_tests_properties(check-generated.sh PROPERTIES TIMEOUT 18000) + add_ceph_test(readable.sh ${CMAKE_CURRENT_SOURCE_DIR}/readable.sh) ++set_tests_properties(readable.sh PROPERTIES TIMEOUT 18000) +diff -uNr ceph-15.2.4/src/test/mgr/CMakeLists.txt ceph-15.2.4-fix_tests/src/test/mgr/CMakeLists.txt +--- ceph-15.2.4/src/test/mgr/CMakeLists.txt 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-fix_tests/src/test/mgr/CMakeLists.txt 2020-11-08 17:37:15.790767454 +1030 +@@ -9,6 +9,7 @@ + if(WITH_MGR_DASHBOARD_FRONTEND) + if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM") + add_ceph_test(mgr-dashboard-frontend-unittests ${CMAKE_SOURCE_DIR}/src/pybind/mgr/dashboard/run-frontend-unittests.sh) ++ set_tests_properties(mgr-dashboard-frontend-unittests PROPERTIES TIMEOUT 72000) + endif(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64|arm|ARM") + + add_ceph_test(mgr-dashboard-smoke.sh ${CMAKE_CURRENT_SOURCE_DIR}/mgr-dashboard-smoke.sh) +diff -uNr ceph-15.2.4/src/test/objectstore/CMakeLists.txt ceph-15.2.4-fix_tests/src/test/objectstore/CMakeLists.txt +--- ceph-15.2.4/src/test/objectstore/CMakeLists.txt 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-fix_tests/src/test/objectstore/CMakeLists.txt 2020-11-08 17:37:15.791767457 +1030 +@@ -131,6 +131,7 @@ + test_bluefs.cc + ) + add_ceph_unittest(unittest_bluefs) ++ set_tests_properties(unittest_bluefs PROPERTIES TIMEOUT 7200) + target_link_libraries(unittest_bluefs os global) + + # unittest_bluestore_types +diff -uNr ceph-15.2.4/src/test/osd/CMakeLists.txt ceph-15.2.4-fix_tests/src/test/osd/CMakeLists.txt +--- ceph-15.2.4/src/test/osd/CMakeLists.txt 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-fix_tests/src/test/osd/CMakeLists.txt 2020-11-08 17:41:54.515606236 +1030 +@@ -35,6 +35,7 @@ + + # scripts + add_ceph_test(safe-to-destroy.sh ${CMAKE_CURRENT_SOURCE_DIR}/safe-to-destroy.sh) ++set_tests_properties(safe-to-destroy.sh PROPERTIES TIMEOUT 7200) + + # unittest_osdmap + add_executable(unittest_osdmap +diff -uNr ceph-15.2.4/src/test/osd/TestOSDScrub.cc ceph-15.2.4-fix_tests/src/test/osd/TestOSDScrub.cc +--- ceph-15.2.4/src/test/osd/TestOSDScrub.cc 2020-07-01 01:10:51.000000000 +0930 ++++ ceph-15.2.4-fix_tests/src/test/osd/TestOSDScrub.cc 2020-11-08 17:37:15.793767463 +1030 +@@ -70,7 +70,7 @@ + g_ceph_context->_conf.set_val("osd_scrub_begin_hour", "0"); + g_ceph_context->_conf.set_val("osd_scrub_end_hour", "24"); + g_ceph_context->_conf.apply_changes(nullptr); +- tm tm; ++ tm tm = {0}; + tm.tm_isdst = -1; + strptime("2015-01-16 12:05:13", "%Y-%m-%d %H:%M:%S", &tm); + utime_t now = utime_t(mktime(&tm), 0); diff --git a/repo/ceph/42-no-virtualenvs.patch b/repo/ceph/42-no-virtualenvs.patch new file mode 100644 index 0000000..541b338 --- /dev/null +++ b/repo/ceph/42-no-virtualenvs.patch @@ -0,0 +1,71 @@ +based on gentoo patch +use system node instead of nodeenv installing one as only availiable for x86 with musl + +--- a/cmake/modules/AddCephTest.cmake ++++ b/cmake/modules/AddCephTest.cmake +@@ -68,14 +68,6 @@ + endif() + string(REPLACE ";" "," tox_envs "${tox_envs}") + find_package(Python3 QUIET REQUIRED) +- add_custom_command( +- OUTPUT ${venv_path}/bin/activate +- COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python="${Python3_EXECUTABLE}" ${venv_path} +- WORKING_DIRECTORY ${tox_path} +- COMMENT "preparing venv for ${name}") +- add_custom_target(${name}-venv +- DEPENDS ${venv_path}/bin/activate) +- add_dependencies(tests ${name}-venv) + add_test( + NAME ${test_name} + COMMAND ${CMAKE_SOURCE_DIR}/src/script/run_tox.sh +--- a/src/ceph-volume/CMakeLists.txt ++++ b/src/ceph-volume/CMakeLists.txt +@@ -8,22 +8,6 @@ + add_subdirectory(plugin/zfs) + endif() + +-# Required for running ceph-volume inventory in a vstart environment +-set(CEPH_VOLUME_VIRTUALENV ${CEPH_BUILD_VIRTUALENV}/ceph-volume-virtualenv) +- +-add_custom_command( +- OUTPUT ${CEPH_VOLUME_VIRTUALENV}/bin/python +- COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python=${Python3_EXECUTABLE} ${CEPH_VOLUME_VIRTUALENV} +- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/ceph-volume +- COMMENT "ceph-volume venv is being created") +- +-add_custom_command( +- OUTPUT ${CEPH_VOLUME_VIRTUALENV}/bin/ceph-volume +- DEPENDS ${CEPH_VOLUME_VIRTUALENV}/bin/python +- COMMAND . ${CEPH_VOLUME_VIRTUALENV}/bin/activate && ${CEPH_VOLUME_VIRTUALENV}/bin/python setup.py develop && deactivate +- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/ceph-volume +- COMMENT "${CMAKE_SOURCE_DIR}/src/ceph-volume") +- + add_custom_target(ceph-volume-venv-setup + DEPENDS ${CEPH_VOLUME_VIRTUALENV}/bin/ceph-volume) + +--- a/src/pybind/mgr/dashboard/CMakeLists.txt ++++ b/src/pybind/mgr/dashboard/CMakeLists.txt +@@ -5,9 +5,6 @@ + set(multi_kw COMMAND DEPENDS) + cmake_parse_arguments(NC "${options}" "${single_kw}" "${multi_kw}" ${ARGN}) + string(REPLACE ";" " " command "${NC_COMMAND}") +- if(NC_NODEENV) +- string(REGEX REPLACE "^(.*(npm|npx) .*)$" ". ${mgr-dashboard-nodeenv-dir}/bin/activate && \\1 && deactivate" command ${command}) +- endif() + string(REPLACE " " ";" command "${command}") + add_custom_command( + OUTPUT "${NC_OUTPUT}" +@@ -51,11 +48,8 @@ + set(node_mirror_opt "--mirror=$ENV{NODE_MIRROR}") + endif() + add_custom_command( +- OUTPUT "${mgr-dashboard-nodeenv-dir}/bin/npm" +- COMMAND ${CMAKE_SOURCE_DIR}/src/tools/setup-virtualenv.sh --python=${MGR_PYTHON_EXECUTABLE} ${mgr-dashboard-nodeenv-dir} +- COMMAND ${mgr-dashboard-nodeenv-dir}/bin/pip install nodeenv +- COMMAND ${mgr-dashboard-nodeenv-dir}/bin/nodeenv --verbose ${node_mirror_opt} -p --node=12.18.2 +- COMMAND mkdir ${mgr-dashboard-nodeenv-dir}/.npm ++ OUTPUT "/usr/bin/npm" ++ COMMAND /usr/bin/nodeenv -p --node=system + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "dashboard nodeenv is being installed" + ) diff --git a/repo/ceph/43-LogClock.h.patch b/repo/ceph/43-LogClock.h.patch new file mode 100644 index 0000000..8cd02e5 --- /dev/null +++ b/repo/ceph/43-LogClock.h.patch @@ -0,0 +1,18 @@ +reported as issue +https://tracker.ceph.com/issues/50133 + +needed for 32bit platforms + +--- aa/src/log/LogClock.h ++++ bb/src/log/LogClock.h +@@ -12,10 +12,6 @@ + #include "include/ceph_assert.h" + #include "common/ceph_time.h" + +-#ifndef suseconds_t +-typedef long suseconds_t; +-#endif +- + namespace ceph { + namespace logging { + namespace _logclock { diff --git a/repo/ceph/44-aarch64-erasure.patch b/repo/ceph/44-aarch64-erasure.patch new file mode 100644 index 0000000..421decc --- /dev/null +++ b/repo/ceph/44-aarch64-erasure.patch @@ -0,0 +1,129 @@ +merged as: +https://github.com/ceph/isa-l/commit/bee5180a1517f8b5e70b02fcd66790c623536c5d + +--- a/src/isa-l/erasure_code/aarch64/gf_2vect_mad_neon.S ++++ b/src/isa-l/erasure_code/aarch64/gf_2vect_mad_neon.S +@@ -360,7 +360,8 @@ + sub x_dest1, x_dest1, x_tmp + sub x_dest2, x_dest2, x_tmp + +- ldr x_const, =const_tbl ++ adrp x_const, const_tbl ++ add x_const, x_const, :lo12:const_tbl + sub x_const, x_const, x_tmp + ldr q_tmp, [x_const, #16] + +@@ -394,7 +395,7 @@ + mov w_ret, #1 + ret + +-.section .data ++.section .rodata + .balign 8 + const_tbl: + .dword 0x0000000000000000, 0x0000000000000000 +--- a/src/isa-l/erasure_code/aarch64/gf_3vect_mad_neon.S ++++ b/src/isa-l/erasure_code/aarch64/gf_3vect_mad_neon.S +@@ -332,7 +332,8 @@ + sub x_dest2, x_dest2, x_tmp + sub x_dest3, x_dest3, x_tmp + +- ldr x_const, =const_tbl ++ adrp x_const, const_tbl ++ add x_const, x_const, :lo12:const_tbl + sub x_const, x_const, x_tmp + ldr q_tmp, [x_const, #16] + +@@ -374,7 +375,7 @@ + mov w_ret, #1 + ret + +-.section .data ++.section .rodata + .balign 8 + const_tbl: + .dword 0x0000000000000000, 0x0000000000000000 +--- a/src/isa-l/erasure_code/aarch64/gf_4vect_mad_neon.S ++++ b/src/isa-l/erasure_code/aarch64/gf_4vect_mad_neon.S +@@ -397,7 +397,8 @@ + sub x_dest3, x_dest3, x_tmp + sub x_dest4, x_dest4, x_tmp + +- ldr x_const, =const_tbl ++ adrp x_const, const_tbl ++ add x_const, x_const, :lo12:const_tbl + sub x_const, x_const, x_tmp + ldr q_tmp, [x_const, #16] + +@@ -448,7 +449,7 @@ + mov w_ret, #1 + ret + +-.section .data ++.section .rodata + .balign 8 + const_tbl: + .dword 0x0000000000000000, 0x0000000000000000 +--- a/src/isa-l/erasure_code/aarch64/gf_5vect_mad_neon.S ++++ b/src/isa-l/erasure_code/aarch64/gf_5vect_mad_neon.S +@@ -463,7 +463,8 @@ + sub x_dest4, x_dest4, x_tmp + sub x_dest5, x_dest5, x_tmp + +- ldr x_const, =const_tbl ++ adrp x_const, const_tbl ++ add x_const, x_const, :lo12:const_tbl + sub x_const, x_const, x_tmp + ldr q_tmp, [x_const, #16] + +@@ -527,7 +528,7 @@ + mov w_ret, #1 + ret + +-.section .data ++.section .rodata + .balign 8 + const_tbl: + .dword 0x0000000000000000, 0x0000000000000000 +--- a/src/isa-l/erasure_code/aarch64/gf_6vect_mad_neon.S ++++ b/src/isa-l/erasure_code/aarch64/gf_6vect_mad_neon.S +@@ -526,7 +526,8 @@ + sub x_dest5, x_dest5, x_tmp + sub x_dest6, x_dest6, x_tmp + +- ldr x_const, =const_tbl ++ adrp x_const, const_tbl ++ add x_const, x_const, :lo12:const_tbl + sub x_const, x_const, x_tmp + ldr q_tmp, [x_const, #16] + +@@ -602,7 +603,7 @@ + mov w_ret, #1 + ret + +-.section .data ++.section .rodata + .balign 8 + const_tbl: + .dword 0x0000000000000000, 0x0000000000000000 +--- a/src/isa-l/erasure_code/aarch64/gf_vect_mad_neon.S ++++ b/src/isa-l/erasure_code/aarch64/gf_vect_mad_neon.S +@@ -281,7 +281,8 @@ + mov x_src, x_src_end + sub x_dest1, x_dest1, x_tmp + +- ldr x_const, =const_tbl ++ adrp x_const, const_tbl ++ add x_const, x_const, :lo12:const_tbl + sub x_const, x_const, x_tmp + ldr q_tmp, [x_const, #16] + +@@ -307,7 +308,7 @@ + mov w_ret, #1 + ret + +-.section .data ++.section .rodata + .balign 8 + const_tbl: + .dword 0x0000000000000000, 0x0000000000000000 diff --git a/repo/ceph/44-cmake-buildtype.patch b/repo/ceph/44-cmake-buildtype.patch new file mode 100644 index 0000000..7112ce1 --- /dev/null +++ b/repo/ceph/44-cmake-buildtype.patch @@ -0,0 +1,38 @@ +updated: https://github.com/ceph/ceph/commit/6e4481316884f08daad624c1d997378daedf410e + +commit a7e3ece459111d157a20d05de3a92cf4dab6bde6 +Author: Kefu Chai <kchai@redhat.com> +Date: Thu Jul 1 15:24:50 2021 +0800 + + cmake: set CMAKE_BUILD_TYPE only if .git exists + + distros intend to fine tune the CFLAGS and CXXFLAGS by themselves, see + + - https://git.alpinelinux.org/abuild/tree/abuild.conf + - https://wiki.archlinux.org/title/CMake_package_guidelines#CMake_undesired_behaviors + - https://github.com/Debian/debhelper/blob/5d1bb29841043d8e47ebbdd043e6cd086cad508e/lib/Debian/Debhelper/Buildsystem/cmake.pm#L16 + + so instead of setting a CMAKE_BUILD_TYPE when building from a + dist tarball, let's just leave it empty. + + Signed-off-by: Kefu Chai <kchai@redhat.com> + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 760a2ceb0c..6f35e87f90 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -156,12 +156,8 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang) + endif() + endif(CMAKE_CXX_COMPILER_ID STREQUAL GNU) + +-if(NOT CMAKE_BUILD_TYPE) +- if(EXISTS "${CMAKE_SOURCE_DIR}/.git") +- set(default_build_type "Debug") +- else() +- set(default_build_type "RelWithDebInfo") +- endif() ++if(NOT DEFINED CMAKE_BUILD_TYPE AND EXISTS "${CMAKE_SOURCE_DIR}/.git") ++ set(default_build_type "Debug") + set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE + STRING "Default BUILD_TYPE is Debug, other options are: RelWithDebInfo, Release, and MinSizeRel." FORCE) + endif() diff --git a/repo/ceph/44-missing-include.patch b/repo/ceph/44-missing-include.patch new file mode 100644 index 0000000..f944255 --- /dev/null +++ b/repo/ceph/44-missing-include.patch @@ -0,0 +1,16 @@ +submitted as: +https://github.com/ceph/ceph/pull/41470 + +diff --git a/src/rgw/rgw_string.h b/src/rgw/rgw_string.h +index 257daa9c1..90e64f98a 100644 +--- a/src/rgw/rgw_string.h ++++ b/src/rgw/rgw_string.h +@@ -8,6 +8,8 @@ + #include <stdlib.h> + #include <limits.h> + #include <string_view> ++#include <string> ++#include <stdexcept> + + #include <boost/container/small_vector.hpp> + diff --git a/repo/ceph/44-staticcast.patch b/repo/ceph/44-staticcast.patch new file mode 100644 index 0000000..ebe8bbf --- /dev/null +++ b/repo/ceph/44-staticcast.patch @@ -0,0 +1,13 @@ +submitted as https://github.com/ceph/ceph/pull/40582 + +--- a/src/common/buffer.cc ++++ b/src/common/buffer.cc +@@ -2268,7 +2268,7 @@ + + void ceph::buffer::list::page_aligned_appender::_refill(size_t len) { + const size_t alloc = \ +- std::max((size_t)min_alloc, (len + CEPH_PAGE_SIZE - 1) & CEPH_PAGE_MASK); ++ std::max(static_cast<size_t>(min_alloc), static_cast<size_t>((len + CEPH_PAGE_SIZE - 1) & CEPH_PAGE_MASK)); + auto new_back = \ + ptr_node::create(buffer::create_page_aligned(alloc)); + new_back->set_length(0); // unused, so far. diff --git a/repo/ceph/ceph-user.pre-install b/repo/ceph/ceph-user.pre-install new file mode 100644 index 0000000..bae4f09 --- /dev/null +++ b/repo/ceph/ceph-user.pre-install @@ -0,0 +1,5 @@ +#!/bin/sh + +addgroup ceph -g 167 -S 2>/dev/null +adduser ceph -u 167 -S -G ceph -s /sbin/nologin -h /var/lib/ceph -g "Ceph Daemons" 2> /dev/null +exit 0 diff --git a/repo/ceph/ceph.confd b/repo/ceph/ceph.confd new file mode 100644 index 0000000..32737b1 --- /dev/null +++ b/repo/ceph/ceph.confd @@ -0,0 +1,17 @@ +# Original source: https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-cluster/ceph/files/ceph.confd-r5 + +# Example + +# default ceph conf file +#ceph_conf="/etc/ceph/ceph.conf" + +# Set RADOSGW_WANT_NAME_PARAM=y in order to make the init script add +# a --name=client.${RC_SVCNAME} parameter to command_args for radosgw.* +# service instances. This will make the service use a key by the name +# of client.${RC_SVCNAME} instead of the default client.admin key. +# A setting like this in the ceph config file can be used to customize +# the rgw_data and keyring paths used by radosgw instances: +# [client] +# rgw_data = /var/lib/ceph/radosgw/$cluster-$id +# keyring = /var/lib/ceph/radosgw/$cluster-$id/keyring +RADOSGW_WANT_NAME_PARAM=n diff --git a/repo/ceph/ceph.initd b/repo/ceph/ceph.initd new file mode 100644 index 0000000..c522efa --- /dev/null +++ b/repo/ceph/ceph.initd @@ -0,0 +1,118 @@ +#!/sbin/openrc-run + +# Original source: https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-cluster/ceph/files/ceph.initd-r12 + +# make sure /etc/conf.d/ceph gets loaded for ceph-mon etc +_CONFD_FILE="${RC_SERVICE%/*}/../conf.d/${RC_SVCNAME%-*}" +if [ -r "${_CONFD_FILE}" ]; then + . "${_CONFD_FILE}" || exit 1 +fi + +: "${ceph_conf:=/etc/ceph/ceph.conf}" +daemon_type="${RC_SVCNAME#ceph-}" +daemon_type="${daemon_type%%.*}" +daemon_id="${RC_SVCNAME#ceph-*.}" +daemon_id="${daemon_id:-0}" +: "${rundir:=/run/ceph}" +: "${user:=ceph}" +: "${group:=ceph}" +: "${rc_ulimit:=-n 1048576 -u 1048576}" + +pidfile="${rundir}/supervisor-${daemon_type}.${daemon_id}.pid" +daemon_pidfile="${rundir}/${daemon_type}.${daemon_id}.pid" + +command="/usr/bin/${RC_SVCNAME%%.*}" +command_args="-i ${daemon_id} --pid-file ${daemon_pidfile} -c ${ceph_conf}" +extra_commands="${extra_commands} reload" +command_args_foreground="--foreground" + +retry="${CEPH_TERMTIMEOUT:-TERM/120/KILL/5}" +start_stop_daemon_args="--user ${user} --group ${group}" +supervise_daemon_args="--user ${user} --group ${group}" + +: "${supervisor:=supervise-daemon}" +: "${stdout:=/var/log/ceph/ceph}" +: "${stderr:=/var/log/ceph/ceph}" +: "${respawn_delay:=10}" +: "${respawn_max:=5}" +: "${respawn_period:=1800}" + +: "${osd_respawn_delay:=15}" +: "{osd_respawn_max:=10}" + +: "{radosgw_respawn_max:=5}" +: "${radosgw_respawn_period:=30}" + +depend() { + use dns logger + after net ntpd ntp-client chronyd + before netmount +} + +is_type_valid() { + case ${daemon_type} in + mon|mds|osd|mgr|radosgw) return 0;; + *) return 1;; + esac +} + +start_pre() { + local log_dir + export CEPH_CONF="${ceph_conf}" + + checkpath -d -q -o "${user}:${group}" "${rundir}" + + if ! is_type_valid ;then + eerror "Please give valid Ceph Server Type: mds, mon, osd" + return 1 + + elif pgrep -f "[c]eph-${daemon_type} -i ${daemon_id} "; then + eerror "${daemon_type}.${daemon_id} is still running, refusing to start" + return 1 + fi + + if [ -n "${bluestore_osd_fsid}" ]; then + einfo "Mounting Bluestore" + ceph-volume lvm activate "${daemon_id}" "${bluestore_osd_fsid}" --no-systemd + fi + + if [ "${daemon_type}" = radosgw ] && [ "${RADOSGW_WANT_NAME_PARAM}" = y ]; then + command_args="${command_args} --name client.${daemon_id}" + fi + + local arg_name arg_val repl_arg_name + for arg_name in stdout stderr respawn_delay respawn_max respawn_period; do + eval arg_val="\${${daemon_type}_${arg_name}}" + + if [ -z "${arg_val}" ]; then + eval arg_val="\${${arg_name}}" + else + eval "${arg_name}=\"${arg_val}\"" + fi + + if [ "${arg_name}" = "stderr" ] || [ "${arg_name}" = "stdout" ]; then + local log_file log_postfix + log_postfix=".${daemon_id}-${arg_name}.log" + log_file="${arg_val}" + + if [ "${log_file}" != /dev/null ]; then + log_file="${log_file}${log_postfix}" + + log_dir="$(dirname "${log_file}")" + checkpath -m 0755 -o "${user}:${group}" -d "${log_dir}" + fi + + repl_arg_name="$(printf -- "%s\n" "${arg_name}" | tr _ -)" + supervise_daemon_args="${supervise_daemon_args} --${repl_arg_name}=${log_file}" + fi + done +} + +reload() { + ebegin "Reloading Ceph ${daemon_type}.${daemon_id}" + start-stop-daemon --signal 1 "${start_stop_daemon_args}" + eend ${?} +} + +# vim:ft=gentoo-init-d:ts=4:sts=4:sw=4:noet: + diff --git a/repo/ceph/ceph.xibuild b/repo/ceph/ceph.xibuild new file mode 100644 index 0000000..65d71fa --- /dev/null +++ b/repo/ceph/ceph.xibuild @@ -0,0 +1,120 @@ +#!/bin/sh + +NAME="ceph" +DESC="Ceph is a distributed object store and file system" + +MAKEDEPS="acl argp-standalone bc boost btrfs-progs bzip2 cmake cryptsetup cunit curl cython diffutils doxygen eudev expat fcgi flex fmt fuse fuse git graphviz grep gperf jq keyutils leveldb libaio libcap-ng libedit librdkafka libnl libtirpc libtool libxml2 linux-headers lua lvm2 lz4 nodejs nss oath-toolkit libldap openssl procps-ng python python-prettytable python-sphinx rabbitmq-c readline ninja snappy sqlite3 userspace-rcu xfsprogs xmlstarlet yarn yasm cryptsetup e2fsprogs parted util-linux xfsprogs fuse snappy lz4 lvm2 xmlstarlet python-coverage python-flake8 python-nodeenv python-nose python-pytest python-tox " + +PKG_VER=16.2.9 +SOURCE="https://download.ceph.com/tarballs/ceph_$PKG_VER.orig.tar.gz" + +ADDITIONAL=" +10-musl-fixes.patch +11-dump_time_header_impl.patch +11-parse_rfc1123_alt.patch +11-s3_expiration_header.patch +12-package.json-resolutions.patch +20-pci.patch +32-PurgeQueue.cc-cast.patch +32-upstream32bit.patch +32-upstream32bitcleanup.patch +35-fix_ErasureCodeShec.patch +37-fix_tests.patch +42-no-virtualenvs.patch +43-LogClock.h.patch +44-aarch64-erasure.patch +44-cmake-buildtype.patch +44-missing-include.patch +44-staticcast.patch +ceph.confd +ceph.initd +" + +_py3_sitelib() { + python -c "import site; print(site.getsitepackages()[0])" +} + +prepare() { + apply_patches + + # delete bundled boost as >300mb and using system boost + rm -rf src/boost +} + +build() { + export CEPH_BUILD_VIRTUALENV="$BUILD_ROOT" + + # builders keep failing when -jN == nproc + export MAKEFLAGS="$MAKEFLAGS -j$((JOBS<12 ? JOBS : 12))" + + # use alternate registry as original can timeout for arm32bit + export NPM_REGISTRY=https://registry.npmjs.org + + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DLUA_LIBRARIES=/usr/lib/liblua.so \ + -DALLOCATOR=libc \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + -DCMAKE_INSTALL_LOCALSTATEDIR=/var \ + -DCMAKE_INSTALL_SYSCONFDIR=/etc \ + -DWITH_REENTRANT_STRSIGNAL=ON \ + -DWITH_THREAD_SAFE_RES_QUERY=ON \ + -DWITH_MANPAGE=ON \ + -DWITH_SYSTEM_BOOST=ON \ + -DWITH_SYSTEM_NPM=ON \ + -DWITH_LTTNG=OFF \ + -DWITH_RDMA=OFF \ + -DWITH_SYSTEMD=OFF \ + -DWITH_SPDK=OFF \ + -DWITH_BABELTRACE=OFF \ + -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \ + -DWITH_TESTS=OFF + mkdir -p build/src/pybind/mgr/dashboard/cypress + cmake --build build + +} + +package() { + # free up some space before install + rm -rf build/src/pybind/mgr/dashboard/cypress + rm -rf src/pybind/mgr/dashboard/frontend/node_modules + + DESTDIR="$PKG_DEST" cmake --install build + # yarn creates an empty usr/local/bin + rm -rf "${pkgdir:?}"/usr/local + + # fix /usr permission + chmod 755 "$PKG_DEST/usr" + + # remove dashboard angular app source + rm -rf "$PKG_DEST"/usr/share/ceph/mgr/dashboard/frontend/src + + # remove the upstream init file and put in openrc ones + rm -f "$PKG_DEST"/etc/init.d/ceph + install -D -m 755 "$BUILD_ROOT"/"ceph".initd "$PKG_DEST"/etc/init.d/ceph + install -D -m 644 "$BUILD_ROOT"/"ceph".confd "$PKG_DEST"/etc/conf.d/ceph + + # move mount.* binaries to /sbin + mkdir -p "$PKG_DEST"/sbin + mv "$PKG_DEST"/usr/sbin/mount.* "$PKG_DEST"/sbin + + install -m 644 -D src/etc-rbdmap "$PKG_DEST"/etc/ceph/rbdmap + install -m 644 -D src/logrotate.conf "$PKG_DEST"/etc/logrotate.d/ceph + install -m 644 -D etc/sysctl/90-ceph-osd.conf "$PKG_DEST"/etc/sysctl.d/90-ceph-osd.conf + + # udev rules + install -m 644 -D udev/50-rbd.rules "$PKG_DEST"/etc/udev/rules.d/50-rbd.rules + # sudoers.d + install -m 600 -D sudoers.d/ceph-smartctl "$PKG_DEST"/etc/sudoers.d/ceph-smartctl + + # delete systemd related stuff + rm "$PKG_DEST"/usr/sbin/ceph-volume-systemd + + # move docs to docs + mkdir -p "$PKG_DEST"/usr/share/doc/ceph/dashboard + mv "$PKG_DEST"/usr/share/ceph/mgr/dashboard/*.rst "$PKG_DEST"/usr/share/doc/ceph/dashboard/ + mv "$PKG_DEST"/usr/share/ceph/mgr/cephadm/HACKING.rst "$PKG_DEST"/usr/share/doc/ceph/cephadm-HACKING.rst +} + +# TODO split this into other packages diff --git a/repo/clucene/clucene-core-2.3.3.4-install_contribs_lib.patch b/repo/clucene/clucene-core-2.3.3.4-install_contribs_lib.patch new file mode 100644 index 0000000..8fbb3c7 --- /dev/null +++ b/repo/clucene/clucene-core-2.3.3.4-install_contribs_lib.patch @@ -0,0 +1,42 @@ +diff -NaurpBb clucene-core-2.3.3.4/CMakeLists.txt clucene-core-2.3.3.4-mod/CMakeLists.txt +--- clucene-core-2.3.3.4/CMakeLists.txt 2011-03-17 03:21:07.000000000 +0300 ++++ clucene-core-2.3.3.4-mod/CMakeLists.txt 2011-08-16 16:56:55.968268152 +0400 +@@ -163,7 +163,7 @@ IF ( BUILD_CONTRIBS ) + SET(BUILD_CONTRIBS_LIB 1) + ENDIF ( BUILD_CONTRIBS ) + IF ( BUILD_CONTRIBS_LIB ) +- ADD_SUBDIRECTORY (src/contribs-lib EXCLUDE_FROM_ALL) ++ ADD_SUBDIRECTORY (src/contribs-lib) + ENDIF ( BUILD_CONTRIBS_LIB ) + + +diff -NaurpBb clucene-core-2.3.3.4/src/contribs-lib/CMakeLists.txt clucene-core-2.3.3.4-mod/src/contribs-lib/CMakeLists.txt +--- clucene-core-2.3.3.4/src/contribs-lib/CMakeLists.txt 2011-03-17 03:21:07.000000000 +0300 ++++ clucene-core-2.3.3.4-mod/src/contribs-lib/CMakeLists.txt 2011-08-16 17:14:13.499275499 +0400 +@@ -106,9 +106,26 @@ add_library(clucene-contribs-lib SHARED + ) + TARGET_LINK_LIBRARIES(clucene-contribs-lib ${clucene_contrib_extra_libs}) + ++#install public headers. ++FOREACH(file ${HEADERS}) ++ get_filename_component(apath ${file} PATH) ++ get_filename_component(aname ${file} NAME) ++ file(RELATIVE_PATH relpath ${CMAKE_SOURCE_DIR}/src/contribs-lib ${apath}) ++ IF ( NOT aname MATCHES "^_.*" ) ++ install(FILES ${file} ++ DESTINATION include/${relpath} ++ COMPONENT development) ++ ENDIF ( NOT aname MATCHES "^_.*" ) ++ENDFOREACH(file) ++ + #set properties on the libraries + SET_TARGET_PROPERTIES(clucene-contribs-lib PROPERTIES + VERSION ${CLUCENE_VERSION} + SOVERSION ${CLUCENE_SOVERSION} + COMPILE_DEFINITIONS_DEBUG _DEBUG + ) ++ ++#and install library ++install(TARGETS clucene-contribs-lib ++ DESTINATION ${LIB_DESTINATION} ++ COMPONENT runtime ) diff --git a/repo/clucene/clucene-core-2.3.3.4-pkgconfig.patch b/repo/clucene/clucene-core-2.3.3.4-pkgconfig.patch new file mode 100644 index 0000000..aff20d7 --- /dev/null +++ b/repo/clucene/clucene-core-2.3.3.4-pkgconfig.patch @@ -0,0 +1,12 @@ +diff -up clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake.pkgconfig_sys_includes clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake +--- clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake.pkgconfig_sys_includes 2011-03-16 19:21:07.000000000 -0500 ++++ clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake 2012-03-19 09:01:00.689263954 -0500 +@@ -6,6 +6,6 @@ includedir=${prefix}/include:${prefix}/i + Name: libclucene + Description: CLucene - a C++ search engine, ported from the popular Apache Lucene + Version: @CLUCENE_VERSION_MAJOR@.@CLUCENE_VERSION_MINOR@.@CLUCENE_VERSION_REVISION@.@CLUCENE_VERSION_PATCH@ +-Libs: -L${prefix}/@LIB_DESTINATION@/ -lclucene-core +-Cflags: -I${prefix}/include -I${prefix}/include/CLucene/ext ++Libs: -L${prefix}/@LIB_DESTINATION@/ -lclucene-core -lclucene-shared ++Cflags: -I${prefix}/include -I${prefix}/include/CLucene/ext -I@LUCENE_SYS_INCLUDES@ + ~ diff --git a/repo/clucene/clucene.xibuild b/repo/clucene/clucene.xibuild new file mode 100644 index 0000000..2d57c38 --- /dev/null +++ b/repo/clucene/clucene.xibuild @@ -0,0 +1,40 @@ +#!/bin/sh + +NAME="clucene" +DESC="A C++ port of Lucene" + +MAKEDEPS="cmake zlib boost ninja" + +PKG_VER=2.3.3.4 +SOURCE="https://downloads.sourceforge.net/clucene/clucene-core-$PKG_VER.tar.gz" + +ADDITIONAL=" +clucene-core-2.3.3.4-install_contribs_lib.patch +clucene-core-2.3.3.4-pkgconfig.patch +" + +prepare () { + apply_patches +} + +build() { + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_CONTRIBS_LIB=ON \ + -DLIB_DESTINATION=/usr/lib \ + -DLUCENE_SYS_INCLUDES=/usr/lib \ + . + cmake --build build +} + +check() { + cd build + CTEST_OUTPUT_ON_FAILURE=TRUE ctest + cd $BUILD_ROOT +} + +package() { + DESTDIR="$PKG_DEST" cmake --install build + rm -r "$PKG_DEST"/usr/lib/CLuceneConfig.cmake +} diff --git a/repo/cppunit/cppunit.xibuild b/repo/cppunit/cppunit.xibuild new file mode 100644 index 0000000..99260b3 --- /dev/null +++ b/repo/cppunit/cppunit.xibuild @@ -0,0 +1,28 @@ +#!/bin/sh + +NAME="cppunit" +DESC="C++ unit testing framework" + +MAKEDEPS="" + +PKG_VER=1.15.1 +SOURCE="https://dev-www.libreoffice.org/src/cppunit-$PKG_VER.tar.gz" + +build() { + LIBS="-ldl" ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/cryptsetup/cryptsetup.xibuild b/repo/cryptsetup/cryptsetup.xibuild new file mode 100644 index 0000000..a4b989d --- /dev/null +++ b/repo/cryptsetup/cryptsetup.xibuild @@ -0,0 +1,36 @@ +#!/bin/sh + +NAME="cryptsetup" +DESC="Userspace setup tool for transparent encryption of block devices using the Linux 2.6 cryptoapi" + +MAKEDEPS="make argon2 openssl" +DEPS="util-linux musl popt device-mapper " + +PKG_VER=2.4.3 +SOURCE="https://www.kernel.org/pub/linux/utils/cryptsetup/v${PKG_VER%.*}/cryptsetup-$PKG_VER.tar.gz" +ADDITIONAL="dmcrypt.initd dmcrypt.confd " + +build () { + ./configure \ + --prefix=/usr \ + --bindir=/usr/bin \ + --sysconfdir=/etc \ + --disable-static \ + --enable-libargon2 \ + --with-crypto_backend=openssl \ + --disable-external-tokens \ + --disable-ssh-token + + make +} + +package () { + make DESTDIR=$PKG_DEST install + install -Dm644 "$srcdir"/dmcrypt.confd "$PKG_DEST"/etc/conf.d/dmcrypt + install -Dm755 "$srcdir"/dmcrypt.initd "$PKG_DEST"/etc/init.d/dmcrypt + + mkdir -p "$PKG_DEST"/usr/share/doc/cryptsetup/ + install -m644 README.md FAQ docs/v$PKG_VER-ReleaseNotes \ + "$PKG_DEST"/usr/share/doc/cryptsetup/ + +} diff --git a/repo/cryptsetup/dmcrypt.confd b/repo/cryptsetup/dmcrypt.confd new file mode 100644 index 0000000..642ff08 --- /dev/null +++ b/repo/cryptsetup/dmcrypt.confd @@ -0,0 +1,111 @@ +# /etc/conf.d/dmcrypt + +# For people who run dmcrypt on top of some other layer (like raid), +# use rc_need to specify that requirement. See the runscript(8) man +# page for more information. + +#-------------------- +# Instructions +#-------------------- + +# Note regarding the syntax of this file. This file is *almost* bash, +# but each line is evaluated separately. Separate swaps/targets can be +# specified. The init-script which reads this file assumes that a +# swap= or target= line starts a new section, similar to lilo or grub +# configuration. + +# Note when using gpg keys and /usr on a separate partition, you will +# have to copy /usr/bin/gpg to /bin/gpg so that it will work properly +# and ensure that gpg has been compiled statically. +# See http://bugs.gentoo.org/90482 for more information. + +# Note that the init-script which reads this file detects whether your +# partition is LUKS or not. No mkfs is run unless you specify a makefs +# option. + +# Global options: +#---------------- + +# How long to wait for each timeout (in seconds). +dmcrypt_key_timeout=1 + +# Max number of checks to perform (see dmcrypt_key_timeout). +#dmcrypt_max_timeout=300 + +# Number of password retries. +dmcrypt_retries=5 + +# Arguments: +#----------- +# target=<name> == Mapping name for partition. +# swap=<name> == Mapping name for swap partition. +# source='<dev>' == Real device for partition. +# Note: You can (and should) specify a tag like UUID +# for blkid (see -t option). This is safer than using +# the full path to the device. +# key='</path/to/keyfile>[:<mode>]' == Fullpath from / or from inside removable media. +# remdev='<dev>' == Device that will be assigned to removable media. +# gpg_options='<opts>' == Default are --quiet --decrypt +# options='<opts>' == cryptsetup, for LUKS you can only use --readonly +# loop_file='<file>' == Loopback file. +# Note: If you omit $source, then a free loopback will +# be looked up automatically. +# pre_mount='cmds' == commands to execute before mounting partition. +# post_mount='cmds' == commands to execute after mounting partition. +#----------- +# Supported Modes +# gpg == decrypt and pipe key into cryptsetup. +# Note: new-line character must not be part of key. +# Command to erase \n char: 'cat key | tr -d '\n' > cleanKey' + +#-------------------- +# dm-crypt examples +#-------------------- + +## swap +# Swap partitions. These should come first so that no keys make their +# way into unencrypted swap. +# If no options are given, they will default to: -c aes -h sha1 -d /dev/urandom +# If no makefs is given then mkswap will be assumed +#swap=crypt-swap +#source='/dev/hda2' + +## /home with passphrase +#target=crypt-home +#source='/dev/hda5' + +## /home with regular keyfile +#target=crypt-home +#source='/dev/hda5' +#key='/full/path/to/homekey' + +## /home with gpg protected key +#target=crypt-home +#source='/dev/hda5' +#key='/full/path/to/homekey:gpg' + +## /home with regular keyfile on removable media(such as usb-stick) +#target=crypt-home +#source='/dev/hda5' +#key='/full/path/to/homekey' +#remdev='/dev/sda1' + +## /home with gpg protected key on removable media(such as usb-stick) +#target=crypt-home +#source='/dev/hda5' +#key='/full/path/to/homekey:gpg' +#remdev='/dev/sda1' + +## /tmp with regular keyfile +#target=crypt-tmp +#source='/dev/hda6' +#key='/full/path/to/tmpkey' +#pre_mount='/sbin/mkreiserfs -f -f ${dev}' +#post_mount='chown root:root ${mount_point}; chmod 1777 ${mount_point}' + +## Loopback file example +#target='crypt-loop-home' +#source='/dev/loop0' +#loop_file='/mnt/crypt/home' + +# The file must be terminated by a newline. Or leave this comment last. diff --git a/repo/cryptsetup/dmcrypt.initd b/repo/cryptsetup/dmcrypt.initd new file mode 100644 index 0000000..85c77f7 --- /dev/null +++ b/repo/cryptsetup/dmcrypt.initd @@ -0,0 +1,339 @@ +#!/sbin/openrc-run +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +depend() { + before checkfs fsck + + if grep -qs ^swap= "${conf_file}" ; then + before swap + fi +} + +# We support multiple dmcrypt instances based on $SVCNAME +conf_file="/etc/conf.d/${SVCNAME}" + +# Get splash helpers if available. +if [ -e /sbin/splash-functions.sh ] ; then + . /sbin/splash-functions.sh +fi + +# Setup mappings for an individual target/swap +# Note: This relies on variables localized in the main body below. +dm_crypt_execute() { + local dev ret mode foo + + if [ -z "${target}" -a -z "${swap}" ] ; then + return + fi + + # Set up default values. + : ${dmcrypt_key_timeout:=1} + : ${dmcrypt_max_timeout:=300} + : ${dmcrypt_retries:=5} + + # Handle automatic look up of the source path. + if [ -z "${source}" -a -n "${loop_file}" ] ; then + source=$(losetup --show -f "${loop_file}") + fi + case ${source} in + *=*) + source="$(findfs ${source})" + ;; + esac + if [ -z "${source}" ] || [ ! -e "${source}" ] ; then + ewarn "source \"${source}\" for ${target} missing, skipping..." + return + fi + + if [ -n "${target}" ] ; then + # let user set options, otherwise leave empty + : ${options:=' '} + elif [ -n "${swap}" ] ; then + if cryptsetup isLuks ${source} 2>/dev/null ; then + ewarn "The swap you have defined is a LUKS partition. Aborting crypt-swap setup." + return + fi + target=${swap} + # swap contents do not need to be preserved between boots, luks not required. + # suspend2 users should have initramfs's init handling their swap partition either way. + : ${options:='-c aes -h sha1 -d /dev/urandom'} + : ${pre_mount:='mkswap ${dev}'} + fi + + if [ -n "${loop_file}" ] ; then + dev="/dev/mapper/${target}" + ebegin " Setting up loop device ${source}" + losetup ${source} ${loop_file} + fi + + # cryptsetup: + # open <device> <name> # <device> is $source + # create <name> <device> # <name> is $target + local arg1="create" arg2="${target}" arg3="${source}" + if cryptsetup isLuks ${source} 2>/dev/null ; then + arg1="open" + arg2="${source}" + arg3="${target}" + fi + + # Older versions reported: + # ${target} is active: + # Newer versions report: + # ${target} is active[ and is in use.] + if cryptsetup status ${target} | egrep -q ' is active' ; then + einfo "dm-crypt mapping ${target} is already configured" + return + fi + splash svc_input_begin ${SVCNAME} >/dev/null 2>&1 + + # Handle keys + if [ -n "${key}" ] ; then + read_abort() { + # some colors + local ans savetty resettty + [ -z "${NORMAL}" ] && eval $(eval_ecolors) + einfon " $1? (${WARN}yes${NORMAL}/${GOOD}No${NORMAL}) " + shift + # This is ugly as s**t. But POSIX doesn't provide `read -t`, so + # we end up having to implement our own crap with stty/etc... + savetty=$(stty -g) + resettty='stty ${savetty}; trap - EXIT HUP INT TERM' + trap 'eval "${resettty}"' EXIT HUP INT TERM + stty -icanon + stty min 0 time "$(( $2 * 10 ))" + ans=$(dd count=1 bs=1 2>/dev/null) || ans='' + eval "${resettty}" + if [ -z "${ans}" ] ; then + printf '\r' + else + echo + fi + case ${ans} in + [yY]) return 0;; + *) return 1;; + esac + } + + # Notes: sed not used to avoid case where /usr partition is encrypted. + mode=${key##*:} && ( [ "${mode}" = "${key}" ] || [ -z "${mode}" ] ) && mode=reg + key=${key%:*} + case "${mode}" in + gpg|reg) + # handle key on removable device + if [ -n "${remdev}" ] ; then + # temp directory to mount removable device + local mntrem="${RC_SVCDIR}/dm-crypt-remdev.$$" + if [ ! -d "${mntrem}" ] ; then + if ! mkdir -p "${mntrem}" ; then + ewarn "${source} will not be decrypted ..." + einfo "Reason: Unable to create temporary mount point '${mntrem}'" + return + fi + fi + i=0 + einfo "Please insert removable device for ${target}" + while [ ${i} -lt ${dmcrypt_max_timeout} ] ; do + foo="" + if mount -n -o ro "${remdev}" "${mntrem}" 2>/dev/null >/dev/null ; then + # keyfile exists? + if [ ! -e "${mntrem}${key}" ] ; then + umount -n "${mntrem}" + rmdir "${mntrem}" + einfo "Cannot find ${key} on removable media." + read_abort "Abort" ${dmcrypt_key_timeout} && return + else + key="${mntrem}${key}" + break + fi + else + [ -e "${remdev}" ] \ + && foo="mount failed" \ + || foo="mount source not found" + fi + : $((i += 1)) + read_abort "Stop waiting after $i attempts (${foo})" -t 1 && return + done + else # keyfile ! on removable device + if [ ! -e "${key}" ] ; then + ewarn "${source} will not be decrypted ..." + einfo "Reason: keyfile ${key} does not exist." + return + fi + fi + ;; + *) + ewarn "${source} will not be decrypted ..." + einfo "Reason: mode ${mode} is invalid." + return + ;; + esac + else + mode=none + fi + ebegin " ${target} using: ${options} ${arg1} ${arg2} ${arg3}" + if [ "${mode}" = "gpg" ] ; then + : ${gpg_options:='-q -d'} + # gpg available ? + if command -v gpg >/dev/null ; then + i=0 + while [ ${i} -lt ${dmcrypt_retries} ] ; do + # paranoid, don't store key in a variable, pipe it so it stays very little in ram unprotected. + # save stdin stdout stderr "values" + timeout ${dmcrypt_max_timeout} gpg ${gpg_options} ${key} 2>/dev/null | \ + cryptsetup --key-file - ${options} ${arg1} ${arg2} ${arg3} + ret=$? + # The timeout command exits 124 when it times out. + [ ${ret} -eq 0 -o ${ret} -eq 124 ] && break + : $(( i += 1 )) + done + eend ${ret} "failure running cryptsetup" + else + ewarn "${source} will not be decrypted ..." + einfo "Reason: cannot find gpg application." + einfo "You have to install gnupg first." + einfo "If you have /usr on its own partition, try copying gpg to /bin ." + fi + else + if [ "${mode}" = "reg" ] ; then + cryptsetup ${options} -d ${key} ${arg1} ${arg2} ${arg3} + ret=$? + eend ${ret} "failure running cryptsetup" + else + cryptsetup ${options} ${arg1} ${arg2} ${arg3} + ret=$? + eend ${ret} "failure running cryptsetup" + fi + fi + if [ -d "${mntrem}" ] ; then + umount -n ${mntrem} 2>/dev/null >/dev/null + rmdir ${mntrem} 2>/dev/null >/dev/null + fi + splash svc_input_end ${SVCNAME} >/dev/null 2>&1 + + if [ ${ret} -ne 0 ] ; then + cryptfs_status=1 + else + if [ -n "${pre_mount}" ] ; then + dev="/dev/mapper/${target}" + eval ebegin \"" pre_mount: ${pre_mount}"\" + eval "${pre_mount}" > /dev/null + ewend $? || cryptfs_status=1 + fi + fi +} + +# Lookup optional bootparams +get_bootparam_val() { + # We're given something like: + # foo=bar=cow + # Return the "bar=cow" part. + case $1 in + *=*) + echo "${1#*=}" + ;; + esac +} + +start() { + local header=true cryptfs_status=0 + local gpg_options key loop_file target targetline options pre_mount post_mount source swap remdev + + local x + for x in $(cat /proc/cmdline) ; do + case "${x}" in + key_timeout=*) + dmcrypt_key_timeout=$(get_bootparam_val "${x}") + ;; + esac + done + + while read targetline <&3 ; do + case ${targetline} in + # skip comments and blank lines + ""|"#"*) continue ;; + # skip service-specific openrc configs #377927 + rc_*) continue ;; + esac + + ${header} && ebegin "Setting up dm-crypt mappings" + header=false + + # check for the start of a new target/swap + case ${targetline} in + target=*|swap=*) + # If we have a target queued up, then execute it + dm_crypt_execute + + # Prepare for the next target/swap by resetting variables + unset gpg_options key loop_file target options pre_mount post_mount source swap remdev + ;; + + gpg_options=*|remdev=*|key=*|loop_file=*|options=*|pre_mount=*|post_mount=*|source=*) + if [ -z "${target}${swap}" ] ; then + ewarn "Ignoring setting outside target/swap section: ${targetline}" + continue + fi + ;; + + dmcrypt_*=*) + # ignore global options + continue + ;; + + *) + ewarn "Skipping invalid line in ${conf_file}: ${targetline}" + ;; + esac + + # Queue this setting for the next call to dm_crypt_execute + eval "${targetline}" + done 3< ${conf_file} + + # If we have a target queued up, then execute it + dm_crypt_execute + + ewend ${cryptfs_status} "Failed to setup dm-crypt devices" +} + +stop() { + local line header + + # Break down all mappings + header=true + egrep "^(target|swap)=" ${conf_file} | \ + while read line ; do + ${header} && einfo "Removing dm-crypt mappings" + header=false + + target= swap= + eval ${line} + + [ -n "${swap}" ] && target=${swap} + if [ -z "${target}" ] ; then + ewarn "invalid line in ${conf_file}: ${line}" + continue + fi + + ebegin " ${target}" + cryptsetup remove ${target} + eend $? + done + + # Break down loop devices + header=true + grep '^source=./dev/loop' ${conf_file} | \ + while read line ; do + ${header} && einfo "Detaching dm-crypt loop devices" + header=false + + source= + eval ${line} + + ebegin " ${source}" + losetup -d "${source}" + eend $? + done + + return 0 +} diff --git a/repo/cunit/cunit.xibuild b/repo/cunit/cunit.xibuild new file mode 100644 index 0000000..3b4b04f --- /dev/null +++ b/repo/cunit/cunit.xibuild @@ -0,0 +1,48 @@ +#!/bin/sh + +NAME="cunit" +DESC="Automated testing framework for C" + +MAKEDEPS=" automake autoconf libtool bash" + +PKG_VER=2.1-3 +SOURCE="https://downloads.sourceforge.net/project/cunit/CUnit/$PKG_VER/CUnit-$PKG_VER.tar.bz2" + +ADDITIONAL=" +path-makefile.patch +" + +prepare() { + apply_patches + + libtoolize --force --copy + aclocal + autoheader + automake --add-missing --include-deps --copy + autoconf + sed -i "s/@VERSION@-@RELEASE@/$PKG_VER/" cunit.pc.in +} + +build() { + ./configure \ + --prefix=/usr \ + --includedir=/usr/include \ + --datarootdir=/usr/share \ + --libdir=/usr/lib \ + --enable-debug \ + --enable-examples \ + --enable-automated \ + --enable-basic \ + --enable-test \ + --disable-static + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/cunit/path-makefile.patch b/repo/cunit/path-makefile.patch new file mode 100644 index 0000000..a55bcd1 --- /dev/null +++ b/repo/cunit/path-makefile.patch @@ -0,0 +1,31 @@ +diff --git a/doc/Makefile.am b/doc/Makefile.am +index a864d46..1c15fc0 100644 +--- a/doc/Makefile.am ++++ b/doc/Makefile.am +@@ -1,6 +1,6 @@ + ## Process this file with automake to produce Makefile.in + +-docdir = $(prefix)/doc/@PACKAGE@ ++docdir = $(datarootdir)/doc/@PACKAGE@ + + doc_DATA = \ + CUnit_doc.css \ +@@ -13,4 +13,4 @@ doc_DATA = \ + test_registry.html \ + writing_tests.html + +-SUBDIRS = headers +\ No newline at end of file ++SUBDIRS = headers +diff --git a/doc/headers/Makefile.am b/doc/headers/Makefile.am +index 9926e8b..3c5f1ba 100644 +--- a/doc/headers/Makefile.am ++++ b/doc/headers/Makefile.am +@@ -1,6 +1,6 @@ + ## Process this file with automake to produce Makefile.in + +-dochdrdir = $(prefix)/doc/@PACKAGE@/headers ++dochdrdir = $(includedir)/@PACKAGE@/headers + + INCLUDE_FILES = \ + Automated.h \ diff --git a/repo/cython/cython-test-fix.patch b/repo/cython/cython-test-fix.patch new file mode 100644 index 0000000..58ddce1 --- /dev/null +++ b/repo/cython/cython-test-fix.patch @@ -0,0 +1,23 @@ +From 9bc0abecb3a08ea13313200a51f1ee26a65e5be3 Mon Sep 17 00:00:00 2001 +From: Stefan Behnel <stefan_ml@behnel.de> +Date: Sat, 3 Apr 2021 08:23:44 +0200 +Subject: [PATCH] Make a helper function in a C++ test correctly propagate + exceptions so that it won't have to spit out compiler warnings. + +--- + tests/run/cpp_stl_conversion.pyx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/run/cpp_stl_conversion.pyx b/tests/run/cpp_stl_conversion.pyx +index 5278c677ae..ccebc700ee 100644 +--- a/tests/run/cpp_stl_conversion.pyx ++++ b/tests/run/cpp_stl_conversion.pyx +@@ -15,7 +15,7 @@ py_set = set + py_xrange = xrange + py_unicode = unicode + +-cdef string add_strings(string a, string b): ++cdef string add_strings(string a, string b) except *: + return a + b + + def normalize(bytes b): diff --git a/repo/cython/cython.xibuild b/repo/cython/cython.xibuild new file mode 100644 index 0000000..aebe286 --- /dev/null +++ b/repo/cython/cython.xibuild @@ -0,0 +1,29 @@ +#!/bin/sh + +NAME="cython" +DESC="Cython is an optimising static compiler for both the Python & the extended Cython programming languages." + +MAKEDEPS="python" + +PKG_VER=0.29.24 +SOURCE="https://github.com/cython/cython/archive/$PKG_VER.tar.gz" + +ADDITIONAL=" +cython-test-fix.patch +" + +prepare () { + apply_patches +} + +build() { + python3 setup.py build +} + +package() { + python3 setup.py install --prefix=/usr --root="$PKG_DEST" + + install -Dm 644 LICENSE.txt "$PKG_DEST/usr/share/licenses/cython/license" + install -Dm 644 README.rst "$PKG_DEST/usr/share/doc/cython/readme.rst" +} + diff --git a/repo/extra-cmake-modules/extra-cmake-modules.xibuild b/repo/extra-cmake-modules/extra-cmake-modules.xibuild new file mode 100644 index 0000000..1c58956 --- /dev/null +++ b/repo/extra-cmake-modules/extra-cmake-modules.xibuild @@ -0,0 +1,22 @@ +#!/bin/sh + +NAME="extra-cmake-modules" +DESC="Extra CMake modules" + +MAKEDEPS="python-sphinx ninja python-docutils python-pygments python-babel python-pytz python-jinja python-packaging python-imagesize " + +PKG_VER=5.93.0 +SOURCE="https://download.kde.org/stable/frameworks/${PKG_VER%.*}/extra-cmake-modules-$PKG_VER.tar.xz" + +build() { + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DSphinx_BUILD_EXECUTABLE=/usr/bin/sphinx-build + cmake --build build +} + +package() { + DESTDIR="$PKG_DEST" cmake --build build --target install +} + diff --git a/repo/fcgi/fcgi.xibuild b/repo/fcgi/fcgi.xibuild new file mode 100644 index 0000000..f022411 --- /dev/null +++ b/repo/fcgi/fcgi.xibuild @@ -0,0 +1,27 @@ +#!/bin/sh + +NAME="fcgi" +DESC="FAST CGI(fcgi) is a language independent, high performant extension to CGI" + +MAKEDEPS="libtool autoconf automake" + +PKG_VER=2.4.2 +SOURCE="https://github.com/FastCGI-Archives/fcgi2/archive/$PKG_VER.tar.gz" + +build() { + export LIBS="-lm" + ./autogen.sh + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --enable-shared + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/findutils/findutils.xibuild b/repo/findutils/findutils.xibuild index 1dbc9d3..73d7660 100644 --- a/repo/findutils/findutils.xibuild +++ b/repo/findutils/findutils.xibuild @@ -11,9 +11,11 @@ build () { make defconfig make xargs make find + make fmt } package () { install -Dm755 find $PKG_DEST/usr/bin/find + install -Dm755 fmt $PKG_DEST/usr/bin/fmt install -Dm755 xargs $PKG_DEST/usr/bin/xargs } diff --git a/repo/font-dejavu/45-dejavu.conf b/repo/font-dejavu/45-dejavu.conf new file mode 100644 index 0000000..a5c3d9d --- /dev/null +++ b/repo/font-dejavu/45-dejavu.conf @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> + + <alias> + <family>DejaVu Sans</family> + <default> + <family>sans-serif</family> + </default> + </alias> + + <alias> + <family>DejaVu Sans Mono</family> + <default> + <family>monospace</family> + </default> + </alias> + + <alias> + <family>DejaVu Serif</family> + <default> + <family>serif</family> + </default> + </alias> + +</fontconfig> diff --git a/repo/font-dejavu/90-tt-dejavu.conf b/repo/font-dejavu/90-tt-dejavu.conf new file mode 100644 index 0000000..c722d39 --- /dev/null +++ b/repo/font-dejavu/90-tt-dejavu.conf @@ -0,0 +1,228 @@ +<?xml version='1.0'?> +<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> +<fontconfig> + + <!-- DejaVu Sans --> + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>DejaVu Sans</string> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintslight</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>DejaVu Sans</string> + </test> + <test name="pixelsize" compare="less"> + <double>7.5</double> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintnone</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + + <!-- DejaVu Sans Condensed --> + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>DejaVu Sans Condensed</string> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintslight</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>DejaVu Sans Condensed</string> + </test> + <test name="pixelsize" compare="less"> + <double>7.5</double> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintnone</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + + <!-- DejaVu Sans Mono --> + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>DejaVu Sans Mono</string> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintslight</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>DejaVu Sans Mono</string> + </test> + <test name="pixelsize" compare="more"> + <double>7.5</double> + </test> + <test name="pixelsize" compare="less"> + <double>14.5</double> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintfull</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>DejaVu Sans Mono</string> + </test> + <test name="pixelsize" compare="less"> + <double>7.5</double> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintnone</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>DejaVu Sans Mono</string> + </test> + <test name="pixelsize" compare="less_eq"> + <double>12.0</double> + </test> + <edit name="lcd_filter" mode="assign"> + <const>lcdlegacy</const> + </edit> + </match> + + <!-- DejaVu Serif --> + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>DejaVu Serif</string> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintslight</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>DejaVu Serif</string> + </test> + <test name="pixelsize" compare="less"> + <double>7.5</double> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintnone</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + +</fontconfig> diff --git a/repo/font-dejavu/font-dejavu.xibuild b/repo/font-dejavu/font-dejavu.xibuild new file mode 100644 index 0000000..53f1ac7 --- /dev/null +++ b/repo/font-dejavu/font-dejavu.xibuild @@ -0,0 +1,35 @@ +#!/bin/sh + +NAME="font-dejavu" +DESC="Font family based on the Bitstream Vera Fonts with a wider range of characters" + +MAKEDEPS="font-util" + +PKG_VER=2.37 +SOURCE="https://downloads.sourceforge.net/project/dejavu/dejavu/$PKG_VER/dejavu-fonts-ttf-$PKG_VER.tar.bz2" + +ADDITIONAL=" +45-dejavu.conf +90-tt-dejavu.conf +" + +package() { + mkdir -p "$PKG_DEST"/usr/share/fonts/ttf-dejavu \ + "$PKG_DEST"/etc/fonts/conf.avail \ + "$PKG_DEST"/etc/fonts/conf.d + + install -m644 "$BUILD_ROOT"/dejavu-fonts-ttf-$PKG_VER/ttf/*.ttf \ + "$BUILD_ROOT"/dejavu-lgc-fonts-ttf-$PKG_VER/ttf/*.ttf \ + "$PKG_DEST"/usr/share/fonts/ttf-dejavu + + install -m644 "$BUILD_ROOT"/dejavu-fonts-ttf-$PKG_VER/fontconfig/*.conf \ + "$BUILD_ROOT"/dejavu-lgc-fonts-ttf-$PKG_VER/fontconfig/*.conf \ + "$PKG_DEST"/etc/fonts/conf.avail + + cd "$PKG_DEST"/etc/fonts/conf.d + for j in "$BUILD_ROOT"/*.conf; do + install -m644 "$j" "$PKG_DEST"/etc/fonts/conf.avail/ + ln -sf /etc/fonts/conf.avail/${j##*/} + done +} + diff --git a/repo/font-liberation/30-liberation-mono.conf b/repo/font-liberation/30-liberation-mono.conf new file mode 100644 index 0000000..7cab434 --- /dev/null +++ b/repo/font-liberation/30-liberation-mono.conf @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE fontconfig SYSTEM "../fonts.dtd"> +<fontconfig> + + <!-- Microsoft --> + <alias binding="same"> + <family>Courier New</family> + <accept> + <family>Liberation Mono</family> + </accept> + </alias> + <alias binding="same"> + <family>Liberation Mono</family> + <default> + <family>Courier New</family> + </default> + </alias> + +</fontconfig> diff --git a/repo/font-liberation/30-liberation-sans.conf b/repo/font-liberation/30-liberation-sans.conf new file mode 100644 index 0000000..648974a --- /dev/null +++ b/repo/font-liberation/30-liberation-sans.conf @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE fontconfig SYSTEM "../fonts.dtd"> +<fontconfig> + + <!-- Microsoft --> + <alias binding="same"> + <family>Arial</family> + <accept> + <family>Liberation Sans</family> + </accept> + </alias> + <alias binding="same"> + <family>Liberation Sans</family> + <default> + <family>Arial</family> + </default> + </alias> + +</fontconfig> diff --git a/repo/font-liberation/30-liberation-serif.conf b/repo/font-liberation/30-liberation-serif.conf new file mode 100644 index 0000000..dac6a60 --- /dev/null +++ b/repo/font-liberation/30-liberation-serif.conf @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE fontconfig SYSTEM "../fonts.dtd"> +<fontconfig> + + <!-- Microsoft --> + <alias binding="same"> + <family>Times New Roman</family> + <accept> + <family>Liberation Serif</family> + </accept> + </alias> + <alias binding="same"> + <family>Liberation Serif</family> + <default> + <family>Times New Roman</family> + </default> + </alias> + +</fontconfig> diff --git a/repo/font-liberation/45-liberation.conf b/repo/font-liberation/45-liberation.conf new file mode 100644 index 0000000..4c41678 --- /dev/null +++ b/repo/font-liberation/45-liberation.conf @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> +<fontconfig> + + <alias> + <family>Liberation Mono</family> + <default> + <family>monospace</family> + </default> + </alias> + + <alias> + <family>Liberation Sans</family> + <default> + <family>sans-serif</family> + </default> + </alias> + + <alias> + <family>Liberation Serif</family> + <default> + <family>serif</family> + </default> + </alias> + +</fontconfig> diff --git a/repo/font-liberation/90-liberation.conf b/repo/font-liberation/90-liberation.conf new file mode 100644 index 0000000..6c7736d --- /dev/null +++ b/repo/font-liberation/90-liberation.conf @@ -0,0 +1,191 @@ +<?xml version='1.0'?> +<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> +<fontconfig> + + <!-- Liberation Mono --> + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>Liberation Mono</string> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintslight</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>Liberation Mono</string> + </test> + <test name="pixelsize" compare="more"> + <double>10.5</double> + </test> + <test name="pixelsize" compare="less"> + <double>13.5</double> + </test> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintfull</const> + </edit> + </match> + + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>Liberation Mono</string> + </test> + <test name="pixelsize" compare="more"> + <double>15.5</double> + </test> + <test name="pixelsize" compare="less"> + <double>17.5</double> + </test> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintfull</const> + </edit> + </match> + + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>Liberation Mono</string> + </test> + <test name="pixelsize" compare="more"> + <double>19.5</double> + </test> + <test name="pixelsize" compare="less"> + <double>22.5</double> + </test> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintfull</const> + </edit> + </match> + + <match target="font"> + <test name="family"> + <string>Liberation Mono</string> + </test> + <test name="pixelsize" compare="less_eq"> + <double>12.0</double> + </test> + <edit name="lcd_filter" mode="assign"> + <const>lcdlegacy</const> + </edit> + </match> + + <!-- Liberation Sans --> + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>Liberation Sans</string> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintslight</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>Liberation Sans</string> + </test> + <test name="pixelsize" compare="less"> + <double>12.5</double> + </test> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintfull</const> + </edit> + <edit name="lcd_filter" mode="assign"> + <const>lcdlegacy</const> + </edit> + </match> + + <!-- Liberation Serif --> + <match target="font"> + <test name="force_autohint"> + <bool>false</bool> + </test> + <test name="family"> + <string>Liberation Serif</string> + </test> + <edit name="antialias" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hinting" mode="assign"> + <bool>true</bool> + </edit> + <edit name="hintstyle" mode="assign"> + <const>hintslight</const> + </edit> + <edit name="autohint" mode="assign"> + <bool>false</bool> + </edit> + </match> + +</fontconfig> diff --git a/repo/font-liberation/font-liberation.xibuild b/repo/font-liberation/font-liberation.xibuild new file mode 100644 index 0000000..b9921ec --- /dev/null +++ b/repo/font-liberation/font-liberation.xibuild @@ -0,0 +1,30 @@ +#!/bin/sh + +NAME="font-liberation" +DESC="Fonts to replace commonly used Microsoft Windows fonts" + +MAKEDEPS="" + +PKG_VER=2.1.5 +SOURCE="https://github.com/liberationfonts/liberation-fonts/files/7261482/liberation-fonts-ttf-$PKG_VER.tar.gz" + +ADDITIONAL=" +30-liberation-mono.conf +30-liberation-sans.conf +30-liberation-serif.conf +45-liberation.conf +90-liberation.conf +" + +package() { + install -D -m644 ./*.ttf -t "$PKG_DEST"/usr/share/fonts/liberation/ + + mkdir -p "$PKG_DEST"/etc/fonts/conf.d + + local i; for i in "$BUILD_ROOT"/*.conf; do + install -D -m644 "$i" -t "$PKG_DEST"/etc/fonts/conf.avail/ + ln -s ../conf.avail/${i##*/} "$PKG_DEST"/etc/fonts/conf.d/${i##*/} + done +} + + diff --git a/repo/fuse/fix-realpath.patch b/repo/fuse/fix-realpath.patch new file mode 100644 index 0000000..0099173 --- /dev/null +++ b/repo/fuse/fix-realpath.patch @@ -0,0 +1,28 @@ +--- a/util/fusermount.c ++++ B/util/fusermount.c +@@ -1322,19 +1322,16 @@ + + origmnt = argv[optind]; + +- drop_privs(); + mnt = fuse_mnt_resolve_path(progname, origmnt); +- if (mnt != NULL) { +- res = chdir("/"); +- if (res == -1) { +- fprintf(stderr, "%s: failed to chdir to '/'\n", progname); +- exit(1); +- } +- } +- restore_privs(); + if (mnt == NULL) + exit(1); + ++ res = chdir("/"); ++ if (res == -1) { ++ fprintf(stderr, "%s: failed to chdir to '/'\n", progname); ++ exit(1); ++ } ++ + umask(033); + if (unmount) + goto do_unmount; diff --git a/repo/fuse/fuse.xibuild b/repo/fuse/fuse.xibuild new file mode 100644 index 0000000..849ac99 --- /dev/null +++ b/repo/fuse/fuse.xibuild @@ -0,0 +1,35 @@ +#!/bin/sh + +NAME="fuse" +DESC="A library that makes it possible to implement a filesystem in a userspace program." + +MAKEDEPS=" gettext" + +PKG_VER=2.9.9 +SOURCE="https://github.com/libfuse/libfuse/releases/download/fuse-$PKG_VER/fuse-$PKG_VER.tar.gz" + +ADDITIONAL=" +fix-realpath.patch +" + +prepare () { + apply_patches +} + +build() { + UDEV_RULES_PATH='/lib/udev/rules.d' ./configure \ + --prefix=/usr \ + --enable-static \ + --enable-shared \ + --disable-example \ + --enable-lib \ + --enable-util \ + --bindir=/bin + make +} + +package() { + make DESTDIR="$PKG_DEST" install + rm -r "$PKG_DEST"/dev "$PKG_DEST"/etc/init.d +} + diff --git a/repo/gomuks/gomuks.xibuild b/repo/gomuks/gomuks.xibuild new file mode 100644 index 0000000..bb9c184 --- /dev/null +++ b/repo/gomuks/gomuks.xibuild @@ -0,0 +1,19 @@ +#!/bin/sh + +NAME="gomuks" +DESC="terminal-based Matrix client written in Go" + +MAKEDEPS="go" + +PKG_VER=0.2.4 +SOURCE="https://github.com/tulir/gomuks/archive/v$PKG_VER.tar.gz" + +build() { + go build +} + +package() { + install -Dm755 gomuks "$PKG_DEST/usr/bin/gomuks" + install -Dm644 README.md "$PKG_DEST/usr/share/doc/gomuks/README.md" +} + diff --git a/repo/gpgme/0003-python310.patch b/repo/gpgme/0003-python310.patch new file mode 100644 index 0000000..e607cc4 --- /dev/null +++ b/repo/gpgme/0003-python310.patch @@ -0,0 +1,335 @@ +Taken from the Arch Repo +GPGME fails to detect python 3.10 currently, this patch fixes that +Patch has not been upstreamed as of right now +diff -upr gpgme-1.16.0.orig/configure gpgme-1.16.0/configure +--- gpgme-1.16.0.orig/configure 2021-06-24 20:10:50.000000000 +0300 ++++ gpgme-1.16.0/configure 2021-12-01 00:12:24.383952330 +0200 +@@ -19625,7 +19625,7 @@ $as_echo_n "checking for $am_display_PYT + if ${am_cv_python_version+:} false; then : + $as_echo_n "(cached) " >&6 + else +- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` ++ am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:4])"` + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 + $as_echo "$am_cv_python_version" >&6; } +@@ -19666,7 +19666,7 @@ else: + # <https://github.com/pypa/virtualenv/issues/118> + try: + from platform import python_implementation +- if python_implementation() == 'CPython' and sys.version[:3] == '2.7': ++ if python_implementation() == 'CPython' and sys.version[:4] == '2.7': + can_use_sysconfig = 0 + except ImportError: + pass" +@@ -19875,7 +19875,7 @@ variable to configure. See \`\`configure + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 + $as_echo_n "checking for the distutils Python package... " >&6; } + ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` +- if test -z "$ac_distutils_result"; then ++ if test $? -eq 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +@@ -19933,7 +19933,7 @@ EOD` + ac_python_version=$PYTHON_VERSION + else + ac_python_version=`$PYTHON -c "import sys; \ +- print (sys.version[:3])"` ++ print (sys.version[:4])"` + fi + fi + +@@ -20255,7 +20255,7 @@ $as_echo_n "checking for $am_display_PYT + if ${am_cv_python_version+:} false; then : + $as_echo_n "(cached) " >&6 + else +- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` ++ am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:4])"` + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 + $as_echo "$am_cv_python_version" >&6; } +@@ -20296,7 +20296,7 @@ else: + # <https://github.com/pypa/virtualenv/issues/118> + try: + from platform import python_implementation +- if python_implementation() == 'CPython' and sys.version[:3] == '2.7': ++ if python_implementation() == 'CPython' and sys.version[:4] == '2.7': + can_use_sysconfig = 0 + except ImportError: + pass" +@@ -20505,7 +20505,7 @@ variable to configure. See \`\`configure + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 + $as_echo_n "checking for the distutils Python package... " >&6; } + ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` +- if test -z "$ac_distutils_result"; then ++ if test $? -eq 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +@@ -20563,7 +20563,7 @@ EOD` + ac_python_version=$PYTHON_VERSION + else + ac_python_version=`$PYTHON -c "import sys; \ +- print (sys.version[:3])"` ++ print (sys.version[:4])"` + fi + fi + +@@ -20885,7 +20885,7 @@ $as_echo_n "checking for $am_display_PYT + if ${am_cv_python_version+:} false; then : + $as_echo_n "(cached) " >&6 + else +- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` ++ am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:4])"` + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 + $as_echo "$am_cv_python_version" >&6; } +@@ -20926,7 +20926,7 @@ else: + # <https://github.com/pypa/virtualenv/issues/118> + try: + from platform import python_implementation +- if python_implementation() == 'CPython' and sys.version[:3] == '2.7': ++ if python_implementation() == 'CPython' and sys.version[:4] == '2.7': + can_use_sysconfig = 0 + except ImportError: + pass" +@@ -21135,7 +21135,7 @@ variable to configure. See \`\`configure + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 + $as_echo_n "checking for the distutils Python package... " >&6; } + ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` +- if test -z "$ac_distutils_result"; then ++ if test $? -eq 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +@@ -21193,7 +21193,7 @@ EOD` + ac_python_version=$PYTHON_VERSION + else + ac_python_version=`$PYTHON -c "import sys; \ +- print (sys.version[:3])"` ++ print (sys.version[:4])"` + fi + fi + +@@ -21515,7 +21515,7 @@ $as_echo_n "checking for $am_display_PYT + if ${am_cv_python_version+:} false; then : + $as_echo_n "(cached) " >&6 + else +- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` ++ am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:4])"` + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 + $as_echo "$am_cv_python_version" >&6; } +@@ -21556,7 +21556,7 @@ else: + # <https://github.com/pypa/virtualenv/issues/118> + try: + from platform import python_implementation +- if python_implementation() == 'CPython' and sys.version[:3] == '2.7': ++ if python_implementation() == 'CPython' and sys.version[:4] == '2.7': + can_use_sysconfig = 0 + except ImportError: + pass" +@@ -21765,7 +21765,7 @@ variable to configure. See \`\`configure + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 + $as_echo_n "checking for the distutils Python package... " >&6; } + ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` +- if test -z "$ac_distutils_result"; then ++ if test $? -eq 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +@@ -21823,7 +21823,7 @@ EOD` + ac_python_version=$PYTHON_VERSION + else + ac_python_version=`$PYTHON -c "import sys; \ +- print (sys.version[:3])"` ++ print (sys.version[:4])"` + fi + fi + +@@ -22145,7 +22145,7 @@ $as_echo_n "checking for $am_display_PYT + if ${am_cv_python_version+:} false; then : + $as_echo_n "(cached) " >&6 + else +- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` ++ am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:4])"` + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 + $as_echo "$am_cv_python_version" >&6; } +@@ -22186,7 +22186,7 @@ else: + # <https://github.com/pypa/virtualenv/issues/118> + try: + from platform import python_implementation +- if python_implementation() == 'CPython' and sys.version[:3] == '2.7': ++ if python_implementation() == 'CPython' and sys.version[:4] == '2.7': + can_use_sysconfig = 0 + except ImportError: + pass" +@@ -22395,7 +22395,7 @@ variable to configure. See \`\`configure + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 + $as_echo_n "checking for the distutils Python package... " >&6; } + ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` +- if test -z "$ac_distutils_result"; then ++ if test $? -eq 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +@@ -22453,7 +22453,7 @@ EOD` + ac_python_version=$PYTHON_VERSION + else + ac_python_version=`$PYTHON -c "import sys; \ +- print (sys.version[:3])"` ++ print (sys.version[:4])"` + fi + fi + +@@ -22775,7 +22775,7 @@ $as_echo_n "checking for $am_display_PYT + if ${am_cv_python_version+:} false; then : + $as_echo_n "(cached) " >&6 + else +- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` ++ am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:4])"` + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 + $as_echo "$am_cv_python_version" >&6; } +@@ -22816,7 +22816,7 @@ else: + # <https://github.com/pypa/virtualenv/issues/118> + try: + from platform import python_implementation +- if python_implementation() == 'CPython' and sys.version[:3] == '2.7': ++ if python_implementation() == 'CPython' and sys.version[:4] == '2.7': + can_use_sysconfig = 0 + except ImportError: + pass" +@@ -23025,7 +23025,7 @@ variable to configure. See \`\`configure + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 + $as_echo_n "checking for the distutils Python package... " >&6; } + ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` +- if test -z "$ac_distutils_result"; then ++ if test $? -eq 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +@@ -23083,7 +23083,7 @@ EOD` + ac_python_version=$PYTHON_VERSION + else + ac_python_version=`$PYTHON -c "import sys; \ +- print (sys.version[:3])"` ++ print (sys.version[:4])"` + fi + fi + +@@ -23291,13 +23291,13 @@ $as_echo "$as_me: WARNING: + + if test -n "$PYTHON"; then + # If the user set $PYTHON, use it and don't search something else. +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.9" >&5 +-$as_echo_n "checking whether $PYTHON version is >= 3.9... " >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.10" >&5 ++$as_echo_n "checking whether $PYTHON version is >= 3.10... " >&6; } + prog="import sys + # split strings by '.' and convert to numeric. Append some zeros + # because we need at least 4 digits for the hex conversion. + # map returns an iterator in Python 3.0 and a list in 2.x +-minver = list(map(int, '3.9'.split('.'))) + [0, 0, 0] ++minver = list(map(int, '3.10'.split('.'))) + [0, 0, 0] + minverhex = 0 + # xrange is not present in Python 3.0 and range returns an iterator + for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] +@@ -23318,19 +23318,19 @@ fi + else + # Otherwise, try each interpreter until we find one that satisfies + # VERSION. +- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.9" >&5 +-$as_echo_n "checking for a Python interpreter with version >= 3.9... " >&6; } ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.10" >&5 ++$as_echo_n "checking for a Python interpreter with version >= 3.10... " >&6; } + if ${am_cv_pathless_PYTHON+:} false; then : + $as_echo_n "(cached) " >&6 + else + +- for am_cv_pathless_PYTHON in python3.9 none; do ++ for am_cv_pathless_PYTHON in python3.10 none; do + test "$am_cv_pathless_PYTHON" = none && break + prog="import sys + # split strings by '.' and convert to numeric. Append some zeros + # because we need at least 4 digits for the hex conversion. + # map returns an iterator in Python 3.0 and a list in 2.x +-minver = list(map(int, '3.9'.split('.'))) + [0, 0, 0] ++minver = list(map(int, '3.10'.split('.'))) + [0, 0, 0] + minverhex = 0 + # xrange is not present in Python 3.0 and range returns an iterator + for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] +@@ -23405,7 +23405,7 @@ $as_echo_n "checking for $am_display_PYT + if ${am_cv_python_version+:} false; then : + $as_echo_n "(cached) " >&6 + else +- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` ++ am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:4])"` + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 + $as_echo "$am_cv_python_version" >&6; } +@@ -23446,7 +23446,7 @@ else: + # <https://github.com/pypa/virtualenv/issues/118> + try: + from platform import python_implementation +- if python_implementation() == 'CPython' and sys.version[:3] == '2.7': ++ if python_implementation() == 'CPython' and sys.version[:4] == '2.7': + can_use_sysconfig = 0 + except ImportError: + pass" +@@ -23655,7 +23655,7 @@ variable to configure. See \`\`configure + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 + $as_echo_n "checking for the distutils Python package... " >&6; } + ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` +- if test -z "$ac_distutils_result"; then ++ if test $? -eq 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +@@ -23713,7 +23713,7 @@ EOD` + ac_python_version=$PYTHON_VERSION + else + ac_python_version=`$PYTHON -c "import sys; \ +- print (sys.version[:3])"` ++ print (sys.version[:4])"` + fi + fi + +@@ -24035,7 +24035,7 @@ $as_echo_n "checking for $am_display_PYT + if ${am_cv_python_version+:} false; then : + $as_echo_n "(cached) " >&6 + else +- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` ++ am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:4])"` + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 + $as_echo "$am_cv_python_version" >&6; } +@@ -24076,7 +24076,7 @@ else: + # <https://github.com/pypa/virtualenv/issues/118> + try: + from platform import python_implementation +- if python_implementation() == 'CPython' and sys.version[:3] == '2.7': ++ if python_implementation() == 'CPython' and sys.version[:4] == '2.7': + can_use_sysconfig = 0 + except ImportError: + pass" +@@ -24285,7 +24285,7 @@ variable to configure. See \`\`configure + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 + $as_echo_n "checking for the distutils Python package... " >&6; } + ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` +- if test -z "$ac_distutils_result"; then ++ if test $? -eq 0; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 + $as_echo "yes" >&6; } + else +@@ -24343,7 +24343,7 @@ EOD` + ac_python_version=$PYTHON_VERSION + else + ac_python_version=`$PYTHON -c "import sys; \ +- print (sys.version[:3])"` ++ print (sys.version[:4])"` + fi + fi + diff --git a/repo/gpgme/gpgme.post-upgrade b/repo/gpgme/gpgme.post-upgrade new file mode 100644 index 0000000..fafc49c --- /dev/null +++ b/repo/gpgme/gpgme.post-upgrade @@ -0,0 +1,16 @@ +#!/bin/sh + +ver_old="$2" + +if [ "$(apk version -t "$ver_old" '1.15.1-r3')" = '<' ]; then + cat >&2 <<-EOF + * + * gpgme, gpgmepp and qgpgme don't install a full GnuPG suite (gnupg package) + * anymore, but only gpg. However, some programs using gpgme needs more GnuPG + * components. If you encounter a problem, install gnupg package and report it + * on https://gitlab.alpinelinux.org/alpine/aports/-/issues/. + * + EOF +fi + +exit 0 diff --git a/repo/gpgme/gpgme.xibuild b/repo/gpgme/gpgme.xibuild new file mode 100644 index 0000000..920f251 --- /dev/null +++ b/repo/gpgme/gpgme.xibuild @@ -0,0 +1,38 @@ +#!/bin/sh + +NAME="gpgme" +DESC="gnupg made easy" + +MAKEDEPS="python swig libgpg-error libassuan qt5-qtbase gnupg" + +PKG_VER=1.17.1 +SOURCE="https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-$PKG_VER.tar.bz2" + +ADDITIONAL=" +0003-python310.patch +" + +prepare () { + apply_patches +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --enable-languages="cl cpp qt" \ + --enable-static \ + --disable-gpg-test \ + --disable-g13-test \ + --disable-gpgsm-test \ + --disable-gpgconf-test + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/gpgme/gpgmepp.post-upgrade b/repo/gpgme/gpgmepp.post-upgrade new file mode 100644 index 0000000..fafc49c --- /dev/null +++ b/repo/gpgme/gpgmepp.post-upgrade @@ -0,0 +1,16 @@ +#!/bin/sh + +ver_old="$2" + +if [ "$(apk version -t "$ver_old" '1.15.1-r3')" = '<' ]; then + cat >&2 <<-EOF + * + * gpgme, gpgmepp and qgpgme don't install a full GnuPG suite (gnupg package) + * anymore, but only gpg. However, some programs using gpgme needs more GnuPG + * components. If you encounter a problem, install gnupg package and report it + * on https://gitlab.alpinelinux.org/alpine/aports/-/issues/. + * + EOF +fi + +exit 0 diff --git a/repo/gpgme/qgpgme.post-upgrade b/repo/gpgme/qgpgme.post-upgrade new file mode 100644 index 0000000..fafc49c --- /dev/null +++ b/repo/gpgme/qgpgme.post-upgrade @@ -0,0 +1,16 @@ +#!/bin/sh + +ver_old="$2" + +if [ "$(apk version -t "$ver_old" '1.15.1-r3')" = '<' ]; then + cat >&2 <<-EOF + * + * gpgme, gpgmepp and qgpgme don't install a full GnuPG suite (gnupg package) + * anymore, but only gpg. However, some programs using gpgme needs more GnuPG + * components. If you encounter a problem, install gnupg package and report it + * on https://gitlab.alpinelinux.org/alpine/aports/-/issues/. + * + EOF +fi + +exit 0 diff --git a/repo/heimdal/005_all_heimdal-suid_fix.patch b/repo/heimdal/005_all_heimdal-suid_fix.patch new file mode 100644 index 0000000..0524db6 --- /dev/null +++ b/repo/heimdal/005_all_heimdal-suid_fix.patch @@ -0,0 +1,20 @@ +--- appl/su/Makefile.am 2005-06-16 18:27:46.000000000 +0200 ++++ b/appl/su/Makefile.am 2005-06-27 23:25:21.000000000 +0200 +@@ -7,6 +7,7 @@ + bin_PROGRAMS = su + bin_SUIDS = su + su_SOURCES = su.c supaths.h ++su_LDFLAGS = -Wl,-z,now + man_MANS = su.1 + + LDADD = $(LIB_kafs) \ +--- appl/otp/Makefile.am 2005-06-16 18:28:46.000000000 +0200 ++++ b/appl/otp/Makefile.am 2005-06-27 23:25:40.000000000 +0200 +@@ -8,6 +8,7 @@ + bin_SUIDS = otp + otp_SOURCES = otp.c otp_locl.h + otpprint_SOURCES = otpprint.c otp_locl.h ++otp_LDFLAGS = -Wl,-z,now + + man_MANS = otp.1 otpprint.1 + diff --git a/repo/heimdal/CVE-2018-16860.patch b/repo/heimdal/CVE-2018-16860.patch new file mode 100644 index 0000000..6424b9e --- /dev/null +++ b/repo/heimdal/CVE-2018-16860.patch @@ -0,0 +1,147 @@ +From c6257cc2c842c0faaeb4ef34e33890ee88c4cbba Mon Sep 17 00:00:00 2001 +From: Isaac Boukris <iboukris@gmail.com> +Date: Tue, 14 May 2019 09:03:18 -0400 +Subject: [PATCH] CVE-2018-16860 Heimdal KDC: Reject PA-S4U2Self with unkeyed + checksum + +S4U2Self is an extension to Kerberos used in Active Directory to allow +a service to request a kerberos ticket to itself from the Kerberos Key +Distribution Center (KDC) for a non-Kerberos authenticated user +(principal in Kerboros parlance). This is useful to allow internal +code paths to be standardized around Kerberos. + +S4U2Proxy (constrained-delegation) is an extension of this mechanism +allowing this impersonation to a second service over the network. It +allows a privileged server that obtained a S4U2Self ticket to itself +to then assert the identity of that principal to a second service and +present itself as that principal to get services from the second +service. + +There is a flaw in Samba's AD DC in the Heimdal KDC. When the Heimdal +KDC checks the checksum that is placed on the S4U2Self packet by the +server to protect the requested principal against modification, it +does not confirm that the checksum algorithm that protects the user +name (principal) in the request is keyed. This allows a +man-in-the-middle attacker who can intercept the request to the KDC to +modify the packet by replacing the user name (principal) in the +request with any desired user name (principal) that exists in the KDC +and replace the checksum protecting that name with a CRC32 checksum +(which requires no prior knowledge to compute). + +This would allow a S4U2Self ticket requested on behalf of user name +(principal) user@EXAMPLE.COM to any service to be changed to a +S4U2Self ticket with a user name (principal) of +Administrator@EXAMPLE.COM. This ticket would then contain the PAC of +the modified user name (principal). + +================== +CVSSv3 calculation +================== + +CVSS:3.0/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H (7.5) + +========================= +Workaround and Mitigation +========================= + +If server does not take privileged actions based on Kerberos tickets +obtained by S4U2Self nor obtains Kerberos tickets via further +S4U2Proxy requests then this issue cannot be exploited. + +Note that the path to an exploit is not generic, the KDC is not harmed +by the malicious checksum, it is the client service requesting the +ticket being mislead, because it trusted the KDC to return the correct +ticket and PAC. + +It is out of scope for Samba to describe all of the possible tool +chains that might be vulnerable. Here are two examples of possible +exploits in order to explain the issue more clearly. + +1). SFU2Self might be used by a web service authenticating an end user +via OAuth, Shibboleth, or other protocols to obtain a S4U2Self +Kerberos service ticket for use by any Kerberos service principal the +web service has a keytab for. One example is acquiring an AFS token +by requesting an afs/cell@REALM service ticket for a client via +SFU2Self. With this exploit an organization that deploys a KDC built +from Heimdal (be it Heimdal directly or vendor versions such as found +in Samba) is vulnerable to privilege escalation attacks. + +2). If a server authenticates users using X509 certificates, and then +uses S4U2Self to obtain a Kerberos service ticket on behalf of the +user (principal) in order to authorize access to local resources, a +man-in-the-middle attacker could allow a non-privilaged user to access +privilaged resources being protected by the server, or privilaged +resources being protected by a second server, if the first server uses +the S4U2Proxy extension in order to get a new Kerberos service ticket +to obtain access to the second server. + +In both these scenarios under conditions allowing man-in-the-middle +active network protocol manipulation, a malicious user could +authenticate using the non-Kerborized credentials of an unprivileged +user, and then elevate its privileges by intercepting the packet from +the server to the KDC and changing the requested user name (principal). + +The only Samba clients that use S4U2Self are: + +- the "net ads kerberos pac dump" (debugging) tool. + +- the CIFS proxy in the deprecated/developer-only NTVFS file +server. Note this code is not compiled or enabled by default. + +In particular, winbindd does *not* use S4U2Self. + +Finally, MIT Kerberos and so therefore the experimental MIT KDC backend +for Samba AD is understood not to be impacted. + +=============== +Further Reading +=============== + +There is more detail on and a description of the protocols in + +[MS-SFU]: Kerberos Protocol Extensions: Service for User and Constrained +Delegation Protocol +https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-sfu/ + +======= +Credits +======= + +Originally reported by Isaac Boukris and Andrew Bartlett of the Samba +Team and Catalyst. + +Patches provided by Isaac Boukris. + +Advisory written by Andrew Bartlett of the Samba Team and Catalyst, +with contributions from Isaac Boukris, Jeffrey Altman and Jeremy +Allison. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13685 +Change-Id: I4ac69ebf0503eb999a7d497a2c30fe4d293a8cc8 +Signed-off-by: Isaac Boukris <iboukris@gmail.com> +Reviewed-by: Andrew Bartlett <abartlet@samba.org> +Signed-off-by: Andrew Bartlett <abartlet@samba.org> +Reviewed-by: Jeffrey Altman <jaltman@auristor.com> +Signed-off-by: Jeffrey Altman <jaltman@auristor.com> +--- + kdc/krb5tgs.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/kdc/krb5tgs.c b/kdc/krb5tgs.c +index 8318bc0025..14943077a4 100644 +--- a/kdc/krb5tgs.c ++++ b/kdc/krb5tgs.c +@@ -2031,6 +2031,13 @@ tgs_build_reply(krb5_context context, + goto out; + } + ++ if (!krb5_checksum_is_keyed(context, self.cksum.cksumtype)) { ++ free_PA_S4U2Self(&self); ++ kdc_log(context, config, 0, "Reject PA-S4U2Self with unkeyed checksum"); ++ ret = KRB5KRB_AP_ERR_INAPP_CKSUM; ++ goto out; ++ } ++ + ret = _krb5_s4u2self_to_checksumdata(context, &self, &datack); + if (ret) + goto out; diff --git a/repo/heimdal/autoconf-270.patch b/repo/heimdal/autoconf-270.patch new file mode 100644 index 0000000..05cdc09 --- /dev/null +++ b/repo/heimdal/autoconf-270.patch @@ -0,0 +1,27 @@ +commit 22352b90e78e2d162b98b5ef6c84672c397be40a +Author: Lars Wendler <polynomial-c@gentoo.org> +Date: Wed Mar 17 17:49:18 2021 +0100 + + autoconf-2.70 fix + + autoconf-2.70 and newer are more strict with quoting etc. and thus generate + a broken configure file: + + configure: 20855: Syntax error: ")" unexpected (expecting "fi") + + Gentoo-bug: https://bugs.gentoo.org/776241 + Signed-off-by: Lars Wendler <polynomial-c@gentoo.org> + +diff --git a/cf/check-var.m4 b/cf/check-var.m4 +index 2fd7bca6f..71d6f70ca 100644 +--- a/cf/check-var.m4 ++++ b/cf/check-var.m4 +@@ -20,7 +20,7 @@ AC_MSG_RESULT($ac_foo) + if test "$ac_foo" = yes; then + AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_[]$1), 1, + [Define if you have the `]$1[' variable.]) +- m4_ifval([$2], AC_CHECK_DECLS([$1],[],[],[$2])) ++ m4_ifval([$2], [AC_CHECK_DECLS([$1],[],[],[$2])]) + fi + ]) + diff --git a/repo/heimdal/heimdal-kadmind.initd b/repo/heimdal/heimdal-kadmind.initd new file mode 100755 index 0000000..73f2381 --- /dev/null +++ b/repo/heimdal/heimdal-kadmind.initd @@ -0,0 +1,24 @@ +#!/sbin/openrc-run +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-crypt/heimdal/files/heimdal-kadmind,v 1.3 2004/09/13 22:44:54 solar Exp $ + +depend() { + need net + use heimdal-kdc + after logger +} + +start() { + ebegin "Starting heimdal kadmind" + /usr/sbin/kadmind & + echo $! > /var/run/heimdal-kadmind.pid + eend $? +} + +stop() { + ebegin "Stopping heimdal kadmind" + start-stop-daemon --stop --quiet --exec \ + /usr/sbin/kadmind + eend $? +} diff --git a/repo/heimdal/heimdal-kdc.initd b/repo/heimdal/heimdal-kdc.initd new file mode 100755 index 0000000..32288c4 --- /dev/null +++ b/repo/heimdal/heimdal-kdc.initd @@ -0,0 +1,23 @@ +#!/sbin/openrc-run +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-crypt/heimdal/files/heimdal-kdc,v 1.2 2004/09/13 15:40:34 dragonheart Exp $ + +depend() { + need net + after logger +} + +start() { + ebegin "Starting heimdal kdc" + start-stop-daemon --start --quiet --exec \ + /usr/sbin/kdc -- --detach + eend $? +} + +stop() { + ebegin "Stopping heimdal kdc" + start-stop-daemon --stop --quiet --exec \ + /usr/sbin/kdc + eend $? +} diff --git a/repo/heimdal/heimdal-kpasswdd.initd b/repo/heimdal/heimdal-kpasswdd.initd new file mode 100755 index 0000000..5fc21e0 --- /dev/null +++ b/repo/heimdal/heimdal-kpasswdd.initd @@ -0,0 +1,24 @@ +#!/sbin/openrc-run +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-crypt/heimdal/files/heimdal-kpasswdd,v 1.3 2004/09/13 22:44:54 solar Exp $ + +depend() { + need net + use heimdal-kdc + after logger +} + +start() { + ebegin "Starting heimdal kpasswdd" + start-stop-daemon --background --start --quiet --exec \ + /usr/sbin/kpasswdd + eend $? +} + +stop() { + ebegin "Stopping heimdal kpasswdd" + start-stop-daemon --stop --quiet --exec \ + /usr/sbin/kpasswdd + eend $? +} diff --git a/repo/heimdal/heimdal.xibuild b/repo/heimdal/heimdal.xibuild new file mode 100644 index 0000000..6d0e31c --- /dev/null +++ b/repo/heimdal/heimdal.xibuild @@ -0,0 +1,82 @@ +#!/bin/sh + +NAME="heimdal" +DESC="Iplementation of Kerberos 5" + +MAKEDEPS="xipkg openssl e2fsprogs autoconf automake bash gawk libtool ncurses perl readline sqlite3 texinfo perl-json gdbm " + +PKG_VER=7.7.0 +SOURCE="https://github.com/heimdal/heimdal/releases/download/heimdal-$PKG_VER/heimdal-$PKG_VER.tar.gz" + +ADDITIONAL=" +005_all_heimdal-suid_fix.patch +CVE-2018-16860.patch +autoconf-270.patch +heimdal-kadmind.initd +heimdal-kdc.initd +heimdal-kpasswdd.initd +heimdal_missing-include.patch +silence-include-headers-redirect-warnings.patch +" + +prepare() { + [ -e /usr/lib/libasn1.so ] && xi -yl remove heimdal + apply_patches + sh ./autogen.sh +} + +build() { + export LDFLAGS="$LDFLAGS -Wl,--as-needed" + + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --enable-shared=yes \ + --without-x \ + --without-berkeley-db \ + --with-readline-lib=/usr/lib \ + --with-readline-include=/usr/include/readline \ + --with-sqlite3=/usr \ + --without-openssl \ + --with-db-type-preference= + + # make sure we use system version + rm -r lib/sqlite lib/com_err + + # workarount a parallell build issue + make -C lib/asn1 der-protos.h der-private.h + make -C lib/kadm5 kadm5-protos.h kadm5-private.h kadm5_err.h + make -C lib/krb5 krb5-protos.h krb5-private.h krb5_err.h krb_err.h \ + heim_err.h k524_err.h + make -C lib/hx509 hx509-private.h hx509-protos.h + make +} + +package() { + make DESTDIR="$PKG_DEST" exec_prefix=/usr sysconfdir=/etc \ + mandir=/usr/share/man infodir=/usr/share/info datadir=/var/lib/heimdal \ + localstatedir=/var/lib/heimdal libexecdir=/usr/sbin install + + + install -m755 -D "$BUILD_ROOT"/heimdal-kadmind.initd \ + "$PKG_DEST"/etc/init.d/heimdal-kadmind + install -m755 -D "$BUILD_ROOT"/heimdal-kdc.initd \ + "$PKG_DEST"/etc/init.d/heimdal-kdc + install -m755 -D "$BUILD_ROOT"/heimdal-kpasswdd.initd \ + "$PKG_DEST"/etc/init.d/heimdal-kpasswdd + + for i in 1 3 5 8; do + rm -rf "$PKG_DEST"/usr/share/man/cat$i + done + + # Remove conflicts + # e2fsprogs + rm -f "$PKG_DEST"/usr/bin/compile_et \ + "$PKG_DEST"/usr/share/man/man1/compile_et.1 + + # Compress info pages + for page in heimdal hx509; do + gzip -9 "$PKG_DEST"/usr/share/info/$page.info + done +} diff --git a/repo/heimdal/heimdal_missing-include.patch b/repo/heimdal/heimdal_missing-include.patch new file mode 100644 index 0000000..8cca906 --- /dev/null +++ b/repo/heimdal/heimdal_missing-include.patch @@ -0,0 +1,11 @@ +--- lib/base/test_base.c 2011-09-30 15:58:45.000000000 +0300 ++++ b/lib/base/test_base.c 2011-12-27 23:04:50.482955923 +0200 +@@ -39,6 +39,8 @@ + #include "heimbase.h" + #include "heimbasepriv.h" + ++#include <stdlib.h> ++ + static void + memory_free(heim_object_t obj) + { diff --git a/repo/heimdal/silence-include-headers-redirect-warnings.patch b/repo/heimdal/silence-include-headers-redirect-warnings.patch new file mode 100644 index 0000000..4505096 --- /dev/null +++ b/repo/heimdal/silence-include-headers-redirect-warnings.patch @@ -0,0 +1,80 @@ +From 2eb67c91834a21e68c90380254c7c10ffe03a7ca Mon Sep 17 00:00:00 2001 +From: Leonardo Arena <rnalrd@alpinelinux.org> +Date: Thu, 14 Apr 2022 08:47:15 +0000 +Subject: [PATCH] silence include header warnings + +--- + cf/roken-frag.m4 | 1 - + configure | 2 +- + lib/ipc/hi_locl.h | 2 +- + lib/krb5/krb5_locl.h | 2 +- + lib/roken/getifaddrs.c | 2 +- + 5 files changed, 4 insertions(+), 5 deletions(-) + +diff --git a/cf/roken-frag.m4 b/cf/roken-frag.m4 +index f22b43a..589b2cc 100644 +--- a/cf/roken-frag.m4 ++++ b/cf/roken-frag.m4 +@@ -73,7 +73,6 @@ AC_CHECK_HEADERS([\ + stdint.h \ + sys/auxv.h \ + sys/bswap.h \ +- sys/errno.h \ + sys/ioctl.h \ + sys/mman.h \ + sys/param.h \ +diff --git a/configure b/configure +index 4cefc43..bc3bf78 100755 +--- a/configure ++++ b/configure +@@ -17965,7 +17965,7 @@ for ac_header in \ + stdint.h \ + sys/auxv.h \ + sys/bswap.h \ +- sys/errno.h \ ++ errno.h \ + sys/ioctl.h \ + sys/mman.h \ + sys/param.h \ +diff --git a/lib/ipc/hi_locl.h b/lib/ipc/hi_locl.h +index 7efe6ca..3195b44 100644 +--- a/lib/ipc/hi_locl.h ++++ b/lib/ipc/hi_locl.h +@@ -41,7 +41,7 @@ + #include <sys/un.h> + #endif + +-#include <sys/poll.h> ++#include <poll.h> + + #include <ctype.h> + #include <stdio.h> +diff --git a/lib/krb5/krb5_locl.h b/lib/krb5/krb5_locl.h +index b64f3a9..f62c40d 100644 +--- a/lib/krb5/krb5_locl.h ++++ b/lib/krb5/krb5_locl.h +@@ -44,7 +44,7 @@ + #include <ctype.h> + + #ifdef HAVE_POLL_H +-#include <sys/poll.h> ++#include <poll.h> + #endif + + #include <krb5-types.h> +diff --git a/lib/roken/getifaddrs.c b/lib/roken/getifaddrs.c +index cc949b0..a82adc5 100644 +--- a/lib/roken/getifaddrs.c ++++ b/lib/roken/getifaddrs.c +@@ -120,7 +120,7 @@ struct mbuf; + #include <linux/rtnetlink.h> + #include <sys/types.h> + #include <sys/socket.h> +-#include <sys/poll.h> ++#include <poll.h> + #include <netpacket/packet.h> + #include <net/ethernet.h> /* the L2 protocols */ + #include <sys/uio.h> +-- +2.35.1 + diff --git a/repo/hunspell/CVE-2019-16707.patch b/repo/hunspell/CVE-2019-16707.patch new file mode 100644 index 0000000..649eef5 --- /dev/null +++ b/repo/hunspell/CVE-2019-16707.patch @@ -0,0 +1,22 @@ +From ac938e2ecb48ab4dd21298126c7921689d60571b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com> +Date: Tue, 12 Nov 2019 20:03:15 +0000 +Subject: [PATCH] invalid read memory access #624 + +--- + src/hunspell/suggestmgr.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/hunspell/suggestmgr.cxx b/src/hunspell/suggestmgr.cxx +index dba084e9..c23f165a 100644 +--- a/src/hunspell/suggestmgr.cxx ++++ b/src/hunspell/suggestmgr.cxx +@@ -2040,7 +2040,7 @@ int SuggestMgr::leftcommonsubstring( + int l2 = su2.size(); + // decapitalize dictionary word + if (complexprefixes) { +- if (su1[l1 - 1] == su2[l2 - 1]) ++ if (l1 && l2 && su1[l1 - 1] == su2[l2 - 1]) + return 1; + } else { + unsigned short idx = su2.empty() ? 0 : (su2[0].h << 8) + su2[0].l; diff --git a/repo/hunspell/hunspell.xibuild b/repo/hunspell/hunspell.xibuild new file mode 100644 index 0000000..d020614 --- /dev/null +++ b/repo/hunspell/hunspell.xibuild @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME="hunspell" +DESC="Spell checker and morphological analyzer library and program" + +MAKEDEPS="gettext ncurses readline autoconf automake libtool" + +PKG_VER=1.7.0 +SOURCE="https://github.com/hunspell/hunspell/archive/v$PKG_VER.tar.gz" + +ADDITIONAL=" +CVE-2019-16707.patch +" + +prepare() { + apply_patches + autoreconf -vif +} + +build() { + ./configure \ + --prefix=/usr \ + --with-ui \ + --with-readline \ + --disable-static \ + --without-included-gettext + make +} + +check() { + make check +} + +package() { + make -j1 DESTDIR="$PKG_DEST" install +} + diff --git a/repo/hyphen/hyphen.xibuild b/repo/hyphen/hyphen.xibuild new file mode 100644 index 0000000..a73915b --- /dev/null +++ b/repo/hyphen/hyphen.xibuild @@ -0,0 +1,22 @@ +#!/bin/sh + +NAME="hyphen" +DESC="Library for high quality hyphenation and justification" + +MAKEDEPS="perl" + +PKG_VER=2.8.8 +SOURCE="https://downloads.sourceforge.net/hunspell/hyphen-$PKG_VER.tar.gz" + +build() { + ./configure \ + --prefix=/usr \ + --disable-static \ + --disable-dependency-tracking \ + --enable-fast-install + make +} + +package() { + make -j1 DESTDIR="$PKG_DEST" install +} diff --git a/repo/i2pd/i2pd.xibuild b/repo/i2pd/i2pd.xibuild index 78532c4..d1e9e51 100644 --- a/repo/i2pd/i2pd.xibuild +++ b/repo/i2pd/i2pd.xibuild @@ -41,6 +41,6 @@ package () { } postinstall () { - adduser -S -D -H -h /var/lib/i2p -s /sbin/nologin -g tor tor 2>/dev/null + useradd -r -m -U -d /var/lib/i2pd -s /sbin/nologin i2pd return 0 } diff --git a/repo/inih/inih.xibuild b/repo/inih/inih.xibuild new file mode 100644 index 0000000..e01b046 --- /dev/null +++ b/repo/inih/inih.xibuild @@ -0,0 +1,31 @@ +#!/bin/sh + +NAME="inih" +DESC="Simple .INI file parser for embedded systems" + +MAKEDEPS=" meson" + +PKG_VER=55 +SOURCE="https://github.com/benhoyt/inih/archive/r$PKG_VER.tar.gz" + +prepare() { + sed -i "s|@PKGVER@|$PKG_VER|" meson.build +} + +build() { + meson --prefix=/usr \ + -Ddefault_library=both \ + -Ddistro_install=true \ + -Dwith_INIReader=true \ + -Dmulti-line_entries=true \ + -Dutf-8_bom=true \ + -Dinline_comments=true \ + -Duse_heap=false \ + . output + meson compile ${JOBS:+-j ${JOBS}} -C output +} + +package() { + DESTDIR="$PKG_DEST" meson install --no-rebuild -C output +} + diff --git a/repo/junit/junit.xibuild b/repo/junit/junit.xibuild new file mode 100644 index 0000000..1e7bcf4 --- /dev/null +++ b/repo/junit/junit.xibuild @@ -0,0 +1,18 @@ +#!/bin/sh + +NAME="junit" +DESC="A programmer-oriented testing framework for Java" + +MAKEDEPS="" + +PKG_VER=4.13.2 +SOURCE="https://search.maven.org/remotecontent?filepath=junit/junit/$PKG_VER/junit-$PKG_VER.jar" + +package() { + local _javadir=/usr/share/java + install -dm755 "$PKG_DEST"$_javadir + install -m644 "$BUILD_ROOT"/junit-$PKG_VER.jar "$PKG_DEST"$_javadir + cd "$PKG_DEST"$_javadir + ln -s junit-$PKG_VER.jar junit.jar +} + diff --git a/repo/kconfig/kconfig.xibuild b/repo/kconfig/kconfig.xibuild new file mode 100644 index 0000000..8c83613 --- /dev/null +++ b/repo/kconfig/kconfig.xibuild @@ -0,0 +1,24 @@ +#!/bin/sh + +NAME="kconfig" +DESC="Configuration system" + +MAKEDEPS="doxygen extra-cmake-modules graphviz qt5-qtdeclarative qt5-qttools ninja" + +PKG_VER=5.93.0 +SOURCE="https://download.kde.org/stable/frameworks/${PKG_VER%.*}/kconfig-$PKG_VER.tar.xz" + +build() { + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DBUILD_QCH=ON + cmake --build build +} + +package() { + cd $BUILD_ROOT + DESTDIR="$PKG_DEST" cmake --install build +} + diff --git a/repo/leveldb/leveldb.xibuild b/repo/leveldb/leveldb.xibuild new file mode 100644 index 0000000..b5f4757 --- /dev/null +++ b/repo/leveldb/leveldb.xibuild @@ -0,0 +1,32 @@ +#!/bin/sh + +NAME="leveldb" +DESC="A fast and lightweight key/value database library by Google" + +MAKEDEPS=" cmake snappy" + +PKG_VER=1.22 +SOURCE="https://github.com/google/leveldb/archive/$PKG_VER.tar.gz" + +build() { + mkdir build && cd build + cmake .. \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + -DLEVELDB_BUILD_TESTS=ON \ + -DLEVELDB_INSTALL=ON \ + -DBUILD_SHARED_LIBS=ON + make +} + +check() { + make test +} + +package() { + make DESTDIR="$PKG_DEST" install + mkdir -p "$PKG_DEST"/usr/share/doc + cp -a ../doc "$PKG_DEST"/usr/share/doc/leveldb +} + diff --git a/repo/libabw/libabw.xibuild b/repo/libabw/libabw.xibuild new file mode 100644 index 0000000..101afac --- /dev/null +++ b/repo/libabw/libabw.xibuild @@ -0,0 +1,29 @@ +#!/bin/sh + +NAME="libabw" +DESC="Import filter and tools for AbiWord documents" + +MAKEDEPS="doxygen gperf perl librevenge libxml2 zlib" + +PKG_VER=0.1.3 +SOURCE="https://dev-www.libreoffice.org/src/libabw/libabw-$PKG_VER.tar.xz" + +build() { + export CPPFLAGS='-DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED' + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} + +tools() { + amove usr/bin +} + diff --git a/repo/libcdr/libcdr.xibuild b/repo/libcdr/libcdr.xibuild new file mode 100644 index 0000000..8e83891 --- /dev/null +++ b/repo/libcdr/libcdr.xibuild @@ -0,0 +1,27 @@ +#!/bin/sh + +NAME="libcdr" +DESC="Import filter and tools for Corel DRAW files" + +MAKEDEPS="boost doxygen icu lcms2 zlib librevenge" + +PKG_VER=0.1.7 +SOURCE="https://dev-www.libreoffice.org/src/libcdr/libcdr-$PKG_VER.tar.xz" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/libepubgen/libepubgen.xibuild b/repo/libepubgen/libepubgen.xibuild new file mode 100644 index 0000000..2a4c9a6 --- /dev/null +++ b/repo/libepubgen/libepubgen.xibuild @@ -0,0 +1,27 @@ +#!/bin/sh + +NAME="libepubgen" +DESC="EPUB generator for librevenge." + +MAKEDEPS="librevenge libxml2 doxygen" + +PKG_VER=0.1.1 +SOURCE="https://download.sourceforge.net/project/libepubgen/libepubgen-$PKG_VER/libepubgen-$PKG_VER.tar.bz2" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/libetonyek/libetonyek.xibuild b/repo/libetonyek/libetonyek.xibuild new file mode 100644 index 0000000..5df35af --- /dev/null +++ b/repo/libetonyek/libetonyek.xibuild @@ -0,0 +1,30 @@ +#!/bin/sh + +NAME="libetonyek" +DESC="Import filter and tools for Apple Keynote presentations" + +MAKEDEPS=" glm boost librevenge libxml2 zlib liblangtag gperf doxygen mdds" + +PKG_VER=0.1.10 +SOURCE="https://dev-www.libreoffice.org/src/libetonyek/libetonyek-$PKG_VER.tar.xz" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --disable-werror \ + --with-mdds=1.5 \ + --disable-static + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/libexttextcat/libexttextcat.xibuild b/repo/libexttextcat/libexttextcat.xibuild new file mode 100644 index 0000000..ac006cf --- /dev/null +++ b/repo/libexttextcat/libexttextcat.xibuild @@ -0,0 +1,28 @@ +#!/bin/sh + +NAME="libexttextcat" +DESC="An N-Gram-Based Text Categorization library" + +MAKEDEPS="" + +PKG_VER=3.4.6 +SOURCE="https://dev-www.libreoffice.org/src/libexttextcat/libexttextcat-$PKG_VER.tar.xz" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/libfreehand/fix-build.patch b/repo/libfreehand/fix-build.patch new file mode 100644 index 0000000..2a612f4 --- /dev/null +++ b/repo/libfreehand/fix-build.patch @@ -0,0 +1,13 @@ +diff --git a/src/lib/libfreehand_utils.cpp b/src/lib/libfreehand_utils.cpp +index 439c457..32f23e0 100644 +--- a/src/lib/libfreehand_utils.cpp ++++ b/src/lib/libfreehand_utils.cpp +@@ -162,7 +162,7 @@ void libfreehand::_appendUTF16(librevenge::RVNGString &text, std::vector<unsigne + while (j < length) + { + UChar32 c; +- U16_NEXT(s, j, length, c) ++ U16_NEXT(s, j, length, c); + unsigned char outbuf[U8_MAX_LENGTH+1]; + int i = 0; + U8_APPEND_UNSAFE(&outbuf[0], i, c); diff --git a/repo/libfreehand/libfreehand.xibuild b/repo/libfreehand/libfreehand.xibuild new file mode 100644 index 0000000..779bfca --- /dev/null +++ b/repo/libfreehand/libfreehand.xibuild @@ -0,0 +1,38 @@ +#!/bin/sh + +NAME="libfreehand" +DESC="Import filter and tools for Adobe FreeHand documents" + +MAKEDEPS="libxml2 lcms2 icu gperf perl doxygen librevenge zlib" + +PKG_VER=0.1.2 +SOURCE="https://dev-www.libreoffice.org/src/libfreehand/libfreehand-$PKG_VER.tar.xz" + +ADDITIONAL=" +fix-build.patch +parentheses-gcc8-fix.patch +" + +prepare() { + apply_patches +} + +build() { + export CXXFLAGS="$CXXFLAGS -Wno-error=deprecated-copy" + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/libfreehand/parentheses-gcc8-fix.patch b/repo/libfreehand/parentheses-gcc8-fix.patch new file mode 100644 index 0000000..7af1b05 --- /dev/null +++ b/repo/libfreehand/parentheses-gcc8-fix.patch @@ -0,0 +1,13 @@ +diff --git a/src/lib/FHCollector.cpp b/src/lib/FHCollector.cpp +index 874ab46edf..a5ab52ed9a 100644 +--- a/src/lib/FHCollector.cpp ++++ b/src/lib/FHCollector.cpp +@@ -1907,7 +1907,7 @@ void libfreehand::FHCollector::_outputDisplayText(const libfreehand::FHDisplayTe + textObjectProps.insert("svg:width", width); + for (int i=0; i<4; ++i) // osnola: let assume that there is no padding + { +- char const *(padding[])= {"fo:padding-left","fo:padding-right","fo:padding-top","fo:padding-bottom"}; ++ char const *padding[]= {"fo:padding-left","fo:padding-right","fo:padding-top","fo:padding-bottom"}; + textObjectProps.insert(padding[i],0,librevenge::RVNG_POINT); + } + if (!FH_ALMOST_ZERO(rotation)) diff --git a/repo/libixion/fix.patch b/repo/libixion/fix.patch new file mode 100644 index 0000000..8b4b363 --- /dev/null +++ b/repo/libixion/fix.patch @@ -0,0 +1,11 @@ +--- a/src/libixion/model_context.cpp ++++ b/src/libixion/model_context.cpp +@@ -17,7 +17,7 @@ + + namespace ixion { + +-model_context::input_cell::input_cell(nullptr_t) : type(celltype_t::empty) {} ++model_context::input_cell::input_cell(std::nullptr_t p) : type(celltype_t::empty) {} + model_context::input_cell::input_cell(bool b) : type(celltype_t::boolean) + { + value.boolean = b; diff --git a/repo/libixion/libixion.xibuild b/repo/libixion/libixion.xibuild new file mode 100644 index 0000000..7f38a07 --- /dev/null +++ b/repo/libixion/libixion.xibuild @@ -0,0 +1,36 @@ +#!/bin/sh + +NAME="libixion" +DESC="A general purpose formula parser & interpreter" + +MAKEDEPS=" boost mdds" + +PKG_VER=0.16.1 +SOURCE="https://kohei.us/files/ixion/src/libixion-$PKG_VER.tar.xz" + +ADDITIONAL=" +fix.patch +" + +prepare() { + apply_patches +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --disable-python + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/liblangtag/liblangtag.xibuild b/repo/liblangtag/liblangtag.xibuild new file mode 100644 index 0000000..9e7b01f --- /dev/null +++ b/repo/liblangtag/liblangtag.xibuild @@ -0,0 +1,23 @@ +#!/bin/sh + +NAME="liblangtag" +DESC="Interface library to access/deal with tags for identifying languages" + +MAKEDEPS="glib gobject-introspection libtool libxml2 gtk-doc" + +PKG_VER=0.6.3 +SOURCE="https://bitbucket.org/tagoh/liblangtag/downloads/liblangtag-$PKG_VER.tar.bz2" + +build() { + ./configure --prefix=/usr + make +} + +check() { + make -k check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/libmspub/libmspub.xibuild b/repo/libmspub/libmspub.xibuild new file mode 100644 index 0000000..2fc5051 --- /dev/null +++ b/repo/libmspub/libmspub.xibuild @@ -0,0 +1,31 @@ +#!/bin/sh + +NAME="libmspub" +DESC="Import filter and tools for MS Publisher files" + +MAKEDEPS="boost librevenge zlib icu libwpd libwpg doxygen" + +PKG_VER=0.1.4 +SOURCE="https://dev-www.libreoffice.org/src/libmspub/libmspub-$PKG_VER.tar.xz" + +ADDITIONAL=" +musl.patch +" + +prepare() { + apply_patches +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/libmspub/musl.patch b/repo/libmspub/musl.patch new file mode 100644 index 0000000..f800e2f --- /dev/null +++ b/repo/libmspub/musl.patch @@ -0,0 +1,12 @@ +diff --git a/src/lib/MSPUBMetaData.h b/src/lib/MSPUBMetaData.h +index 9167f4f..4456c2a 100644 +--- a/src/lib/MSPUBMetaData.h ++++ b/src/lib/MSPUBMetaData.h +@@ -13,6 +13,7 @@ + #include <map> + #include <utility> + #include <vector> ++#include <sys/types.h> /* for uintX_t types */ + + #include <librevenge/librevenge.h> + diff --git a/repo/libmwaw/libmwaw.xibuild b/repo/libmwaw/libmwaw.xibuild new file mode 100644 index 0000000..dbea1ac --- /dev/null +++ b/repo/libmwaw/libmwaw.xibuild @@ -0,0 +1,23 @@ +#!/bin/sh + +NAME="libmwaw" +DESC="Import filter and tools for old Mac documents" + +MAKEDEPS="librevenge zlib doxygen" + +PKG_VER=0.3.21 +SOURCE="https://downloads.sourceforge.net/project/libmwaw/libmwaw/libmwaw-$PKG_VER/libmwaw-$PKG_VER.tar.bz2" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/libnfs/fix-includes.patch b/repo/libnfs/fix-includes.patch new file mode 100644 index 0000000..6d599b4 --- /dev/null +++ b/repo/libnfs/fix-includes.patch @@ -0,0 +1,10 @@ +--- a/include/nfsc/libnfs.h ++++ b/include/nfsc/libnfs.h +@@ -28,6 +28,7 @@ + #endif + + #include <stdint.h> ++#include <sys/time.h> + #if defined(__ANDROID__) || defined(AROS) || defined(__PPU__) \ + || ( defined(__APPLE__) && defined(__MACH__) ) + #include <sys/time.h> diff --git a/repo/libnfs/libnfs.xibuild b/repo/libnfs/libnfs.xibuild new file mode 100644 index 0000000..582fc31 --- /dev/null +++ b/repo/libnfs/libnfs.xibuild @@ -0,0 +1,33 @@ +#!/bin/sh + +NAME="libnfs" +DESC="Client library for accessing NFS shares" + +MAKEDEPS="autoconf automake m4 libtool" + +PKG_VER=5.0.1 +SOURCE="https://github.com/sahlberg/libnfs/archive/libnfs-$PKG_VER.tar.gz" + +ADDITIONAL=" +fix-includes.patch +" + +prepare() { + apply_patches + ./bootstrap +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +package() { + make DESTDIR="$PKG_DEST" install + rm -f "$PKG_DEST"/usr/lib/*.a +} diff --git a/repo/libnumbertext/libnumbertext.xibuild b/repo/libnumbertext/libnumbertext.xibuild new file mode 100644 index 0000000..c7861e0 --- /dev/null +++ b/repo/libnumbertext/libnumbertext.xibuild @@ -0,0 +1,29 @@ +#!/bin/sh + +NAME="libnumbertext" +DESC="Number to number name and money text conversion library" + +MAKEDEPS="" + +PKG_VER=1.0.7 +SOURCE="https://github.com/Numbertext/libnumbertext/releases/download/$PKG_VER/libnumbertext-$PKG_VER.tar.xz" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --disable-static \ + --disable-werror + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/libodfgen/libodfgen.xibuild b/repo/libodfgen/libodfgen.xibuild new file mode 100644 index 0000000..0a21705 --- /dev/null +++ b/repo/libodfgen/libodfgen.xibuild @@ -0,0 +1,25 @@ +#!/bin/sh + +NAME="libodfgen" +DESC="Import filter and tools for Open Document Format" + +MAKEDEPS="boost librevenge libxml2 pkg-config doxygen" + +PKG_VER=0.1.8 +SOURCE="https://sourceforge.net/projects/libwpd/files/libodfgen/libodfgen-$PKG_VER/libodfgen-$PKG_VER.tar.xz" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --enable-fast-install + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/liborcus/fix-include.patch b/repo/liborcus/fix-include.patch new file mode 100644 index 0000000..407ef03 --- /dev/null +++ b/repo/liborcus/fix-include.patch @@ -0,0 +1,10 @@ +--- a/include/orcus/global.hpp ++++ b/include/orcus/global.hpp +@@ -11,6 +11,7 @@ + #include "types.hpp" + #include "env.hpp" + ++#include <limits> + #include <memory> + #include <functional> + diff --git a/repo/liborcus/liborcus.xibuild b/repo/liborcus/liborcus.xibuild new file mode 100644 index 0000000..7c43ca0 --- /dev/null +++ b/repo/liborcus/liborcus.xibuild @@ -0,0 +1,36 @@ +#!/bin/sh + +NAME="liborcus" +DESC="Library for processing spreadsheet documents" + +MAKEDEPS="boost mdds libixion zlib" + +PKG_VER=0.16.1 +SOURCE="https://kohei.us/files/orcus/src/liborcus-$PKG_VER.tar.xz" + +ADDITIONAL=" +fix-include.patch +" + +prepare () { + apply_patches +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --disable-python + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/libpagemaker/libpagemaker.xibuild b/repo/libpagemaker/libpagemaker.xibuild new file mode 100644 index 0000000..a189f76 --- /dev/null +++ b/repo/libpagemaker/libpagemaker.xibuild @@ -0,0 +1,24 @@ +#!/bin/sh + +NAME="libpagemaker" +DESC="Import filter and tools for PageMaker" + +MAKEDEPS="boost librevenge doxygen" + +PKG_VER=0.0.4 +SOURCE="https://dev-www.libreoffice.org/src/libpagemaker/libpagemaker-$PKG_VER.tar.xz" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --disable-werror + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/libqxp/libqxp.xibuild b/repo/libqxp/libqxp.xibuild new file mode 100644 index 0000000..51bb5a0 --- /dev/null +++ b/repo/libqxp/libqxp.xibuild @@ -0,0 +1,27 @@ +#!/bin/sh + +NAME="libqxp" +DESC="Library that parses the file format of QuarkXPress documents." + +MAKEDEPS="librevenge icu doxygen" + +PKG_VER=0.0.2 +SOURCE="https://dev-www.libreoffice.org/src/libqxp/libqxp-$PKG_VER.tar.xz" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/librdkafka/librdkafka.xibuild b/repo/librdkafka/librdkafka.xibuild new file mode 100644 index 0000000..74845fc --- /dev/null +++ b/repo/librdkafka/librdkafka.xibuild @@ -0,0 +1,23 @@ +#!/bin/sh + +NAME="librdkafka" +DESC="The Apache Kafka C/C++ library" + +MAKEDEPS="bash openssl libsasl lz4 zlib zstd rapidjson" + +PKG_VER=1.8.2 +SOURCE="https://github.com/edenhill/librdkafka/archive/v$PKG_VER.tar.gz" + +build() { + ./configure --prefix=/usr + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/libreoffice/autoconf-boost-macros.patch b/repo/libreoffice/autoconf-boost-macros.patch new file mode 100644 index 0000000..41dda98 --- /dev/null +++ b/repo/libreoffice/autoconf-boost-macros.patch @@ -0,0 +1,152 @@ +Fix language context when testing linking against boost, by moving +the AC_LANG_PUSH and AC_LANG_POP macros into a macro-wide scope for the +AX_BOOST_FOO macros. + +Upstream: Pending +--- libreoffice-7.2.2.2.orig/m4/ax_boost_date_time.m4 ++++ libreoffice-7.2.2.2/m4/ax_boost_date_time.m4 +@@ -62,15 +62,15 @@ + LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" + export LDFLAGS + ++ AC_LANG_PUSH([C++]) ++ + AC_CACHE_CHECK(whether the Boost::Date_Time library is available, + ax_cv_boost_date_time, +- [AC_LANG_PUSH([C++]) +- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/date_time/gregorian/gregorian_types.hpp>]], ++ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/date_time/gregorian/gregorian_types.hpp>]], + [[using namespace boost::gregorian; date d(2002,Jan,10); + return 0; + ]])], + ax_cv_boost_date_time=yes, ax_cv_boost_date_time=no) +- AC_LANG_POP([C++]) + ]) + if test "x$ax_cv_boost_date_time" = "xyes"; then + AC_DEFINE(HAVE_BOOST_DATE_TIME,,[define if the Boost::Date_Time library is available]) +@@ -110,4 +110,6 @@ + CPPFLAGS="$CPPFLAGS_SAVED" + LDFLAGS="$LDFLAGS_SAVED" + fi ++ ++ AC_LANG_POP([C++]) + ]) +--- libreoffice-7.2.2.2.orig/m4/ax_boost_filesystem.m4 ++++ libreoffice-7.2.2.2/m4/ax_boost_filesystem.m4 +@@ -67,15 +67,15 @@ + LIBS="$LIBS $BOOST_SYSTEM_LIB" + export LIBS + ++ AC_LANG_PUSH([C++]) ++ + AC_CACHE_CHECK(whether the Boost::Filesystem library is available, + ax_cv_boost_filesystem, +- [AC_LANG_PUSH([C++]) +- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/filesystem/path.hpp>]], ++ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/filesystem/path.hpp>]], + [[using namespace boost::filesystem; + path my_path( "foo/bar/data.txt" ); + return 0;]])], + ax_cv_boost_filesystem=yes, ax_cv_boost_filesystem=no) +- AC_LANG_POP([C++]) + ]) + if test "x$ax_cv_boost_filesystem" = "xyes"; then + AC_DEFINE(HAVE_BOOST_FILESYSTEM,,[define if the Boost::Filesystem library is available]) +@@ -115,4 +115,6 @@ + LDFLAGS="$LDFLAGS_SAVED" + LIBS="$LIBS_SAVED" + fi ++ ++ AC_LANG_POP([C++]) + ]) +--- libreoffice-7.2.2.2.orig/m4/ax_boost_iostreams.m4 ++++ libreoffice-7.2.2.2/m4/ax_boost_iostreams.m4 +@@ -61,10 +61,11 @@ + LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" + export LDFLAGS + ++ AC_LANG_PUSH([C++]) ++ + AC_CACHE_CHECK(whether the Boost::IOStreams library is available, + ax_cv_boost_iostreams, +- [AC_LANG_PUSH([C++]) +- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/iostreams/filtering_stream.hpp> ++ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/iostreams/filtering_stream.hpp> + @%:@include <boost/range/iterator_range.hpp> + ]], + [[std::string input = "Hello World!"; +@@ -73,7 +74,6 @@ + return 0; + ]])], + ax_cv_boost_iostreams=yes, ax_cv_boost_iostreams=no) +- AC_LANG_POP([C++]) + ]) + if test "x$ax_cv_boost_iostreams" = "xyes"; then + AC_DEFINE(HAVE_BOOST_IOSTREAMS,,[define if the Boost::IOStreams library is available]) +@@ -113,4 +113,6 @@ + CPPFLAGS="$CPPFLAGS_SAVED" + LDFLAGS="$LDFLAGS_SAVED" + fi ++ ++ AC_LANG_POP([C++]) + ]) +--- libreoffice-7.2.2.2.orig/m4/ax_boost_locale.m4 ++++ libreoffice-7.2.2.2/m4/ax_boost_locale.m4 +@@ -62,9 +62,11 @@ + LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" + export LDFLAGS + ++ AC_LANG_PUSH([C++]) ++ + AC_CACHE_CHECK(whether the Boost::Locale library is available, + ax_cv_boost_locale, +- [AC_LANG_PUSH([C++]) ++ [ + CXXFLAGS_SAVE=$CXXFLAGS + + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/locale.hpp>]], +@@ -72,7 +74,6 @@ + std::locale::global(gen(""));]])], + ax_cv_boost_locale=yes, ax_cv_boost_locale=no) + CXXFLAGS=$CXXFLAGS_SAVE +- AC_LANG_POP([C++]) + ]) + if test "x$ax_cv_boost_locale" = "xyes"; then + AC_SUBST(BOOST_CPPFLAGS) +@@ -116,4 +117,6 @@ + CPPFLAGS="$CPPFLAGS_SAVED" + LDFLAGS="$LDFLAGS_SAVED" + fi ++ ++ AC_LANG_POP([C++]) + ]) +--- libreoffice-7.2.2.2.orig/m4/ax_boost_system.m4 ++++ libreoffice-7.2.2.2/m4/ax_boost_system.m4 +@@ -64,9 +64,11 @@ + LDFLAGS="$LDFLAGS $BOOST_LDFLAGS" + export LDFLAGS + ++ AC_LANG_PUSH([C++]) ++ + AC_CACHE_CHECK(whether the Boost::System library is available, + ax_cv_boost_system, +- [AC_LANG_PUSH([C++]) ++ [ + CXXFLAGS_SAVE=$CXXFLAGS + CXXFLAGS= + +@@ -74,7 +76,6 @@ + [[boost::system::error_category *a = 0;]])], + ax_cv_boost_system=yes, ax_cv_boost_system=no) + CXXFLAGS=$CXXFLAGS_SAVE +- AC_LANG_POP([C++]) + ]) + if test "x$ax_cv_boost_system" = "xyes"; then + AC_SUBST(BOOST_CPPFLAGS) +@@ -118,4 +119,6 @@ + CPPFLAGS="$CPPFLAGS_SAVED" + LDFLAGS="$LDFLAGS_SAVED" + fi ++ ++ AC_LANG_POP([C++]) + ]) diff --git a/repo/libreoffice/disable-liborcus-unittest.patch b/repo/libreoffice/disable-liborcus-unittest.patch new file mode 100644 index 0000000..318d508 --- /dev/null +++ b/repo/libreoffice/disable-liborcus-unittest.patch @@ -0,0 +1,13 @@ +--- a/sc/qa/unit/subsequent_filters-test.cxx ++++ b/sc/qa/unit/subsequent_filters-test.cxx +@@ -2546,7 +2546,9 @@ + CPPUNIT_ASSERT_MESSAGE("Style Name1 : Doesn't have Attribute background, but it should have.", + pStyleSheet->GetItemSet().HasItem(ATTR_BACKGROUND, &pItem)); + const SvxBrushItem* pBackground = static_cast<const SvxBrushItem*>(pItem); +- CPPUNIT_ASSERT_EQUAL(Color(254, 255, 204), pBackground->GetColor()); ++ /* This test fails with liborcus >= 0.13.3 ++ * CPPUNIT_ASSERT_EQUAL(Color(254, 255, 204), pBackground->GetColor()); ++ */ + + CPPUNIT_ASSERT_MESSAGE("Style Name1 : Doesn't have Attribute border, but it should have.", + pStyleSheet->GetItemSet().HasItem(ATTR_BORDER, &pItem)); diff --git a/repo/libreoffice/fix-execinfo.patch b/repo/libreoffice/fix-execinfo.patch new file mode 100644 index 0000000..84f3687 --- /dev/null +++ b/repo/libreoffice/fix-execinfo.patch @@ -0,0 +1,34 @@ +--- a/sal/osl/unx/backtrace.h ++++ b/sal/osl/unx/backtrace.h +@@ -20,7 +20,7 @@ + #ifndef INCLUDED_SAL_OSL_UNX_BACKTRACE_H + #define INCLUDED_SAL_OSL_UNX_BACKTRACE_H + +-#if defined (LINUX) ++#if defined (LINUX) && defined (__GLIBC__) + + #include <execinfo.h> + +--- a/sal/osl/unx/signal.cxx ++++ b/sal/osl/unx/signal.cxx +@@ -36,7 +36,7 @@ + + #endif /* MACOSX */ + +-#ifdef LINUX ++#if defined(LINUX) && defined(__GLIBC__) + #include <execinfo.h> + #include <link.h> + #define INCLUDE_BACKTRACE + +--- a/sal/osl/unx/backtrace.c ++++ b/sal/osl/unx/backtrace.c +@@ -279,7 +279,7 @@ void backtrace_symbols_fd( void **buffer, int size, int fd ) + } + } + +-#elif !defined LINUX && !defined MACOSX && !defined IOS ++#elif !defined LINUX && !defined MACOSX && !defined IOS && !defined(__GLIBC__) + + int backtrace( void **buffer, int max_frames ) + { diff --git a/repo/libreoffice/libreoffice-base.xibuild b/repo/libreoffice/libreoffice-base.xibuild new file mode 100644 index 0000000..b38a445 --- /dev/null +++ b/repo/libreoffice/libreoffice-base.xibuild @@ -0,0 +1,11 @@ +#!/bin/sh + +DEPS="libreoffice-common" +DESC="LibreOffice - Database frontend" + +splitname="base" + +package () { + libreoffice_split $splitname + add_from_main usr/lib/libreoffice/share/xdg/$splitname.desktop +} diff --git a/repo/libreoffice/libreoffice-calc.xibuild b/repo/libreoffice/libreoffice-calc.xibuild new file mode 100644 index 0000000..c7bc5b2 --- /dev/null +++ b/repo/libreoffice/libreoffice-calc.xibuild @@ -0,0 +1,11 @@ +#!/bin/sh + +DEPS="libreoffice-common" +DESC="LibreOffice - Spreadsheet" + +splitname="calc" + +package () { + libreoffice_split $splitname + add_from_main usr/lib/libreoffice/share/xdg/$splitname.desktop +} diff --git a/repo/libreoffice/libreoffice-common.xibuild b/repo/libreoffice/libreoffice-common.xibuild new file mode 100644 index 0000000..b726db5 --- /dev/null +++ b/repo/libreoffice/libreoffice-common.xibuild @@ -0,0 +1,10 @@ +#!/bin/sh + +DEPS="libreoffice-common" +DESC="LibreOffice - Common Files" + +splitname="common" + +package () { + libreoffice_split $splitname +} diff --git a/repo/libreoffice/libreoffice-draw.xibuild b/repo/libreoffice/libreoffice-draw.xibuild new file mode 100644 index 0000000..cc73569 --- /dev/null +++ b/repo/libreoffice/libreoffice-draw.xibuild @@ -0,0 +1,11 @@ +#!/bin/sh + +DEPS="libreoffice-common" +DESC="LibreOffice - Drawing application" + +splitname="draw" + +package () { + libreoffice_split $splitname + add_from_main usr/lib/libreoffice/share/xdg/$splitname.desktop +} diff --git a/repo/libreoffice/libreoffice-impress.xibuild b/repo/libreoffice/libreoffice-impress.xibuild new file mode 100644 index 0000000..482203c --- /dev/null +++ b/repo/libreoffice/libreoffice-impress.xibuild @@ -0,0 +1,11 @@ +#!/bin/sh + +DEPS="libreoffice-common" +DESC="LibreOffice - Presentation application" + +splitname="impress" + +package () { + libreoffice_split $splitname + add_from_main usr/lib/libreoffice/share/xdg/$splitname.desktop +} diff --git a/repo/libreoffice/libreoffice-math.xibuild b/repo/libreoffice/libreoffice-math.xibuild new file mode 100644 index 0000000..8b4d0a4 --- /dev/null +++ b/repo/libreoffice/libreoffice-math.xibuild @@ -0,0 +1,11 @@ +#!/bin/sh + +DEPS="libreoffice-common" +DESC="LibreOffice - Equation Editor" + +splitname="math" + +package () { + libreoffice_split $splitname + add_from_main usr/lib/libreoffice/share/xdg/$splitname.desktop +} diff --git a/repo/libreoffice/libreoffice-postgres.xibuild b/repo/libreoffice/libreoffice-postgres.xibuild new file mode 100644 index 0000000..2cac487 --- /dev/null +++ b/repo/libreoffice/libreoffice-postgres.xibuild @@ -0,0 +1,10 @@ +#!/bin/sh + +DEPS="libreoffice-common" +DESC="LibreOffice - Connector for postgresql database" + +splitname="postgresql" + +package () { + libreoffice_split $splitname +} diff --git a/repo/libreoffice/libreoffice-sdk.xibuild b/repo/libreoffice/libreoffice-sdk.xibuild new file mode 100644 index 0000000..2106fb0 --- /dev/null +++ b/repo/libreoffice/libreoffice-sdk.xibuild @@ -0,0 +1,10 @@ +#!/bin/sh + +DEPS="libreoffice-common" +DESC="LibreOffice - SDK" + +splitname="sdk" + +package () { + libreoffice_split $splitname +} diff --git a/repo/libreoffice/libreoffice-writer.xibuild b/repo/libreoffice/libreoffice-writer.xibuild new file mode 100644 index 0000000..e2c1b74 --- /dev/null +++ b/repo/libreoffice/libreoffice-writer.xibuild @@ -0,0 +1,11 @@ +#!/bin/sh + +DEPS="libreoffice-common" +DESC="LibreOffice - Word Processor" + +splitname="writer" + +package () { + libreoffice_split $splitname + add_from_main usr/lib/libreoffice/share/xdg/$splitname.desktop +} diff --git a/repo/libreoffice/libreoffice.xibuild b/repo/libreoffice/libreoffice.xibuild new file mode 100644 index 0000000..2cdf242 --- /dev/null +++ b/repo/libreoffice/libreoffice.xibuild @@ -0,0 +1,136 @@ +#!/bin/sh + +NAME="libreoffice" +DESC="LibreOffice - Meta package for the full office suite" + +MAKEDEPS="apache-ant apr autoconf automake bison bluez boost box2d clucene cppunit cups doxygen findutils flex freetype2 glew glm glu gperf gpgme gst-plugins-base gstreamer gtk3 harfbuzz hunspell hyphen icu junit kconfig lcms2 libabw libcdr libepubgen libetonyek libexecinfo libexttextcat libfreehand libjpeg-turbo libmspub libmwaw libnumbertext libodfgen liborcus libpagemaker libqxp libstaroffice libvisio libwpd libwpg libwps libxml2 libxrandr libxrender libxslt libzmf mdds mythes neon nss libldap openssl perl perl-archive-zip poppler python qt5-qtbase redland sed tar ucpp unixodbc vigra xmlsec xz zip zxing-cpp adoptopenjdk11" + +PKG_VER=7.2.6.2 + +addsrcurl="https://dev-www.libreoffice.org/src" +case $PKG_VER in +*.*.*.*) v=${PKG_VER%.*};; +*.*.*) v=$PKG_VER;; +esac + +SOURCE="https://download.documentfoundation.org/libreoffice/src/$v/libreoffice-$PKG_VER.tar.xz" +ADDITIONAL=" + https://download.documentfoundation.org/libreoffice/src/$v/libreoffice-dictionaries-$PKG_VER.tar.xz + https://download.documentfoundation.org/libreoffice/src/$v/libreoffice-translations-$PKG_VER.tar.xz + $addsrcurl/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip + $addsrcurl/3404ab6b1792ae5f16bbd603bd1e1d03-libformula-1.1.7.zip + $addsrcurl/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip + $addsrcurl/39bb3fcea1514f1369fcfc87542390fd-sacjava-1.3.zip + $addsrcurl/3bdf40c0d199af31923e900d082ca2dd-libfonts-1.1.6.zip + $addsrcurl/798b2ffdc8bcfe7bca2cf92b62caf685-rhino1_5R5.zip + $addsrcurl/8ce2fcd72becf06c41f7201d15373ed9-librepository-1.1.6.zip + $addsrcurl/97b2d4dba862397f446b217e2b623e71-libloader-1.1.6.zip + $addsrcurl/ace6ab49184e329db254e454a010f56d-libxml-1.1.7.zip + $addsrcurl/ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip + $addsrcurl/beeca87be45ec87d241ddd0e1bad80c1-bsh-2.0b6-src.zip + $addsrcurl/d8bd5eed178db6e2b18eeed243f85aa8-flute-1.1.6.zip + $addsrcurl/db60e4fde8dd6d6807523deb71ee34dc-liblayout-0.2.10.zip + $addsrcurl/eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip + $addsrcurl/f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip + $addsrcurl/commons-logging-1.2-src.tar.gz + $addsrcurl/dtoa-20180411.tgz + $addsrcurl/lxml-4.1.1.tgz + $addsrcurl/pdfium-4500.tar.bz2 + $addsrcurl/skia-m90-45c57e116ee0ce214bdf78405a4762722e4507d9.tar.xz + $addsrcurl/QR-Code-generator-1.4.0.tar.gz + $addsrcurl/libcmis-0.5.2.tar.xz + https://dev-www.libreoffice.org/extern/185d60944ea767075d27247c3162b3bc-unowinreg.dll + https://dev-www.libreoffice.org/extern/f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf + +autoconf-boost-macros.patch +disable-liborcus-unittest.patch +fix-execinfo.patch +linux-musl.patch +musl-libintl.patch +musl-stacksize.patch +pld-skia-patches.patch +poppler-22.03.patch +remove-backtrace.patch +skia-freetype2.11.diff +" + +unpack() { + mkdir -p "$BUILD_ROOT" + for u in libreoffice-*.tar.xz; do + unxz -c "$s" | tar -C "$BUILD_ROOT" -x + done +} + +prepare() { + unpack + mv "$BUILD_ROOT/skia-freetype2.11.diff" external/skia/"skia-freetype2.11.patch" + + apply_patches + NOCONFIGURE=1 ./autogen.sh +} + +build() { + export CFLAGS="$CFLAGS -O2" + export CPPFLAGS="$CPPFLAGS -O2" + export CXXFLAGS="$CXXFLAGS -O2" + + # boost-1.59 + export CPPFLAGS="$CPPFLAGS -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED" + + export JAVA_HOME=/usr/lib/jvm/adoptopenjdk11 + java_conf=" + " + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --disable-online-update \ + --disable-fetch-external \ + --disable-dependency-tracking \ + --enable-release-build \ + --enable-split-app-modules \ + --enable-python=system \ + --with-tls=nss \ + --with-system-libs \ + --with-system-dicts \ + --with-system-ucpp \ + --with-external-dict-dir=/usr/share/hunspell \ + --with-external-hyph-dir=/usr/share/hyphen \ + --with-external-tar="$BUILD_ROOT" \ + --without-system-jars \ + --without-system-libcmis \ + --without-junit \ + --without-fonts \ + --without-system-sane \ + --without-myspell-dicts \ + --disable-firebird-sdbc \ + --disable-coinmp \ + --disable-lpsolve \ + --enable-gtk3 \ + --enable-odk \ + --enable-skia \ + --enable-gtk3-kde5 \ + --enable-kf5 \ + --enable-qt5 \ + --with-jdk-home=$JAVA_HOME \ + --with-ant-home=/usr/share/java/apache-ant \ + --with-java + + make build-nocheck +} + +package() { + make DESTDIR="$PKG_DEST"/../all distro-pack-install +} + +libreoffice_split() { + local i + grep "^[^% ]" $BUILD_ROOT/file-lists/${1}_list.txt | sort -u | while IFS= read -r i; do + [ "$i" ] || continue + dirname="$(dirname $i)" + [ -d "$PKG_DEST/$dirname" ] || install -dm755 "$PKG_DEST/$dirname" + add_from_main $i + done +} diff --git a/repo/libreoffice/linux-musl.patch b/repo/libreoffice/linux-musl.patch new file mode 100644 index 0000000..9e192bc --- /dev/null +++ b/repo/libreoffice/linux-musl.patch @@ -0,0 +1,60 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -612,7 +612,7 @@ + fi + ;; + +-linux-gnu*|k*bsd*-gnu*) ++linux-gnu*|linux-musl*|k*bsd*-gnu*) + using_freetype_fontconfig=yes + using_x11=yes + build_skia=yes +@@ -4353,7 +4353,7 @@ + esac + ;; + +-linux-gnu*) ++linux-gnu*|linux-musl*) + COM=GCC + USING_X11=TRUE + OS=LINUX +@@ -7672,7 +7672,7 @@ + test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread" + ;; + +- linux-gnu*) ++ linux-gnu*|linux-musl*) + JAVAINC="-I$JAVA_HOME/include" + JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux" + test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread" +@@ -10260,21 +10260,6 @@ + AC_SUBST(ENABLE_LIBNUMBERTEXT) + AC_SUBST(LIBNUMBERTEXT_CFLAGS) + +-dnl *************************************** +-dnl testing libc version for Linux... +-dnl *************************************** +-if test "$_os" = "Linux"; then +- AC_MSG_CHECKING([whether libc is >= 2.1.1]) +- exec 6>/dev/null # no output +- AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC) +- exec 6>&1 # output on again +- if test "$HAVE_LIBC"; then +- AC_MSG_RESULT([yes]) +- else +- AC_MSG_ERROR([no, upgrade libc]) +- fi +-fi +- + dnl ========================================= + dnl Check for uuidgen + dnl ========================================= +@@ -12812,7 +12812,7 @@ + + case "$host_os" in + +- aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*) ++ aix*|dragonfly*|freebsd*|linux-gnu*|linux-musl*|*netbsd*|openbsd*) + if test "$ENABLE_JAVA" != ""; then + pathmunge "$JAVA_HOME/bin" "after" + fi diff --git a/repo/libreoffice/musl-libintl.patch b/repo/libreoffice/musl-libintl.patch new file mode 100644 index 0000000..ceaaaff --- /dev/null +++ b/repo/libreoffice/musl-libintl.patch @@ -0,0 +1,15 @@ +diff --git a/unotools/Library_utl.mk b/unotools/Library_utl.mk +index 0bfcbad..99acee1 100644 +--- a/unotools/Library_utl.mk ++++ b/unotools/Library_utl.mk +@@ -16,6 +16,10 @@ $(eval $(call gb_Library_use_externals,utl,\ + boost_locale \ + )) + ++$(eval $(call gb_Library_add_libs,utl,\ ++ -lintl \ ++)) ++ + $(eval $(call gb_Library_use_custom_headers,utl,\ + officecfg/registry \ + )) diff --git a/repo/libreoffice/musl-stacksize.patch b/repo/libreoffice/musl-stacksize.patch new file mode 100644 index 0000000..5e72205 --- /dev/null +++ b/repo/libreoffice/musl-stacksize.patch @@ -0,0 +1,40 @@ +--- a/sal/osl/unx/thread.cxx ++++ b/sal/osl/unx/thread.cxx +@@ -250,7 +250,7 @@ + short nFlags) + { + Thread_Impl* pImpl; +-#if defined OPENBSD || ((defined MACOSX || defined LINUX) && !ENABLE_RUNTIME_OPTIMIZATIONS) ++#if defined OPENBSD || ((defined MACOSX || defined LINUX) && !ENABLE_RUNTIME_OPTIMIZATIONS) || (defined LINUX && !defined __GLIBC__) + pthread_attr_t attr; + size_t stacksize; + #endif + +@@ -266,7 +266,7 @@ + + pthread_mutex_lock (&(pImpl->m_Lock)); + +-#if defined OPENBSD || ((defined MACOSX || defined LINUX) && !ENABLE_RUNTIME_OPTIMIZATIONS) ++#if defined OPENBSD || ((defined MACOSX || defined LINUX) && !ENABLE_RUNTIME_OPTIMIZATIONS) || (defined LINUX && !defined __GLIBC__) + if (pthread_attr_init(&attr) != 0) + return nullptr; + +@@ -283,7 +283,7 @@ + + if ((nRet = pthread_create ( + &(pImpl->m_hThread), +-#if defined OPENBSD || ((defined MACOSX || defined LINUX) && !ENABLE_RUNTIME_OPTIMIZATIONS) ++#if defined OPENBSD || ((defined MACOSX || defined LINUX) && !ENABLE_RUNTIME_OPTIMIZATIONS) || (defined LINUX && !defined __GLIBC__) + &attr, + #else + PTHREAD_ATTR_DEFAULT, + +@@ -301,7 +301,7 @@ + return nullptr; + } + +-#if defined OPENBSD || ((defined MACOSX || defined LINUX) && !ENABLE_RUNTIME_OPTIMIZATIONS) ++#if defined OPENBSD || ((defined MACOSX || defined LINUX) && !ENABLE_RUNTIME_OPTIMIZATIONS) || (defined LINUX && !defined __GLIBC__) + pthread_attr_destroy(&attr); + #endif + diff --git a/repo/libreoffice/pld-skia-patches.patch b/repo/libreoffice/pld-skia-patches.patch new file mode 100644 index 0000000..b54dfe4 --- /dev/null +++ b/repo/libreoffice/pld-skia-patches.patch @@ -0,0 +1,10 @@ +--- libreoffice-7.2.2.2/external/skia/UnpackedTarball_skia.mk.orig 2021-08-10 19:27:48.000000000 +0200 ++++ libreoffice-7.2.2.2/external/skia/UnpackedTarball_skia.mk 2021-08-12 18:09:22.813517161 +0200 +@@ -41,6 +41,7 @@ + fix-warnings.patch.1 \ + disable-freetype-colrv1.1 \ + windows-libraries-system32.patch.1 \ ++ skia-freetype2.11.patch \ + + $(eval $(call gb_UnpackedTarball_set_patchlevel,skia,1)) + diff --git a/repo/libreoffice/poppler-22.03.patch b/repo/libreoffice/poppler-22.03.patch new file mode 100644 index 0000000..daa16a2 --- /dev/null +++ b/repo/libreoffice/poppler-22.03.patch @@ -0,0 +1,39 @@ +Patch-Source: https://github.com/archlinux/svntogit-packages/blob/2c89c1f968a5f8a6f260a4b91f19f43fae433520/trunk/poppler-22.03.0.patch +edited to add <memory> import +diff --git a/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx b/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx +index ad6320139..e5f6d9c68 100644 +--- a/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx ++++ b/sdext/source/pdfimport/xpdfwrapper/wrapper_gpl.cxx +@@ -28,6 +28,8 @@ + #include <config_folders.h> //LIBO_SHARE_FOLDER + #endif + ++#include <memory> ++ + FILE* g_binary_out=stderr; + + static const char *ownerPassword = "\001"; +@@ -138,6 +138,15 @@ int main(int argc, char **argv) + _setmode( _fileno( g_binary_out ), _O_BINARY ); + #endif + ++#if POPPLER_CHECK_VERSION(22, 3, 0) ++ PDFDoc aDoc( std::make_unique<GooString>(pFileName), ++ GooString(pOwnerPasswordStr), ++ GooString(pUserPasswordStr) ); ++ ++ PDFDoc aErrDoc( std::make_unique<GooString>(pErrFileName), ++ GooString(pOwnerPasswordStr), ++ GooString(pUserPasswordStr) ); ++#else + PDFDoc aDoc( pFileName, + pOwnerPasswordStr, + pUserPasswordStr ); +@@ -145,6 +154,7 @@ int main(int argc, char **argv) + PDFDoc aErrDoc( pErrFileName, + pOwnerPasswordStr, + pUserPasswordStr ); ++#endif + + // Check various permissions for aDoc. + PDFDoc &rDoc = aDoc.isOk()? aDoc: aErrDoc; diff --git a/repo/libreoffice/remove-backtrace.patch b/repo/libreoffice/remove-backtrace.patch new file mode 100644 index 0000000..f4eda53 --- /dev/null +++ b/repo/libreoffice/remove-backtrace.patch @@ -0,0 +1,163 @@ +diff --git a/sal/Library_sal.mk b/sal/Library_sal.mk +index d783c84e3..555efd664 100644 +--- a/sal/Library_sal.mk ++++ b/sal/Library_sal.mk +@@ -156,7 +156,6 @@ endif + + ifneq ($(OS),WNT) + $(eval $(call gb_Library_add_exception_objects,sal,\ +- sal/osl/unx/backtraceapi \ + sal/osl/unx/conditn \ + sal/osl/unx/file \ + sal/osl/unx/file_error_transl \ +diff --git a/sal/osl/all/log.cxx b/sal/osl/all/log.cxx +index c493f4ddf..f8f4fab62 100644 +--- a/sal/osl/all/log.cxx ++++ b/sal/osl/all/log.cxx +@@ -283,9 +283,6 @@ void sal_detail_log( + ? nStrLen : 0)); + } + s << message; +- if (backtraceDepth != 0) { +- s << " at:\n" << osl::detail::backtraceAsString(backtraceDepth); +- } + + #if defined ANDROID + int android_log_level; +diff --git a/sal/osl/unx/backtraceapi.cxx b/sal/osl/unx/backtraceapi.cxx +deleted file mode 100644 +index d11128353..000000000 +--- a/sal/osl/unx/backtraceapi.cxx ++++ /dev/null +@@ -1,72 +0,0 @@ +-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +-/* +- * This file is part of the LibreOffice project. +- * +- * This Source Code Form is subject to the terms of the Mozilla Public +- * License, v. 2.0. If a copy of the MPL was not distributed with this +- * file, You can obtain one at http://mozilla.org/MPL/2.0/. +- */ +- +-#include <sal/config.h> +- +-#include <cassert> +-#include <cstdlib> +-#include <limits> +-#include <memory> +- +-#include <o3tl/runtimetooustring.hxx> +-#include <rtl/ustrbuf.hxx> +-#include <rtl/ustring.hxx> +-#include <sal/types.h> +-#include <sal/backtrace.hxx> +- +-#include "backtrace.h" +-#include <backtraceasstring.hxx> +- +-namespace { +- +-struct FreeGuard { +- FreeGuard(char ** theBuffer): buffer(theBuffer) {} +- +- ~FreeGuard() { std::free(buffer); } +- +- char ** buffer; +-}; +- +-} +- +-OUString osl::detail::backtraceAsString(sal_uInt32 maxDepth) { +- std::unique_ptr<sal::BacktraceState> backtrace = sal::backtrace_get( maxDepth ); +- return sal::backtrace_to_string( backtrace.get()); +-} +- +-std::unique_ptr<sal::BacktraceState> sal::backtrace_get(sal_uInt32 maxDepth) +-{ +- assert(maxDepth != 0); +- auto const maxInt = static_cast<unsigned int>( +- std::numeric_limits<int>::max()); +- if (maxDepth > maxInt) { +- maxDepth = static_cast<sal_uInt32>(maxInt); +- } +- auto b1 = new void *[maxDepth]; +- int n = backtrace(b1, static_cast<int>(maxDepth)); +- return std::unique_ptr<BacktraceState>(new BacktraceState{ b1, n }); +-} +- +-OUString sal::backtrace_to_string(BacktraceState* backtraceState) +-{ +- FreeGuard b2(backtrace_symbols(backtraceState->buffer, backtraceState->nDepth)); +- if (b2.buffer == nullptr) { +- return OUString(); +- } +- OUStringBuffer b3; +- for (int i = 0; i != backtraceState->nDepth; ++i) { +- if (i != 0) { +- b3.append("\n"); +- } +- b3.append(o3tl::runtimeToOUString(b2.buffer[i])); +- } +- return b3.makeStringAndClear(); +-} +- +-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ +diff --git a/svl/source/notify/lstner.cxx b/svl/source/notify/lstner.cxx +index 40a59960a..3efcc004c 100644 +--- a/svl/source/notify/lstner.cxx ++++ b/svl/source/notify/lstner.cxx +@@ -80,13 +80,6 @@ void SfxListener::StartListening(SfxBroadcaster& rBroadcaster, DuplicateHandling + { + bool bListeningAlready = IsListening( rBroadcaster ); + +-#ifdef DBG_UTIL +- if (bListeningAlready && eDuplicateHanding == DuplicateHandling::Unexpected) +- { +- auto f = maCallStacks.find( &rBroadcaster ); +- SAL_WARN("svl", "previous StartListening call came from: " << sal::backtrace_to_string(f->second.get())); +- } +-#endif + assert(!(bListeningAlready && eDuplicateHanding == DuplicateHandling::Unexpected) && "duplicate listener, try building with DBG_UTIL to find the other insert site."); + + if (!bListeningAlready || eDuplicateHanding != DuplicateHandling::Prevent) +diff --git a/sw/source/core/attr/calbck.cxx b/sw/source/core/attr/calbck.cxx +index 3f4253cd2..8af3ee184 100644 +--- a/sw/source/core/attr/calbck.cxx ++++ b/sw/source/core/attr/calbck.cxx +@@ -170,18 +170,6 @@ bool SwModify::GetInfo( SfxPoolItem& rInfo ) const + void SwModify::Add( SwClient* pDepend ) + { + DBG_TESTSOLARMUTEX(); +-#ifdef DBG_UTIL +- // You should not EVER use SwModify directly in new code: +- // - Preexisting SwModifys should only ever be used via sw::BroadcastingModify. +- // This includes sw::BroadcastMixin, which is the long-term target (without +- // SwModify). +- // - New classes should use sw::BroadcastMixin alone. +- if(!dynamic_cast<sw::BroadcastingModify*>(this)) +- { +- auto pBT = sal::backtrace_get(20); +- SAL_WARN("sw.core", "Modify that is not broadcasting used!\n" << sal::backtrace_to_string(pBT.get())); +- } +-#endif + + if(pDepend->m_pRegisteredIn == this) + return; +diff --git a/sw/source/core/docnode/node.cxx b/sw/source/core/docnode/node.cxx +index 4f7b18ba3..fbd2eb361 100644 +--- a/sw/source/core/docnode/node.cxx ++++ b/sw/source/core/docnode/node.cxx +@@ -1164,13 +1164,6 @@ void SwContentNode::SwClientNotify( const SwModify&, const SfxHint& rHint) + // This makes the crude "WhichId" type divert from the true type, which is bad. + // Thus we are asserting here, but falling back to an proper + // hint instead. so that we at least will not spread such poison further. +-#ifdef DBG_UTIL +- if(pLegacyHint->m_pNew != pLegacyHint->m_pOld) +- { +- auto pBT = sal::backtrace_get(20); +- SAL_WARN("sw.core", "UpdateAttr not matching! " << sal::backtrace_to_string(pBT.get())); +- } +-#endif + assert(pLegacyHint->m_pNew == pLegacyHint->m_pOld); + assert(dynamic_cast<const SwUpdateAttr*>(pLegacyHint->m_pNew)); + const SwUpdateAttr aFallbackHint(0,0,0); diff --git a/repo/libreoffice/skia-freetype2.11.diff b/repo/libreoffice/skia-freetype2.11.diff new file mode 100644 index 0000000..97be7f2 --- /dev/null +++ b/repo/libreoffice/skia-freetype2.11.diff @@ -0,0 +1,37 @@ +--- skia/src/ports/SkFontHost_FreeType_common.cpp.orig 2021-03-01 15:53:09.178606791 +0100 ++++ skia/src/ports/SkFontHost_FreeType_common.cpp 2021-08-12 17:48:32.358901987 +0200 +@@ -665,8 +665,13 @@ + canvas->drawPaint(paint); + break; + } ++#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR >= 11 ++ case FT_COLR_PAINTFORMAT_TRANSFORM: { ++ SkMatrix transform = ToSkMatrix(colrv1_paint.u.transform.affine); ++#else + case FT_COLR_PAINTFORMAT_TRANSFORMED: { + SkMatrix transform = ToSkMatrix(colrv1_paint.u.transformed.affine); ++#endif + + canvas->concat(transform); + break; +@@ -760,12 +765,20 @@ + traverse_result = colrv1_start_glyph(canvas, palette, face, paint.u.colr_glyph.glyphID, + FT_COLOR_NO_ROOT_TRANSFORM); + break; ++#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR >= 11 ++ case FT_COLR_PAINTFORMAT_TRANSFORM: ++#else + case FT_COLR_PAINTFORMAT_TRANSFORMED: ++#endif + canvas->saveLayer(nullptr, nullptr); + // Traverse / draw operation will apply transform. + colrv1_draw_paint(canvas, palette, face, paint); + traverse_result = ++#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR >= 11 ++ colrv1_traverse_paint(canvas, palette, face, paint.u.transform.paint); ++#else + colrv1_traverse_paint(canvas, palette, face, paint.u.transformed.paint); ++#endif + canvas->restore(); + break; + case FT_COLR_PAINTFORMAT_ROTATE: diff --git a/repo/librevenge/librevenge.xibuild b/repo/librevenge/librevenge.xibuild new file mode 100644 index 0000000..3c5c224 --- /dev/null +++ b/repo/librevenge/librevenge.xibuild @@ -0,0 +1,36 @@ +#!/bin/sh + +NAME="librevenge" +DESC="Base library for writing document import filters" + +MAKEDEPS="boost zlib cppunit doxygen" + +PKG_VER=0.0.4 +SOURCE="https://sourceforge.net/projects/libwpd/files/librevenge/librevenge-$PKG_VER/librevenge-$PKG_VER.tar.xz" + +build() { + # workaround for boost-1.59 + # http://sourceforge.net/p/libwpd/tickets/6/ + # http://sourceforge.net/p/libwpd/librevenge/ci/0beee70d1bf52f0d81b60ee8c373e477991fe546/ + export CPPFLAGS=-DBOOST_ERROR_CODE_HEADER_ONLY + + CXXFLAGS="$CXXFLAGS -Wno-error=implicit-fallthrough -Wno-error=parentheses" \ + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --disable-dependency-tracking \ + --enable-fast-install + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/libstaroffice/fix-maybe-uninitialized.patch b/repo/libstaroffice/fix-maybe-uninitialized.patch new file mode 100644 index 0000000..b4f1ec9 --- /dev/null +++ b/repo/libstaroffice/fix-maybe-uninitialized.patch @@ -0,0 +1,11 @@ +--- a/src/lib/StarGraphicStruct.cxx ++++ b/src/lib/StarGraphicStruct.cxx +@@ -152,7 +152,7 @@ + { + if (!pattern) return false; + STOFFVec2i sz(8,8); +- unsigned tmpBufferPosition, tmpDIBFileSize; ++ unsigned tmpBufferPosition, tmpDIBFileSize = 0; + auto tmpDIBBuffer=createAndInitBMPData(sz, tmpDIBFileSize, tmpBufferPosition); + if (!tmpDIBBuffer) return false; + diff --git a/repo/libstaroffice/libstaroffice.xibuild b/repo/libstaroffice/libstaroffice.xibuild new file mode 100644 index 0000000..47c0985 --- /dev/null +++ b/repo/libstaroffice/libstaroffice.xibuild @@ -0,0 +1,30 @@ +#!/bin/sh + +NAME="libstaroffice" +DESC="Import filter for StarOffice documents" + +MAKEDEPS="zlib boost librevenge doxygen" + +PKG_VER=0.0.7 +SOURCE="https://github.com/fosnola/libstaroffice/releases/download/$PKG_VER/libstaroffice-$PKG_VER.tar.xz" + +ADDITIONAL=" +fix-maybe-uninitialized.patch +" + +prepare() { + apply_patches +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/liburing/liburing.xibuild b/repo/liburing/liburing.xibuild new file mode 100644 index 0000000..16dea1e --- /dev/null +++ b/repo/liburing/liburing.xibuild @@ -0,0 +1,24 @@ +#!/bin/sh + +NAME="liburing" +DESC="Linux kernel io_uring access library" + +MAKEDEPS="linux-headers" + +PKG_VER=2.1 +SOURCE="https://git.kernel.dk/cgit/liburing/snapshot/liburing-$PKG_VER.tar.gz" + +build() { + ./configure \ + --prefix=/usr \ + --mandir=/usr/share/man +} + +check() { + make test +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/libvisio/libvisio.xibuild b/repo/libvisio/libvisio.xibuild new file mode 100644 index 0000000..28d1145 --- /dev/null +++ b/repo/libvisio/libvisio.xibuild @@ -0,0 +1,31 @@ +#!/bin/sh + +NAME="libvisio" +DESC="Import filter and tools for MS Visio Diagrams" + +MAKEDEPS="doxygen gperf perl icu librevenge libxml2" + +PKG_VER=0.1.7 +SOURCE="https://dev-www.libreoffice.org/src/libvisio/libvisio-$PKG_VER.tar.xz" + +build() { + # boost -1.59 + export CPPFLAGS='-DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED' + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/libwpd/libwpd-gcc11.patch b/repo/libwpd/libwpd-gcc11.patch new file mode 100644 index 0000000..6fcad1e --- /dev/null +++ b/repo/libwpd/libwpd-gcc11.patch @@ -0,0 +1,25 @@ +diff --git a/src/lib/WPXContentListener.cpp b/src/lib/WPXContentListener.cpp +index ab0f9b1..0b559e6 100644 +--- a/src/lib/WPXContentListener.cpp ++++ b/src/lib/WPXContentListener.cpp +@@ -23,6 +23,7 @@ + * Corel Corporation or Corel Corporation Limited." + */ + ++#include <cstddef> + #include "WPXContentListener.h" + #include "WPXPageSpan.h" + #include "libwpd_internal.h" +diff --git a/src/lib/WPXTable.cpp b/src/lib/WPXTable.cpp +index 0ad202a..3ff35e1 100644 +--- a/src/lib/WPXTable.cpp ++++ b/src/lib/WPXTable.cpp +@@ -25,6 +25,8 @@ + * Corel Corporation or Corel Corporation Limited." + */ + ++#include <cstddef> ++ + #include "WPXTable.h" + + #include "libwpd_internal.h" diff --git a/repo/libwpd/libwpd.xibuild b/repo/libwpd/libwpd.xibuild new file mode 100644 index 0000000..a50c109 --- /dev/null +++ b/repo/libwpd/libwpd.xibuild @@ -0,0 +1,32 @@ +#!/bin/sh + +NAME="libwpd" +DESC="Import filter and tools for WordPerfect Documents" + +MAKEDEPS=" librevenge doxygen" + +PKG_VER=0.10.3 +SOURCE="https://downloads.sourceforge.net/project/libwpd/libwpd/libwpd-$PKG_VER/libwpd-$PKG_VER.tar.bz2" + +ADDITIONAL=" +libwpd-gcc11.patch +" + +prepare() { + apply_patches +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/libwpg/libwpg.xibuild b/repo/libwpg/libwpg.xibuild new file mode 100644 index 0000000..85c77b3 --- /dev/null +++ b/repo/libwpg/libwpg.xibuild @@ -0,0 +1,29 @@ +#!/bin/sh + +NAME="libwpg" +DESC="Import filter and tools for WordPerfect Graphics" + +MAKEDEPS=" doxygen librevenge libwpd" + +PKG_VER=0.3.3 +SOURCE="https://downloads.sourceforge.net/project/libwpg/libwpg/libwpg-$PKG_VER/libwpg-$PKG_VER.tar.bz2" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} + +tools() { + mkdir -p "$PKG_DEST"/usr + mv "$PKG_DEST"/usr/bin "$PKG_DEST"/usr +} + diff --git a/repo/libwps/libwps.xibuild b/repo/libwps/libwps.xibuild new file mode 100644 index 0000000..7b7e262 --- /dev/null +++ b/repo/libwps/libwps.xibuild @@ -0,0 +1,23 @@ +#!/bin/sh + +NAME="libwps" +DESC="Import filter and tools for Microsoft Works files" + +MAKEDEPS=" librevenge doxygen" + +PKG_VER=0.4.12 +SOURCE="https://downloads.sourceforge.net/project/libwps/libwps/libwps-$PKG_VER/libwps-$PKG_VER.tar.bz2" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/libzmf/libzmf.xibuild b/repo/libzmf/libzmf.xibuild new file mode 100644 index 0000000..1965f42 --- /dev/null +++ b/repo/libzmf/libzmf.xibuild @@ -0,0 +1,24 @@ +#!/bin/sh + +NAME="libzmf" +DESC="Import filter and tools for Zoner Callisto/Draw documents" + +MAKEDEPS="boost icu libpng zlib librevenge doxygen" + +PKG_VER=0.0.2 +SOURCE="https://dev-www.libreoffice.org/src/libzmf/libzmf-$PKG_VER.tar.xz" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --disable-werror + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/linux-headers/linux-headers.xibuild b/repo/linux-headers/linux-headers.xibuild index be97e70..77849f8 100644 --- a/repo/linux-headers/linux-headers.xibuild +++ b/repo/linux-headers/linux-headers.xibuild @@ -4,7 +4,7 @@ MAKEDEPS="make cpio bc perl libelf kmod xmlto xz" DEPS="pahole" DESC="Linux kernel headers" -PKG_VER=5.18.2 +PKG_VER=5.18.3 SOURCE=https://cdn.kernel.org/pub/linux/kernel/v${PKG_VER%%.*}.x/linux-$PKG_VER.tar.xz build () { diff --git a/repo/linux-libre/linux-libre.xibuild b/repo/linux-libre/linux-libre.xibuild index a4b883f..32e6a31 100644 --- a/repo/linux-libre/linux-libre.xibuild +++ b/repo/linux-libre/linux-libre.xibuild @@ -3,7 +3,7 @@ MAKEDEPS="make bc linux-headers cpio" DEPS="sbase kmod" -PKG_VER=5.18.2 +PKG_VER=5.18.3 SOURCE=https://cdn.kernel.org/pub/linux/kernel/v${PKG_VER%%.*}.x/linux-$PKG_VER.tar.xz ADDITIONAL=" fix-sbase-coreutils.patch diff --git a/repo/linux/linux.xibuild b/repo/linux/linux.xibuild index 6571211..b3a119c 100644 --- a/repo/linux/linux.xibuild +++ b/repo/linux/linux.xibuild @@ -3,7 +3,7 @@ MAKEDEPS="make bc cpio linux-headers" DEPS="sbase kmod" -PKG_VER=5.18.2 +PKG_VER=5.18.3 SOURCE=https://cdn.kernel.org/pub/linux/kernel/v${PKG_VER%%.*}.x/linux-$PKG_VER.tar.xz ADDITIONAL=" fix-sbase-coreutils.patch diff --git a/repo/lua/lua.xibuild b/repo/lua/lua.xibuild index 167fd70..738241d 100644 --- a/repo/lua/lua.xibuild +++ b/repo/lua/lua.xibuild @@ -35,26 +35,42 @@ prepare () { } build () { - ./configure \ + ./configure \ --prefix=/usr cd src CFLAGS="$CFLAGS -DLUA_USE_LINUX -DLUA_COMPAT_5_2" \ SYSLDFLAGS="$LDFLAGS" \ + LIB_LIBS="-lpthread -lm -ldl -lreadline" \ RPATH="/usr/lib" make } package () { cd .. sed -i "s/INSTALL= install -p/INSTALL= install/g" Makefile - make V=${PKG_VER%.*} \ - INSTALL_TOP="$PKG_DEST"/usr \ - INSTALL_INC="$PKG_DEST"/usr/include/lua${PKG_VER%.*} \ - INSTALL_LIB="$PKG_DEST"/usr/lib/lua${PKG_VER%.*} install + mkdir -p $PKG_DEST/usr/lib + mkdir -p $PKG_DEST/usr/bin + make V=$PKG_VER \ + INSTALL_TOP="$PKG_DEST/usr" \ + INSTALL_INC="$PKG_DEST/usr/include" \ + INSTALL_LIB="$PKG_DEST/usr/lib" \ + install + install -D -m 644 src/liblua.so.5.4.4.4 "$PKG_DEST"/usr/lib/liblua.so.5.4.4.4 + ln -sf liblua.so.5.4.4.4 $PKG_DEST/usr/lib/liblua.so.5.4.4 + ln -sf liblua.so.5.4.4.4 $PKG_DEST/usr/lib/liblua.so - mkdir -p $PKG_DEST/usr/share/doc/lua-$PKG_VER - for s in html css gif png; do - cp doc/*.$s $PKG_DEST/usr/share/doc/lua-$PKG_VER - done - install -Dm644 lua5.4.pc "$PKG_DEST"/usr/lib/pkgconfig/lua5.4.pc + + install -D -m 644 lua5.4.pc "$PKG_DEST"/usr/lib/pkgconfig/lua${PKG_VER%.*}.pc + install -D -m 644 doc/lua.1 "$PKG_DEST"/usr/share/man/man1/lua$PKG_VER + install -D -m 644 doc/luac.1 "$PKG_DEST"/usr/share/man/man1/luac$PKG_VER + + mkdir -p "$PKG_DEST"/usr/share/doc/lua5-3/ + install -m644 doc/*.html doc/*.css doc/logo.gif doc/cover.png \ + "$PKG_DEST"/usr/share/doc/lua5-3/ + + ln -s lua${PKG_VER%.*} "$PKG_DEST"/usr/bin/lua + ln -s luac${PKG_VER%.*}.a "$PKG_DEST"/usr/bin/luac + ln -s lua${PKG_VER%.*}.pc "$PKG_DEST"/usr/lib/pkgconfig/lua.pc + ln -s lua${PKG_VER} "$PKG_DEST"/usr/share/man/man1/lua.1 + ln -s luac${PKG_VER} "$PKG_DEST"/usr/share/man/man1/luac.1 } diff --git a/repo/lua5-1/lua5-1.xibuild b/repo/lua5-1/lua5-1.xibuild index 5fc5f80..4788aa7 100644 --- a/repo/lua5-1/lua5-1.xibuild +++ b/repo/lua5-1/lua5-1.xibuild @@ -45,7 +45,7 @@ build () { SYSLDFLAGS="$LDFLAGS" \ LIB_LIBS="-lpthread -lm -ldl" \ RPATH="/usr/lib" \ - V=${PKG_VER%.*} alpine_all + V=${PKG_VER%.*} } package () { @@ -55,7 +55,6 @@ package () { INSTALL_TOP="$PKG_DEST/usr" \ INSTALL_INC="$PKG_DEST/usr/include" \ INSTALL_LIB="$PKG_DEST/usr/lib" \ - alpine_install install -D -m 644 etc/lua.pc "$PKG_DEST"/usr/lib/pkgconfig/lua5.1.pc install -D -m 644 doc/lua.1 "$PKG_DEST"/usr/share/man/man1/lua5.1.1 @@ -65,13 +64,5 @@ package () { install -m644 doc/*.html doc/*.css doc/logo.gif doc/cover.png \ "$PKG_DEST"/usr/share/doc/lua5-1/ - # Create symlinks without version suffix. - ln -s lua5.1 "$PKG_DEST"/usr/bin/lua - ln -s luac5.1 "$PKG_DEST"/usr/bin/luac - ln -s lua5.1.pc "$PKG_DEST"/usr/lib/pkgconfig/lua.pc - ln -s lua5.1.1 "$PKG_DEST"/usr/share/man/man1/lua.1 - ln -s luac5.1.1 "$PKG_DEST"/usr/share/man/man1/luac.1 - - install -m644 -D etc/lua.pc $PKG_DEST/usr/lib/pkgconfig/lua5.1.pc } diff --git a/repo/lvm2/device-mapper-udev.post-install b/repo/lvm2/device-mapper-udev.post-install new file mode 100644 index 0000000..95a3590 --- /dev/null +++ b/repo/lvm2/device-mapper-udev.post-install @@ -0,0 +1,6 @@ +#!/bin/sh + +udevadm control --reload-rules +udevadm trigger + +exit 0 diff --git a/repo/lvm2/device-mapper-udev.post-upgrade b/repo/lvm2/device-mapper-udev.post-upgrade new file mode 100644 index 0000000..95a3590 --- /dev/null +++ b/repo/lvm2/device-mapper-udev.post-upgrade @@ -0,0 +1,6 @@ +#!/bin/sh + +udevadm control --reload-rules +udevadm trigger + +exit 0 diff --git a/repo/lvm2/device-mapper.xibuild b/repo/lvm2/device-mapper.xibuild new file mode 100644 index 0000000..ed259e6 --- /dev/null +++ b/repo/lvm2/device-mapper.xibuild @@ -0,0 +1,17 @@ +#!/bin/sh + +DESC="Device mapper userspace library and tools from LVM2" +DEPS="lvm2" + +package () { + install -Dm755 "$BUILD_ROOT"/dmeventd.initd "$PKG_DEST"/etc/init.d/dmeventd + + add_from_main sbin/dmeventd + add_from_main "usr/lib/libdevmapper.a" + add_from_main "lib/libdevmapper-event.so.*" + add_from_main "sbin/dm*" + add_from_main "usr/sbin/dm*" + add_from_main "lib/libdevmapper.so.*" + rm -f "$PKG_DEST"/usr/sbin/dmstats + +} diff --git a/repo/lvm2/dmeventd.initd b/repo/lvm2/dmeventd.initd new file mode 100644 index 0000000..c46f8ba --- /dev/null +++ b/repo/lvm2/dmeventd.initd @@ -0,0 +1,26 @@ +#!/sbin/openrc-run +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-fs/lvm2/files/dmeventd.initd-2.02.67-r1,v 1.3 2014/02/08 21:17:46 robbat2 Exp $ + +PIDFILE=/run/dmeventd.pid +BIN=/sbin/dmeventd + +depend() { + # As of .67-r1, we call ALL lvm start/stop scripts with --sysinit, that + # means dmeventd is NOT notified, as it cannot be safely running + after lvm device-mapper +} + +start() { + ebegin "Starting dmeventd" + start-stop-daemon --start --exec $BIN --pidfile $PIDFILE + eend $? +} + +stop() { + ebegin "Stopping dmeventd" + start-stop-daemon --stop --exec $BIN --pidfile $PIDFILE + eend $? +} + diff --git a/repo/lvm2/fix-stdio-usage.patch b/repo/lvm2/fix-stdio-usage.patch new file mode 100644 index 0000000..5ac99fd --- /dev/null +++ b/repo/lvm2/fix-stdio-usage.patch @@ -0,0 +1,49 @@ +--- ./tools/lvmcmdline.c ++++ ./tools/lvmcmdline.c +@@ -1252,7 +1252,7 @@ + int err = is_valid_fd(STDERR_FILENO); + + if (!is_valid_fd(STDIN_FILENO) && +- !(stdin = fopen(_PATH_DEVNULL, "r"))) { ++ !freopen(_PATH_DEVNULL, "r", stdin)) { + if (err) + perror("stdin stream open"); + else +@@ -1262,7 +1262,7 @@ + } + + if (!is_valid_fd(STDOUT_FILENO) && +- !(stdout = fopen(_PATH_DEVNULL, "w"))) { ++ !freopen(_PATH_DEVNULL, "w", stdout)) { + if (err) + perror("stdout stream open"); + /* else no stdout */ +@@ -1270,7 +1270,7 @@ + } + + if (!is_valid_fd(STDERR_FILENO) && +- !(stderr = fopen(_PATH_DEVNULL, "w"))) { ++ !freopen(_PATH_DEVNULL, "w", stderr)) { + printf("stderr stream open: %s\n", + strerror(errno)); + return 0; +--- ./lib/commands/toolcontext.c ++++ ./lib/commands/toolcontext.c +@@ -1869,7 +1869,7 @@ + /* FIXME Make this configurable? */ + reset_lvm_errno(1); + +-#ifndef VALGRIND_POOL ++#if !defined(VALGRIND_POOL) && defined(__GLIBC__) + /* Set in/out stream buffering before glibc */ + if (set_buffering + #ifdef SYS_gettid +@@ -2274,7 +2274,7 @@ + + if (cmd->pending_delete_mem) + dm_pool_destroy(cmd->pending_delete_mem); +-#ifndef VALGRIND_POOL ++#if !defined(VALGRIND_POOL) && defined(__GLIBC__) + if (cmd->linebuffer) { + /* Reset stream buffering to defaults */ + if (is_valid_fd(STDIN_FILENO) && diff --git a/repo/lvm2/library_dir-default-config.patch b/repo/lvm2/library_dir-default-config.patch new file mode 100644 index 0000000..6e3b958 --- /dev/null +++ b/repo/lvm2/library_dir-default-config.patch @@ -0,0 +1,10 @@ +--- ./conf/example.conf.in.orig ++++ ./conf/example.conf.in +@@ -694,6 +694,7 @@ + # Configuration option global/library_dir. + # Search this directory first for shared libraries. + # This configuration option does not have a default value defined. ++ library_dir="/lib/device-mapper" + + # Configuration option global/locking_library. + # The external locking library to use for locking_type 2. diff --git a/repo/lvm2/lvm.confd b/repo/lvm2/lvm.confd new file mode 100644 index 0000000..9d150f6 --- /dev/null +++ b/repo/lvm2/lvm.confd @@ -0,0 +1,5 @@ +# LVM should normally only be started after mdadm-raid is available +# this is because LVM physical volumes are very often MD devices. + +rc_after="mdadm-raid" + diff --git a/repo/lvm2/lvm.initd b/repo/lvm2/lvm.initd new file mode 100644 index 0000000..db6adbe --- /dev/null +++ b/repo/lvm2/lvm.initd @@ -0,0 +1,38 @@ +#!/sbin/openrc-run + +depend() { + before checkfs fsck swap + after hwdrivers modules device-mapper +} + +dm_in_proc() { + local rc=0 i= + for i in devices misc; do + grep -qs 'device-mapper' /proc/$i + rc=$(($rc + $?)) + done + return $rc +} + +start() { + local rc=0 msg= + ebegin "Setting up the Logical Volume Manager" + if [ -e /proc/modules ] && ! dm_in_proc; then + modprobe dm-mod 2>/dev/null + fi + if [ -d /proc/lvm ] || dm_in_proc; then + vgscan --mknodes --ignorelockingfailure >/dev/null 2>&1 + vgchange --sysinit --activate y >/dev/null 2>&1 + rc=$? + else + rc=1 + fi + eend $rc +} + +stop() { + ebegin "Shutting down the Logical Volume Manager" + vgchange --ignorelockingfailure -a n >/dev/null 2>&1 + eend $? +} + diff --git a/repo/lvm2/lvm2.xibuild b/repo/lvm2/lvm2.xibuild new file mode 100644 index 0000000..1d7f0bd --- /dev/null +++ b/repo/lvm2/lvm2.xibuild @@ -0,0 +1,65 @@ +#!/bin/sh + +NAME="lvm2" +DESC="Logical Volume Manager 2 utilities" + +MAKEDEPS="linux-headers libaio util-linux" + +PKG_VER=2.02.187 +SOURCE="https://mirrors.kernel.org/sourceware/lvm2/LVM2.$PKG_VER.tgz" + +ADDITIONAL=" +dmeventd.initd +fix-stdio-usage.patch +library_dir-default-config.patch +lvm.confd +lvm.initd +mallinfo.patch +mlockall-default-config.patch +" + +prepare() { + apply_patches + sed -i "s/fmt -1/fmt/" make.tmpl.in + sed -i "s/@MKDIR_P@/mkdir -p/" make.tmpl.in + sed -i "s/@INSTALL@/install/" make.tmpl.in + sed -i "s/\$(INSTALL) -p/\$(INSTALL)/" make.tmpl.in + autoreconf -vif +} + +build() { + # during cross-compilation malloc test goes wrong + export ac_cv_func_malloc_0_nonnull=yes + export ac_cv_func_realloc_0_nonnull=yes + + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libdir=/lib \ + --sbindir=/sbin \ + --localstatedir=/var \ + --disable-nls \ + --disable-readline \ + --enable-pkgconfig \ + --enable-applib \ + --with-thin=internal \ + --enable-dmeventd \ + --enable-cmdlib \ + --with-thin-check=/sbin/thin_check \ + --with-thin-dump=/sbin/thin_dump \ + --with-thin-repair=/sbin/thin_repair \ + --with-dmeventd-path=/sbin/dmeventd \ + --enable-udev_rules \ + CLDFLAGS="$LDFLAGS" \ + SHELL="/bin/bash" + make +} + +package() { + make DESTDIR="$PKG_DEST" install || return 1 + install -d "$PKG_DEST"/etc/lvm/archive "$PKG_DEST"/etc/lvm/backup + install -Dm755 "$BUILD_ROOT"/lvm.initd "$PKG_DEST"/etc/init.d/lvm + install -Dm644 "$BUILD_ROOT"/lvm.confd "$PKG_DEST"/etc/conf.d/lvm + install -Dm644 "$BUILD_ROOT"/lvm.confd "$PKG_DEST"/etc/conf.d/lvm + ln -s libdevmapper.so.1.02 "$PKG_DEST"/lib/libdevmapper.so +} diff --git a/repo/lvm2/mallinfo.patch b/repo/lvm2/mallinfo.patch new file mode 100644 index 0000000..471a6b2 --- /dev/null +++ b/repo/lvm2/mallinfo.patch @@ -0,0 +1,11 @@ +--- ./lib/mm/memlock.c.orig 2015-03-09 11:18:41.560028850 -0100 ++++ ./lib/mm/memlock.c 2015-03-09 11:19:54.504373309 -0100 +@@ -137,7 +137,7 @@ + + static void _allocate_memory(void) + { +-#ifndef VALGRIND_POOL ++#if !defined(VALGRIND_POOL) && defined(__GLIBC__) + void *stack_mem; + struct rlimit limit; + int i, area = 0, missing = _size_malloc_tmp, max_areas = 32, hblks; diff --git a/repo/lvm2/mlockall-default-config.patch b/repo/lvm2/mlockall-default-config.patch new file mode 100644 index 0000000..305ddee --- /dev/null +++ b/repo/lvm2/mlockall-default-config.patch @@ -0,0 +1,22 @@ +--- ./conf/example.conf.in.orig ++++ ./conf/example.conf.in +@@ -1352,7 +1352,7 @@ + # Use the old behavior of mlockall to pin all memory. + # Prior to version 2.02.62, LVM used mlockall() to pin the whole + # process's memory while activating devices. +- use_mlockall = 0 ++ use_mlockall = 1 + + # Configuration option activation/monitoring. + # Monitor LVs that are activated. +--- ./lib/config/defaults.h.orig ++++ ./lib/config/defaults.h +@@ -55,7 +55,7 @@ + #define DEFAULT_LVMLOCKD_LOCK_RETRIES 3 + #define DEFAULT_LVMETAD_UPDATE_WAIT_TIME 10 + #define DEFAULT_PRIORITISE_WRITE_LOCKS 1 +-#define DEFAULT_USE_MLOCKALL 0 ++#define DEFAULT_USE_MLOCKALL 1 + #define DEFAULT_METADATA_READ_ONLY 0 + #define DEFAULT_LVDISPLAY_SHOWS_FULL_DEVICE_PATH 0 + #define DEFAULT_UNKNOWN_DEVICE_NAME "[unknown]" diff --git a/repo/mdds/mdds.xibuild b/repo/mdds/mdds.xibuild new file mode 100644 index 0000000..d2555a5 --- /dev/null +++ b/repo/mdds/mdds.xibuild @@ -0,0 +1,30 @@ +#!/bin/sh + +NAME="mdds" +DESC="Multi-dimensional data index algorithm" + +MAKEDEPS=" boost" + +PKG_VER=1.7.0 +SOURCE="https://kohei.us/files/mdds/src/mdds-$PKG_VER.tar.bz2" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install + install -d 755 "$PKG_DEST"/usr/lib + mv "$PKG_DEST"/usr/share/pkgconfig "$PKG_DEST"/usr/lib/ +} + diff --git a/repo/mythes/mythes.xibuild b/repo/mythes/mythes.xibuild new file mode 100644 index 0000000..07a5ba4 --- /dev/null +++ b/repo/mythes/mythes.xibuild @@ -0,0 +1,22 @@ +#!/bin/sh + +NAME="mythes" +DESC="A simple thesaurus" + +MAKEDEPS=" perl hunspell" + +PKG_VER=1.2.4 +SOURCE="https://downloads.sourceforge.net/hunspell/mythes-$PKG_VER.tar.gz" + +build() { + ./configure \ + --prefix=/usr \ + --disable-static \ + --disable-dependency-tracking \ + --enable-fast-install + make +} + +package() { + make -j1 DESTDIR="$PKG_DEST" install +} diff --git a/repo/nodejs/nodejs.xibuild b/repo/nodejs/nodejs.xibuild index b4918c8..bcccc70 100644 --- a/repo/nodejs/nodejs.xibuild +++ b/repo/nodejs/nodejs.xibuild @@ -26,8 +26,7 @@ build () { --openssl-use-def-ca-store \ --with-icu-default-data-dir=$(icu-config --icudatadir) \ --with-intl=small-icu \ - --without-corepack \ - --without-npm + --without-corepack make } diff --git a/repo/numactl/musl.patch b/repo/numactl/musl.patch new file mode 100644 index 0000000..009233f --- /dev/null +++ b/repo/numactl/musl.patch @@ -0,0 +1,21 @@ +--- numactl-2.0.11/syscall.c.orig ++++ numactl-2.0.11/syscall.c +@@ -115,14 +115,16 @@ + + #endif + +-#if defined(__GLIBC__) && __GLIBC_PREREQ(2, 11) ++#if defined(__GLIBC__) ++# if __GLIBC_PREREQ(2,11) + + /* glibc 2.11 seems to have working 6 argument sycall. Use the + glibc supplied syscall in this case. + The version cut-off is rather arbitary and could be probably + earlier. */ + +-#define syscall6 syscall ++# define syscall6 syscall ++#endif + #elif defined(__x86_64__) + /* 6 argument calls on x86-64 are often buggy in both glibc and + asm/unistd.h. Add a working version here. */ diff --git a/repo/numactl/numactl.xibuild b/repo/numactl/numactl.xibuild new file mode 100644 index 0000000..aa4aaf1 --- /dev/null +++ b/repo/numactl/numactl.xibuild @@ -0,0 +1,31 @@ +#!/bin/sh + +NAME="numactl" +DESC="Simple NUMA policy support" + +MAKEDEPS="autoconf automake libtool linux-headers" + +PKG_VER=2.0.14 +SOURCE="https://github.com/numactl/numactl/archive/v$PKG_VER.tar.gz" + +ADDITIONAL=" +musl.patch +" + +prepare() { + apply_patches + + ./autogen.sh +} + +build() { + ./configure \ + --prefix=/usr \ + --mandir=/usr/share/man + make +} + +package() { + make DESTDIR="$PKG_DEST" install + rm -r "$PKG_DEST"/usr/share/man/man2 +} diff --git a/repo/oath-toolkit/oath-toolkit.xibuild b/repo/oath-toolkit/oath-toolkit.xibuild new file mode 100644 index 0000000..e5c77e0 --- /dev/null +++ b/repo/oath-toolkit/oath-toolkit.xibuild @@ -0,0 +1,26 @@ +#!/bin/sh + +NAME="oath-toolkit" +DESC="OATH Toolkit One-time password components" + +MAKEDEPS="pam libxml2 xmlsec autoconf automake libtool gtk2" + +PKG_VER=2.6.7 +SOURCE="https://download.savannah.gnu.org/releases/oath-toolkit/oath-toolkit-$PKG_VER.tar.gz" + +prepare() { + autoreconf --force --install +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/openttd/openttd.xibuild b/repo/openttd/openttd.xibuild new file mode 100644 index 0000000..db2ac42 --- /dev/null +++ b/repo/openttd/openttd.xibuild @@ -0,0 +1,25 @@ +#!/bin/sh + +NAME="openttd" +DESC="Open source version of the Transport Tycoon Deluxe simulator" + +MAKEDEPS="cmake fontconfig fluidsynth freetype2 icu libpng lzo ninja sdl2 xz zlib" + +PKG_VER=12.2 +SOURCE="https://cdn.openttd.org/openttd-releases/$PKG_VER/openttd-$PKG_VER-source.tar.xz" + +build() { + cmake -B build \ + -G "Ninja" \ + -DCMAKE_INSTALL_BINDIR=bin \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_DATADIR=share/games \ + -DGLOBAL_DATA_DIR=share/games/openttd \ + -DCMAKE_BUILD_TYPE=Release \ + -DReleaseBuild=ON + cmake --build build +} + +package() { + DESTDIR="$PKG_DEST" cmake --build build --target install +} diff --git a/repo/parted/fix-includes.patch b/repo/parted/fix-includes.patch new file mode 100644 index 0000000..c6eff0e --- /dev/null +++ b/repo/parted/fix-includes.patch @@ -0,0 +1,10 @@ +--- parted-3.1.orig/libparted/fs/xfs/platform_defs.h ++++ parted-3.1/libparted/fs/xfs/platform_defs.h +@@ -35,6 +35,7 @@ + #define __XFS_PLATFORM_DEFS_H__ + + #include <stdio.h> ++#include <fcntl.h> + #include <stdarg.h> + #include <assert.h> + #include <endian.h> diff --git a/repo/parted/fix-libintl-header-s390x.patch b/repo/parted/fix-libintl-header-s390x.patch new file mode 100644 index 0000000..68ae7d2 --- /dev/null +++ b/repo/parted/fix-libintl-header-s390x.patch @@ -0,0 +1,58 @@ +From 4b2a566a3e007184d3ee9ce5b399a63eebbdadc3 Mon Sep 17 00:00:00 2001 +From: "Tuan M. Hoang" <tmhoang@flatglobe.org> +Date: Thu, 23 Feb 2017 07:53:02 +0000 +Subject: [PATCH] main/parted: disable nls on s390x + +Because we build with --disable-nls by default, we need to remove libintl.h in +these files on s390x. This is specific for DASD devices only on s390x. +--- + libparted/labels/dasd.c | 2 +- + libparted/labels/fdasd.c | 2 +- + libparted/labels/vtoc.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/libparted/labels/dasd.c b/libparted/labels/dasd.c +index fa9414f..5acf844 100644 +--- a/libparted/labels/dasd.c ++++ b/libparted/labels/dasd.c +@@ -40,8 +40,8 @@ + #include <parted/fdasd.h> + #include <arch/linux.h> + +-#include <libintl.h> + #if ENABLE_NLS ++# include <libintl.h> + # define _(String) dgettext (PACKAGE, String) + #else + # define _(String) (String) +diff --git a/libparted/labels/fdasd.c b/libparted/labels/fdasd.c +index 1f87937..e6a9086 100644 +--- a/libparted/labels/fdasd.c ++++ b/libparted/labels/fdasd.c +@@ -24,8 +24,8 @@ + + #include <parted/parted.h> + +-#include <libintl.h> + #if ENABLE_NLS ++# include <libintl.h> + # define _(String) dgettext (PACKAGE, String) + #else + # define _(String) (String) +diff --git a/libparted/labels/vtoc.c b/libparted/labels/vtoc.c +index fdfa94f..64ba149 100644 +--- a/libparted/labels/vtoc.c ++++ b/libparted/labels/vtoc.c +@@ -12,8 +12,8 @@ + + #include <parted/parted.h> + +-#include <libintl.h> + #if ENABLE_NLS ++# include <libintl.h> + # define _(String) dgettext (PACKAGE, String) + #else + # define _(String) (String) +-- +2.11.1 + diff --git a/repo/parted/make-tests.patch b/repo/parted/make-tests.patch new file mode 100644 index 0000000..edadee9 --- /dev/null +++ b/repo/parted/make-tests.patch @@ -0,0 +1,45 @@ +diff --git a/tests/Makefile.in b/tests/Makefile.in +index 11baba0..2288cc7 100644 +--- a/tests/Makefile.in ++++ b/tests/Makefile.in +@@ -1622,16 +1622,12 @@ TEST_EXTENSIONS = .sh + SH_LOG_COMPILER = $(SHELL) + TESTS = \ + help-version.sh \ +- t0000-basic.sh \ +- t0001-tiny.sh \ + t0010-script-no-ctrl-chars.sh \ + t0100-print.sh \ + t0101-print-empty.sh \ + t0200-gpt.sh \ + t0201-gpt.sh \ + t0202-gpt-pmbr.sh \ +- t0203-gpt-tiny-device-abort.sh \ +- t0203-gpt-shortened-device-primary-valid.sh \ + t0203-gpt-create-on-min-sized-device.sh \ + t0205-gpt-list-clobbers-pmbr.sh \ + t0206-gpt-print-with-corrupt-primary-clobbers-pmbr.sh \ +@@ -1644,14 +1640,9 @@ TESTS = \ + t0213-mkpart-start-negative.sh \ + t0220-gpt-msftres.sh \ + t0250-gpt.sh \ +- t0251-gpt-unicode.sh \ + t0280-gpt-corrupt.sh \ +- t0281-gpt-grow.sh \ +- t0282-gpt-move-backup.sh \ +- t0283-overlap-partitions.sh \ + t0300-dos-on-gpt.sh \ + t0301-overwrite-gpt-pmbr.sh \ +- t0350-mac-PT-increases-sector-size.sh \ + t0400-loop-clobber-infloop.sh \ + t0500-dup-clobber.sh \ + t0501-duplicate.sh \ +@@ -1673,8 +1664,6 @@ TESTS = \ + t3200-resize-partition.sh \ + t3200-type-change.sh \ + t3300-palo-prep.sh \ +- t3310-flags.sh \ +- t3400-whole-disk-FAT-partition.sh \ + t4000-sun-raid-type.sh \ + t4001-sun-vtoc.sh \ + t4100-msdos-partition-limits.sh \ diff --git a/repo/parted/parted-include-sysmacros.patch b/repo/parted/parted-include-sysmacros.patch new file mode 100644 index 0000000..52ec588 --- /dev/null +++ b/repo/parted/parted-include-sysmacros.patch @@ -0,0 +1,10 @@ +--- a/libparted/arch/linux.c ++++ b/libparted/arch/linux.c +@@ -38,6 +38,7 @@ + #include <sys/ioctl.h> + #include <sys/stat.h> + #include <sys/types.h> ++#include <sys/sysmacros.h> + #include <sys/utsname.h> /* for uname() */ + #include <scsi/scsi.h> + #include <assert.h> diff --git a/repo/parted/parted.xibuild b/repo/parted/parted.xibuild new file mode 100644 index 0000000..1fd2222 --- /dev/null +++ b/repo/parted/parted.xibuild @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME="parted" +DESC="Utility to create, destroy, resize, check and copy partitions" + +MAKEDEPS="readline ncurses lvm2 bash util-linux" + +PKG_VER=3.4 +SOURCE="https://ftp.gnu.org/gnu/parted/parted-$PKG_VER.tar.xz" + +ADDITIONAL=" +fix-includes.patch +fix-libintl-header-s390x.patch +make-tests.patch +parted-include-sysmacros.patch +skip-duplicate-bsd-test-on-s390x.patch +" + +prepare () { + apply_patches +} + +build() { + ./configure \ + --prefix=/usr \ + --enable-debug \ + --disable-nls \ + --disable-static \ + --enable-shared + make +} + +package() { + make DESTDIR="$PKG_DEST" install + rm -rf "$PKG_DEST"/usr/lib/charset.alias + rmdir -p "$PKG_DEST"/usr/lib 2>/dev/null || true +} diff --git a/repo/parted/skip-duplicate-bsd-test-on-s390x.patch b/repo/parted/skip-duplicate-bsd-test-on-s390x.patch new file mode 100644 index 0000000..6920ee2 --- /dev/null +++ b/repo/parted/skip-duplicate-bsd-test-on-s390x.patch @@ -0,0 +1,16 @@ +diff --git a/tests/t0501-duplicate.sh b/tests/t0501-duplicate.sh +index 66d321a..0520131 100644 +--- a/tests/t0501-duplicate.sh ++++ b/tests/t0501-duplicate.sh +@@ -18,7 +18,11 @@ + + . "${srcdir=.}/init.sh"; path_prepend_ ../parted . + ++arch=$(uname -m) + for t in msdos gpt bsd; do ++ if [ "$t" = bsd ] && [ "$arch" = "s390x" ]; then ++ continue ++ fi + duplicate $t || fail=1 + done + diff --git a/repo/perl-archive-zip/perl-archive-zip.xibuild b/repo/perl-archive-zip/perl-archive-zip.xibuild new file mode 100644 index 0000000..b6a2738 --- /dev/null +++ b/repo/perl-archive-zip/perl-archive-zip.xibuild @@ -0,0 +1,31 @@ +#!/bin/sh + +NAME="perl-archive-zip" +DESC="Provide a perl interface to ZIP archive files." + +MAKEDEPS="perl" + +PKG_VER=1.68 +SOURCE="https://cpan.metacpan.org/authors/id/P/PH/PHRED/Archive-Zip-$PKG_VER.tar.gz" + +prepare() { + default_prepare + export CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor +} + +build() { + export CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}') + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor + make +} + +check() { + make test +} + +package() { + make DESTDIR="$PKG_DEST" install + find "$PKG_DEST" \( -name perllocal.pod -o -name .packlist \) -delete +} + diff --git a/repo/perl-json/perl-json.xibuild b/repo/perl-json/perl-json.xibuild new file mode 100644 index 0000000..6791825 --- /dev/null +++ b/repo/perl-json/perl-json.xibuild @@ -0,0 +1,25 @@ +#!/bin/sh + +NAME="perl-json" +DESC="Perl module implementing a JSON encoder/decoder" + +MAKEDEPS="" + +PKG_VER=4.05 +SOURCE="https://cpan.metacpan.org/authors/id/I/IS/ISHIGAKI/JSON-$PKG_VER.tar.gz" + +build() { + PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor + make +} + +check() { + make test +} + +package() { + make DESTDIR="$PKG_DEST" install + find "$PKG_DEST" -name perllocal.pod -delete + find "$PKG_DEST" -name .packlist -delete +} + diff --git a/repo/python-colorama/python-colorama.xibuild b/repo/python-colorama/python-colorama.xibuild new file mode 100644 index 0000000..e5d588a --- /dev/null +++ b/repo/python-colorama/python-colorama.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="%deps%" + +PKG_VER=0.4.4 +SOURCE=https://files.pythonhosted.org/packages/source/c/colorama/colorama-$PKG_VER.tar.gz +DESC="Cross-platform colored terminal text." + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-coverage/python-coverage.xibuild b/repo/python-coverage/python-coverage.xibuild new file mode 100644 index 0000000..5a53e22 --- /dev/null +++ b/repo/python-coverage/python-coverage.xibuild @@ -0,0 +1,17 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-tomli" + +PKG_VER=6.4.1 +SOURCE=https://files.pythonhosted.org/packages/source/c/coverage/coverage-$PKG_VER.tar.gz +MAKEDEPS="python" +DESC="Code coverage measurement for Python" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-filelock/python-filelock.xibuild b/repo/python-filelock/python-filelock.xibuild new file mode 100644 index 0000000..be1f033 --- /dev/null +++ b/repo/python-filelock/python-filelock.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-furo python-sphinx python-sphinx-python-autodoc-python-typehints python-covdefaults python-coverage python-pytest python-pytest-python-cov python-pytest-python-timeout" + +PKG_VER=3.7.1 +SOURCE=https://files.pythonhosted.org/packages/source/f/filelock/filelock-$PKG_VER.tar.gz +DESC="A platform independent file lock." + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-flake8/python-flake8.xibuild b/repo/python-flake8/python-flake8.xibuild new file mode 100644 index 0000000..6a7b5ec --- /dev/null +++ b/repo/python-flake8/python-flake8.xibuild @@ -0,0 +1,17 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-mccabe python-pycodestyle python-pyflakes python-importlib-python-metadata" + +PKG_VER=4.0.1 +SOURCE=https://files.pythonhosted.org/packages/source/f/flake8/flake8-$PKG_VER.tar.gz +MAKEDEPS="python" +DESC="the modular source code checker: pep8 pyflakes and co" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-flaky/python-flaky.xibuild b/repo/python-flaky/python-flaky.xibuild new file mode 100644 index 0000000..ae5c89c --- /dev/null +++ b/repo/python-flaky/python-flaky.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="%deps%" + +PKG_VER=3.7.0 +SOURCE=https://files.pythonhosted.org/packages/source/f/flaky/flaky-$PKG_VER.tar.gz +DESC="Plugin for nose or pytest that automatically reruns flaky tests." + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-freezegun/python-freezegun.xibuild b/repo/python-freezegun/python-freezegun.xibuild new file mode 100644 index 0000000..3ad94c7 --- /dev/null +++ b/repo/python-freezegun/python-freezegun.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-python-python-dateutil" + +PKG_VER=1.2.1 +SOURCE=https://files.pythonhosted.org/packages/source/f/freezegun/freezegun-$PKG_VER.tar.gz +DESC="Let your Python tests travel through time" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-incremental/python-incremental.xibuild b/repo/python-incremental/python-incremental.xibuild new file mode 100644 index 0000000..62befa6 --- /dev/null +++ b/repo/python-incremental/python-incremental.xibuild @@ -0,0 +1,17 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-click python-twisted" + +PKG_VER=21.3.0 +SOURCE=https://files.pythonhosted.org/packages/source/i/incremental/incremental-$PKG_VER.tar.gz +MAKEDEPS="python" +DESC="A small library that versions your Python projects." + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-nodeenv/python-nodeenv.xibuild b/repo/python-nodeenv/python-nodeenv.xibuild new file mode 100644 index 0000000..530099c --- /dev/null +++ b/repo/python-nodeenv/python-nodeenv.xibuild @@ -0,0 +1,17 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="%deps%" + +PKG_VER=1.6.0 +SOURCE=https://files.pythonhosted.org/packages/source/n/nodeenv/nodeenv-$PKG_VER.tar.gz +MAKEDEPS="python" +DESC="Node.js virtual environment builder" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-nose/python-nose.xibuild b/repo/python-nose/python-nose.xibuild new file mode 100644 index 0000000..58b8651 --- /dev/null +++ b/repo/python-nose/python-nose.xibuild @@ -0,0 +1,17 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="%deps%" + +PKG_VER=1.3.7 +SOURCE=https://files.pythonhosted.org/packages/source/n/nose/nose-$PKG_VER.tar.gz +MAKEDEPS="python" +DESC="nose extends unittest to make testing easier" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-pathlib2/python-pathlib2.xibuild b/repo/python-pathlib2/python-pathlib2.xibuild new file mode 100644 index 0000000..4934169 --- /dev/null +++ b/repo/python-pathlib2/python-pathlib2.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-six python-scandir python-typing" + +PKG_VER=2.3.7.post1 +SOURCE=https://files.pythonhosted.org/packages/source/p/pathlib2/pathlib2-$PKG_VER.tar.gz +DESC="Object-oriented filesystem paths" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-pluggy/python-pluggy.xibuild b/repo/python-pluggy/python-pluggy.xibuild new file mode 100644 index 0000000..c55a6f9 --- /dev/null +++ b/repo/python-pluggy/python-pluggy.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-importlib-python-metadata python-pre-python-commit python-pytest python-pytest-python-benchmark" + +PKG_VER=1.0.0 +SOURCE=https://files.pythonhosted.org/packages/source/p/pluggy/pluggy-$PKG_VER.tar.gz +DESC="plugin and hook calling mechanisms for python" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-prettytable/python-prettytable.xibuild b/repo/python-prettytable/python-prettytable.xibuild new file mode 100644 index 0000000..cbcb02b --- /dev/null +++ b/repo/python-prettytable/python-prettytable.xibuild @@ -0,0 +1,17 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-wcwidth python-importlib-python-metadata python-pytest python-pytest-python-cov python-pytest-python-lazy-python-fixture" + +PKG_VER=3.3.0 +SOURCE=https://files.pythonhosted.org/packages/source/p/prettytable/prettytable-$PKG_VER.tar.gz +MAKEDEPS="python" +DESC="A simple Python library for easily displaying tabular data in a visually appealing ASCII table format" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-psutil/python-psutil.xibuild b/repo/python-psutil/python-psutil.xibuild new file mode 100644 index 0000000..d75d236 --- /dev/null +++ b/repo/python-psutil/python-psutil.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-ipaddress python-mock python-enum34 python-pywin32 python-wmi" + +PKG_VER=5.9.1 +SOURCE=https://files.pythonhosted.org/packages/source/p/psutil/psutil-$PKG_VER.tar.gz +DESC="Cross-platform lib for process and system monitoring in Python." + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-pytest/python-pytest.xibuild b/repo/python-pytest/python-pytest.xibuild new file mode 100644 index 0000000..ee9b399 --- /dev/null +++ b/repo/python-pytest/python-pytest.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-iniconfig python-packaging python-tomli python-atomicwrites python-colorama python-argcomplete python-hypothesis python-mock python-nose python-pygments python-xmlschema" + +PKG_VER=7.1.2 +SOURCE=https://files.pythonhosted.org/packages/source/p/pytest/pytest-$PKG_VER.tar.gz +DESC="pytest: simple powerful testing with Python" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-toml/python-toml.xibuild b/repo/python-toml/python-toml.xibuild new file mode 100644 index 0000000..390cf6f --- /dev/null +++ b/repo/python-toml/python-toml.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="%deps%" + +PKG_VER=0.10.2 +SOURCE=https://files.pythonhosted.org/packages/source/t/toml/toml-$PKG_VER.tar.gz +DESC="Python Library for Tom's Obvious, Minimal Language" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-tomli/python-tomli.xibuild b/repo/python-tomli/python-tomli.xibuild index 7d2a8aa..5cc4d43 100644 --- a/repo/python-tomli/python-tomli.xibuild +++ b/repo/python-tomli/python-tomli.xibuild @@ -1,12 +1,12 @@ #!/bin/sh NAME="python-tomli" -DESC="Lil' TOML parser" +DESC="A lil' TOML parser" -MAKEDEPS="python-installer" +MAKEDEPS="python python-installer" PKG_VER=2.0.1 -SOURCE="https://files.pythonhosted.org/packages/source/t/tomli/tomli-$PKG_VER.tar.gz" +SOURCE=https://files.pythonhosted.org/packages/source/t/tomli/tomli-$PKG_VER.tar.gz ADDITIONAL="https://files.pythonhosted.org/packages/py3/t/tomli/tomli-$PKG_VER-py3-none-any.whl" build() { diff --git a/repo/python-towncrier/python-towncrier.xibuild b/repo/python-towncrier/python-towncrier.xibuild new file mode 100644 index 0000000..43c09d4 --- /dev/null +++ b/repo/python-towncrier/python-towncrier.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python python-incremental" +DEPS="python-click python-click-python-default-python-group python-incremental python-jinja2 python-setuptools python-toml python-tomli python-packaging" + +PKG_VER=21.9.0 +SOURCE=https://files.pythonhosted.org/packages/source/t/towncrier/towncrier-$PKG_VER.tar.gz +DESC="Building newsfiles for your project." + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-tox/python-tox.xibuild b/repo/python-tox/python-tox.xibuild new file mode 100644 index 0000000..b17d07c --- /dev/null +++ b/repo/python-tox/python-tox.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-filelock python-packaging python-pluggy python-py python-six python-toml python-virtualenv python-colorama python-importlib-python-metadata python-pygments-python-github-python-lexers python-sphinx python-sphinxcontrib-python-autoprogram python-towncrier python-flaky python-freezegun python-pytest python-pytest-python-cov python-pytest-python-mock python-pytest-python-randomly python-psutil python-pathlib2" + +PKG_VER=3.25.0 +SOURCE=https://files.pythonhosted.org/packages/source/t/tox/tox-$PKG_VER.tar.gz +DESC="tox is a generic virtualenv management and test command line tool" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/python-urllib3/python-urllib3.xibuild b/repo/python-urllib3/python-urllib3.xibuild index cac9aff..e7e8a88 100644 --- a/repo/python-urllib3/python-urllib3.xibuild +++ b/repo/python-urllib3/python-urllib3.xibuild @@ -1,10 +1,10 @@ #!/bin/sh MAKEDEPS="python" -DEPS="python-idna python-certifi " +DEPS="python-brotlicffi python-brotli python-brotlipy python-pyOpenSSL python-cryptography python-idna python-certifi python-ipaddress python-PySocks" -PKG_VER=1.26.8 -SOURCE=https://files.pythonhosted.org/packages/b0/b1/7bbf5181f8e3258efae31702f5eab87d8a74a72a0aa78bc8c08c1466e243/urllib3-$PKG_VER.tar.gz +PKG_VER=1.26.9 +SOURCE=https://files.pythonhosted.org/packages/source/u/urllib3/urllib3-$PKG_VER.tar.gz DESC="HTTP library with thread-safe connection pooling, file post, and more." build() { diff --git a/repo/python-virtualenv/python-virtualenv.xibuild b/repo/python-virtualenv/python-virtualenv.xibuild new file mode 100644 index 0000000..36323ef --- /dev/null +++ b/repo/python-virtualenv/python-virtualenv.xibuild @@ -0,0 +1,16 @@ +#!/bin/sh + +MAKEDEPS="python" +DEPS="python-distlib python-filelock python-platformdirs python-six python-pathlib2 python-importlib-python-resources python-importlib-python-metadata python-proselint python-sphinx python-sphinx-python-argparse python-sphinx-python-rtd-python-theme python-towncrier python-coverage python-coverage-python-enable-python-subprocess python-flaky python-pytest python-pytest-python-env python-pytest-python-freezegun python-pytest-python-mock python-pytest-python-randomly python-pytest-python-timeout python-packaging" + +PKG_VER=20.14.1 +SOURCE=https://files.pythonhosted.org/packages/source/v/virtualenv/virtualenv-$PKG_VER.tar.gz +DESC="Virtual Python Environment builder" + +build() { + python setup.py build +} + +package () { + python setup.py install --root="$PKG_DEST" --optimize=1 +} diff --git a/repo/qemu/0006-linux-user-signal.c-define-__SIGRTMIN-MAX-for-non-GN.patch b/repo/qemu/0006-linux-user-signal.c-define-__SIGRTMIN-MAX-for-non-GN.patch new file mode 100644 index 0000000..528b5d5 --- /dev/null +++ b/repo/qemu/0006-linux-user-signal.c-define-__SIGRTMIN-MAX-for-non-GN.patch @@ -0,0 +1,37 @@ +From 8fbb4e6797ed67310b74cbaaa061269db45a5b71 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Tue, 29 Apr 2014 15:51:31 +0200 +Subject: [PATCH] linux-user/signal.c: define __SIGRTMIN/MAX for non-GNU + platforms + +The __SIGRTMIN and __SIGRTMAX are glibc internals and are not available +on all platforms, so we define those if they are missing. + +This is needed for musl libc. + +Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> +--- + linux-user/signal.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/linux-user/signal.c b/linux-user/signal.c +index 5ca6d62b15..e917c16d91 100644 +--- a/linux-user/signal.c ++++ b/linux-user/signal.c +@@ -25,6 +25,13 @@ + #include "trace.h" + #include "signal-common.h" + ++#ifndef __SIGRTMIN ++#define __SIGRTMIN 32 ++#endif ++#ifndef __SIGRTMAX ++#define __SIGRTMAX (NSIG-1) ++#endif ++ + static struct target_sigaction sigact_table[TARGET_NSIG]; + + static void host_signal_handler(int host_signum, siginfo_t *info, +-- +2.23.0 + diff --git a/repo/qemu/80-kvm.rules b/repo/qemu/80-kvm.rules new file mode 100644 index 0000000..e61b48f --- /dev/null +++ b/repo/qemu/80-kvm.rules @@ -0,0 +1 @@ +KERNEL=="kvm", GROUP="kvm", MODE="0666" diff --git a/repo/qemu/CVE-2021-20255.patch b/repo/qemu/CVE-2021-20255.patch new file mode 100644 index 0000000..970c00c --- /dev/null +++ b/repo/qemu/CVE-2021-20255.patch @@ -0,0 +1,43 @@ +CVE-2021-20255 patch adapted from QEMU patch by Stefan Weil + +Link: https://bugzilla.redhat.com/show_bug.cgi?id=1930646 + +Signed-off-by: Neha Agarwal <nehaagarwal@microsoft.com> +--- +diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c +index 16e95ef9cc..2474cf3dc2 100644 +--- a/hw/net/eepro100.c ++++ b/hw/net/eepro100.c +@@ -279,6 +279,9 @@ typedef struct { + /* Quasi static device properties (no need to save them). */ + uint16_t stats_size; + bool has_extended_tcb_support; ++ ++ /* Flag to avoid recursions. */ ++ bool busy; + } EEPRO100State; + + /* Word indices in EEPROM. */ +@@ -837,6 +840,14 @@ static void action_command(EEPRO100State *s) + Therefore we limit the number of iterations. */ + unsigned max_loop_count = 16; + ++ if (s->busy) { ++ /* Prevent recursions. */ ++ logout("recursion in %s:%u\n", __FILE__, __LINE__); ++ return; ++ } ++ ++ s->busy = true; ++ + for (;;) { + bool bit_el; + bool bit_s; +@@ -933,6 +944,7 @@ static void action_command(EEPRO100State *s) + } + TRACE(OTHER, logout("CU list empty\n")); + /* List is empty. Now CU is idle or suspended. */ ++ s->busy = false; + } + + static void eepro100_cu_command(EEPRO100State * s, uint8_t val) diff --git a/repo/qemu/MAP_SYNC-fix.patch b/repo/qemu/MAP_SYNC-fix.patch new file mode 100644 index 0000000..e13609d --- /dev/null +++ b/repo/qemu/MAP_SYNC-fix.patch @@ -0,0 +1,22 @@ +diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c +index f7f177d..7598960 100644 +--- a/util/mmap-alloc.c ++++ b/util/mmap-alloc.c +@@ -10,14 +10,16 @@ + * later. See the COPYING file in the top-level directory. + */ + ++#include "qemu/osdep.h" ++ + #ifdef CONFIG_LINUX + #include <linux/mman.h> ++#include <asm-generic/mman.h> /* for ppc64le */ + #else /* !CONFIG_LINUX */ + #define MAP_SYNC 0x0 + #define MAP_SHARED_VALIDATE 0x0 + #endif /* CONFIG_LINUX */ + +-#include "qemu/osdep.h" + #include "qemu/mmap-alloc.h" + #include "qemu/host-utils.h" + diff --git a/repo/qemu/bridge.conf b/repo/qemu/bridge.conf new file mode 100644 index 0000000..27c31c3 --- /dev/null +++ b/repo/qemu/bridge.conf @@ -0,0 +1,9 @@ +# This should have the following permissions: root:qemu 0640 + +# Allow users in the "qemu" group to add devices to "br0". +#allow br0 + +# Uncomment the following line to allow users in the "bob" +# group to have permissions defined in it, iff it has the +# following permissions: root:bob 0640 +#include /etc/qemu/bob.conf diff --git a/repo/qemu/fix-sockios-header.patch b/repo/qemu/fix-sockios-header.patch new file mode 100644 index 0000000..1f3cd76 --- /dev/null +++ b/repo/qemu/fix-sockios-header.patch @@ -0,0 +1,13 @@ +diff --git a/linux-user/syscall.c b/linux-user/syscall.c +index 43d0562..afa0ac4 100644 +--- a/linux-user/syscall.c ++++ b/linux-user/syscall.c +@@ -59,6 +59,7 @@ int __clone2(int (*fn)(void *), void *child_stack_base, + #include <linux/icmp.h> + #include <linux/icmpv6.h> + #include <linux/errqueue.h> ++#include <linux/sockios.h> + #include <linux/random.h> + #include "qemu-common.h" + #ifdef CONFIG_TIMERFD + #include <sys/timerfd.h> diff --git a/repo/qemu/guest-agent-shutdown.patch b/repo/qemu/guest-agent-shutdown.patch new file mode 100644 index 0000000..ddf3fdf --- /dev/null +++ b/repo/qemu/guest-agent-shutdown.patch @@ -0,0 +1,32 @@ +--- a/qga/commands-posix.c 2021-04-30 14:07:31.202337082 +0000 ++++ b/qga/commands-posix.c 2021-04-30 14:10:05.253272361 +0000 +@@ -84,6 +84,7 @@ static void ga_wait_child(pid_t pid, int + void qmp_guest_shutdown(bool has_mode, const char *mode, Error **errp) + { + const char *shutdown_flag; ++ const char *fallback_cmd = NULL; + Error *local_err = NULL; + pid_t pid; + int status; +@@ -91,10 +92,13 @@ void qmp_guest_shutdown(bool has_mode, c + slog("guest-shutdown called, mode: %s", mode); + if (!has_mode || strcmp(mode, "powerdown") == 0) { + shutdown_flag = "-P"; ++ fallback_cmd = "/sbin/poweroff"; + } else if (strcmp(mode, "halt") == 0) { + shutdown_flag = "-H"; ++ fallback_cmd = "/sbin/halt"; + } else if (strcmp(mode, "reboot") == 0) { + shutdown_flag = "-r"; ++ fallback_cmd = "/sbin/reboot"; + } else { + error_setg(errp, + "mode is invalid (valid values are: halt|powerdown|reboot"); +@@ -111,6 +115,7 @@ void qmp_guest_shutdown(bool has_mode, c + + execle("/sbin/shutdown", "shutdown", "-h", shutdown_flag, "+0", + "hypervisor initiated shutdown", (char *)NULL, environ); ++ execle(fallback_cmd, fallback_cmd, (char*)NULL, environ); + _exit(EXIT_FAILURE); + } else if (pid < 0) { + error_setg_errno(errp, errno, "failed to create child process"); diff --git a/repo/qemu/mips-softfloat.patch b/repo/qemu/mips-softfloat.patch new file mode 100644 index 0000000..28c264a --- /dev/null +++ b/repo/qemu/mips-softfloat.patch @@ -0,0 +1,35 @@ +This patch is needed due to our mips64 build uses softfloat. Qemu will not +build without this patch. + +diff --git a/tests/fp/fp-bench.c b/tests/fp/fp-bench.c +index 4ba5e1d..313256c 100644 +--- a/tests/fp/fp-bench.c ++++ b/tests/fp/fp-bench.c +@@ -479,6 +479,7 @@ static void QEMU_NORETURN die_host_rounding(enum rounding rounding) + exit(EXIT_FAILURE); + } + ++#ifndef __mips_soft_float + static void set_host_precision(enum rounding rounding) + { + int rhost; +@@ -507,6 +508,7 @@ static void set_host_precision(enum rounding rounding) + die_host_rounding(rounding); + } + } ++#endif + + static void set_soft_precision(enum rounding rounding) + { +@@ -596,9 +598,11 @@ static void parse_args(int argc, char *argv[]) + + /* set precision and rounding mode based on the tester */ + switch (tester) { ++#ifndef __mips_soft_float + case TESTER_HOST: + set_host_precision(rounding); + break; ++#endif + case TESTER_SOFT: + set_soft_precision(rounding); + switch (precision) { diff --git a/repo/qemu/musl-initialise-msghdr.patch b/repo/qemu/musl-initialise-msghdr.patch new file mode 100644 index 0000000..17b441c --- /dev/null +++ b/repo/qemu/musl-initialise-msghdr.patch @@ -0,0 +1,16 @@ +Patch-Source: https://github.com/void-linux/void-packages/blob/master/srcpkgs/qemu/patches/musl-initialize-msghdr.patch +Ref: https://github.com/void-linux/void-packages/issues/23557 + +diff --git linux-user/syscall.c linux-user/syscall.c +index 945fc25..8d8b68a 100644 +--- a/linux-user/syscall.c ++++ b/linux-user/syscall.c +@@ -3071,7 +3071,7 @@ static abi_long do_sendrecvmsg_locked(int fd, struct target_msghdr *msgp, + int flags, int send) + { + abi_long ret, len; +- struct msghdr msg; ++ struct msghdr msg = {0}; + abi_ulong count; + struct iovec *vec; + abi_ulong target_vec; diff --git a/repo/qemu/qemu-guest-agent.confd b/repo/qemu/qemu-guest-agent.confd new file mode 100644 index 0000000..228c032 --- /dev/null +++ b/repo/qemu/qemu-guest-agent.confd @@ -0,0 +1,7 @@ +# Specifies the transport method used to communicate to QEMU on the host side +# Default: virtio-serial +#GA_METHOD="virtio-serial" + +# Specifies the device path for the communications back to QEMU on the host +# Default: /dev/virtio-ports/org.qemu.guest_agent.0 +#GA_PATH="/dev/virtio-ports/org.qemu.guest_agent.0" diff --git a/repo/qemu/qemu-guest-agent.initd b/repo/qemu/qemu-guest-agent.initd new file mode 100644 index 0000000..aaf7de3 --- /dev/null +++ b/repo/qemu/qemu-guest-agent.initd @@ -0,0 +1,6 @@ +#!/sbin/openrc-run + +name="QEMU Guest Agent" +pidfile="/run/qemu-ga.pid" +command="/usr/bin/qemu-ga" +command_args="-m ${GA_METHOD:-virtio-serial} -p ${GA_PATH:-/dev/virtio-ports/org.qemu.guest_agent.0} -l /var/log/qemu-ga.log -d" diff --git a/repo/qemu/qemu.xibuild b/repo/qemu/qemu.xibuild new file mode 100644 index 0000000..4f9327b --- /dev/null +++ b/repo/qemu/qemu.xibuild @@ -0,0 +1,127 @@ +#!/bin/sh + +NAME="qemu" +DESC="QEMU is a generic machine emulator and virtualizer" + +MAKEDEPS=" meson bash alsa-lib bison curl flex glib glib gnutls gtk3 libaio libcap libcap-ng libjpeg-turbo libnfs libpng libseccomp libssh2 liburing libusb libxml2 linux-headers lzo ncurses numactl perl pulseaudio python python-sphinx sdl2 snappy spice texinfo usbredir util-linux vde2 virglrenderer vte3 xfsprogs zlib zlib zstd zstd ceph" + +PKG_VER=7.0.0 +SOURCE="https://wiki.qemu-project.org/download/qemu-$PKG_VER.tar.xz" + +ADDITIONAL=" +0006-linux-user-signal.c-define-__SIGRTMIN-MAX-for-non-GN.patch +80-kvm.rules +CVE-2021-20255.patch +MAP_SYNC-fix.patch +bridge.conf +fix-sockios-header.patch +guest-agent-shutdown.patch +mips-softfloat.patch +musl-initialise-msghdr.patch +qemu-guest-agent.confd +qemu-guest-agent.initd +qemu.post-install +qemu.pre-install +qemu.pre-upgrade +xattr_size_max.patch +" + +prepare () { + apply_patches +} + +compile_common() { + CFLAGS="$CFLAGS -O2" "$BUILD_ROOT"/configure \ + --prefix=/usr \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/qemu \ + --python=/usr/bin/python \ + --disable-glusterfs \ + --disable-debug-info \ + --disable-bsd-user \ + --disable-werror \ + --disable-xen \ + --enable-kvm \ + --enable-seccomp \ + --cc="${CC:-gcc}" \ + "$@" + make ARFLAGS="rc" +} + +build() { + mkdir -p "$BUILD_ROOT"/build + cd "$BUILD_ROOT"/build + CFLAGS="$CFLAGS -O2" "$BUILD_ROOT"/configure \ + --prefix=/usr \ + --localstatedir=/var \ + --sysconfdir=/etc \ + --libexecdir=/usr/lib/qemu \ + --python=/usr/bin/python \ + --disable-glusterfs \ + --disable-debug-info \ + --disable-bsd-user \ + --disable-werror \ + --disable-xen \ + --enable-kvm \ + --enable-seccomp \ + --cc="${CC:-gcc}" \ + --disable-linux-user \ + --audio-drv-list=oss,alsa,sdl,pa \ + --enable-cap-ng \ + --enable-curl \ + --enable-curses \ + --enable-docs \ + --enable-gtk \ + --enable-guest-agent \ + --enable-libnfs \ + --enable-libssh \ + --enable-linux-aio \ + --enable-lzo \ + --enable-modules \ + --enable-numa \ + --enable-pie \ + --enable-sdl \ + --enable-snappy \ + --enable-spice \ + --enable-tpm \ + --enable-usb-redir \ + --enable-vde \ + --enable-vhost-net \ + --enable-virglrenderer \ + --enable-virtfs \ + --enable-vnc \ + --enable-vnc-jpeg \ + --enable-vnc-png \ + --enable-zstd \ + --enable-rbd \ + --tls-priority=@QEMU,SYSTEM + make ARFLAGS="rc" +} + +package() { + cd "$BUILD_ROOT"/build + make DESTDIR="$PKG_DEST" install + + install -Dm640 -g qemu "$BUILD_ROOT"/bridge.conf \ + "$PKG_DEST"/etc/qemu/bridge.conf + + install -Dm644 "$BUILD_ROOT"/80-kvm.rules \ + "$PKG_DEST"/lib/udev/rules.d/80-kvm.rules + + # qemu-bridge-helper needs suid to create tunX devices; + # allow only users in the qemu group to run it. + chmod 04710 "$PKG_DEST"/usr/lib/qemu/qemu-bridge-helper + chgrp qemu "$PKG_DEST"/usr/lib/qemu/qemu-bridge-helper + + # Do not install HTML docs. + rm -rf "$PKG_DEST"/usr/share/doc + # remove accel-qtest-* modules, not needed for package + rm -f "$PKG_DEST"/usr/lib/qemu/accel-qtest-* +} + +postinstall () { + addgroup -S -g 34 kvm 2>/dev/null || true + addgroup -S -g 36 qemu 2>/dev/null || true + adduser -S -H -h /dev/null -u 36 -G kvm -s /sbin/nologin qemu 2>/dev/null || true +} diff --git a/repo/qemu/xattr_size_max.patch b/repo/qemu/xattr_size_max.patch new file mode 100644 index 0000000..1a33cbf --- /dev/null +++ b/repo/qemu/xattr_size_max.patch @@ -0,0 +1,15 @@ +diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c +index faebd91..a0f15b6 100644 +--- a/hw/9pfs/9p.c ++++ b/hw/9pfs/9p.c +@@ -25,6 +25,10 @@ + #include "trace.h" + #include "migration/migration.h" + ++#ifdef __linux__ ++#include <linux/limits.h> /* for XATTR_SIZE_MAX */ ++#endif ++ + int open_fd_hw; + int total_open_fd; + static int open_fd_rc; diff --git a/repo/qt5-qtscript/qt5-qtscript.xibuild b/repo/qt5-qtscript/qt5-qtscript.xibuild new file mode 100644 index 0000000..00cd115 --- /dev/null +++ b/repo/qt5-qtscript/qt5-qtscript.xibuild @@ -0,0 +1,36 @@ +#!/bin/sh + +NAME="qt5-qtscript" +DESC="Qt5 - QtScript component" + +MAKEDEPS="qt5-qtbase linux-headers" + +PKG_VER=5.15.3_git20210316 +_commit="5cec94b2c1503f106f4ef4778d016410ebb86211" +SOURCE="https://invent.kde.org/qt/qt/qtscript/-/archive/$_commit/qtscript-$_commit.tar.gz" + +ADDITIONAL=" +qtscript-everywhere-src-5.10.1-sgidefs.patch +qtscript-s390x.patch +" + +prepare() { + apply_patches + mkdir .git +} + +build() { + qmake-qt5 + make +} + +package() { + make INSTALL_ROOT="$PKG_DEST" install + + find "$PKG_DEST/usr/lib" -type f -name '*.prl' \ + -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; + + install -d "$PKG_DEST"/usr/share/licenses + ln -s /usr/share/licenses/qt5-base "$PKG_DEST"/usr/share/licenses/qt5-qtscript +} + diff --git a/repo/qt5-qtscript/qtscript-everywhere-src-5.10.1-sgidefs.patch b/repo/qt5-qtscript/qtscript-everywhere-src-5.10.1-sgidefs.patch new file mode 100644 index 0000000..01ef14d --- /dev/null +++ b/repo/qt5-qtscript/qtscript-everywhere-src-5.10.1-sgidefs.patch @@ -0,0 +1,11 @@ +--- qtscript-everywhere-src-5.10.1/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.orig ++++ qtscript-everywhere-src-5.10.1/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h +@@ -389,7 +389,7 @@ + + #if (defined(mips) || defined(__mips__) || defined(MIPS) || defined(_MIPS_)) + #define WTF_CPU_MIPS 1 +-#include <sgidefs.h> ++#include <asm/sgidefs.h> + #if defined(__MIPSEB__) + #define WTF_CPU_BIG_ENDIAN 1 + #endif diff --git a/repo/qt5-qtscript/qtscript-s390x.patch b/repo/qt5-qtscript/qtscript-s390x.patch new file mode 100644 index 0000000..9c81f76 --- /dev/null +++ b/repo/qt5-qtscript/qtscript-s390x.patch @@ -0,0 +1,32 @@ +diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h +index 96942c7..61b64a2 100644 +--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h ++++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h +@@ -226,6 +226,18 @@ + #define WTF_CPU_SPARC 1 + #endif + ++/* CPU(S390X) - S390 64-bit */ ++#if defined(__s390x__) ++#define WTF_CPU_S390X 1 ++#define WTF_CPU_BIG_ENDIAN 1 ++#endif ++ ++/* CPU(S390) - S390 32-bit */ ++#if defined(__s390__) && !defined(__s390x__) ++#define WTF_CPU_S390 1 ++#define WTF_CPU_BIG_ENDIAN 1 ++#endif ++ + /* CPU(X86) - i386 / x86 32-bit */ + #if defined(__i386__) \ + || defined(i386) \ +@@ -960,7 +972,7 @@ + #if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64) + #if (CPU(X86_64) && !CPU(X32) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64) || CPU(RISCV64) + #define WTF_USE_JSVALUE64 1 +-#elif CPU(ARM) || CPU(PPC64) || CPU(RISCV32) ++#elif CPU(ARM) || CPU(PPC64) || CPU(RISCV32) || CPU(S390X) + #define WTF_USE_JSVALUE32 1 + #elif OS(WINDOWS) && COMPILER(MINGW) + /* Using JSVALUE32_64 causes padding/alignement issues for JITStubArg diff --git a/repo/qtchooser/qt5.conf b/repo/qtchooser/qt5.conf new file mode 100644 index 0000000..edaadeb --- /dev/null +++ b/repo/qtchooser/qt5.conf @@ -0,0 +1,2 @@ +/usr/lib/qt5/bin +/usr/lib diff --git a/repo/qtchooser/qt6.conf b/repo/qtchooser/qt6.conf new file mode 100644 index 0000000..e75ca15 --- /dev/null +++ b/repo/qtchooser/qt6.conf @@ -0,0 +1,2 @@ +/usr/lib/qt6/bin +/usr/lib diff --git a/repo/qtchooser/qtchooser.xibuild b/repo/qtchooser/qtchooser.xibuild new file mode 100644 index 0000000..b2c9a98 --- /dev/null +++ b/repo/qtchooser/qtchooser.xibuild @@ -0,0 +1,37 @@ +#!/bin/sh + +NAME="qtchooser" +DESC="Wrap the other Qt tools by searching for different instances of Qt on the system" + +MAKEDEPS="" + +PKG_VER=66 +SOURCE="https://download.qt.io/official_releases/qtchooser/qtchooser-$PKG_VER.tar.xz" + +ADDITIONAL=" +qt5.conf +qt6.conf +" + +prepare () { + sed -i "s/install -m 644 -p/install -m 644/g" Makefile + sed -i "s/install -m 755 -p/install -m 755/g" src/qtchooser/Makefile +} + +build() { + bindir=/usr/lib/qtchooser/ make +} + +package() { + INSTALL_ROOT="$PKG_DEST" make install + + install -d "$PKG_DEST"/etc/xdg/qtchooser + install -m644 "$BUILD_ROOT"/qt5.conf \ + "$PKG_DEST"/etc/xdg/qtchooser/ + install -m644 "$BUILD_ROOT"/qt6.conf \ + "$PKG_DEST"/etc/xdg/qtchooser/ + + # Set the default Qt + ln -s /etc/xdg/qtchooser/qt5.conf \ + "$PKG_DEST"/etc/xdg/qtchooser/default.conf +} diff --git a/repo/rabbitmq-c/rabbitmq-c.xibuild b/repo/rabbitmq-c/rabbitmq-c.xibuild new file mode 100644 index 0000000..996fd53 --- /dev/null +++ b/repo/rabbitmq-c/rabbitmq-c.xibuild @@ -0,0 +1,29 @@ +#!/bin/sh + +NAME="rabbitmq-c" +DESC="RabbitMQ C client" + +MAKEDEPS="popt openssl cmake xmlto doxygen ninja" + +PKG_VER=0.11.0 +SOURCE="https://github.com/alanxz/rabbitmq-c/archive/v$PKG_VER.tar.gz" + +build() { + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_C_FLAGS="$CFLAGS" \ + -DBUILD_STATIC_LIBS=ON \ + -DBUILD_SHARED_LIBS=ON \ + -DENABLE_SSL_SUPPORT=ON \ + -DBUILD_TESTS=ON \ + -DBUILD_TOOLS=ON + cmake --build build +} + +package() { + DESTDIR="$PKG_DEST" cmake --build build --target install + rm -f "$PKG_DEST"/usr/lib/*.a +} + diff --git a/repo/scratch/scratch.xibuild b/repo/scratch/scratch.xibuild new file mode 100644 index 0000000..2e4bf5b --- /dev/null +++ b/repo/scratch/scratch.xibuild @@ -0,0 +1,27 @@ +#!/bin/sh + +NAME="scratch" +DESC="Create and share your own interactive stories, games, music and art" + +MAKEDEPS="make pango glib cairo" +DEPS="squeak-vm" + +PKG_VER=1.4.0.7 +SOURCE="https://download.scratch.mit.edu/scratch-$PKG_VER.src.tar.gz" + +build() { + make build +} + +package() { + install -Dm755 src/scratch "$PKG_DEST"/usr/bin/scratch + install -Dm644 Scratch.image "$PKG_DEST"/usr/lib/scratch/Scratch.image + install -m644 Scratch.ini "$PKG_DEST"/usr/lib/scratch/Scratch.ini + install -Dm644 src/scratch.desktop "$PKG_DEST"/usr/share/applications/scratch.desktop + install -Dm644 src/man/scratch.1.gz "$PKG_DEST"/usr/share/man/man1/scratch.1.gz + install -Dm644 src/scratch.xml "$PKG_DEST"/usr/share/mime/packages/scratch.xml + install -D -m644 src/icons/128x128/scratch.png "$PKG_DEST"/usr/share/icons/hicolor/128x128/apps/scratch.png + + mv Help/ locale/ Media/ Projects/ README Plugins/ "$PKG_DEST/usr/lib/scratch/" +} + diff --git a/repo/spice/failing-tests.patch b/repo/spice/failing-tests.patch new file mode 100644 index 0000000..a32e034 --- /dev/null +++ b/repo/spice/failing-tests.patch @@ -0,0 +1,43 @@ +diff --git a/server/tests/meson.build b/server/tests/meson.build +index 09ba0f2..9833746 100644 +--- a/server/tests/meson.build ++++ b/server/tests/meson.build +@@ -52,7 +52,6 @@ + ['test-channel', true, 'cpp'], + ['test-stream-device', true, 'cpp'], + ['test-set-ticket', true], +- ['test-listen', true], + ['test-record', true], + ['test-display-no-ssl', false], + ['test-display-streaming', false], +@@ -62,10 +61,6 @@ + ['test-display-width-stride', false], + ] + +-if spice_server_has_sasl +- tests += [['test-sasl', true]] +-endif +- + if spice_server_has_smartcard == true + tests += [['test-smartcard', true, 'cpp']] + endif +--- a/server/tests/meson.build ++++ b/server/tests/meson.build +@@ -42,7 +42,6 @@ + ['test-dispatcher', true, 'cpp'], + ['test-options', true], + ['test-stat', true], +- ['test-agent-msg-filter', true], + ['test-loop', true], + ['test-qxl-parsing', true], + ['test-leaks', true], +--- a/server/tests/meson.build ++++ b/server/tests/meson.build +@@ -44,7 +44,6 @@ + ['test-stat', true], + ['test-loop', true], + ['test-qxl-parsing', true], +- ['test-leaks', true], + ['test-vdagent', true], + ['test-fail-on-null-core-interface', true], + ['test-empty-success', true], diff --git a/repo/spice/fix-build.patch b/repo/spice/fix-build.patch new file mode 100644 index 0000000..76c2c31 --- /dev/null +++ b/repo/spice/fix-build.patch @@ -0,0 +1,7 @@ +diff --git a/doxygen.sh a/doxygen.sh +new file mode 100755 +index 0000000000..1a2485251c +--- /dev/null ++++ a/doxygen.sh +@@ -0,0 +1 @@ ++#!/bin/sh diff --git a/repo/spice/spice-server.xibuild b/repo/spice/spice-server.xibuild new file mode 100644 index 0000000..4571110 --- /dev/null +++ b/repo/spice/spice-server.xibuild @@ -0,0 +1,8 @@ +#!/bin/sh + +DESC="Server library for SPICE" + +package () { + add_from_main "usr/lib/*server.so.*" +} + diff --git a/repo/spice/spice.xibuild b/repo/spice/spice.xibuild new file mode 100644 index 0000000..16ea6d2 --- /dev/null +++ b/repo/spice/spice.xibuild @@ -0,0 +1,28 @@ +#!/bin/sh + +NAME="spice" +DESC="Implements the SPICE protocol" + +MAKEDEPS="meson spice-protocol glib gdk-pixbuf pixman openssl libjpeg-turbo zlib opus gstreamer gst-plugins-base orc lz4 libsasl python-six python-pyparsing" + +PKG_VER=0.15.0 +SOURCE="https://www.spice-space.org/download/releases/spice-server/spice-$PKG_VER.tar.bz2" + +ADDITIONAL=" +failing-tests.patch +fix-build.patch +" + +prepare () { + apply_patches +} + +build() { + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --libdir=/usr/lib + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/squeak-vm/sqVirtualMachine.patch b/repo/squeak-vm/sqVirtualMachine.patch new file mode 100644 index 0000000..37b4699 --- /dev/null +++ b/repo/squeak-vm/sqVirtualMachine.patch @@ -0,0 +1,49 @@ +--- a/Cross/vm/sqVirtualMachine.c ++++ b/Cross/vm/sqVirtualMachine.c +@@ -485,10 +485,7 @@ + /* This lives here for now but belongs somewhere else. + * platforms/Cross/vm/sqStuff.c?? + */ +-#define STDOUT_STACK_SZ 5 +-static int stdoutStackIdx = -1; +-static FILE stdoutStack[STDOUT_STACK_SZ]; +- ++ + /* N.B. As of cygwin 1.5.25 fopen("crash.dmp","a") DOES NOT WORK! crash.dmp + * contains garbled output as if the file pointer gets set to the start of the + * file, not the end. So we synthesize our own append mode. +@@ -521,10 +518,6 @@ + + FILE *output; + +- if (stdoutStackIdx + 2 >= STDOUT_STACK_SZ) { +- fprintf(stderr,"output file stack is full.\n"); +- return; +- } + switch ((unsigned)filenameOrStdioIndex) { + case STDOUT_FILENO: output = stdout; break; + case STDERR_FILENO: output = stderr; break; +@@ -536,17 +529,11 @@ + return; + } + } +- stdoutStack[++stdoutStackIdx] = *stdout; +- *stdout = *output; + } + + void + popOutputFile() + { +- if (stdoutStackIdx < 0) { +- fprintf(stderr,"output file stack is empty.\n"); +- return; +- } + fflush(stdout); + if (fileno(stdout) > STDERR_FILENO) { + /* as of Feb 2011 with fclose@@GLIBC_2.1 under e.g. CentOS 5.3, fclose +@@ -558,5 +545,4 @@ + fclose(stdout); + #endif + } +- *stdout = stdoutStack[stdoutStackIdx--]; + } diff --git a/repo/squeak-vm/squeak-vm.xibuild b/repo/squeak-vm/squeak-vm.xibuild new file mode 100644 index 0000000..f6a7738 --- /dev/null +++ b/repo/squeak-vm/squeak-vm.xibuild @@ -0,0 +1,31 @@ +#!/bin/sh + +NAME="squeak-vm" +DESC="Full-featured implementation of the Smalltalk programming language and environment" + +MAKEDEPS=" make cmake" + +PKG_VER=4.10.2.2614 +SOURCE="http://squeakvm.org/unix/release/Squeak-$PKG_VER-src.tar.gz" + +ADDITIONAL=" +sqVirtualMachine.patch +" + +prepare () { + apply_patches +} + +build() { + ./unix/cmake/configure \ + --prefix=/usr \ + --without-quartz \ + --with-x \ + --enable-mpg-mmx + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/tor/tor.post-upgrade b/repo/tor/tor.post-upgrade deleted file mode 100644 index ff00aab..0000000 --- a/repo/tor/tor.post-upgrade +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -ver_new="$1" -ver_old="$2" - -if [ "$(apk version -t "$ver_old" "0.2.8.7-r0")" = "<" ]; then - cat 1>&2 <<-EOF - * - * Tor runscript has been updated to start tor under unprivileged user "tor" - * by default. If it fails to start due to permissions error, then change owner - * of files in the DataDirectory (default is /var/lib/tor) to the tor user: - * chown -R tor /var/lib/tor - * - * If you need tor to bind a privileged port (e.g. 80), then add "User tor" - * to /etc/tor/torrc. Tor will be started under root, but then setuid to the - * tor user and drop privileges. - * - EOF -fi - -exit 0 diff --git a/repo/tor/tor.pre-install b/repo/tor/tor.pre-install deleted file mode 100644 index cdeb7b4..0000000 --- a/repo/tor/tor.pre-install +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -adduser -S -D -H -h /var/lib/tor -s /sbin/nologin -g tor tor 2>/dev/null - -exit 0 diff --git a/repo/tor/tor.xibuild b/repo/tor/tor.xibuild index 940da31..86c0eb1 100644 --- a/repo/tor/tor.xibuild +++ b/repo/tor/tor.xibuild @@ -44,3 +44,8 @@ package() { "$PKG_DEST"/etc/conf.d/"tor" } + +postinstall () { + useradd -r -m -U -d /var/lib/tor -s /sbin/nologin -g tor tor + return 0 +} diff --git a/repo/ucpp/ucpp.xibuild b/repo/ucpp/ucpp.xibuild new file mode 100644 index 0000000..2bc3154 --- /dev/null +++ b/repo/ucpp/ucpp.xibuild @@ -0,0 +1,25 @@ +#!/bin/sh + +NAME="ucpp" +DESC="C preprocessor which is embeddable, quick, light and C99 compliant" + +MAKEDEPS="" + +PKG_VER=1.3.5 +SOURCE="https://gitlab.com/scarabeusiv/ucpp" + +prepare () { + autoreconf -vif +} + +build() { + ./configure \ + --prefix=/usr \ + --disable-static + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/unixodbc/unixodbc.xibuild b/repo/unixodbc/unixodbc.xibuild new file mode 100644 index 0000000..b1aa749 --- /dev/null +++ b/repo/unixodbc/unixodbc.xibuild @@ -0,0 +1,26 @@ +#!/bin/sh + +NAME="unixodbc" +DESC="ODBC is an open specification to access Data Sources" + +MAKEDEPS=" readline" + +PKG_VER=2.3.9 +SOURCE="http://www.unixodbc.org/unixODBC-$PKG_VER.tar.gz" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --disable-nls \ + --enable-gui=no \ + --enable-static + make +} + +package() { + make -j1 DESTDIR="$PKG_DEST" install +} + diff --git a/repo/usbredir/usbredir.xibuild b/repo/usbredir/usbredir.xibuild new file mode 100644 index 0000000..9e87d9b --- /dev/null +++ b/repo/usbredir/usbredir.xibuild @@ -0,0 +1,24 @@ +#!/bin/sh + +NAME="usbredir" +DESC="USB network redirection protocol libraries" + +MAKEDEPS="libusb meson glib" + +PKG_VER=0.12.0 +SOURCE="https://www.spice-space.org/download/usbredir/usbredir-$PKG_VER.tar.xz" + +build() { + meson --prefix=/usr \ + . output + meson compile ${JOBS:+-j ${JOBS}} -C output +} + +check() { + meson test --no-rebuild -v -C output +} + +package() { + DESTDIR="$PKG_DEST" meson install --no-rebuild -C output +} + diff --git a/repo/userspace-rcu/userspace-rcu.xibuild b/repo/userspace-rcu/userspace-rcu.xibuild new file mode 100644 index 0000000..6f73da6 --- /dev/null +++ b/repo/userspace-rcu/userspace-rcu.xibuild @@ -0,0 +1,28 @@ +#!/bin/sh + +NAME="userspace-rcu" +DESC="Userspace RCU (read-copy-update) library" + +MAKEDEPS="bash perl" + +PKG_VER=0.12.2 +SOURCE="https://lttng.org/files/urcu/userspace-rcu-$PKG_VER.tar.bz2" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var + make V=1 +} + +check() { + make check +} + +package() { + make DESTDIR="$PKG_DEST" install + install -Dm644 LICENSE "$PKG_DEST"/usr/share/licenses/userspace-rcu/LICENSE +} diff --git a/repo/util-linux/util-linux.xibuild b/repo/util-linux/util-linux.xibuild index 6df5289..2197c9e 100644 --- a/repo/util-linux/util-linux.xibuild +++ b/repo/util-linux/util-linux.xibuild @@ -8,12 +8,15 @@ SOURCE=https://cdn.kernel.org/pub/linux/utils/util-linux/v$(echo $PKG_VER | cut DESC="System Utilities for Linux" build () { - ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime \ - --bindir=/usr/bin \ - --libdir=/usr/lib \ - --docdir=/usr/share/doc/util-linux-$PKG_VER\ - --disable-static \ - --runstatedir=/run + ./configure \ + --prefix=/usr \ + --disable-silent-rules \ + --enable-newgrp \ + --disable-uuidd \ + --disable-nls \ + --disable-tls \ + --disable-chfn-chsh \ + --with-vendordir=/usr/lib make } diff --git a/repo/vde2/inline.patch b/repo/vde2/inline.patch new file mode 100644 index 0000000..b11840f --- /dev/null +++ b/repo/vde2/inline.patch @@ -0,0 +1,21 @@ +diff --git a/src/vde_switch/fstp.c b/src/vde_switch/fstp.c +index ac5e313..26c5a67 100644 +--- a/src/vde_switch/fstp.c ++++ b/src/vde_switch/fstp.c +@@ -30,14 +30,14 @@ static int numports; + #ifdef FSTP + #include <fstp.h> + /*********************** sending macro used by FSTP & Core ******************/ +-void inline ltonstring(unsigned long l,unsigned char *s) { ++static void ltonstring(unsigned long l,unsigned char *s) { + s[3]=l; l>>=8; + s[2]=l; l>>=8; + s[1]=l; l>>=8; + s[0]=l; + } + +-unsigned long inline nstringtol(unsigned char *s) { ++static unsigned long nstringtol(unsigned char *s) { + return (s[0]<<24)+(s[1]<<16)+(s[2]<<8)+s[3]; + } + diff --git a/repo/vde2/musl-build-fix.patch b/repo/vde2/musl-build-fix.patch new file mode 100644 index 0000000..c03459c --- /dev/null +++ b/repo/vde2/musl-build-fix.patch @@ -0,0 +1,15 @@ +diff --git a/src/vdetaplib/libvdetap.c b/src/vdetaplib/libvdetap.c +index 00cd401..c70f290 100644 +--- a/src/vdetaplib/libvdetap.c ++++ b/src/vdetaplib/libvdetap.c +@@ -121,6 +121,10 @@ int open(const char *path, int flags, ...) + return native_open(path, flags, data); + } + ++/* musl apparently defines open64 as a macro */ ++#ifdef open64 ++#undef open64 ++#endif + int open64(const char *path, int flags, ...) + { + va_list ap; diff --git a/repo/vde2/vde2.post-down b/repo/vde2/vde2.post-down new file mode 100644 index 0000000..be5f5b3 --- /dev/null +++ b/repo/vde2/vde2.post-down @@ -0,0 +1,37 @@ +#!/bin/sh + +VDE_SWITCH=/usr/bin/vde_switch +SLIRPVDE=/usr/bin/slirpvde + +# this is not an interesting stanza for us +if [ -z "$IF_VDE2_SWITCH" -a -z "$IF_VDE2_PLUG" -a -z "$IF_VDE2_SLIRP" ]; then + exit 0 +fi + +PIDFILE="/var/run/vde2/$IFACE-plug.pid" +CTLFILE="/var/run/vde2/$IFACE.ctl" +if [ -f $PIDFILE ]; then + start-stop-daemon --stop --quiet --pidfile $PIDFILE + rm -f $PIDFILE +fi + +PIDFILE="/var/run/vde2/$IFACE-slirp.pid" +if [ -f $PIDFILE ]; then + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + --exec $SLIRPVDE + rm -f $PIDFILE +fi + +PIDFILE="/var/run/vde2/$IFACE.pid" +CTLDIR="/var/run/vde2/$IFACE.ctl" +if [ -f $PIDFILE ]; then + start-stop-daemon --stop --quiet --pidfile $PIDFILE \ + --exec $VDE_SWITCH + rm -f $PIDFILE + + # set the tap interface to non-persistant, see #568363 + vde_tunctl -b -d $IFACE 1>/dev/null +fi + +rm -rf $CTLDIR +rm -f $CTLDIR.* diff --git a/repo/vde2/vde2.pre-install b/repo/vde2/vde2.pre-install new file mode 100644 index 0000000..3c3e08d --- /dev/null +++ b/repo/vde2/vde2.pre-install @@ -0,0 +1,6 @@ +#!/bin/sh + +addgroup -S vde2-net 2>/dev/null +adduser -S -D -H -h /var/run/vde2 -s /sbin/nologin -G vde2-net -g vde2-net vde2-net 2>/dev/null + +exit 0 diff --git a/repo/vde2/vde2.pre-up b/repo/vde2/vde2.pre-up new file mode 100644 index 0000000..991b382 --- /dev/null +++ b/repo/vde2/vde2.pre-up @@ -0,0 +1,74 @@ +#!/bin/sh + +VDE_SWITCH=/usr/bin/vde_switch +VDE_PLUG=/usr/bin/vde_plug +SLIRPVDE=/usr/bin/slirpvde +DPIPE=/usr/bin/dpipe +RUNDIR=/var/run/vde2 + +USER=vde2-net +GROUP=vde2-net + +if [ ! -x $VDE_SWITCH ] || [ ! -x $SLIRPVDE ]; then + exit 0 +fi + +# this is not an interesting stanza for us +if [ -z "$IF_VDE2_SWITCH" -a -z "$IF_VDE2_PLUG" -a -z "$IF_VDE2_SLIRP" ]; then + exit 0 +fi + + +# Create directory if missing +if [ ! -d $RUNDIR ]; then + mkdir -p $RUNDIR + chown vde2-net:vde2-net $RUNDIR + chmod 2770 $RUNDIR +fi + +# vde2-switch [-|<args>] +if [ -n "$IF_VDE2_SWITCH" ]; then + set -- $IF_VDE2_SWITCH + test "$1" = "-" && shift + PIDFILE="$RUNDIR/$IFACE.pid" + CTLDIR="$RUNDIR/$IFACE.ctl" + MGMTFILE="$RUNDIR/$IFACE.mgmt" + + if [ "$METHOD" = "manual" ]; then + TAPOPTS="" + else + TAPOPTS="-t $IFACE" + fi + + # block to make sure the interface exists, see #568363 + vde_tunctl -b -t $IFACE 1>/dev/null + + start-stop-daemon --start --quiet --pidfile $PIDFILE \ + --exec $VDE_SWITCH -- \ + -s $CTLDIR -m 660 -g $GROUP -p $PIDFILE $TAPOPTS \ + -M $MGMTFILE --mgmtmode 660 -d "$@" +fi + +# vde2-plug <dpipe_cmd2> +if [ -n "$IF_VDE2_PLUG" ]; then + set -- $IF_VDE2_PLUG + PIDFILE="$RUNDIR/$IFACE-plug.pid" + CTLDIR="$RUNDIR/$IFACE.ctl" + + start-stop-daemon --start --quiet --pidfile $PIDFILE \ + --make-pidfile --background \ + --exec $DPIPE -- $VDE_PLUG -g $GROUP -m 660 $CTLDIR = "$@" +fi + +# vde2-slirp [-|<args>] +if [ -n "$IF_VDE2_SLIRP" ]; then + set -- $IF_VDE2_SLIRP + test "$1" = "-" && shift + PIDFILE="$RUNDIR/$IFACE-slirp.pid" + CTLDIR="$RUNDIR/$IFACE.ctl" + + start-stop-daemon --start --quiet --pidfile $PIDFILE \ + --chuid $USER \ + --exec $SLIRPVDE -- \ + -s $CTLDIR -m 660 -p $PIDFILE -d "$@" +fi diff --git a/repo/vde2/vde2.xibuild b/repo/vde2/vde2.xibuild new file mode 100644 index 0000000..6809cc4 --- /dev/null +++ b/repo/vde2/vde2.xibuild @@ -0,0 +1,41 @@ +#!/bin/sh + +NAME="vde2" +DESC="VDE: Virtual Distributed Ethernet. User mode networking for QEMU, UML, etc." + +MAKEDEPS="linux-headers openssl libpcap python" + +PKG_VER=2.3.2 +SOURCE="https://downloads.sourceforge.net/project/vde/vde2/$PKG_VER/vde2-$PKG_VER.tar.gz" + +ADDITIONAL=" +inline.patch +musl-build-fix.patch +vde2.post-down +vde2.pre-install +vde2.pre-up +vde_cryptcab-compile-against-openssl-1.1.0.patch +" + +prepare() { + apply_patches +} + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc + make -C src/common + make -j1 -C src/lib + make +} + +package() { + cd "$BUILD_ROOT" + make -j1 DESTDIR="$PKG_DEST" install + + install -Dm755 "$BUILD_ROOT"/vde2.pre-up \ + "$PKG_DEST"/etc/network/if-pre-up.d/vde2 + install -Dm755 "$BUILD_ROOT"/vde2.post-down \ + "$PKG_DEST"/etc/network/if-post-down.d/vde2 +} diff --git a/repo/vde2/vde_cryptcab-compile-against-openssl-1.1.0.patch b/repo/vde2/vde_cryptcab-compile-against-openssl-1.1.0.patch new file mode 100644 index 0000000..227312e --- /dev/null +++ b/repo/vde2/vde_cryptcab-compile-against-openssl-1.1.0.patch @@ -0,0 +1,92 @@ +--- a/src/vde_cryptcab/cryptcab.c 2011-11-23 16:41:17.000000000 +0000 ++++ b/src/vde_cryptcab/cryptcab.c 2017-03-20 22:54:20.452975075 +0000 +@@ -22,7 +22,7 @@ + exit(1); + } + +-static EVP_CIPHER_CTX ctx; ++static EVP_CIPHER_CTX *ctx; + static int ctx_initialized = 0; + static int encryption_disabled = 0; + static int nfd; +@@ -30,6 +30,10 @@ + static struct vde_open_args open_args={.port=0,.group=NULL,.mode=0700}; + static int verbose = 0; + ++#if OPENSSL_VERSION_NUMBER < 0x10100000 ++#define EVP_CIPHER_CTX_reset(x) EVP_CIPHER_CTX_cleanup(x) ++#endif ++ + void vc_printlog(int priority, const char *format, ...) + { + va_list arg; +@@ -103,19 +107,21 @@ + } + + if (!ctx_initialized) { +- EVP_CIPHER_CTX_init (&ctx); ++ ctx = EVP_CIPHER_CTX_new (); ++ if (!ctx) ++ return -1; + ctx_initialized = 1; + } + +- EVP_EncryptInit (&ctx, EVP_bf_cbc (), p->key, p->iv); +- if (EVP_EncryptUpdate (&ctx, dst, &olen, src, len) != 1) ++ EVP_EncryptInit (ctx, EVP_bf_cbc (), p->key, p->iv); ++ if (EVP_EncryptUpdate (ctx, dst, &olen, src, len) != 1) + { + fprintf (stderr,"error in encrypt update\n"); + olen = -1; + goto cleanup; + } + +- if (EVP_EncryptFinal (&ctx, dst + olen, &tlen) != 1) ++ if (EVP_EncryptFinal (ctx, dst + olen, &tlen) != 1) + { + fprintf (stderr,"error in encrypt final\n"); + olen = -1; +@@ -124,7 +130,7 @@ + olen += tlen; + + cleanup: +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_reset(ctx); + return olen; + } + +@@ -138,19 +144,21 @@ + } + + if (!ctx_initialized) { +- EVP_CIPHER_CTX_init (&ctx); ++ ctx = EVP_CIPHER_CTX_new (); ++ if (!ctx) ++ return -1; + ctx_initialized = 1; + } + +- EVP_DecryptInit (&ctx, EVP_bf_cbc (), p->key, p->iv); +- if (EVP_DecryptUpdate (&ctx, dst, &olen, src, len) != 1) ++ EVP_DecryptInit (ctx, EVP_bf_cbc (), p->key, p->iv); ++ if (EVP_DecryptUpdate (ctx, dst, &olen, src, len) != 1) + { + fprintf (stderr,"error in decrypt update\n"); + olen = -1; + goto cleanup; + } + +- if (EVP_DecryptFinal (&ctx, dst + olen, &tlen) != 1) ++ if (EVP_DecryptFinal (ctx, dst + olen, &tlen) != 1) + { + fprintf (stderr,"error in decrypt final\n"); + olen = -1; +@@ -159,7 +167,7 @@ + olen += tlen; + + cleanup: +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_reset (ctx); + return olen; + } + diff --git a/repo/vigra/vigra.xibuild b/repo/vigra/vigra.xibuild new file mode 100644 index 0000000..5b304f2 --- /dev/null +++ b/repo/vigra/vigra.xibuild @@ -0,0 +1,25 @@ +#!/bin/sh + +NAME="vigra" +DESC="An image processing and analysis library" + +MAKEDEPS=" tiff libjpeg-turbo libpng boost cmake doxygen" + +PKG_VER=1.11.1 +SOURCE="https://github.com/ukoethe/vigra" + +build() { + cmake . \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DDOCINSTALL=share/doc + make +} + +package() { + make install DESTDIR="$PKG_DEST" + + mkdir -p "$PKG_DEST"/usr/lib/cmake + mv "$PKG_DEST"/usr/lib/vigra "$PKG_DEST"/usr/lib/cmake +} + diff --git a/repo/virglrenderer/virglrenderer.xibuild b/repo/virglrenderer/virglrenderer.xibuild new file mode 100644 index 0000000..6096c51 --- /dev/null +++ b/repo/virglrenderer/virglrenderer.xibuild @@ -0,0 +1,20 @@ +#!/bin/sh + +NAME="virglrenderer" +DESC="A virtual 3D GPU library, that allows the guest operating system to use the host GPU to accelerate 3D rendering" + +MAKEDEPS="meson file libdrm mesa libepoxy python check" + +PKG_VER=0.9.1 +SOURCE="https://gitlab.freedesktop.org/virgl/virglrenderer/-/archive/virglrenderer-$PKG_VER/virglrenderer-virglrenderer-$PKG_VER.tar.gz" + +build() { + meson --prefix=/usr \ + -Dtests=true \ + . output + meson compile ${JOBS:+-j ${JOBS}} -C output +} + +package() { + DESTDIR="$PKG_DEST" meson install --no-rebuild -C output +} diff --git a/repo/vte3/fix-W_EXITCODE.patch b/repo/vte3/fix-W_EXITCODE.patch new file mode 100644 index 0000000..ae6e5e4 --- /dev/null +++ b/repo/vte3/fix-W_EXITCODE.patch @@ -0,0 +1,17 @@ +Source: https://mail-archives.apache.org/mod_mbox/mesos-reviews/201610.mbox/%3C20161014170728.1720.54446@reviews.apache.org%3E +Upstream: No +Reason: fixes compilation with musl that doesn't define W* macros. + +--- a/src/widget.cc ++++ b/src/widget.cc +@@ -31,6 +31,10 @@ + #include "vteptyinternal.hh" + #include "debug.h" + ++#ifndef W_EXITCODE ++#define W_EXITCODE(ret, sig) ((ret) << 8 | (sig)) ++#endif ++ + using namespace std::literals; + + namespace vte { diff --git a/repo/vte3/syscall.patch b/repo/vte3/syscall.patch new file mode 100644 index 0000000..2564b80 --- /dev/null +++ b/repo/vte3/syscall.patch @@ -0,0 +1,15 @@ +upstream report: +https://gitlab.gnome.org/GNOME/vte/-/issues/342 + +diff --git a/src/missing.hh b/src/missing.hh +index d5d0484..5738813 100644 +--- a/src/missing.hh ++++ b/src/missing.hh +@@ -35,6 +35,7 @@ char* strchrnul(char const* s, + #endif + + #ifdef __linux__ ++#include <sys/syscall.h> + + /* BEGIN + * The following is copied from systemd/src/basic/missing_syscall_def.h (LGPL2.1+) diff --git a/repo/vte3/vte3.xibuild b/repo/vte3/vte3.xibuild new file mode 100644 index 0000000..9d490a1 --- /dev/null +++ b/repo/vte3/vte3.xibuild @@ -0,0 +1,35 @@ +#!/bin/sh + +NAME="vte3" +DESC="Virtual Terminal Emulator library" + +MAKEDEPS="bash gnutls gobject-introspection gperf gtk3 gtk2 icu intltool libxml2 linux-headers meson ncurses pango pcre2 vala" + +PKG_VER=0.68.0 +SOURCE="https://gitlab.gnome.org/GNOME/vte/-/archive/$PKG_VER/vte-$PKG_VER.tar.gz" + +ADDITIONAL=" +fix-W_EXITCODE.patch +syscall.patch +" + +prepare () { + apply_patches +} + +build() { + meson --prefix=/usr \ + -Ddocs=false \ + -D_systemd=false \ + . output + meson compile ${JOBS:+-j ${JOBS}} -C output +} + +check() { + meson test --no-rebuild -v -C output +} + +package() { + DESTDIR="$PKG_DEST" meson install --no-rebuild -C output +} + diff --git a/repo/vym/vym.xibuild b/repo/vym/vym.xibuild new file mode 100644 index 0000000..aee3564 --- /dev/null +++ b/repo/vym/vym.xibuild @@ -0,0 +1,19 @@ +#!/bin/sh + +NAME="vym" +DESC="View Your Mind (VYM) is a cross-platform concept mapping software" + +MAKEDEPS=" qtchooser qt5-qtscript qt5-qtsvg" + +PKG_VER=2.8.8 +SOURCE="https://sourceforge.net/projects/vym/files/$PKG_VER/vym-$PKG_VER.tar.bz2/download" + +build() { + qmake PREFIX=/usr/share +} + +package() { + # Install files + make INSTALL_ROOT=$PKG_DEST install +} + diff --git a/repo/xfsprogs/fix-mmap.patch b/repo/xfsprogs/fix-mmap.patch new file mode 100644 index 0000000..d0740f6 --- /dev/null +++ b/repo/xfsprogs/fix-mmap.patch @@ -0,0 +1,32 @@ +diff --git a/io/mmap.c b/io/mmap.c +index f9383e5..12f3fff 100644 +--- a/io/mmap.c ++++ b/io/mmap.c +@@ -4,10 +4,10 @@ + * All Rights Reserved. + */ + +-#include "command.h" +-#include "input.h" + #include <sys/mman.h> + #include <signal.h> ++#include "command.h" ++#include "input.h" + #include "init.h" + #include "io.h" + +@@ -20,6 +20,14 @@ static cmdinfo_t mwrite_cmd; + static cmdinfo_t mremap_cmd; + #endif /* HAVE_MREMAP */ + ++#ifndef HAVE_MAP_SYNC ++#define MAP_SYNC 0 ++#define MAP_SHARED_VALIDATE 0 ++#else ++#include <asm-generic/mman.h> ++#include <asm-generic/mman-common.h> ++#endif /* HAVE_MAP_SYNC */ ++ + mmap_region_t *maptable; + int mapcount; + mmap_region_t *mapping; diff --git a/repo/xfsprogs/missing-signal.h.patch b/repo/xfsprogs/missing-signal.h.patch new file mode 100644 index 0000000..9ce7314 --- /dev/null +++ b/repo/xfsprogs/missing-signal.h.patch @@ -0,0 +1,12 @@ +diff --git a/include/linux.h b/include/linux.h +index 7bf59e0..ee25ec9 100644 +--- a/include/linux.h ++++ b/include/linux.h +@@ -21,6 +21,7 @@ + #include <asm/types.h> + #include <mntent.h> + #include <fcntl.h> ++#include <signal.h> /* For SIGKILL */ + #if defined(HAVE_FALLOCATE) + #include <linux/falloc.h> + #endif diff --git a/repo/xfsprogs/xfsprogs.xibuild b/repo/xfsprogs/xfsprogs.xibuild new file mode 100644 index 0000000..08812da --- /dev/null +++ b/repo/xfsprogs/xfsprogs.xibuild @@ -0,0 +1,40 @@ +#!/bin/sh + +NAME="xfsprogs" +DESC="XFS filesystem utilities" + +MAKEDEPS="attr bash gzip inih linux-headers python userspace-rcu util-linux" + +PKG_VER=5.15.0 +SOURCE="https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-$PKG_VER.tar.gz" + +ADDITIONAL=" +fix-mmap.patch +missing-signal.h.patch +" + +prepare () { + apply_patches +} + +build() { + export DEBUG=-DNDEBUG + export OPTIMIZER="$CFLAGS" + ./configure \ + --prefix=/usr \ + --sbindir=/sbin \ + --libexecdir=/usr/lib \ + --enable-gettext=no + make SHELL=/bin/bash +} + +package() { + make -j1 DIST_ROOT="$PKG_DEST" install install-dev + find "$PKG_DEST" -name *.la -delete + mv "$PKG_DEST"/sbin "$PKG_DEST"/usr + mkdir -p "$PKG_DEST"/sbin + for i in mkfs.xfs fsck.xfs xfs_repair; do + mv "$PKG_DEST"/usr/sbin/$i "$PKG_DEST"/sbin/ + done + chown -R root:root "$PKG_DEST"/* +} diff --git a/repo/xmlsec/xmlsec.xibuild b/repo/xmlsec/xmlsec.xibuild new file mode 100644 index 0000000..fccb9cc --- /dev/null +++ b/repo/xmlsec/xmlsec.xibuild @@ -0,0 +1,29 @@ +#!/bin/sh + +NAME="xmlsec" +DESC="C based implementation for XML Signature Syntax and Processing and XML Encryption Syntax and Processing" + +MAKEDEPS=" libxml2 libxslt openssl nss autoconf automake libtool" + +PKG_VER=1.2.33 +SOURCE="https://github.com/lsh123/xmlsec" + +prepare() { + autoreconf -fi +} + +build() { + ./configure \ + --prefix=/usr \ + --disable-static \ + --enable-pkgconfig \ + --with-openssl=/usr \ + --without-gnutls \ + --without-gcrypt \ + --with-default-crypto=openssl + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} diff --git a/repo/xmlstarlet/xmlstarlet.xibuild b/repo/xmlstarlet/xmlstarlet.xibuild new file mode 100644 index 0000000..3a979ae --- /dev/null +++ b/repo/xmlstarlet/xmlstarlet.xibuild @@ -0,0 +1,25 @@ +#!/bin/sh + +NAME="xmlstarlet" +DESC="A set of tools to transform, query, validate, and edit XML documents" + +MAKEDEPS="ghostscript libxml2 libxslt" + +PKG_VER=1.6.1 +SOURCE="https://sourceforge.net/projects/xmlstar/files/xmlstarlet/$PKG_VER/xmlstarlet-$PKG_VER.tar.gz/download" + +build() { + LIBXSLT_PREFIX=/usr \ + LIBXML_PREFIX=/usr \ + ./configure \ + --prefix=/usr \ + --enable-build-docs + make +} + +package() { + make DESTDIR="$PKG_DEST" install + ln -s xml $PKG_DEST/usr/bin/xmlstarlet + install -Dm0644 Copyright $PKG_DEST/usr/share/licenses/xmlstarlet/COPYING +} + diff --git a/repo/yarn/yarn.xibuild b/repo/yarn/yarn.xibuild new file mode 100644 index 0000000..900a18f --- /dev/null +++ b/repo/yarn/yarn.xibuild @@ -0,0 +1,24 @@ +#!/bin/sh + +NAME="yarn" +DESC="Fast, reliable, and secure dependency management for Node.js" + +MAKEDEPS="" + +PKG_VER=1.22.18 +SOURCE="https://yarnpkg.com/downloads/$PKG_VER/yarn-v$PKG_VER.tar.gz" + +package() { + local destdir="usr/share/node_modules/yarn" + + mkdir -p "$PKG_DEST"/$destdir + cp -R "$BUILD_ROOT"/* "$PKG_DEST"/$destdir/ + + # Remove windows specific files. + rm "$PKG_DEST"/$destdir/bin/*.cmd + + mkdir -p "$PKG_DEST"/usr/bin + ln -s /$destdir/bin/yarn "$PKG_DEST"/usr/bin/yarn + ln -s /$destdir/bin/yarn "$PKG_DEST"/usr/bin/yarnpkg +} + diff --git a/repo/yasm/74184586228af6c362f970c84fce58da3fcbdec8.patch b/repo/yasm/74184586228af6c362f970c84fce58da3fcbdec8.patch new file mode 100644 index 0000000..3ec24e6 --- /dev/null +++ b/repo/yasm/74184586228af6c362f970c84fce58da3fcbdec8.patch @@ -0,0 +1,18 @@ +commit 74184586228af6c362f970c84fce58da3fcbdec8 +Author: Matt Oliver <protogonoi@gmail.com> +Date: Tue Apr 4 00:34:47 2017 +1000 + + fix memory errors when using gas processor with coff object output. + +diff --git a/modules/objfmts/coff/coff-objfmt.c b/modules/objfmts/coff/coff-objfmt.c +index 6fcb0e3c..8f753bfe 100644 +--- a/modules/objfmts/coff/coff-objfmt.c ++++ b/modules/objfmts/coff/coff-objfmt.c +@@ -290,6 +290,7 @@ coff_common_create(yasm_object *object) + objfmt_coff->done_prolog = 0; + objfmt_coff->unwind = NULL; + objfmt_coff->ssym_imagebase = NULL; ++ objfmt_coff->def_sym = NULL; + + return objfmt_coff; + } diff --git a/repo/yasm/yasm.xibuild b/repo/yasm/yasm.xibuild new file mode 100644 index 0000000..f6c12b5 --- /dev/null +++ b/repo/yasm/yasm.xibuild @@ -0,0 +1,33 @@ +#!/bin/sh + +NAME="yasm" +DESC="A rewrite of NASM to allow for multiple syntax supported (NASM, TASM, GAS, etc.)" + +MAKEDEPS="" + +PKG_VER=1.3.0 +SOURCE="http://www.tortall.net/projects/yasm/releases/yasm-$PKG_VER.tar.gz" + +ADDITIONAL=" +74184586228af6c362f970c84fce58da3fcbdec8.patch +" + +prepare() { + apply_patches +} + +build() { + ./configure \ + --prefix=/usr + make +} + +check() { + make -j1 check +} + +package() { + make DESTDIR="$PKG_DEST" install + install -Dm644 COPYING "$PKG_DEST"/usr/share/licenses/yasm/COPYING +} + diff --git a/repo/zenity/zenity.xibuild b/repo/zenity/zenity.xibuild new file mode 100644 index 0000000..7bf2909 --- /dev/null +++ b/repo/zenity/zenity.xibuild @@ -0,0 +1,21 @@ +#!/bin/sh + +NAME="zenity" +DESC="Display dialog boxes from the command line and shell scripts" + +MAKEDEPS="gtk2 gtk3 intltool libxml2 libnotify itstool" + +PKG_VER=3.32.0 +SOURCE="https://download.gnome.org/sources/zenity/${PKG_VER%.*}/zenity-$PKG_VER.tar.xz" + +build() { + ./configure \ + --prefix=/usr \ + --sysconfdir=/etc + make +} + +package() { + make DESTDIR="$PKG_DEST" install +} + diff --git a/repo/zxing-cpp/zxing-cpp.xibuild b/repo/zxing-cpp/zxing-cpp.xibuild new file mode 100644 index 0000000..04eccd0 --- /dev/null +++ b/repo/zxing-cpp/zxing-cpp.xibuild @@ -0,0 +1,28 @@ +#!/bin/sh + +NAME="zxing-cpp" +DESC="C++ port of ZXing" + +MAKEDEPS="cmake" + +PKG_VER=1.2.0 +SOURCE="https://github.com/nu-book/zxing-cpp/archive/v$PKG_VER/zxing-cpp-v$PKG_VER.tar.gz" + +build() { + cmake -B build \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=lib + cmake --build build +} + +check() { + cd build + CTEST_OUTPUT_ON_FAILURE=TRUE ctest + cd $BUILD_ROOT +} + +package() { + DESTDIR="$PKG_DEST" cmake --install build +} + diff --git a/repo/zynaddsubfx/cmake-build-type-none.patch b/repo/zynaddsubfx/cmake-build-type-none.patch new file mode 100644 index 0000000..74e64a7 --- /dev/null +++ b/repo/zynaddsubfx/cmake-build-type-none.patch @@ -0,0 +1,47 @@ +Index: src/CMakeLists.txt +=================================================================== +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -185,7 +185,6 @@ option (BuildForDebug "Include gdb debug + option (IncludeWhatYouUse "Check for useless includes" OFF) + mark_as_advanced(IncludeWhatYouUse) + +-set(CMAKE_BUILD_TYPE "Release") + + + set (BuildOptions_x86_64AMD +@@ -321,34 +320,6 @@ if(NOT AVOID_ASM) + add_definitions(-DASM_F2I_YES) + endif() + +-if (BuildForDebug) +- set (CMAKE_BUILD_TYPE "Debug") +- set (CMAKE_CXX_FLAGS_DEBUG ${BuildOptionsDebug}) +- message (STATUS "Building for ${CMAKE_BUILD_TYPE}, flags: ${CMAKE_CXX_FLAGS_DEBUG}") +-else (BuildForDebug) +- set (CMAKE_BUILD_TYPE "Release") +- +- set (CMAKE_CXX_FLAGS_RELEASE ${BuildOptionsBasic}) +- +- if (BuildForAMD_X86_64) +- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${BuildOptions_x86_64AMD}") +- endif (BuildForAMD_X86_64) +- +- if (BuildForCore2_X86_64) +- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${BuildOptions_X86_64Core2}") +- endif (BuildForCore2_X86_64) +- +- if (SUPPORT_SSE) +- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${BuildOptions_SSE}") +- endif (SUPPORT_SSE) +- +- if (SUPPORT_NEON AND NOT NoNeonPlease) +- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${BuildOptions_NEON}") +- endif (SUPPORT_NEON AND NOT NoNeonPlease) +- +- message (STATUS "Building for ${CMAKE_BUILD_TYPE}, flags: ${CMAKE_CXX_FLAGS_RELEASE}") +-endif (BuildForDebug) +- + if(NOT (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")) + add_definitions(-fPIC) + endif() diff --git a/repo/zynaddsubfx/fix-bogus-strstr.patch b/repo/zynaddsubfx/fix-bogus-strstr.patch new file mode 100644 index 0000000..8588045 --- /dev/null +++ b/repo/zynaddsubfx/fix-bogus-strstr.patch @@ -0,0 +1,16 @@ +Source: @pullmoll +Upstream: no +Reason: This piece of code is ill-conceived and cannot work. Remove it. + +--- a/rtosc/src/dispatch.c 2019-03-10 17:16:45.000000000 +0100 ++++ b/rtosc/src/dispatch.c 2020-03-29 09:02:42.916119722 +0200 +@@ -289,8 +289,7 @@ + return false; + } else if(type == 4) { + //extract substring +- const char *sub=NULL; +- return strstr(a,sub); ++ return false; + } else if(type == RTOSC_MATCH_OPTIONS || type == 6) { + return false; + } else if(type == RTOSC_MATCH_ENUMERATED) { diff --git a/repo/zynaddsubfx/fix-memset.patch b/repo/zynaddsubfx/fix-memset.patch new file mode 100644 index 0000000..1439804 --- /dev/null +++ b/repo/zynaddsubfx/fix-memset.patch @@ -0,0 +1,11 @@ +--- a/src/globals.h 2015-06-28 00:25:59.000000000 +0200 ++++ b/src/globals.h 2015-10-03 15:34:18.914712672 +0200 +@@ -25,6 +25,8 @@ + #ifndef GLOBALS_H + #define GLOBALS_H + ++#include <string.h> /* memset(3) */ ++ + #if defined(__clang__) + #define REALTIME __attribute__((annotate("realtime"))) + #define NONREALTIME __attribute__((annotate("nonrealtime"))) diff --git a/repo/zynaddsubfx/zynaddsubfx.xibuild b/repo/zynaddsubfx/zynaddsubfx.xibuild new file mode 100644 index 0000000..228806b --- /dev/null +++ b/repo/zynaddsubfx/zynaddsubfx.xibuild @@ -0,0 +1,51 @@ +#!/bin/sh + +NAME="zynaddsubfx" +DESC="Opensource software synthesizer capable of making a countless number of instruments." + +MAKEDEPS="cmake jack fltk portaudio mxml sndio bash-completion liblo libxpm" +DEPS="less " + +PKG_VER=3.0.5 +SOURCE="https://downloads.sourceforge.net/project/zynaddsubfx/zynaddsubfx/$PKG_VER/zynaddsubfx-$PKG_VER.tar.bz2" +ADDITIONAL=" +cmake-build-type-none.patch +fix-bogus-strstr.patch +fix-memset.patch +" +prepare () { + apply_patches + sed -e '/-DASM_F2I_YES/d' -i src/CMakeLists.txt + + sed -e 's/COMMAND.*lv2-ttl-generator/COMMAND lv2-ttl-generator/g' -i \ + src/Plugin/AlienWah/CMakeLists.txt \ + src/Plugin/Chorus/CMakeLists.txt \ + src/Plugin/Distortion/CMakeLists.txt \ + src/Plugin/DynamicFilter/CMakeLists.txt \ + src/Plugin/Echo/CMakeLists.txt \ + src/Plugin/Phaser/CMakeLists.txt \ + src/Plugin/Reverb/CMakeLists.txt \ + src/Plugin/ZynAddSubFX/CMakeLists.txt + + sed -i -e 's;gcc ;${CC} ;' \ + -e 's;.fltk-config --cflags.;& ${CFLAGS};' \ + -e 's;.fltk-config --ldflags.;& ${LDFLAGS};' \ + ExternalPrograms/Spliter/Makefile \ + ExternalPrograms/Controller/Makefile +} + +build () { + cmake -B build \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + -DDefaultOutput=jack \ + -DDefaultInput=jack \ + -DGuiModule=fltk + cmake --build build && + make -C ExternalPrograms/Spliter && + make -C ExternalPrograms/Controller +} + +package () { + DESTDIR="$PKG_DEST" cmake --install build +} |