diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2024-12-01 07:09:04 -0600 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2024-12-01 07:09:04 -0600 |
commit | eb48795fd3e33bf496c1466e2e3ed8135dcce29f (patch) | |
tree | 848f07c418f3d335fda22b624edc52c96fd68f8e /user | |
parent | 65490a3788757ebca8d8c259a2c4a29c875ad765 (diff) | |
download | packages-eb48795fd3e33bf496c1466e2e3ed8135dcce29f.tar.gz packages-eb48795fd3e33bf496c1466e2e3ed8135dcce29f.tar.bz2 packages-eb48795fd3e33bf496c1466e2e3ed8135dcce29f.tar.xz packages-eb48795fd3e33bf496c1466e2e3ed8135dcce29f.zip |
system/xfsprogs + rdeps: Move to user/
* inih requires Meson, and we don't want to introduce Meson to the
system/ ABI, so we need to move it to user/.
* This takes xfsprogs with it. This is fine because we still have
system/e2fsprogs for a file system on new ports.
* As the only dependent of userspace-rcu was xfsprogs, it doesn't
need to be present in system/ any more either. Move to user/.
Diffstat (limited to 'user')
-rw-r--r-- | user/inih/APKBUILD | 38 | ||||
-rw-r--r-- | user/inih/testrun.patch | 185 | ||||
-rw-r--r-- | user/userspace-rcu/APKBUILD | 36 | ||||
-rw-r--r-- | user/userspace-rcu/endian.patch | 11 | ||||
-rw-r--r-- | user/xfsprogs/APKBUILD | 54 | ||||
-rw-r--r-- | user/xfsprogs/no-utmp-header.patch | 20 | ||||
-rw-r--r-- | user/xfsprogs/scrub.patch | 49 |
7 files changed, 393 insertions, 0 deletions
diff --git a/user/inih/APKBUILD b/user/inih/APKBUILD new file mode 100644 index 000000000..9d701cd95 --- /dev/null +++ b/user/inih/APKBUILD @@ -0,0 +1,38 @@ +# Maintainer: A. Wilcox <awilfox@adelielinux.org> +pkgname=inih +pkgver=58 +pkgrel=0 +pkgdesc="Simple .INI file parser in C" +url=" " +arch="all" +license="BSD-3-Clause" +depends="" +makedepends="meson" +subpackages="$pkgname-dev" +source="https://github.com/benhoyt/inih/archive/r58/$pkgname-$pkgver.tar.gz + testrun.patch + " +builddir="$srcdir/inih-r58" + +build() { + meson setup \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var \ + --buildtype=release \ + --wrap-mode=nofallback \ + . output + meson compile -C output +} + +check() { + meson test -C output +} + +package() { + DESTDIR="$pkgdir" meson install -C output +} + +sha512sums="d69f488299c1896e87ddd3dd20cd9db5848da7afa4c6159b8a99ba9a5d33f35cadfdb9f65d6f2fe31decdbadb8b43bf610ff2699df475e1f9ff045e343ac26ae inih-58.tar.gz +88f38fa41efa91a3eeef065251a6424fdfbb6d4ed975dfcce4730374f61f328ca2b13f3db123eed2c5ade9e54c1f797481dbcb284b22554dd89068053ead1035 testrun.patch" diff --git a/user/inih/testrun.patch b/user/inih/testrun.patch new file mode 100644 index 000000000..987712773 --- /dev/null +++ b/user/inih/testrun.patch @@ -0,0 +1,185 @@ +From 59461b32ee99e1573ecee98c1122815187ef6e82 Mon Sep 17 00:00:00 2001 +From: matoro <matoro@users.noreply.github.com> +Date: Tue, 7 May 2024 15:41:36 -0400 +Subject: [PATCH] Add meson support for tests + +Allows tests to use "meson test" instead of a shell script. This also +means that they now fully respect user-specified toolchain (e.g. clang +compiler, custom CFLAGS, etc). Running C++ test is conditional on +enabling INIReader support in the build. + +``` + 1/16 test_multi OK 0.05s + 2/16 test_multi_max_line OK 0.04s + 3/16 test_single OK 0.04s + 4/16 test_disallow_inline_comments OK 0.03s + 5/16 test_stop_on_first_error OK 0.03s + 6/16 test_handler_lineno OK 0.02s + 7/16 test_heap OK 0.06s + 8/16 test_string OK 0.06s + 9/16 test_heap_max_line OK 0.05s +10/16 test_heap_realloc OK 0.05s +11/16 test_heap_realloc_max_line OK 0.05s +12/16 test_heap_string OK 0.04s +13/16 test_call_handler_on_new_section OK 0.04s +14/16 test_allow_no_value OK 0.03s +15/16 test_alloc OK 0.02s +16/16 test_INIReaderExample OK 0.02s + +Ok: 16 +Expected Fail: 0 +Fail: 0 +Unexpected Pass: 0 +Skipped: 0 +Timeout: 0 +``` +--- + .github/workflows/tests.yml | 13 ++++++++++++- + examples/meson.build | 10 ++++++++++ + meson.build | 15 ++++++++++++--- + tests/meson.build | 25 +++++++++++++++++++++++++ + tests/runtest.sh | 6 ++++++ + 5 files changed, 65 insertions(+), 4 deletions(-) + create mode 100644 examples/meson.build + create mode 100644 tests/meson.build + create mode 100755 tests/runtest.sh + +diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml +index 4971e43..b34ab59 100644 +--- a/.github/workflows/tests.yml ++++ b/.github/workflows/tests.yml +@@ -11,7 +11,7 @@ jobs: + runs-on: ubuntu-latest + + steps: +- - uses: actions/checkout@v2 ++ - uses: actions/checkout@v4 + + - name: Run Diff Tests + run: | +@@ -20,3 +20,14 @@ jobs: + cd ../examples + ./cpptest.sh + git diff --exit-code ++ ++ build-meson: ++ runs-on: ubuntu-latest ++ ++ steps: ++ - uses: actions/checkout@v4 ++ - uses: actions/setup-python@v5 ++ - uses: BSFishy/meson-build@v1.0.3 ++ with: ++ action: test ++ meson-version: 1.4.1 +diff --git a/examples/meson.build b/examples/meson.build +new file mode 100644 +index 0000000..bb1979e +--- /dev/null ++++ b/examples/meson.build +@@ -0,0 +1,10 @@ ++runtest = files(join_paths(meson.project_source_root(), 'tests', 'runtest.sh')) ++ ++tests = { ++ 'INIReaderExample': { 'args': [] }, ++} ++ ++foreach name, properties : tests ++ exe = executable('unittest_' + name, src_inih, src_INIReader, 'INIReaderExample.cpp', cpp_args : ['-Wall', properties['args']]) ++ test('test_' + name, runtest, depends : [exe], args : [files('cpptest.txt'), exe.full_path()]) ++endforeach +diff --git a/meson.build b/meson.build +index d440cbc..4e4fe4b 100644 +--- a/meson.build ++++ b/meson.build +@@ -2,7 +2,8 @@ project('inih', + ['c'], + license : 'BSD-3-Clause', + version : '58', +- default_options : ['cpp_std=c++11'] ++ default_options : ['cpp_std=c++11'], ++ meson_version: '>=0.56.0' + ) + + #### options #### +@@ -71,8 +72,10 @@ endif + #### inih #### + inc_inih = include_directories('.') + ++src_inih = files('ini.c') ++ + lib_inih = library('inih', +- ['ini.c'], ++ [src_inih], + include_directories : inc_inih, + c_args : [arg_static, extra_args], + install : distro_install, +@@ -96,13 +99,17 @@ inih_dep = declare_dependency( + include_directories : inc_inih + ) + ++subdir('tests') ++ + #### INIReader #### + if get_option('with_INIReader') + add_languages('cpp') + inc_INIReader = include_directories('cpp') + ++ src_INIReader = files(join_paths('cpp', 'INIReader.cpp')) ++ + lib_INIReader = library('INIReader', +- ['cpp/INIReader.cpp'], ++ src_INIReader, + cpp_args : extra_args, + include_directories : inc_INIReader, + dependencies : inih_dep, +@@ -126,4 +133,6 @@ if get_option('with_INIReader') + include_directories : inc_INIReader, + compile_args : extra_args + ) ++ ++ subdir('examples') + endif +diff --git a/tests/meson.build b/tests/meson.build +new file mode 100644 +index 0000000..d0a2c52 +--- /dev/null ++++ b/tests/meson.build +@@ -0,0 +1,25 @@ ++runtest = files(join_paths(meson.project_source_root(), 'tests', 'runtest.sh')) ++ ++tests = { ++ 'multi': { 'args': [] }, ++ 'multi_max_line': { 'args': ['-DINI_MAX_LINE=20'] }, ++ 'single': { 'args': ['-DINI_ALLOW_MULTILINE=0'] }, ++ 'disallow_inline_comments': { 'args': ['-DINI_ALLOW_INLINE_COMMENTS=0'] }, ++ 'stop_on_first_error': { 'args': ['-DINI_STOP_ON_FIRST_ERROR=1'] }, ++ 'handler_lineno': { 'args': ['-DINI_HANDLER_LINENO=1'] }, ++ 'string': { 'src': 'unittest_string.c', 'args': ['-DINI_MAX_LINE=20'] }, ++ 'heap': { 'args': ['-DINI_USE_STACK=0'] }, ++ 'heap_max_line': { 'args': ['-DINI_USE_STACK=0', '-DINI_MAX_LINE=20', '-DINI_INITIAL_ALLOC=20'] }, ++ 'heap_realloc': { 'args': ['-DINI_USE_STACK=0', '-DINI_ALLOW_REALLOC=1', '-DINI_INITIAL_ALLOC=5'] }, ++ 'heap_realloc_max_line': { 'args': ['-DINI_USE_STACK=0', '-DINI_MAX_LINE=20', '-DINI_ALLOW_REALLOC=1', '-DINI_INITIAL_ALLOC=5'] }, ++ 'heap_string': { 'src': 'unittest_string.c', 'args': ['-DINI_USE_STACK=0', '-DINI_MAX_LINE=20', '-DINI_INITIAL_ALLOC=20'] }, ++ 'call_handler_on_new_section': { 'args': ['-DINI_CALL_HANDLER_ON_NEW_SECTION=1'] }, ++ 'allow_no_value': { 'args': ['-DINI_ALLOW_NO_VALUE=1'] }, ++ 'alloc': { 'src': 'unittest_alloc.c', 'args': ['-DINI_CUSTOM_ALLOCATOR=1', '-DINI_USE_STACK=0', '-DINI_ALLOW_REALLOC=1', '-DINI_INITIAL_ALLOC=12'] } ++} ++ ++foreach name, properties : tests ++ test_src = 'src' in properties ? properties['src'] : 'unittest.c' ++ exe = executable('unittest_' + name, src_inih, test_src, c_args : ['-Wall', properties['args']]) ++ test('test_' + name, runtest, depends : [exe], args : [files('baseline_' + name + '.txt'), exe.full_path()]) ++endforeach +diff --git a/tests/runtest.sh b/tests/runtest.sh +new file mode 100755 +index 0000000..9db945b +--- /dev/null ++++ b/tests/runtest.sh +@@ -0,0 +1,6 @@ ++#!/usr/bin/env bash ++ ++set -euo pipefail ++ ++cd "$(dirname "${1}")" ++diff "${1}" <("${2}") diff --git a/user/userspace-rcu/APKBUILD b/user/userspace-rcu/APKBUILD new file mode 100644 index 000000000..e36f0f6bf --- /dev/null +++ b/user/userspace-rcu/APKBUILD @@ -0,0 +1,36 @@ +# Maintainer: A. Wilcox <awilfox@adelielinux.org> +pkgname=userspace-rcu +pkgver=0.14.0 +pkgrel=0 +pkgdesc="Userspace RCU (read-copy-update) library" +url="https://liburcu.org" +arch="all" +license="LGPL-2.1-only" +depends="" +makedepends="" +subpackages="$pkgname-doc $pkgname-dev" +source="https://lttng.org/files/urcu/userspace-rcu-$pkgver.tar.bz2 + endian.patch + " + +build() { + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var + make +} + +check() { + make check +} + +package() { + make DESTDIR="$pkgdir" install +} + +sha512sums="7297e51012f4c44ee27c0e18ed9d87bf24be34db68a5398394c1e683a045bb561cf74aa913398404c0ed5cb8011af728ea12947717fa5f27627e5ca78e63a40f userspace-rcu-0.14.0.tar.bz2 +07935ed9741554b2cbc343fdd6218172deca4d4167b31b92f2be82623c5d83191472da2b4bee5adcd59e3d4bec3751d3e793cc720b822b6060dc588b8ee58f16 endian.patch" diff --git a/user/userspace-rcu/endian.patch b/user/userspace-rcu/endian.patch new file mode 100644 index 000000000..d80495c8a --- /dev/null +++ b/user/userspace-rcu/endian.patch @@ -0,0 +1,11 @@ +--- userspace-rcu-0.14.0/doc/examples/rculfhash/jhash.h.old 2023-02-13 11:51:12.000000000 -0600 ++++ userspace-rcu-0.14.0/doc/examples/rculfhash/jhash.h 2024-08-10 18:35:07.651374111 -0500 +@@ -51,7 +51,7 @@ + c ^= b; c -= rot(b, 24); \ + } + +-#if (BYTE_ORDER == LITTLE_ENDIAN) ++#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) + #define HASH_LITTLE_ENDIAN 1 + #else + #define HASH_LITTLE_ENDIAN 0 diff --git a/user/xfsprogs/APKBUILD b/user/xfsprogs/APKBUILD new file mode 100644 index 000000000..8d717f51e --- /dev/null +++ b/user/xfsprogs/APKBUILD @@ -0,0 +1,54 @@ +# Contributor: Valery Kartel <valery.kartel@gmail.com> +# Maintainer: A. Wilcox <awilfox@adelielinux.org> +pkgname=xfsprogs +pkgver=6.9.0 +pkgrel=0 +pkgdesc="XFS filesystem utilities" +url="https://xfs.org/index.php/Main_Page" +arch="all" +options="!check" # No test suite. +license="GPL-1.0-only" +depends="$pkgname-base" +makedepends="attr-dev bash icu-dev inih-dev libedit-dev linux-headers + userspace-rcu-dev util-linux-dev" +subpackages="$pkgname-base $pkgname-dev $pkgname-doc $pkgname-lang $pkgname-libs" +source="https://www.kernel.org/pub/linux/utils/fs/xfs/$pkgname/$pkgname-$pkgver.tar.gz + no-utmp-header.patch + scrub.patch + " + +build() { + export DEBUG=-DNDEBUG + export OPTIMIZER="$CFLAGS" + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sbindir=/sbin \ + --libexecdir=/usr/lib \ + --enable-editline + make SHELL=/bin/bash +} + +check() { + make check +} + +package() { + make -j1 DIST_ROOT="$pkgdir" install install-dev + find "$pkgdir" -name *.la -delete + chown -R 0:0 "$pkgdir" +} + +base() { + # Everything except xfs_scrub, which pulls in 50 MiB of icu libs. + pkgdesc="Base $pkgdesc" + mkdir "$subpkgdir" + mv "$pkgdir"/sbin "$subpkgdir"/ + mkdir "$pkgdir"/sbin + mv "$subpkgdir"/sbin/xfs_scrub "$pkgdir"/sbin/ +} + +sha512sums="bfb3c98e7571180f1c5c130ca9aece5dde97bc6c628dc3d6560b0da75e5b43e8febe3eec193d3db2ec877b3a27258c53c033c7ed3d881efd2d4e3216033aaf2b xfsprogs-6.9.0.tar.gz +29c77c550fa8f7a0b3794649d278a2cb3a65c9368db19415866910160adb6d5a52f1be4f8713b58c5c87f149b6212c068ae27a4547a6c4e4fe7b1584e1261dae no-utmp-header.patch +d83e2ae819a338273fae7999a0ae1376faa593308974f93abc6db140b134ec98f855a2ea5585583f739b041fbb5d4b8a0d4d27ecd73df6c34cd799b2cee55b9a scrub.patch" diff --git a/user/xfsprogs/no-utmp-header.patch b/user/xfsprogs/no-utmp-header.patch new file mode 100644 index 000000000..f272bc152 --- /dev/null +++ b/user/xfsprogs/no-utmp-header.patch @@ -0,0 +1,20 @@ +--- xfsprogs-4.17.0/quota/report.c.old 2018-06-28 12:00:43.000000000 -0500 ++++ xfsprogs-4.17.0/quota/report.c 2018-07-04 00:50:44.940000000 -0500 +@@ -8,7 +8,6 @@ + #include <sys/types.h> + #include <pwd.h> + #include <grp.h> +-#include <utmp.h> + #include "init.h" + #include "quota.h" + +--- xfsprogs-4.17.0/quota/util.c.old 2018-06-28 12:00:43.000000000 -0500 ++++ xfsprogs-4.17.0/quota/util.c 2018-07-04 00:53:25.470000000 -0500 +@@ -8,7 +8,6 @@ + #include <stdbool.h> + #include <pwd.h> + #include <grp.h> +-#include <utmp.h> + #include "init.h" + #include "quota.h" + diff --git a/user/xfsprogs/scrub.patch b/user/xfsprogs/scrub.patch new file mode 100644 index 000000000..a466aab34 --- /dev/null +++ b/user/xfsprogs/scrub.patch @@ -0,0 +1,49 @@ +From da3ad6ffc9ecf75ebb734bbb863c1412d11b9beb Mon Sep 17 00:00:00 2001 +From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> +Date: Sat, 10 Aug 2024 21:26:57 -0500 +Subject: [PATCH] xfs_scrub: Use POSIX-conformant strerror_r + +When building xfsprogs with musl libc, strerror_r returns int as +specified in POSIX. This differs from the glibc extension that returns +char*. Successful calls will return 0, which will be dereferenced as a +NULL pointer by (v)fprintf. + +Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com> +--- + scrub/common.c | 3 ++- + scrub/inodes.c | 4 ++-- + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/scrub/common.c b/scrub/common.c +index 283ac84e..bd8bde35 100644 +--- a/scrub/common.c ++++ b/scrub/common.c +@@ -122,7 +122,8 @@ __str_out( + fprintf(stream, "%s%s: %s: ", stream_start(stream), + _(err_levels[level].string), descr); + if (error) { +- fprintf(stream, _("%s."), strerror_r(error, buf, DESCR_BUFSZ)); ++ strerror_r(error, buf, DESCR_BUFSZ); ++ fprintf(stream, _("%s."), buf); + } else { + va_start(args, format); + vfprintf(stream, format, args); +diff --git a/scrub/inodes.c b/scrub/inodes.c +index 16c79cf4..f0e7289c 100644 +--- a/scrub/inodes.c ++++ b/scrub/inodes.c +@@ -65,9 +65,9 @@ bulkstat_for_inumbers( + error = -xfrog_bulkstat(&ctx->mnt, breq); + if (error) { + char errbuf[DESCR_BUFSZ]; ++ strerror_r(error, errbuf, DESCR_BUFSZ); + +- str_info(ctx, descr_render(dsc), "%s", +- strerror_r(error, errbuf, DESCR_BUFSZ)); ++ str_info(ctx, descr_render(dsc), "%s", errbuf); + } + + /* +-- +2.40.0 + |