diff --git a/projects/ArchR/packages/archr/sources/scripts/sudo b/projects/ArchR/packages/archr/sources/scripts/sudo new file mode 100755 index 0000000000..25cd13a9a4 --- /dev/null +++ b/projects/ArchR/packages/archr/sources/scripts/sudo @@ -0,0 +1,40 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# +# sudo shim. ArchR is a single-user handheld where everything already +# runs as root, so there is no privilege boundary to cross. PortMaster's +# control.txt sets ESUDO="" when no real sudo is found and ports that use +# "$ESUDO" work fine, but docs/PortMaster_CFW.md lists sudo/doas as +# REQUIRED and a handful of ports (and third-party scripts) call `sudo` +# directly. This shim satisfies them: it strips sudo's own options and +# execs the requested command unchanged. +# +# Pattern follows ROCKNIX/dArkOS, which ship the same root-context shim. + +# No arguments -> behave like `sudo` with nothing to do. +[ $# -eq 0 ] && exit 0 + +while [ $# -gt 0 ]; do + case "$1" in + # Options that take a separate argument. + -u|-g|-p|-C|-r|-t|-U|-h|--user|--group|--prompt|--close-from|--role|--type|--other-user|--host) + shift 2 + ;; + # `--` ends option processing; the command follows. + --) + shift + break + ;; + # --opt=value forms and any other long/short flag: drop and continue. + --*=*|--*|-*) + shift + ;; + # First non-option token is the command to run. + *) + break + ;; + esac +done + +[ $# -eq 0 ] && exit 0 +exec "$@" diff --git a/projects/ArchR/packages/archr/sysctl.d/90-archr-perf.conf b/projects/ArchR/packages/archr/sysctl.d/90-archr-perf.conf new file mode 100644 index 0000000000..18bbe74db2 --- /dev/null +++ b/projects/ArchR/packages/archr/sysctl.d/90-archr-perf.conf @@ -0,0 +1,8 @@ +# perf profiling for the PortMaster/port-dev community. +# +# docs/PortMaster_CFW.md (section 10) recommends perf_event_paranoid <= 1 +# so `perf` can sample CPU events without full root context; the default +# of 2 blocks non-root CPU profiling. 1 keeps kernel-address profiling +# restricted while allowing userspace CPU sampling, which is what +# flame-graphing a port needs. +kernel.perf_event_paranoid = 1 diff --git a/projects/ArchR/packages/multimedia/compat-libjpeg62/package.mk b/projects/ArchR/packages/multimedia/compat-libjpeg62/package.mk new file mode 100644 index 0000000000..f59dd503d5 --- /dev/null +++ b/projects/ArchR/packages/multimedia/compat-libjpeg62/package.mk @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2024-present ArchR (https://github.com/archr-linux/Arch-R) + +PKG_NAME="compat-libjpeg62" +PKG_VERSION="3.0.1" +PKG_SHA256="5b9bbca2b2a87c6632c821799438d358e27004ab528abf798533c15d50b39f82" +PKG_LICENSE="BSD" +PKG_SITE="https://libjpeg-turbo.org/" +PKG_URL="https://github.com/libjpeg-turbo/libjpeg-turbo/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="libjpeg-turbo 3.0.1 built with the classic IJG v6b ABI (libjpeg.so.62) for the PortMaster compat layer. ArchR's base libjpeg-turbo ships the jpeg8 ABI (libjpeg.so.8); ports compiled against standard libjpeg-turbo expect libjpeg.so.62 (PortMaster_CFW.md section 4, 'commonly expected'). Installed to /usr/lib/compat and exposed in the default path by archr-compat-symlinks." +PKG_TOOLCHAIN="cmake" +PKG_BUILD_FLAGS="+pic" + +# Default WITH_JPEG8=OFF yields the SONAME libjpeg.so.62 (vs the base +# package's WITH_JPEG8=ON which yields libjpeg.so.8). TurboJPEG and the +# CLI tools are not needed for the compat shim. +PKG_CMAKE_OPTS_TARGET="-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ + -DENABLE_STATIC=OFF \ + -DENABLE_SHARED=ON \ + -DWITH_JPEG8=OFF \ + -DWITH_TURBOJPEG=OFF" + +if target_has_feature "(neon|sse)"; then + PKG_CMAKE_OPTS_TARGET+=" -DWITH_SIMD=ON" +else + PKG_CMAKE_OPTS_TARGET+=" -DWITH_SIMD=OFF" +fi + +post_makeinstall_target() { + # Keep only the versioned libjpeg.so.62 in the compat layer; the base + # libjpeg-turbo owns /usr/lib/libjpeg.so.8, so we must not leave any + # libjpeg in /usr/lib that would collide at image-merge time. + mkdir -p ${INSTALL}/usr/lib/compat + if compgen -G "${INSTALL}/usr/lib/libjpeg.so.62*" > /dev/null; then + cp -a ${INSTALL}/usr/lib/libjpeg.so.62* ${INSTALL}/usr/lib/compat/ + fi + + rm -rf ${INSTALL}/usr/include + rm -rf ${INSTALL}/usr/bin + rm -rf ${INSTALL}/usr/share + rm -rf ${INSTALL}/usr/lib/pkgconfig + rm -rf ${INSTALL}/usr/lib/cmake + rm -f ${INSTALL}/usr/lib/libjpeg.so* + rm -f ${INSTALL}/usr/lib/libturbojpeg.so* +} diff --git a/projects/ArchR/packages/multimedia/portmaster-compat-libs/package.mk b/projects/ArchR/packages/multimedia/portmaster-compat-libs/package.mk index 4f4f30ead6..92a2aaef12 100644 --- a/projects/ArchR/packages/multimedia/portmaster-compat-libs/package.mk +++ b/projects/ArchR/packages/multimedia/portmaster-compat-libs/package.mk @@ -7,8 +7,8 @@ PKG_ARCH="aarch64" PKG_LICENSE="GPL-2.0" PKG_SITE="https://github.com/archr-linux/Arch-R" PKG_URL="" -PKG_DEPENDS_TARGET="toolchain compat-codec2 compat-x264 compat-x265" -PKG_LONGDESC="Meta-pacote: agrega libcodec2.so.0.9 + libx264.so.160 + libx265.so.192 (SONAMEs Debian 11/darkOS exigidos pelo PortMaster_CFW.md) compilados do upstream para /usr/lib/compat." +PKG_DEPENDS_TARGET="toolchain compat-codec2 compat-x264 compat-x265 compat-libjpeg62" +PKG_LONGDESC="Meta-pacote: agrega libcodec2.so.0.9 + libx264.so.160 + libx265.so.192 + libjpeg.so.62 (SONAMEs Debian 11/darkOS exigidos pelo PortMaster_CFW.md) compilados do upstream para /usr/lib/compat." PKG_TOOLCHAIN="manual" PKG_SECTION="virtual" diff --git a/projects/ArchR/packages/tools/procps-ng/package.mk b/projects/ArchR/packages/tools/procps-ng/package.mk index 39f5facd9c..b2aebaa12e 100644 --- a/projects/ArchR/packages/tools/procps-ng/package.mk +++ b/projects/ArchR/packages/tools/procps-ng/package.mk @@ -3,11 +3,14 @@ . ${ROOT}/packages/tools/procps-ng/package.mk -PKG_MAKE_OPTS_TARGET="src/free src/top/top src/ps/pscommand library/libproc2.la library/libproc2.pc" +PKG_MAKE_OPTS_TARGET="src/free src/vmstat src/top/top src/ps/pscommand library/libproc2.la library/libproc2.pc" makeinstall_target() { mkdir -p ${INSTALL}/usr/bin cp -P ${PKG_BUILD}/.${TARGET_NAME}/src/free ${INSTALL}/usr/bin + # vmstat: memory-pressure monitoring, a PortMaster_CFW.md nice-to-have + # dev tool. procps-ng ships the source; just build+install the binary. + cp -P ${PKG_BUILD}/.${TARGET_NAME}/src/vmstat ${INSTALL}/usr/bin cp -P ${PKG_BUILD}/.${TARGET_NAME}/src/top/top ${INSTALL}/usr/bin cp -P ${PKG_BUILD}/.${TARGET_NAME}/src/ps/pscommand ${INSTALL}/usr/bin/ps