summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2024-12-01 07:09:04 -0600
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2024-12-01 07:09:04 -0600
commiteb48795fd3e33bf496c1466e2e3ed8135dcce29f (patch)
tree848f07c418f3d335fda22b624edc52c96fd68f8e /user
parent65490a3788757ebca8d8c259a2c4a29c875ad765 (diff)
downloadpackages-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/APKBUILD38
-rw-r--r--user/inih/testrun.patch185
-rw-r--r--user/userspace-rcu/APKBUILD36
-rw-r--r--user/userspace-rcu/endian.patch11
-rw-r--r--user/xfsprogs/APKBUILD54
-rw-r--r--user/xfsprogs/no-utmp-header.patch20
-rw-r--r--user/xfsprogs/scrub.patch49
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
+