Initial commit

This commit is contained in:
2026-03-21 12:43:00 -05:00
commit 83bf16823c
438 changed files with 33617 additions and 0 deletions
@@ -0,0 +1,34 @@
diff --git a/absl/debugging/symbolize_elf.inc b/absl/debugging/symbolize_elf.inc
index 0317bbc..e4a5060 100644
--- a/absl/debugging/symbolize_elf.inc
+++ b/absl/debugging/symbolize_elf.inc
@@ -1086,17 +1086,24 @@ static ABSL_ATTRIBUTE_NOINLINE bool ReadAddrMap(
void *arg, void *tmp_buf, size_t tmp_buf_size) {
// Use /proc/self/task/<pid>/maps instead of /proc/self/maps. The latter
// requires kernel to stop all threads, and is significantly slower when there
- // are 1000s of threads.
+ // are 1000s of threads. Some container procfs implementations do not expose
+ // per-thread maps files, so fall back to /proc/self/maps when needed.
char maps_path[80];
snprintf(maps_path, sizeof(maps_path), "/proc/self/task/%d/maps", getpid());
int maps_fd;
NO_INTR(maps_fd = OpenReadOnlyWithHighFD(maps_path));
- FileDescriptor wrapped_maps_fd(maps_fd);
- if (wrapped_maps_fd.get() < 0) {
- ABSL_RAW_LOG(WARNING, "%s: errno=%d", maps_path, errno);
- return false;
+ if (maps_fd < 0) {
+ const int task_maps_errno = errno;
+ NO_INTR(maps_fd = OpenReadOnlyWithHighFD("/proc/self/maps"));
+ if (maps_fd < 0) {
+ const int self_maps_errno = errno;
+ ABSL_RAW_LOG(WARNING, "%s: errno=%d; /proc/self/maps: errno=%d",
+ maps_path, task_maps_errno, self_maps_errno);
+ return false;
+ }
}
+ FileDescriptor wrapped_maps_fd(maps_fd);
// Iterate over maps and look for the map containing the pc. Then
// look into the symbol tables inside.
+48
View File
@@ -0,0 +1,48 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-DCMAKE_CXX_STANDARD=17",
"-DBUILD_SHARED_LIBS=ON",
"-DABSL_BUILD_TEST_HELPERS=ON",
"-DABSL_USE_EXTERNAL_GOOGLETEST=ON",
"-DABSL_FIND_GOOGLETEST=ON",
"-DABSL_BUILD_TESTING=ON",
"-G", "Ninja",
"-DCMAKE_CXX_FLAGS=${CXXFLAGS} -DNDEBUG",
]
[dependencies]
build = [
"cmake",
"ninja",
]
runtime = [
"glibc",
"gtest",
"libunwind",
"libcxx",
]
[package]
description = "Collection of C++ library code designed to augment the C++ standard library"
homepage = "https://abseil.io/"
license = "Apache-2.0"
name = "abseil-cpp"
version = "20260107.1"
[[source]]
extract_dir = "$name-$version"
sha256 = "4314e2a7cbac89cac25a2f2322870f343d81579756ceff7f431803c2c9090195"
url = "https://github.com/abseil/abseil-cpp/releases/download/$version/abseil-cpp-$version.tar.gz"
patches = [ "scoped-mock-log.patch", "abseil-cpp-20260107.1-symbolize-proc-maps-fallback.patch" ]
[[manual_sources]]
file = "scoped-mock-log.patch"
sha256 = "b2:c467c7aaebea4a9fc9baaeb0419f27f01e92ad5d2a3b0e7b6a9bd9fde0b0081394537fff987ab754ff463ab7e033ddd21ad99e65786858c6b79137f529debd9f"
[[manual_sources]]
file = "abseil-cpp-20260107.1-symbolize-proc-maps-fallback.patch"
sha256 = "b2:14fbb86b59af25e180de422d357841caf9cd4a671c3163b31c47651396ece19c811f64ab959019fed0310ca76ff1cdb46eb11a888adc612566a1b5dca8e87ac3"
+12
View File
@@ -0,0 +1,12 @@
diff --git a/absl/log/CMakeLists.txt b/absl/log/CMakeLists.txt
index 78adbf1d..b64822dd 100644
--- a/absl/log/CMakeLists.txt
+++ b/absl/log/CMakeLists.txt
@@ -637,7 +637,6 @@ absl_cc_library(
GTest::gmock
GTest::gtest
PUBLIC
- TESTONLY
)
absl_cc_library(
@@ -0,0 +1,64 @@
From 241f7ae5f857b0c9bab7866b79b4e47587126b96 Mon Sep 17 00:00:00 2001
From: Jörn Heusipp <osmanx@problemloesungsmaschine.de>
Date: Wed, 16 Oct 2024 12:53:40 +0200
Subject: Revert broken part of commit 5b0d43b767bf3f800f97892905b6d1ba50150f1a
This commit breaks AX_CXX_COMPILE_STDCXX noext/ext option handling, which
caused
"AX_CXX_COMPILE_STDCXX(20, [noext], [optional])"
to result in
"checking whether g++ supports C++20 features with -std=gnu++20... yes"
which is not the desired outcome when using "noext".
It should check for "-std=c++20" instead for "-std=gnu++20", as it did before.
See
<https://github.com/autoconf-archive/autoconf-archive/pull/300#issuecomment-2416443298>
and
<https://github.com/autoconf-archive/autoconf-archive/commit/5b0d43b767bf3f800f97892905b6d1ba50150f1a#commitcomment-147999469>
.
---
m4/ax_cxx_compile_stdcxx.m4 | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/m4/ax_cxx_compile_stdcxx.m4 b/m4/ax_cxx_compile_stdcxx.m4
index 7ec3378..25645c3 100644
--- a/m4/ax_cxx_compile_stdcxx.m4
+++ b/m4/ax_cxx_compile_stdcxx.m4
@@ -36,7 +36,7 @@
# Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
# Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
# Copyright (c) 2020 Jason Merrill <jason@redhat.com>
-# Copyright (c) 2021 Jörn Heusipp <osmanx@problemloesungsmaschine.de>
+# Copyright (c) 2021, 2024 Jörn Heusipp <osmanx@problemloesungsmaschine.de>
# Copyright (c) 2015, 2022, 2023, 2024 Olly Betts
#
# Copying and distribution of this file, with or without modification, are
@@ -44,7 +44,7 @@
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 23
+#serial 24
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
dnl (serial version number 13).
@@ -77,7 +77,7 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
ac_success=yes
fi])
- m4_if([$2], [noext], [dnl
+ m4_if([$2], [noext], [], [dnl
if test x$ac_success = xno; then
for alternative in ${ax_cxx_compile_alternatives}; do
switch="-std=gnu++${alternative}"
@@ -101,7 +101,7 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
done
fi])
- m4_if([$2], [ext], [dnl
+ m4_if([$2], [ext], [], [dnl
if test x$ac_success = xno; then
dnl HP's aCC needs +std=c++11 according to:
dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
--
cgit v1.2.3
File diff suppressed because one or more lines are too long
@@ -0,0 +1,22 @@
[build]
type = "autotools"
[dependencies]
optional = ["automake"]
runtime = ["autoconf"]
[package]
description = "A collection of freely re-usable Autoconf macros"
homepage = "https://www.gnu.org/software/autoconf-archive/"
license = "GPL-3.0-or-later WITH Autoconf-exception-3.0"
name = "autoconf-archive"
version = "2024.10.16"
[[source]]
extract_dir = "$name-$version"
sha256 = "7bcd5d001916f3a50ed7436f4f700e3d2b1bade3ed803219c592d62502a57363"
url = "https://mirrors.kernel.org/gnu/autoconf-archive/autoconf-archive-$version.tar.xz"
patches = [ "0001_fix_AX_CXX_COMPILE_STDCXX.patch", "autoconf-archive-2024.10.16-fix-config-status.patch" ]
[[manual_sources]]
files = [ "0001_fix_AX_CXX_COMPILE_STDCXX.patch", "autoconf-archive-2024.10.16-fix-config-status.patch" ]
+36
View File
@@ -0,0 +1,36 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-DBUILD_SHARED_LIBS=ON",
"-DCMAKE_CXX_FLAGS=${CXXFLAGS} -DNDEBUG",
"-DBENCHMARK_ENABLE_LTO=ON",
"-DBENCHMARK_ENABLE_GTEST_TESTS=OFF",
"-G Ninja"
]
skip_tests = true
[dependencies]
build = [
"cmake",
"ninja",
]
runtime = [
"libcxx",
"libunwind",
"python"
]
[package]
description = "microbenchmark support library"
homepage = "https://github.com/google/benchmark"
license = "Apache-2.0"
name = "benchmark"
version = "1.9.5"
[[source]]
extract_dir = "$name-$version"
sha256 = "9631341c82bac4a288bef951f8b26b41f69021794184ece969f8473977eaa340"
url = "https://github.com/google/benchmark/archive/refs/tags/v$version.tar.gz"
+37
View File
@@ -0,0 +1,37 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-DBUILD_SHARED_LIBS=True",
]
skip_tests = true # TODO: ADD SUPPORT TO DEPOT FOR ALL OF THAT
post_install = [
"python_build",
"python_install"
]
cflags += [ "-ffat-lto-objects" ]
[dependencies]
build = [
"python-setuptools",
"python-wheel",
"python-pkgconfig",
"cmake",
"python"
]
runtime = [ "glibc" ]
optional = [ "python" ]
[package]
description = "Generic-purpose lossless compression algorithm"
homepage = "https://github.com/google/brotli"
license = "MIT"
name = "brotli"
version = "1.2.0"
[[source]]
extract_dir = "$name-$version"
sha256 = "816c96e8e8f193b40151dad7e8ff37b1221d019dbcb9c35cd3fadbfe6477dfec"
url = "https://github.com/google/brotli/archive/refs/tags/v$version.tar.gz"
+21
View File
@@ -0,0 +1,21 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = ["-Wno-dev"]
[dependencies]
build = ["cmake"]
runtime = ["glibc"]
[package]
description = "A C library for asynchronous DNS requests"
homepage = "https://c-ares.org/"
license = "MIT"
name = "c-ares"
version = "1.34.6"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/c-ares/c-ares.git#v$version"
+35
View File
@@ -0,0 +1,35 @@
[build]
type = "cmake"
[alternatives]
conflicts = [ "catch2-v2" ]
[build.flags]
build_dir = "build"
configure = [
"-DCATCH_BUILD_EXAMPLES=OFF",
"-DCATCH_ENABLE_COVERAGE=OFF",
"-DCATCH_ENABLE_WERROR=OFF",
"-DBUILD_TESTING=ON",
"-Wno-dev",
"-DBUILD_SHARED_LIBS=OFF",
]
no-delete-static = true
[dependencies]
build = [
"cmake",
"python",
]
[package]
description = "Modern, C++-native, header-only, test framework for unit-tests, TDD and BDD"
homepage = "https://github.com/catchorg/catch2"
license = "BSL-1.0"
name = "catch2"
version = "3.13.0"
[[source]]
extract_dir = "$name-$version"
sha256 = "650795f6501af514f806e78c554729847b98db6935e69076f36bb03ed2e985ef"
url = "https://github.com/catchorg/Catch2/archive/refs/tags/v$version.tar.gz"
+23
View File
@@ -0,0 +1,23 @@
[build]
type = "rust"
[build.flags]
use_lto = false
[dependencies]
build = ["rust"]
runtime = [
"glibc",
"libunwind",
]
[package]
description = " Documentation generator for Argument Parsers such as Clap"
homepage = "https://github.com/spirali/cli_doc"
license = "MIT"
name = "cli_doc"
version = "0.1.2"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/spirali/cli_doc.git"
+41
View File
@@ -0,0 +1,41 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--system-libs",
"--mandir=/share/man",
"--docdir=/share/doc/cmake",
]
configure_file = "bootstrap"
skip_tests = true
[dependencies]
build = [ "nlohmann-json" ]
runtime = [
"glibc",
"curl",
"libarchive",
"expat",
"libuv",
"zlib-ng",
"ncurses",
"cppdap",
"jsoncpp",
"rhash",
"libunwind",
"libcxx"
]
[package]
description = "modern toolset used for generating Makefiles"
homepage = "https://cmake.org"
license = "custom"
name = "cmake"
version = "4.2.3"
[[source]]
extract_dir = "$name-$version"
post_extract = ["""sed -i '/"lib64"/s/64//' Modules/GNUInstallDirs.cmake"""]
sha256 = "7efaccde8c5a6b2968bad6ce0fe60e19b6e10701a12fce948c2bf79bac8a11e9"
url = "https://cmake.org/files/v4.2/cmake-$version.tar.gz"
+26
View File
@@ -0,0 +1,26 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-Wno-dev",
"-DUNIT_TESTING=ON",
]
use_lto = false
[dependencies]
build = ["cmake"]
runtime = ["glibc"]
[package]
description = "Elegant unit testing framework for C with support for mock objects"
homepage = "https://cmocka.org/"
license = "Apache-2.0"
name = "cmocka"
version = "2.0.2"
[[source]]
extract_dir = "$name-$version"
sha256 = "39f92f366bdf3f1a02af4da75b4a5c52df6c9f7e736c7d65de13283f9f0ef416"
url = "https://cmocka.org/files/2.0/cmocka-$version.tar.xz"
+27
View File
@@ -0,0 +1,27 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--mandir=/usr/share/man",
"--with-rmt=/dev/null",
]
[dependencies]
runtime = ["glibc"]
[package]
description = "tool to copy files into or out of a cpio or tar archive"
homepage = "https://www.gnu.org/software/cpio/"
license = "GPL-3.0-or-later"
name = "cpio"
version = "2.15"
[[source]]
extract_dir = "$name-$version"
post_extract = [
'sed -e "/^extern int (\*xstat)/s/()/(const char * restrict, struct stat * restrict)/" -i src/extern.h',
'sed -e "/^int (\*xstat)/s/()/(const char * restrict, struct stat * restrict)/" -i src/global.c',
]
sha256 = "937610b97c329a1ec9268553fb780037bcfff0dcffe9725ebc4fd9c1aa9075db"
url = "https://mirrors.kernel.org/gnu/cpio/cpio-$version.tar.bz2"
+32
View File
@@ -0,0 +1,32 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-DCPPDAP_USE_EXTERNAL_NLOHMANN_JSON_PACKAGE=ON",
"-DBUILD_SHARED_LIBS=ON",
]
[dependencies]
build = [
"cmake",
"nlohmann-json"
]
runtime = [
"libunwind",
"glibc",
"libcxx",
]
[package]
description = "C++ library for the Debug Adapter Protocol"
homepage = "https://github.com/google/cppdap"
license = "Apache-2.0"
name = "cppdap"
version = "1.58.0"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/google/cppdap#dap-$version-a"
sha256 = "skip"
+28
View File
@@ -0,0 +1,28 @@
[build]
type = "python"
[build.flags]
post_install = ['for f in cygdb cython cythonize; do mv "$DESTDIR/usr/bin/$f" "$DESTDIR/usr/bin/${f}3" && ln -s "${f}3" "$DESTDIR/usr/bin/$f"; done']
[dependencies]
build = [
"python-wheel",
"python-setuptools",
]
runtime = [
"python",
"glibc",
]
[package]
description = "C-Extensions for Python"
homepage = "https://cython.org/"
license = "Apache-2.0"
name = "cython"
version = "3.2.4"
[[source]]
extract_dir = "$name-$version"
sha256 = "skip"
url = "https://github.com/cython/cython.git#$version"
cherry_pick = [ "d344f9b284549362dee39af7a74a9c669bb65ce8" ]
+4
View File
@@ -0,0 +1,4 @@
install -Dm644 /dev/stdin $DESTDIR/usr/share/icons/default/index.theme <<END
[Icon Theme]
Inherits=Adwaita
END
@@ -0,0 +1,12 @@
[build]
type = "custom"
[package]
description = "Default cursor set"
homepage = "https://vertexlinux.net"
license = "CC0-1.0"
name = "default-cursors"
version = "3"
[[manual_sources]]
file = "build.sh"
+94
View File
@@ -0,0 +1,94 @@
#!/bin/sh
set -eu
versions="4.1.2 4.2 4.3 4.4 4.5"
# Extract each version zip into a named directory
for ver in $versions; do
mkdir -p "docbook-xml-$ver"
bsdunzip -d "docbook-xml-$ver" "docbook-xml-$ver.zip"
done
# Create the package-local XML catalog
mkdir -p "$DESTDIR/etc/xml"
XML_CATALOG_FILES=""
export XML_CATALOG_FILES
xmlcatalog --noout --create "$DESTDIR/etc/xml/docbook-xml"
for ver in $versions; do
(
cd "docbook-xml-$ver"
mkdir -p "$DESTDIR/usr/share/xml/docbook/xml-dtd-$ver"
cp -af docbook.cat ./*.dtd ./*.mod "$DESTDIR/usr/share/xml/docbook/xml-dtd-$ver/"
# ent/ is not present in all versions
if [ -d ent ]; then
cp -af ent/ "$DESTDIR/usr/share/xml/docbook/xml-dtd-$ver/"
fi
xml=""
[ "$ver" = "4.1.2" ] && xml=" XML"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook XML V$ver//EN" \
"http://www.oasis-open.org/docbook/xml/$ver/docbookx.dtd" \
"$DESTDIR/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD DocBook$xml CALS Table Model V$ver//EN" \
"http://www.oasis-open.org/docbook/xml/$ver/calstblx.dtd" \
"$DESTDIR/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
"http://www.oasis-open.org/docbook/xml/$ver/soextblx.dtd" \
"$DESTDIR/etc/xml/docbook-xml"
case "$ver" in
4.[45])
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook XML HTML Tables V$ver//EN" \
"http://www.oasis-open.org/docbook/xml/$ver/htmltblx.mod" \
"$DESTDIR/etc/xml/docbook-xml"
;;
esac
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook$xml Information Pool V$ver//EN" \
"http://www.oasis-open.org/docbook/xml/$ver/dbpoolx.mod" \
"$DESTDIR/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ELEMENTS DocBook$xml Document Hierarchy V$ver//EN" \
"http://www.oasis-open.org/docbook/xml/$ver/dbhierx.mod" \
"$DESTDIR/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook$xml Additional General Entities V$ver//EN" \
"http://www.oasis-open.org/docbook/xml/$ver/dbgenent.mod" \
"$DESTDIR/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook$xml Notations V$ver//EN" \
"http://www.oasis-open.org/docbook/xml/$ver/dbnotnx.mod" \
"$DESTDIR/etc/xml/docbook-xml"
xmlcatalog --noout --add "public" \
"-//OASIS//ENTITIES DocBook$xml Character Entities V$ver//EN" \
"http://www.oasis-open.org/docbook/xml/$ver/dbcentx.mod" \
"$DESTDIR/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteSystem" \
"http://www.oasis-open.org/docbook/xml/$ver" \
"file:///usr/share/xml/docbook/xml-dtd-$ver" \
"$DESTDIR/etc/xml/docbook-xml"
xmlcatalog --noout --add "rewriteURI" \
"http://www.oasis-open.org/docbook/xml/$ver" \
"file:///usr/share/xml/docbook/xml-dtd-$ver" \
"$DESTDIR/etc/xml/docbook-xml"
)
done
chmod 755 "$DESTDIR"/usr/share/xml/docbook/xml-dtd-*/ent 2>/dev/null || true
unset XML_CATALOG_FILES
+42
View File
@@ -0,0 +1,42 @@
[package]
name = "docbook-xml"
version = "4.5"
description = "document type definitions and schemas for verification of XML data files against the DocBook rule set"
homepage = "https://www.docbook.org"
license = "DocBook-XML"
[[manual_sources]]
url = "https://archive.docbook.org/xml/4.5/docbook-xml-4.5.zip"
sha256 = "skip"
dest = "docbook-xml-4.5.zip"
[[manual_sources]]
url = "https://archive.docbook.org/xml/4.4/docbook-xml-4.4.zip"
sha256 = "skip"
dest = "docbook-xml-4.4.zip"
[[manual_sources]]
url = "https://archive.docbook.org/xml/4.3/docbook-xml-4.3.zip"
sha256 = "skip"
dest = "docbook-xml-4.3.zip"
[[manual_sources]]
url = "https://archive.docbook.org/xml/4.2/docbook-xml-4.2.zip"
sha256 = "skip"
dest = "docbook-xml-4.2.zip"
[[manual_sources]]
url = "https://archive.docbook.org/xml/4.1.2/docbkx412.zip"
sha256 = "skip"
dest = "docbook-xml-4.1.2.zip"
[build]
type = "custom"
[build.flags]
no_flags = true
skip_tests = true
[dependencies]
runtime = [ "libxml215" ]
build = [ "libarchive" ]
+23
View File
@@ -0,0 +1,23 @@
#!/bin/sh
set -e
if [ ! -e /etc/xml/catalog ]; then
xmlcatalog --noout --create etc/xml/catalog
fi
xmlcatalog --noout --add "delegatePublic" \
"-//OASIS//ENTITIES DocBook XML" \
"file:///etc/xml/docbook-xml" \
etc/xml/catalog
xmlcatalog --noout --add "delegatePublic" \
"-//OASIS//DTD DocBook XML" \
"file:///etc/xml/docbook-xml" \
etc/xml/catalog
xmlcatalog --noout --add "delegateSystem" \
"http://www.oasis-open.org/docbook/" \
"file:///etc/xml/docbook-xml" \
etc/xml/catalog
xmlcatalog --noout --add "delegateURI" \
"http://www.oasis-open.org/docbook/" \
"file:///etc/xml/docbook-xml" \
etc/xml/catalog
+22
View File
@@ -0,0 +1,22 @@
#!/bin/sh
set -e
# Remove stale entries then re-add so the catalog stays consistent after updates
xmlcatalog --noout --del file:///etc/xml/docbook-xml etc/xml/catalog
xmlcatalog --noout --add "delegatePublic" \
"-//OASIS//ENTITIES DocBook XML" \
"file:///etc/xml/docbook-xml" \
etc/xml/catalog
xmlcatalog --noout --add "delegatePublic" \
"-//OASIS//DTD DocBook XML" \
"file:///etc/xml/docbook-xml" \
etc/xml/catalog
xmlcatalog --noout --add "delegateSystem" \
"http://www.oasis-open.org/docbook/" \
"file:///etc/xml/docbook-xml" \
etc/xml/catalog
xmlcatalog --noout --add "delegateURI" \
"http://www.oasis-open.org/docbook/" \
"file:///etc/xml/docbook-xml" \
etc/xml/catalog
+6
View File
@@ -0,0 +1,6 @@
#!/bin/sh
set -e
if command -v xmlcatalog > /dev/null 2>&1; then
xmlcatalog --noout --del file:///etc/xml/docbook-xml etc/xml/catalog
fi
@@ -0,0 +1,33 @@
Description: use EXSLT "replace" function when available
A recursive implementation of string.subst is problematic,
long strings with many matches will cause stack overflows.
Author: Peter De Wachter <pdewacht@gmail.com>
Bug-Debian: https://bugs.debian.org/750593
diff --git a/lib/lib.xsl b/lib/lib.xsl
index e65776a..bc45cd8 100644
--- a/lib/lib.xsl
+++ b/lib/lib.xsl
@@ -6,7 +6,11 @@
This module implements DTD-independent functions
- ******************************************************************** --><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ ******************************************************************** -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:str="http://exslt.org/strings"
+ exclude-result-prefixes="str"
+ version="1.0">
<xsl:template name="dot.count">
<!-- Returns the number of "." characters in a string -->
@@ -52,6 +56,9 @@
<xsl:param name="replacement"/>
<xsl:choose>
+ <xsl:when test="function-available('str:replace')">
+ <xsl:value-of select="str:replace($string, string($target), string($replacement))"/>
+ </xsl:when>
<xsl:when test="contains($string, $target)">
<xsl:variable name="rest">
<xsl:call-template name="string.subst">
+44
View File
@@ -0,0 +1,44 @@
#!/bin/sh
set -eu
src_base=$(basename "$PWD")
version=${src_base##*-}
docbook_root="$DESTDIR/usr/share/xml/docbook"
style_root="$docbook_root/xsl-stylesheets-nons-$version"
install -dm755 "$style_root"
for path in \
VERSION \
assembly \
common \
eclipse \
epub \
epub3 \
extensions \
fo \
highlighting \
html \
htmlhelp \
images \
javahelp \
lib \
manpages \
params \
profiling \
roundtrip \
slides \
template \
tests \
tools \
webhelp \
website \
xhtml \
xhtml-1_1 \
xhtml5
do
cp -a "$path" "$style_root/"
done
ln -sf VERSION "$style_root/VERSION.xsl"
ln -sfn "xsl-stylesheets-nons-$version" "$docbook_root/xsl-stylesheets-nons"
+26
View File
@@ -0,0 +1,26 @@
[package]
name = "docbook-xsl"
version = "1.79.2"
description = "XSL stylesheets for transforming XML DocBook files"
homepage = "https://github.com/docbook/xslt10-stylesheets"
license = "DocBook-Stylesheet"
[[source]]
url = "https://github.com/docbook/xslt10-stylesheets/releases/download/release%2F$version/docbook-xsl-nons-$version.tar.gz"
sha256 = "f89425b44e48aad24319a2f0d38e0cb6059fdc7dbaf31787c8346c748175ca8e"
extract_dir = "$name-nons-$version"
patches = [ "765567_non-recursive_string_subst.patch" ]
[[manual_sources]]
file = "765567_non-recursive_string_subst.patch"
sha256 = "42d69ef938ff85e01cd5fe825cc3e70cd8dceaa88277d4940383b56fefd02dac"
[build]
type = "custom"
[build.flags]
no_flags = true
skip_tests = true
[dependencies]
runtime = [ "docbook-xml", "libxml215", "libxslt" ]
+17
View File
@@ -0,0 +1,17 @@
#!/bin/sh
set -eu
catalog=etc/xml/catalog
target="file:///usr/share/xml/docbook/xsl-stylesheets-nons"
uris="http://cdn.docbook.org/release/xsl-nons http://docbook.sourceforge.net/release/xsl"
if [ ! -f "$catalog" ]; then
xmlcatalog --noout --create "$catalog"
fi
for uri in $uris; do
xmlcatalog --noout --del "$uri/current" "$catalog" 2>/dev/null || true
xmlcatalog --noout --del "$uri/current" "$catalog" 2>/dev/null || true
xmlcatalog --noout --add "rewriteSystem" "$uri/current" "$target" "$catalog"
xmlcatalog --noout --add "rewriteURI" "$uri/current" "$target" "$catalog"
done
+17
View File
@@ -0,0 +1,17 @@
#!/bin/sh
set -eu
catalog=etc/xml/catalog
target="file:///usr/share/xml/docbook/xsl-stylesheets-nons"
uris="http://cdn.docbook.org/release/xsl-nons http://docbook.sourceforge.net/release/xsl"
if [ ! -f "$catalog" ]; then
xmlcatalog --noout --create "$catalog"
fi
for uri in $uris; do
xmlcatalog --noout --del "$uri/current" "$catalog" 2>/dev/null || true
xmlcatalog --noout --del "$uri/current" "$catalog" 2>/dev/null || true
xmlcatalog --noout --add "rewriteSystem" "$uri/current" "$target" "$catalog"
xmlcatalog --noout --add "rewriteURI" "$uri/current" "$target" "$catalog"
done
+14
View File
@@ -0,0 +1,14 @@
#!/bin/sh
set -eu
catalog=etc/xml/catalog
uris="http://cdn.docbook.org/release/xsl-nons http://docbook.sourceforge.net/release/xsl"
if ! command -v xmlcatalog >/dev/null 2>&1 || [ ! -f "$catalog" ]; then
exit 0
fi
for uri in $uris; do
xmlcatalog --noout --del "$uri/current" "$catalog" 2>/dev/null || true
xmlcatalog --noout --del "$uri/current" "$catalog" 2>/dev/null || true
done
@@ -0,0 +1,25 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = ["-DBUILD_SHARED_LIBS=ON"]
[dependencies]
build = ["cmake"]
runtime = [
"glibc",
"libcxx",
"libunwind",
]
[package]
description = "Binary-decimal and decimal-binary routines for IEEE doubles"
homepage = "https://github.com/google/double-conversion"
license = "BSD-3-Clause"
name = "double-conversion"
version = "3.4.0"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/google/double-conversion#v$version"
+125
View File
@@ -0,0 +1,125 @@
diff --git a/Makefile b/Makefile
index 5f1dc88..1ef6fcd 100644
--- a/Makefile
+++ b/Makefile
@@ -35,12 +35,12 @@ brick : all
done
a :
- @if [ $${EUID} != 0 ]; then \
+ @if [ "$$(id -u)" != 0 ]; then \
echo no 1>&2 ; \
exit 1 ; \
fi
-GITTAG = $(shell bash -c "echo $$(($(VERSION) + 1))")
+GITTAG = $(shell printf '%s\n' $$(( $(VERSION) + 1 )))
efivar.spec : | Makefile src/include/version.mk
diff --git a/src/include/defaults.mk b/src/include/defaults.mk
index 4da0cde..40f4d51 100644
--- a/src/include/defaults.mk
+++ b/src/include/defaults.mk
@@ -11,13 +11,15 @@ PKGS ?=
CROSS_COMPILE ?=
COMPILER ?= gcc
-ifeq ($(origin CC),command line)
-override COMPILER := $(CC)
-override CC := $(CROSS_COMPILE)$(COMPILER)
-endif
+
+tool-if-exists = $(strip $(shell command -v $(1) >/dev/null 2>&1 && printf '%s' '$(1)'))
+cc-command = $(firstword $(filter-out ccache sccache distcc,$(foreach word,$(1),$(notdir $(word)))))
+cc-name = $(patsubst $(CROSS_COMPILE)%,%,$(call cc-command,$(1)))
+
$(call set-if-undefined,CC,$(CROSS_COMPILE)$(COMPILER))
+override COMPILER := $(or $(call cc-name,$(CC)),$(COMPILER))
$(call set-if-undefined,CCLD,$(CC))
-$(call set-if-undefined,HOSTCC,$(COMPILER))
+$(call set-if-undefined,HOSTCC,$(call cc-name,$(CC)))
$(call set-if-undefined,HOSTCCLD,$(HOSTCC))
# temporary, see https://sourceware.org/bugzilla/show_bug.cgi?id=28264
@@ -107,11 +109,11 @@ override HOST_LDFLAGS = $(HOST_CFLAGS) -L. \
$(call pkg-config-ccldflags)
override HOST_CCLDFLAGS = $(HOST_LDFLAGS)
-PKG_CONFIG ?= $(shell if [ -e "$$(env $(CROSS_COMPILE)pkg-config 2>&1)" ]; then echo $(CROSS_COMPILE)pkg-config ; else echo pkg-config ; fi)
+PKG_CONFIG ?= $(or $(call tool-if-exists,$(CROSS_COMPILE)pkg-config),pkg-config)
INSTALL ?= install
-AR := $(CROSS_COMPILE)$(COMPILER)-ar
-NM := $(CROSS_COMPILE)$(COMPILER)-nm
-RANLIB := $(CROSS_COMPILE)$(COMPILER)-ranlib
+$(call set-if-undefined,AR,$(or $(call tool-if-exists,$(CROSS_COMPILE)$(call cc-name,$(CC))-ar),$(if $(findstring clang,$(call cc-name,$(CC))),$(call tool-if-exists,$(CROSS_COMPILE)llvm-ar),$(call tool-if-exists,$(CROSS_COMPILE)gcc-ar)),$(call tool-if-exists,$(CROSS_COMPILE)ar),ar))
+$(call set-if-undefined,NM,$(or $(call tool-if-exists,$(CROSS_COMPILE)$(call cc-name,$(CC))-nm),$(if $(findstring clang,$(call cc-name,$(CC))),$(call tool-if-exists,$(CROSS_COMPILE)llvm-nm),$(call tool-if-exists,$(CROSS_COMPILE)gcc-nm)),$(call tool-if-exists,$(CROSS_COMPILE)nm),nm))
+$(call set-if-undefined,RANLIB,$(or $(call tool-if-exists,$(CROSS_COMPILE)$(call cc-name,$(CC))-ranlib),$(if $(findstring clang,$(call cc-name,$(CC))),$(call tool-if-exists,$(CROSS_COMPILE)llvm-ranlib),$(call tool-if-exists,$(CROSS_COMPILE)gcc-ranlib)),$(call tool-if-exists,$(CROSS_COMPILE)ranlib),ranlib))
ABIDW := abidw
ABIDIFF := abidiff
MANDOC := mandoc
diff --git a/src/include/coverity.mk b/src/include/coverity.mk
index 2e7024b..f852097 100644
--- a/src/include/coverity.mk
+++ b/src/include/coverity.mk
@@ -4,11 +4,11 @@ COV_URL=$(call get-config,coverity.url)
COV_FILE=$(NAME)-coverity-$(VERSION)-$(COMMIT_ID).tar.bz2
cov-int : clean
- cov-build --dir cov-int make all
+ cov-build --dir cov-int $(MAKE) all
cov-clean :
@rm -vf $(NAME)-coverity-*.tar.*
- @if [[ -d cov-int ]]; then rm -rf cov-int && echo "removed 'cov-int'"; fi
+ @if [ -d cov-int ]; then rm -rf cov-int && echo "removed 'cov-int'"; fi
cov-file : | $(COV_FILE)
@@ -16,9 +16,9 @@ $(COV_FILE) : cov-int
tar caf $@ cov-int
cov-upload :
- @if [[ -n "$(COV_URL)" ]] && \
- [[ -n "$(COV_TOKEN)" ]] && \
- [[ -n "$(COV_EMAIL)" ]] ; \
+ @if [ -n "$(COV_URL)" ] && \
+ [ -n "$(COV_TOKEN)" ] && \
+ [ -n "$(COV_EMAIL)" ] ; \
then \
echo curl --form token=$(COV_TOKEN) --form email="$(COV_EMAIL)" --form file=@"$(COV_FILE)" --form version=$(VERSION).1 --form description="$(COMMIT_ID)" "$(COV_URL)" ; \
curl --form token=$(COV_TOKEN) --form email="$(COV_EMAIL)" --form file=@"$(COV_FILE)" --form version=$(VERSION).1 --form description="$(COMMIT_ID)" "$(COV_URL)" ; \
@@ -31,7 +31,7 @@ coverity : cov-file cov-upload
clean : | cov-clean
-COV_BUILD ?= $(shell x=$$(which --skip-alias --skip-functions cov-build 2>/dev/null) ; [ -n "$$x" ] && echo 1)
+COV_BUILD ?= $(shell command -v cov-build >/dev/null 2>&1 && printf '%s' 1)
ifeq ($(COV_BUILD),)
COV_BUILD_ERROR = $(error cov-build not found)
endif
diff --git a/src/include/scan-build.mk b/src/include/scan-build.mk
index 19da90c..125c85c 100644
--- a/src/include/scan-build.mk
+++ b/src/include/scan-build.mk
@@ -1,4 +1,4 @@
-SCAN_BUILD ?= $(shell x=$$(which --skip-alias --skip-functions scan-build 2>/dev/null) ; [ -n "$$x" ] && echo 1)
+SCAN_BUILD ?= $(shell command -v scan-build >/dev/null 2>&1 && printf '%s' 1)
ifeq ($(SCAN_BUILD),)
SCAN_BUILD_ERROR = $(error scan-build not found)
endif
@@ -6,12 +6,12 @@ endif
scan-test : ; $(SCAN_BUILD_ERROR)
scan-clean : clean
- @if [[ -d scan-results ]]; then rm -rf scan-results && echo "removed 'scan-results'"; fi
+ @if [ -d scan-results ]; then rm -rf scan-results && echo "removed 'scan-results'"; fi
scan-build : | scan-test
scan-build : clean
$(MAKE) -C src makeguids
- scan-build -o scan-results make $(DASHJ) CC=clang all
+ scan-build -o scan-results $(MAKE) $(DASHJ) CC=clang all
scan-build-all: | scan-build
scan : | scan-build
@@ -0,0 +1,162 @@
Submitted by: Bruce Dubbs <bdubbs@linuxfromscratch.org>
Date: 2026-02-23
Initial Package Version: 39
Upstream Status: Submitted
Origin: https://github.com/rhboot/efivar/pull/292/changes/12060aa29dac86169b0ed8929e33e10644917dba
Description: Allows to build efivar-39 with glibc-2.43
From 12060aa29dac86169b0ed8929e33e10644917dba Mon Sep 17 00:00:00 2001
From: Xi Ruoyao <xry111@xry111.site>
Date: Sat, 14 Feb 2026 02:06:51 +0800
Subject: [PATCH] Fix build failure with glibc 2.43
In glibc 2.43, some _Generic macros have been added to preserve the
constness of pointers. They are following C23 but also available when
_GNU_SOURCE is defined (as we are doing). The preserved constness can
trigger some -Wdiscarded-qualifiers warnings, which are turned to errors
with -Werror (that we enable by default).
The find_parent_devpath function really modifies the buffer so we have
to drop the const qualifer for it. For other cases, simply add the
missed const qualifer.
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
---
src/guid.c | 12 ++++++------
src/linux-acpi-root.c | 2 +-
src/linux-ata.c | 4 ++--
src/linux-i2o.c | 2 +-
src/linux.c | 2 +-
src/linux.h | 2 +-
6 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/guid.c b/src/guid.c
index f999fc4e..1f4a6605 100644
--- a/src/guid.c
+++ b/src/guid.c
@@ -78,13 +78,13 @@ cmpnamep(const void *p1, const void *p2)
}
static int NONNULL(1, 2)
-_get_common_guidname(const efi_guid_t *guid, struct efivar_guidname **result)
+_get_common_guidname(const efi_guid_t *guid, const struct efivar_guidname **result)
{
struct efivar_guidname key;
memset(&key, '\0', sizeof(key));
memcpy(&key.guid, guid, sizeof(*guid));
- struct efivar_guidname *tmp;
+ const struct efivar_guidname *tmp;
tmp = bsearch(&key,
&efi_well_known_guids[0],
efi_n_well_known_guids,
@@ -104,7 +104,7 @@ _get_common_guidname(const efi_guid_t *guid, struct efivar_guidname **result)
int NONNULL(1, 2) PUBLIC
efi_guid_to_name(efi_guid_t *guid, char **name)
{
- struct efivar_guidname *result;
+ const struct efivar_guidname *result;
int rc = _get_common_guidname(guid, &result);
if (rc >= 0) {
*name = strndup(result->name, sizeof(result->name) -1);
@@ -119,7 +119,7 @@ efi_guid_to_name(efi_guid_t *guid, char **name)
int NONNULL(1, 2) PUBLIC
efi_guid_to_symbol(efi_guid_t *guid, char **symbol)
{
- struct efivar_guidname *result;
+ const struct efivar_guidname *result;
int rc = _get_common_guidname(guid, &result);
if (rc >= 0) {
*symbol = strndup(result->symbol, sizeof(result->symbol) -1);
@@ -133,7 +133,7 @@ efi_guid_to_symbol(efi_guid_t *guid, char **symbol)
int NONNULL(1) PUBLIC
efi_guid_to_id_guid(const efi_guid_t *guid, char **sp)
{
- struct efivar_guidname *result = NULL;
+ const struct efivar_guidname *result = NULL;
char *ret = NULL;
int rc;
@@ -201,7 +201,7 @@ efi_name_to_guid(const char *name, efi_guid_t *guid)
key.name[sizeof(key.name) - 1] = '\0';
- struct efivar_guidname *result;
+ const struct efivar_guidname *result;
result = bsearch(&key,
&efi_well_known_names[0],
efi_n_well_known_names,
diff --git a/src/linux-acpi-root.c b/src/linux-acpi-root.c
index c4c00e7d..a45f0c9d 100644
--- a/src/linux-acpi-root.c
+++ b/src/linux-acpi-root.c
@@ -35,7 +35,7 @@ parse_acpi_root(struct device *dev, const char *path, const char *root UNUSED)
uint16_t pad0;
uint8_t pad1;
char *acpi_header = NULL;
- char *colon;
+ const char *colon;
debug("entry");
diff --git a/src/linux-ata.c b/src/linux-ata.c
index 064a4247..d8c98060 100644
--- a/src/linux-ata.c
+++ b/src/linux-ata.c
@@ -95,7 +95,7 @@ parse_ata(struct device *dev, const char *path, const char *root UNUSED)
return 0;
}
- char *host = strstr(path, "/host");
+ const char *host = strstr(path, "/host");
if (!host)
return -1;
@@ -113,7 +113,7 @@ parse_ata(struct device *dev, const char *path, const char *root UNUSED)
dev->ata_info.scsi_target = scsi_target;
dev->ata_info.scsi_lun = scsi_lun;
- char *block = strstr(current, "/block/");
+ const char *block = strstr(current, "/block/");
if (block)
current += block + 1 - current;
debug("current:'%s' sz:%zd", current, current - path);
diff --git a/src/linux-i2o.c b/src/linux-i2o.c
index 3aea7d35..2cd1b48a 100644
--- a/src/linux-i2o.c
+++ b/src/linux-i2o.c
@@ -32,7 +32,7 @@ parse_i2o(struct device *dev, const char *current, const char *root UNUSED)
return 0;
}
- char *block = strstr(current, "/block/");
+ const char *block = strstr(current, "/block/");
ssize_t sz = block ? block + 1 - current : -1;
debug("current:'%s' sz:%zd", current, sz);
return sz;
diff --git a/src/linux.c b/src/linux.c
index 4344986e..a0a04079 100644
--- a/src/linux.c
+++ b/src/linux.c
@@ -31,7 +31,7 @@
#include "efiboot.h"
int HIDDEN
-find_parent_devpath(const char * const child, char **parent)
+find_parent_devpath(char * const child, char **parent)
{
int ret;
char *node;
diff --git a/src/linux.h b/src/linux.h
index 3489e9c1..de3b5b01 100644
--- a/src/linux.h
+++ b/src/linux.h
@@ -161,7 +161,7 @@ extern int HIDDEN eb_nvme_ns_id(int fd, uint32_t *ns_id);
int HIDDEN get_sector_size(int filedes);
-extern int HIDDEN find_parent_devpath(const char * const child,
+extern int HIDDEN find_parent_devpath(char * const child,
char **parent);
extern ssize_t HIDDEN make_mac_path(uint8_t *buf, ssize_t size,
+30
View File
@@ -0,0 +1,30 @@
[build]
type = "makefile"
[build.flags]
makefile_commands = ["make ENABLE_DOCS=0"]
makefile_install_commands = [
"make install DESTDIR=$DESTDIR ENABLE_DOCS=0 LIBDIR=/usr/lib",
"install -Dvm644 docs/efivar.1 $DESTDIR/usr/share/man/man1/efivar.1",
"install -d $DESTDIR/usr/share/man/man3 && install -vm644 docs/*.3 $DESTDIR/usr/share/man/man3/"
]
skip_tests = true
[dependencies]
runtime = ["glibc"]
[[manual_sources]]
files = [ "efivar-39-upstream_fixes-1.patch", "efivar-39-posixify-build.patch" ]
[package]
description = "tools and libraries to manipulate EFI variables"
homepage = "https://github.com/rhboot/efivar"
license = "LGPL-2.1-or-later"
name = "efivar"
version = "39"
[[source]]
extract_dir = "$name-$version"
patches = [ "efivar-39-upstream_fixes-1.patch", "efivar-39-posixify-build.patch" ]
sha256 = "c9edd15f2eeeea63232f3e669a48e992c7be9aff57ee22672ac31f5eca1609a6"
url = "https://github.com/rhboot/efivar/archive/$version/efivar-$version.tar.gz"
@@ -0,0 +1,136 @@
diff -ruN a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt 2026-02-13 10:15:11.000000000 -0600
+++ b/CMakeLists.txt 2026-02-28 14:34:36.533430812 -0600
@@ -120,7 +120,7 @@
message(FATAL_ERROR "BINARY_LINK_TYPE must be one of ${BINARY_LINK_TYPE_OPTIONS}")
endif()
-set(PACKAGE_MANAGERS AM APK BREW CHOCO DPKG EMERGE EOPKG FLATPAK GUIX LINGLONG LPKG LPKGBUILD MACPORTS NIX OPKG PACMAN PACSTALL PALUDIS PISI PKG PKGTOOL RPM SCOOP SNAP SOAR SORCERY WINGET XBPS)
+set(PACKAGE_MANAGERS AM APK BREW CHOCO DEPOT DPKG EMERGE EOPKG FLATPAK GUIX LINGLONG LPKG LPKGBUILD MACPORTS NIX OPKG PACMAN PACSTALL PALUDIS PISI PKG PKGTOOL RPM SCOOP SNAP SOAR SORCERY WINGET XBPS)
foreach(package_manager ${PACKAGE_MANAGERS})
if(package_manager STREQUAL "WINGET")
option(PACKAGES_DISABLE_${package_manager} "Disable ${package_manager} package manager detection by default" ON)
diff -ruN a/src/detection/packages/packages.h b/src/detection/packages/packages.h
--- a/src/detection/packages/packages.h 2026-02-13 10:15:11.000000000 -0600
+++ b/src/detection/packages/packages.h 2026-02-28 14:34:43.270607662 -0600
@@ -11,6 +11,7 @@
uint32_t brew;
uint32_t brewCask;
uint32_t choco;
+ uint32_t depot;
uint32_t dpkg;
uint32_t emerge;
uint32_t eopkg;
diff -ruN a/src/detection/packages/packages_linux.c b/src/detection/packages/packages_linux.c
--- a/src/detection/packages/packages_linux.c 2026-02-13 10:15:11.000000000 -0600
+++ b/src/detection/packages/packages_linux.c 2026-02-28 14:34:54.446900065 -0600
@@ -455,6 +455,7 @@
{
if (!(options->disabled & FF_PACKAGES_FLAG_APK_BIT)) packageCounts->apk += getNumStrings(baseDir, "/lib/apk/db/installed", "C:Q", "apk");
if (!(options->disabled & FF_PACKAGES_FLAG_DPKG_BIT)) packageCounts->dpkg += getNumStrings(baseDir, "/var/lib/dpkg/status", "Status: install ok installed", "dpkg");
+ if (!(options->disabled & FF_PACKAGES_FLAG_DEPOT_BIT)) packageCounts->depot += getSQLite3Int(baseDir, "/var/lib/depot/packages.db", "SELECT COUNT(*) FROM packages", "depot-system");
if (!(options->disabled & FF_PACKAGES_FLAG_LPKG_BIT)) packageCounts->lpkg += getNumStrings(baseDir, "/opt/Loc-OS-LPKG/installed-lpkg/Listinstalled-lpkg.list", "\n", "lpkg");
if (!(options->disabled & FF_PACKAGES_FLAG_EMERGE_BIT)) packageCounts->emerge += countFilesRecursive(baseDir, "/var/db/pkg", "SIZE");
if (!(options->disabled & FF_PACKAGES_FLAG_EOPKG_BIT)) packageCounts->eopkg += getNumElements(baseDir, "/var/lib/eopkg/package", true);
@@ -559,6 +560,9 @@
#endif
ffStrbufSet(&baseDir, &instance.state.platform.homeDir);
+ if (!(options->disabled & FF_PACKAGES_FLAG_DEPOT_BIT))
+ result->depot += getSQLite3Int(&baseDir, ".local/share/depot/packages.db", "SELECT COUNT(*) FROM packages", "depot-user");
+
if (!(options->disabled & FF_PACKAGES_FLAG_NIX_BIT))
{
// Count packages from $HOME/.nix-profile
diff -ruN a/src/logo/ascii/vertex.txt b/src/logo/ascii/vertex.txt
--- a/src/logo/ascii/vertex.txt 1969-12-31 18:00:00.000000000 -0600
+++ b/src/logo/ascii/vertex.txt 2026-02-28 14:34:29.816254040 -0600
@@ -0,0 +1,6 @@
+____ ____ __
+\ \ / /____________/ |_ ____ ___ ___
+ \ Y // __ \_ __ \ __\/ __ \\ \/ /
+ \ /\ ___/| | \/| | \ ___/ > <
+ \___/ \___ >__| |__| \___ >__/\_ \
+ \/ \/ \/
diff -ruN a/src/logo/builtin.c b/src/logo/builtin.c
--- a/src/logo/builtin.c 2026-02-13 10:15:11.000000000 -0600
+++ b/src/logo/builtin.c 2026-02-28 14:35:07.169231466 -0600
@@ -5274,6 +5274,16 @@
FF_COLOR_FG_BLUE,
},
},
+ // Vertex Linux
+ {
+ .names = {"Vertex Linux", "Vertex", "vertex"},
+ .lines = FASTFETCH_DATATEXT_LOGO_VERTEX,
+ .colors = {
+ FF_COLOR_FG_LIGHT_MAGENTA,
+ },
+ .colorKeys = FF_COLOR_FG_LIGHT_MAGENTA,
+ .colorTitle = FF_COLOR_FG_LIGHT_MAGENTA,
+ },
// VincentOS
{
.names = {"VincentOS"},
diff -ruN a/src/modules/packages/option.h b/src/modules/packages/option.h
--- a/src/modules/packages/option.h 2026-02-13 10:15:11.000000000 -0600
+++ b/src/modules/packages/option.h 2026-02-28 14:34:47.202710674 -0600
@@ -37,6 +37,7 @@
FF_PACKAGES_FLAG_PISI_BIT = 1ULL << 29,
FF_PACKAGES_FLAG_SOAR_BIT = 1ULL << 30,
FF_PACKAGES_FLAG_KISS_BIT = 1ULL << 31,
+ FF_PACKAGES_FLAG_DEPOT_BIT = 1ULL << 32,
FF_PACKAGES_FLAG_FORCE_UNSIGNED = UINT64_MAX,
} FFPackagesFlags;
static_assert(sizeof(FFPackagesFlags) == sizeof(uint64_t), "");
diff -ruN a/src/modules/packages/packages.c b/src/modules/packages/packages.c
--- a/src/modules/packages/packages.c 2026-02-13 10:15:11.000000000 -0600
+++ b/src/modules/packages/packages.c 2026-02-28 14:35:01.426082052 -0600
@@ -58,6 +58,7 @@
if((all -= counts.pacman) > 0)
printf(", ");
};
+ FF_PRINT_PACKAGE(depot)
FF_PRINT_PACKAGE(dpkg)
FF_PRINT_PACKAGE(rpm)
FF_PRINT_PACKAGE(emerge)
@@ -156,6 +157,7 @@
FF_FORMAT_ARG(counts.all, "all"),
FF_FORMAT_ARG(counts.pacman, "pacman"),
FF_FORMAT_ARG(counts.pacmanBranch, "pacman-branch"),
+ FF_FORMAT_ARG(counts.depot, "depot"),
FF_FORMAT_ARG(counts.dpkg, "dpkg"),
FF_FORMAT_ARG(counts.rpm, "rpm"),
FF_FORMAT_ARG(counts.emerge, "emerge"),
@@ -255,6 +257,7 @@
FF_TEST_PACKAGE_NAME(CHOCO)
break;
case 'D': if (false);
+ FF_TEST_PACKAGE_NAME(DEPOT)
FF_TEST_PACKAGE_NAME(DPKG)
break;
case 'E': if (false);
@@ -345,6 +348,7 @@
FF_TEST_PACKAGE_NAME(APK)
FF_TEST_PACKAGE_NAME(BREW)
FF_TEST_PACKAGE_NAME(CHOCO)
+ FF_TEST_PACKAGE_NAME(DEPOT)
FF_TEST_PACKAGE_NAME(DPKG)
FF_TEST_PACKAGE_NAME(EMERGE)
FF_TEST_PACKAGE_NAME(EOPKG)
@@ -402,6 +406,7 @@
FF_APPEND_PACKAGE_COUNT(brew)
FF_APPEND_PACKAGE_COUNT(brewCask)
FF_APPEND_PACKAGE_COUNT(choco)
+ FF_APPEND_PACKAGE_COUNT(depot)
FF_APPEND_PACKAGE_COUNT(dpkg)
FF_APPEND_PACKAGE_COUNT(emerge)
FF_APPEND_PACKAGE_COUNT(eopkg)
@@ -466,6 +471,7 @@
{"Number of all packages", "all"},
{"Number of pacman packages", "pacman"},
{"Pacman branch on manjaro", "pacman-branch"},
+ {"Number of depot packages", "depot"},
{"Number of dpkg packages", "dpkg"},
{"Number of rpm packages", "rpm"},
{"Number of emerge packages", "emerge"},
+65
View File
@@ -0,0 +1,65 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-DBUILD_FLASHFETCH=OFF",
"-DENABLE_SQLITE3=ON",
"-DENABLE_IMAGEMAGICK6=OFF",
"-DENABLE_RPM=OFF",
"-DENABLE_SYSTEM_YYJSON=ON",
"-DPACKAGES_DISABLE_APK=ON",
"-DPACKAGES_DISABLE_EMERGE=ON",
"-DPACKAGES_DISABLE_EOPKG=ON",
"-DPACKAGES_DISABLE_DPKG=ON",
"-DPACKAGES_DISABLE_GUIX=ON",
"-DPACKAGES_DISABLE_LINGLONG=ON",
"-DPACKAGES_DISABLE_LPKG=ON",
"-DPACKAGES_DISABLE_LPKGBUILD=ON",
"-DPACKAGES_DISABLE_OPKG=ON",
"-DPACKAGES_DISABLE_PACSTALL=ON",
"-DPACKAGES_DISABLE_PALUDIS=ON",
"-DPACKAGES_DISABLE_PKG=ON",
"-DPACKAGES_DISABLE_PKGTOOL=ON",
"-DPACKAGES_DISABLE_RPM=ON",
"-DPACKAGES_DISABLE_SORCERY=ON",
"-DPACKAGES_DISABLE_XBPS=ON",
"-DPACKAGES_DISABLE_PACMAN=ON",
"-Wno-dev"
]
[dependencies]
build = [
"cmake",
"sqlite",
"zlib-ng",
]
optional = [
"sqlite",
"zlib-ng",
"python",
"libelf",
"hwdata",
]
runtime = [
"glibc",
"yyjson",
]
[package]
description = "feature-rich and performance oriented neofetch like system information tool"
homepage = "https://github.com/fastfetch-cli/fastfetch"
license = "MIT"
name = "fastfetch"
version = "2.59.0"
[[source]]
extract_dir = "$name-$version"
sha256 = "978e2524d0dc1ff9fd8c89fb24ae5b131af18ff108da82c6d99823712557e499"
url = "https://github.com/fastfetch-cli/fastfetch/archive/refs/tags/$version.tar.gz"
patches = [ "fastfetch-2.59.0-vertex-depot.patch" ]
[[manual_sources]]
files = [ "fastfetch-2.59.0-vertex-depot.patch" ]
sha256 = "skip"
+30
View File
@@ -0,0 +1,30 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--with-pic",
"--disable-static",
]
skip-tests = true
make-install-vars = [ "htmldir=/usr/share/doc/ffcall" ]
[dependencies]
runtime = ["glibc"]
[package]
description = "C library for implementing foreign function calls in embedded interpreters"
homepage = "https://www.gnu.org/software/libffcall/"
license = "GPL-2.0-or-later"
name = "ffcall"
version = "2.5"
[[source]]
extract_dir = "$name-$version"
url = "https://mirrors.kernel.org/gnu/libffcall/libffcall-$version.tar.gz"
sha256 = "b2:552a0a33bbed91380ced4bdb0f87f38be0a531e729b9530d80dd777ce93b4fe3515a984c2da0221e0110756fbbc099d666b1fed6f5cfacfccbedda7f97e58054"
patches = [ "libffcall-2.5-parallel-make-race.patch" ]
[[manual_sources]]
file = "libffcall-2.5-parallel-make-race.patch"
sha256 = "b2:094d442a4678e8f712ecbe4dcabe15440b7e3be6f4715593c71937269045835c1dd08cdd18992efd9d2b8ecbf0a95cbc9b20b1e8d1377888d5c45640ff3480ab"
@@ -0,0 +1,25 @@
diff --git a/Makefile.in b/Makefile.in
index 5f5b496..5865660 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -233,3 +233,7 @@ dist : force
force :
+# This Makefile contains rules which don't work with parallel make.
+# See <https://savannah.gnu.org/bugs/?66220>.
+# So, turn off parallel execution in this Makefile.
+.NOTPARALLEL:
diff --git a/callback/Makefile.in b/callback/Makefile.in
index d453d6b..64908e8 100644
--- a/callback/Makefile.in
+++ b/callback/Makefile.in
@@ -234,3 +234,8 @@ distdir : $(DISTFILES)
force :
+
+# This Makefile contains rules which don't work with parallel make.
+# See <https://savannah.gnu.org/bugs/?66220>.
+# So, turn off parallel execution in this Makefile.
+.NOTPARALLEL:
@@ -0,0 +1,47 @@
--- a/share/functions/fish_command_not_found.fish
+++ b/share/functions/fish_command_not_found.fish
@@ -49,6 +49,44 @@
function fish_command_not_found
command-not-found -- $argv[1]
end
+ # depot can query binary repo metadata for path ownership, which lets us
+ # suggest packages for missing commands in a pkgfile-like format.
+else if type -q depot
+ function fish_command_not_found
+ set -l __depot_seen_dirs
+ set -l __depot_paths
+ set -l __depot_packages
+
+ for __dir in $PATH
+ string match -q '/*' -- $__dir; or continue
+ contains -- $__dir $__depot_seen_dirs; and continue
+ set -a __depot_seen_dirs $__dir
+ set -a __depot_paths $__dir/$argv[1]
+ end
+
+ if test (count $__depot_paths) -eq 0
+ set __depot_paths /usr/bin/$argv[1] /bin/$argv[1]
+ end
+
+ for __path in $__depot_paths
+ set -l __hits (
+ depot repo owns $__path 2>/dev/null |
+ string match -r '^\[INFO\] [^ ]+ \[binary:[^]]+\] [^ ]+ size=[^ ]+ owns=.*$' |
+ string replace -r '^\[INFO\] ([^ ]+) \[binary:([^]]+)\] ([^ ]+) size=[^ ]+ owns=(.+)$' '$2/$1 $3\t$4'
+ )
+
+ for __hit in $__hits
+ contains -- $__hit $__depot_packages; or set -a __depot_packages $__hit
+ end
+ end
+
+ if test (count $__depot_packages) -gt 0
+ printf "%s may be found in the following packages:\n" "$argv[1]"
+ printf " %s\n" $__depot_packages
+ else
+ __fish_default_command_not_found_handler $argv[1]
+ end
+ end
# pkgfile is an optional, but official, package on Arch Linux
# it ships with example handlers for bash and zsh, so we'll follow that format
else if type -q pkgfile
+55
View File
@@ -0,0 +1,55 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-DWITH_DOCS=ON",
"-DFISH_USE_SYSTEM_PCRE2=ON",
"-DWITH_MESSAGE_LOCALIZATION=ON",
"-Wno-dev",
]
keep = [ "etc/fish/config.fish" ]
use_lto = false
[dependencies]
build = [
"cmake",
"jq",
"rust",
"python-sphinx",
]
optional = [
"python",
"groff",
"mandoc",
"xsel",
"xclip",
"wl-clipboard",
]
runtime = [
"glibc",
"libunwind",
"pcre2",
]
test = [
"expect",
"procps-ng",
"python-pexpect",
]
[package]
description = "Smart and user friendly shell intended mostly for interactive use"
homepage = "https://fishshell.com/"
license = "GPL-2.0-only AND BSD-3-Clause AND ISC AND MIT AND PSF-2.0"
name = "fish"
version = "4.5.0"
revision = 2
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/fish-shell/fish-shell#$version"
patches = [ "fish-4.5.0-depot-command-not-found.patch" ]
[[manual_sources]]
files = [ "fish-4.5.0-depot-command-not-found.patch", "postinstall.sh", "postupdate.sh", "postremove.sh" ]
+2
View File
@@ -0,0 +1,2 @@
grep -qe '^/usr/bin/fish$' etc/shells || echo '/usr/bin/fish' >> etc/shells
grep -qe '^/bin/fish$' etc/shells || echo '/bin/fish' >> etc/shells
+1
View File
@@ -0,0 +1 @@
sed -ri -e '\|^/usr/bin/fish$|d' -e '\|^/bin/fish$|d' etc/shells
+2
View File
@@ -0,0 +1,2 @@
grep -qe '^/usr/bin/fish$' etc/shells || echo '/usr/bin/fish' >> etc/shells
grep -qe '^/bin/fish$' etc/shells || echo '/bin/fish' >> etc/shells
+38
View File
@@ -0,0 +1,38 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-DBUILD_SHARED_LIBS=ON",
"-Wno-dev",
"-G Ninja",
]
[dependencies]
build = [
"cmake",
"mkdocs",
"mkdocs-material",
"mkdocstrings",
"ninja",
"npm",
"python-pymdown-extensions",
"python-regex",
]
runtime = [
"glibc",
"libunwind",
"libcxx",
]
[package]
description = "Open-source formatting library for C++"
homepage = "https://fmt.dev/"
license = "MIT"
name = "fmt"
version = "12.1.0"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/fmtlib/fmt.git#$version"
+48
View File
@@ -0,0 +1,48 @@
The last test of t4129 creates a directory and expects its setgid bit
(g+s) to be off. But this makes the test fail when the parent directory
has the bit set, as setgid's state is inherited by newly created
subdirectories. Make the test more robust by accepting the presence of
the setgid bit on the created directory. We only allow 'S' (setgid on
but no executable permission) and not 's' (setgid on with executable
permission) because the previous 'umask 0077' shouldn't allow the second
scenario to happen.
Note that only subdirectories inherit this bit, so we don't have to make
the same change for the regular file that is also created by this test.
But checking the permissions using grep instead of test_cmp makes the
test a little simpler, so let's use it for the regular file as well.
Also note that the sticky bit (+t) and the setuid bit (u+s) are not
inherited, so we don't have to worry about those.
Reported-by: Kevin Daudt <me@ikke.info>
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
---
t/t4129-apply-samemode.sh | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/t/t4129-apply-samemode.sh b/t/t4129-apply-samemode.sh
index 41818d8315..3818398ca9 100755
--- a/t/t4129-apply-samemode.sh
+++ b/t/t4129-apply-samemode.sh
@@ -90,12 +90,10 @@ test_expect_success POSIXPERM 'do not use core.sharedRepository for working tree
rm -rf d f1 &&
git apply patch-f1-and-f2.txt &&
- echo "-rw-------" >f1_mode.expected &&
- echo "drwx------" >d_mode.expected &&
- test_modebits f1 >f1_mode.actual &&
- test_modebits d >d_mode.actual &&
- test_cmp f1_mode.expected f1_mode.actual &&
- test_cmp d_mode.expected d_mode.actual
+ test_modebits f1 >f1_mode &&
+ test_modebits d >d_mode &&
+ grep "^-rw-------$" f1_mode &&
+ grep "^drwx--[-S]---$" d_mode
)
'
--
2.29.2
+19
View File
@@ -0,0 +1,19 @@
# conf.d file for git-daemon
#
# Please check man 1 git-daemon for more information about the options
# git-daemon accepts. You MUST edit this to include your repositories you wish
# to serve.
#
# Some of the meaningful options are:
# --syslog --- Enables syslog logging
# --verbose --- Enables verbose logging
# --export-all --- Exports all repositories
# --port=XXXX --- Starts in port XXXX instead of 9418
#
GITDAEMON_OPTS="--syslog --base-path=/var/git"
# To run an anonymous git safely, the following user should be able to only
# read your Git repositories. It should not be able to write to anywhere on
# your system, esp. not the repositories.
GIT_USER="nobody"
GIT_GROUP="nobody"
+13
View File
@@ -0,0 +1,13 @@
#!/sbin/openrc-run
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
pidfile="/var/run/git-daemon.pid"
command="/usr/bin/git"
command_args="daemon ${GITDAEMON_OPTS}"
start_stop_daemon_args="-e HOME= -e XDG_CONFIG_HOME= -b -m -p ${pidfile} -u ${GIT_USER:-nobody}:${GIT_GROUP:-nobody}"
depend() {
use logger
}
+63
View File
@@ -0,0 +1,63 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--with-gitconfig=/etc/gitconfig",
"--with-python=python3",
"--with-libpcre2",
]
post_install = [ "install -Dm755 $DEPOT_SPECDIR/git-daemon.initd $DESTDIR/etc/init.d/git-daemon", "install -Dm644 $DEPOT_SPECDIR/git-daemon.confd $DESTDIR/etc/conf.d/git-daemon", "install -Dm644 contrib/completion/git-completion.bash $DESTDIR/usr/share/bash-completion/completions/git", "install -Dm644 contrib/completion/git-prompt.sh $DESTDIR/usr/share/git-core/git-prompt.sh" ]
make_install_vars = [ "perllibdir=/usr/lib/perl5/5.42/site_perl" ]
keep = [ "etc/conf.d/*" ]
[dependencies]
build = ["python"]
optional = [
"less",
"libsecret",
"man-db",
"openssh",
"org.freedesktop.secrets",
"perl-authen-sasl",
"perl-cgi",
"perl-io-socket-ssl",
"perl-libwww",
"python",
"perl-term-readkey",
"tk",
"subversion",
]
runtime = [
"curl",
"expat",
"grep",
"openssl",
"pcre2",
"perl",
"perl-error",
"perl-mailtools",
"shadow",
"zlib-ng",
]
test = ["openssh"]
[[manual_sources]]
files = [
"fix-t4219-with-sticky-bit.patch",
"git-daemon.initd",
"git-daemon.confd",
]
[package]
description = "the fast distributed version control system"
homepage = "https://git-scm.com/"
license = "GPL-2.0-only"
name = "git"
version = "2.53.0"
[[source]]
extract_dir = "$name-$version"
patches = ["fix-t4219-with-sticky-bit.patch"]
sha256 = "5818bd7d80b061bbbdfec8a433d609dc8818a05991f731ffc4a561e2ca18c653"
url = "https://www.kernel.org/pub/software/scm/git/git-$version.tar.xz"
+2
View File
@@ -0,0 +1,2 @@
install -Dt "$DESTDIR/usr/share/fonts/gnu-free" -m644 *.otf
+17
View File
@@ -0,0 +1,17 @@
[build]
type = "custom"
[alternatives]
provides = [ "ttf-font", "ttf-freefont" ]
[package]
description = "A free family of scalable outline fonts"
homepage = "https://www.gnu.org/software/freefont/"
license = "GPL-3.0-or-later"
name = "gnu-free-fonts"
version = "20120503"
[[source]]
extract_dir = "$name-$version"
sha256 = "3a6c51868c71b006c33c4bcde63d90927e6fcca8f51c965b8ad62d021614a860"
url = "https://mirrors.kernel.org/gnu/freefont/freefont-otf-$version.tar.gz"
+9
View File
@@ -0,0 +1,9 @@
# https://gnutls.org/manual/html_node/Enabling_002fDisabling-system_002facceleration-protocols.html#Enabling-KTLS
#
# GnuTLS is built with -enable-ktls configuration, KTLS is disabled by default.
# This can be enabled by setting ktls = true in [global] section.
#
[global]
ktls = false
#ktls = true
File diff suppressed because it is too large Load Diff
+58
View File
@@ -0,0 +1,58 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--with-idn",
"--with-brotli",
"--with-zstd",
"--without-tpm2",
"--enable-openssl-compatibility",
"--with-default-trust-store-pkcs11=pkcs11:",
"--enable-ktls",
"--with-leancrypto",
"--disable-tests"
]
post_configure = ['''sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool''']
post_install = [
"install -dm755 $DESTDIR/etc/gnutls",
"install -Dm644 $DEPOT_SPECDIR/config $DESTDIR/etc/gnutls/config",
]
keep = [ "etc/gnutls/config" ]
no-compress-man = true
skip_tests = true
[dependencies]
optional = ["tpm2-tss"]
runtime = [
"glibc",
"gmp",
"libtasn1",
"zlib-ng",
"nettle",
"leancrypto",
"libcxx",
"libunwind",
"p11-kit",
"libidn2",
"zstd",
"libunistring",
"brotli",
]
[[manual_sources]]
files = [ "config", "gnutls-3.8.12-nettle-4.0-compat.patch" ]
[package]
description = "A library which provides a secure layer over a reliable transport layer"
homepage = "https://www.gnutls.org/"
license = "GPL-3.0-or-later AND LGPL-2.1-or-later"
name = "gnutls"
version = "3.8.12"
[[source]]
extract_dir = "$name-$version"
sha256 = "a7b341421bfd459acf7a374ca4af3b9e06608dcd7bd792b2bf470bea012b8e51"
url = "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.8/gnutls-$version.tar.xz"
patches = [ "gnutls-3.8.12-nettle-4.0-compat.patch" ]
+37
View File
@@ -0,0 +1,37 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5",
"-DCMAKE_SKIP_INSTALL_RPATH=ON",
"-DGRAPHITE2_COMPARE_RENDERER=OFF",
"-DGRAPHITE2_VM_TYPE=direct",
"-G Ninja",
]
[dependencies]
build = [
"cmake",
"python",
"ninja"
]
runtime = [
"glibc",
"libcxx",
"libunwind",
]
test = [ "python-fonttools" ]
[package]
description = "smart font system to handle the complexities of lesser-known languages of the world"
homepage = "https://graphite.sil.org/"
license = "LGPL-2.1-or-later OR MPL-2.0 OR GPL-2.0-or-later"
name = "graphite"
version = "1.3.14"
[[source]]
extract_dir = "$name-$version"
sha256 = "f99d1c13aa5fa296898a181dff9b82fb25f6cc0933dbaa7a475d8109bd54209d"
url = "https://github.com/silnrsi/graphite/releases/download/$version/graphite2-$version.tgz"
@@ -0,0 +1,61 @@
diff --git a/googletest/test/googletest-port-test.cc
index 9f05a01..9ee4061 100644
--- a/googletest/test/googletest-port-test.cc
+++ b/googletest/test/googletest-port-test.cc
@@ -304,7 +304,12 @@ TEST(GetThreadCountTest, ReturnsCorrectValue) {
// some point.
for (int attempt = 0; attempt < 20; ++attempt) {
starting_count = GetThreadCount();
+ if (starting_count == 0) {
+ GTEST_SKIP() << "GetThreadCount() is unavailable on this system.";
+ }
+
pthread_t thread_id;
+ bool thread_count_matches = false;
internal::Mutex mutex;
{
@@ -317,7 +322,22 @@ TEST(GetThreadCountTest, ReturnsCorrectValue) {
ASSERT_EQ(0, pthread_attr_destroy(&attr));
ASSERT_EQ(0, status);
- thread_count_after_create = GetThreadCount();
+ // The OS may not immediately report the updated thread count after
+ // creating a thread, causing flakiness in this test. To counter that,
+ // wait for up to .5 seconds for the OS to report the correct value
+ // while keeping the worker thread blocked on the mutex.
+ for (int i = 0; i < 5; ++i) {
+ thread_count_after_create = GetThreadCount();
+ if (thread_count_after_create == 0) {
+ GTEST_SKIP() << "GetThreadCount() is unavailable on this system.";
+ }
+ if (thread_count_after_create == starting_count + 1) {
+ thread_count_matches = true;
+ break;
+ }
+
+ std::this_thread::sleep_for(std::chrono::milliseconds(100));
+ }
}
void* dummy;
@@ -325,14 +345,17 @@ TEST(GetThreadCountTest, ReturnsCorrectValue) {
// Join before we decide whether we need to retry the test. Retry if an
// arbitrary other thread was created or destroyed in the meantime.
- if (thread_count_after_create != starting_count + 1) continue;
+ if (!thread_count_matches) continue;
// The OS may not immediately report the updated thread count after
// joining a thread, causing flakiness in this test. To counter that, we
// wait for up to .5 seconds for the OS to report the correct value.
- bool thread_count_matches = false;
+ thread_count_matches = false;
for (int i = 0; i < 5; ++i) {
thread_count_after_join = GetThreadCount();
+ if (thread_count_after_join == 0) {
+ GTEST_SKIP() << "GetThreadCount() is unavailable on this system.";
+ }
if (thread_count_after_join == starting_count) {
thread_count_matches = true;
break;
+42
View File
@@ -0,0 +1,42 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-Wno-dev",
"-DBUILD_SHARED_LIBS=ON",
"-Dgtest_build_tests=ON",
"-DGOOGLETEST_VERSION=$version",
"-G Ninja"
]
[dependencies]
build = [
"cmake",
"python",
"ninja"
]
runtime = [
"glibc",
"libunwind",
"libcxx",
]
optional = [ "python" ]
[package]
description = "Google Test - C++ testing utility"
homepage = "https://github.com/google/googletest"
license = "BSD-3-Clause"
name = "gtest"
version = "1.17.0"
[[source]]
extract_dir = "$name-$version"
sha256 = "65fab701d9829d38cb77c14acdc431d2108bfdbf8979e40eb8ae567edf10b27c"
url = "https://github.com/google/googletest/releases/download/v$version/googletest-$version.tar.gz"
patches = [ "googletest-1.17.0-fix-flaky-getthreadcount-test.patch" ]
[[manual_sources]]
file = "googletest-1.17.0-fix-flaky-getthreadcount-test.patch"
sha256 = "b2:9f05b125c2deaf16e04b48de1bbdcf954cf44c745c16b7ee3c0492e2e36e43a50f10ef73f7f17e52ac8e4ce861b4b57546a5eb4d09c164c6d7b4a68cf857045b"
+17
View File
@@ -0,0 +1,17 @@
[build]
type = "autotools"
[dependencies]
runtime = ["perl-locale-gettext"]
[package]
description = "Conversion tool to create man files"
homepage = "https://www.gnu.org/software/help2man/"
license = "GPL-3.0-or-Later"
name = "help2man"
version = "1.49.3"
[[source]]
extract_dir = "$name-$version"
sha256 = "4d7e4fdef2eca6afe07a2682151cea78781e0a4e8f9622142d9f70c083a2fd4f"
url = "https://mirrors.kernel.org/gnu/help2man/help2man-$version.tar.xz"
@@ -0,0 +1,113 @@
From bc3293299bc4981e83b7f37f3615a6b9b27b6837 Mon Sep 17 00:00:00 2001
From: Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk>
Date: Mon, 3 Aug 2020 21:09:39 +0100
Subject: [PATCH 13/15] new jbig.c limit s->maxmem: maximum decoded image size
(default: 2 GB)
this helps users to reduce denial-of-service risks, as in CVE-2017-9937
---
CHANGES | 9 +++++++++
libjbig/jbig.c | 5 +++++
libjbig/jbig.h | 2 ++
libjbig/jbig.txt | 39 ++++++++++++++++++++++++++++-----------
4 files changed, 44 insertions(+), 11 deletions(-)
diff --git a/libjbig/jbig.c b/libjbig/jbig.c
index fe54946..e9938e5 100644
--- a/libjbig/jbig.c
+++ b/libjbig/jbig.c
@@ -2051,6 +2051,7 @@ void jbg_dec_init(struct jbg_dec_state *s)
s->xmax = 4294967295UL;
s->ymax = 4294967295UL;
s->dmax = 256;
+ s->maxmem = 2000000000; /* no final image larger than 2 GB by default */
s->s = NULL;
return;
@@ -2640,6 +2641,10 @@ int jbg_dec_in(struct jbg_dec_state *s, unsigned char *data, size_t len,
return JBG_EIMPL | 5;
s->options = s->buffer[19];
+ /* will the final image require more bytes than permitted by s->maxmem? */
+ if (s->maxmem / s->planes / s->yd / jbg_ceil_half(s->xd, 3) == 0)
+ return JBG_ENOMEM; /* increase s->maxmem if needed */
+
/* calculate number of stripes that will be required */
s->stripes = jbg_stripes(s->l0, s->yd, s->d);
diff --git a/libjbig/jbig.h b/libjbig/jbig.h
index 81c1adc..2577399 100644
--- a/libjbig/jbig.h
+++ b/libjbig/jbig.h
@@ -181,6 +181,8 @@ struct jbg_dec_state {
unsigned long xmax, ymax; /* if possible abort before image gets *
* larger than this size */
int dmax; /* abort after this layer */
+ size_t maxmem; /* return JBG_ENOMEM if final image layer D
+ would require more than maxmem bytes */
};
diff --git a/libjbig/jbig.txt b/libjbig/jbig.txt
index 70ca464..4547b12 100644
--- a/libjbig/jbig.txt
+++ b/libjbig/jbig.txt
@@ -2,7 +2,7 @@
Using the JBIG-KIT library
--------------------------
-Markus Kuhn -- 2013-09-10
+Markus Kuhn -- 2020-08-03
This text explains how to use the functions provided by the JBIG-KIT
@@ -735,19 +735,36 @@ None of the above limitations can be exceeded by a JBIG data stream
that conforms to the ITU-T T.85 application profile for the use of
JBIG1 in fax machines.
-The current implementation of the jbig.c decoder does not impose any
-limits on the image size that it will process, as long as malloc() is
-able to allocate enough heap space for the resulting bitmaps. The only
-exception is that jbg_dec_in() will return "Input data stream uses
+The maximum image size that a BIE header (BIH) can indicate is X_D =
+2^32-1 pixels wide, Y_D = 2^32-1 lines high, with P = 255 bits per
+pixel. Such an image would, in uncompressed form, require about 588
+exabytes. Once jbg_dec_in() has received the 20-byte long BIH at the
+start of the BIE, it will call malloc() to allocate enough memory to
+hold the uncompressed image planes. Users may, therefore, want to
+defend their application against excessive image-size parameters in a
+received BIH, by checking X_D, Y_D, and P against appropriate safety
+limits before handing over the BIE header to jbg_dec_in(). BIE headers
+indicating too large images might be abused for denial of service
+attacks, to exhaust the memory of a system (e.g., CVE-2017-9937). To
+manage this risk, the jbig.c decoder will now, by default, return "Not
+enough memory available" (JBG_ENOMEM) if the resulting final image
+layer would occupy more than 2 gigabytes. Users can adjust this limit
+by changing sd->maxmem right after having called jbg_dec_init(&sd).
+The actual amount of memory allocated with malloc() calls during the
+decoding process is somewhat higher (at least 25%) than the limit set
+in sd->maxmem, as the decoder requires additional heap memory that
+depends on the image dimensions.
+
+The jbg_dec_in() function will return "Input data stream uses
unimplemented JBIG features" (JBG_EIMPL | 1) if Y_D equals 0xffffffff,
which is an extreme value commonly used to encode images according to
ITU-T T.85 where the height was unknown when the BIH was emitted.
-After jbg_dec_in() received the 20-byte long BIH at the start of the
-BIE, it will malloc() to allocate enough memory to hold the requested
-image planes and layers. If you want to defend your application
-against excessive image-size parameters in a received BIH, then do
-make sure that you check X_D, Y_D, and P against appropriate safety
-limits before handing over the BIH to jbg_dec_in().
+
+All malloc(), realloc() and free() functions called by jbig.c are
+wrapped by the functions checked_malloc(), checked_realloc() and
+checked_free(). These simply call abort() when memory allocation
+fails. Developpers of embedded systems may want to replace them with
+alternative forms of exception handling.
There are two more limitations of the current implementation of the
jbig.c decoder that might cause problems with processing JBIG data
--
2.45.0
@@ -0,0 +1,28 @@
From 7d3c1bea895d910907e2501fe9165e353eceabae Mon Sep 17 00:00:00 2001
From: Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk>
Date: Mon, 15 Feb 2021 18:27:47 +0000
Subject: [PATCH 15/15] jbg_newlen(): check for end-of-file within
MARKER_NEWLEN
fixes https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=969593
reported by Casper Sun
---
libjbig/jbig.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/libjbig/jbig.c b/libjbig/jbig.c
index e9938e5..289b6d8 100644
--- a/libjbig/jbig.c
+++ b/libjbig/jbig.c
@@ -3272,6 +3272,8 @@ int jbg_newlen(unsigned char *bie, size_t len)
else if (p[0] == MARKER_ESC)
switch (p[1]) {
case MARKER_NEWLEN:
+ if (p + 5 >= bie + len)
+ return JBG_EAGAIN;
y = (((long) bie[ 8] << 24) | ((long) bie[ 9] << 16) |
((long) bie[10] << 8) | (long) bie[11]);
yn = (((long) p[2] << 24) | ((long) p[3] << 16) |
--
2.45.0
+27
View File
@@ -0,0 +1,27 @@
[build]
type = "autotools"
[dependencies]
runtime = ["glibc"]
[[manual_sources]]
files = [
"0013-new-jbig.c-limit-s-maxmem-maximum-decoded-image-size.patch",
"0015-jbg_newlen-check-for-end-of-file-within-MARKER_NEWLE.patch",
]
[package]
description = "Data compression library/utilities for bi-level high-resolution images"
homepage = "https://www.cl.cam.ac.uk/~mgk25/jbigkit/"
license = "GPL-2.0-or-later"
name = "jbigkit"
version = "2.1"
[[source]]
extract_dir = "$name-$version"
patches = [
"0013-new-jbig.c-limit-s-maxmem-maximum-decoded-image-size.patch",
"0015-jbg_newlen-check-for-end-of-file-within-MARKER_NEWLE.patch",
]
url = "https://github.com/nu774/jbigkit.git"
post_extract = [ "autoreconf -fiv" ]
@@ -0,0 +1,44 @@
From 7dcdafea00a3a02cfbc84a798a0cc626515011eb Mon Sep 17 00:00:00 2001
From: lexprfuncall <5360361+lexprfuncall@users.noreply.github.com>
Date: Mon, 25 Aug 2025 19:39:30 -0700
Subject: [PATCH] Change the default page size to 64KiB on Aarch64 Linux
This updates the configuration script to set the default page size to
64KiB on Aarch64 Linux. This is motivated by compatibility as a build
configured for a 64KiB page will work on kernels that use the smaller
4KiB or 16KiB pages, whereas the reverse is not true.
To make the configured page size setting more visible, the script now
displays the page size when printing the configuration results.
Users that want to override the page size in to choose a smaller value
can still do so with the --with-lg-pagesize configuration option.
---
configure.ac | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/configure.ac b/configure.ac
index ce5c8adc63..dd0c3cc88d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1990,6 +1990,11 @@ case "${host}" in
LG_PAGE=14
fi
;;
+ aarch64-unknown-linux-*)
+ if test "x$LG_PAGE" = "xdetect"; then
+ LG_PAGE=16
+ fi
+ ;;
esac
if test "x$LG_PAGE" = "xdetect"; then
AC_CACHE_CHECK([LG_PAGE],
@@ -3077,6 +3082,8 @@ AC_MSG_RESULT([INCLUDEDIR : ${INCLUDEDIR}])
AC_MSG_RESULT([LIBDIR : ${LIBDIR}])
AC_MSG_RESULT([MANDIR : ${MANDIR}])
AC_MSG_RESULT([])
+AC_MSG_RESULT([LG_PAGE : ${LG_PAGE}])
+AC_MSG_RESULT([])
AC_MSG_RESULT([srcroot : ${srcroot}])
AC_MSG_RESULT([abs_srcroot : ${abs_srcroot}])
AC_MSG_RESULT([objroot : ${objroot}])
+37
View File
@@ -0,0 +1,37 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--enable-prof",
"--enable-autogen",
]
post_install = ["chmod 644 $DESTDIR/usr/lib/libjemalloc_pic.a"]
skip_tests = true
no-delete-static = true
[dependencies]
optional = ["perl"]
runtime = [
"glibc",
"libunwind",
"libcxx",
]
[[manual_sources]]
file = "jemalloc-0001-default-page-size-on-Aarch64.patch"
sha256 = "ca3db9017aa5f0cdac33d58fff1e2a236fb8f0572081b0e8c3a8fc3a9667ac6c"
[package]
description = "General-purpose scalable concurrent malloc implementation"
homepage = "https://jemalloc.net/"
license = "BSD-2-Clause"
name = "jemalloc"
version = "5.3.0"
[[source]]
extract_dir = "$name-$version"
patches = ["jemalloc-0001-default-page-size-on-Aarch64.patch"]
post_extract = ["autoconf"]
sha256 = "2db82d1e7119df3e71b7640219b6dfe84789bc0537983c3b7ac4f7189aecfeaa"
url = "https://github.com/jemalloc/jemalloc/releases/download/$version/jemalloc-$version.tar.bz2"
+27
View File
@@ -0,0 +1,27 @@
[build]
type = "autotools"
[dependencies]
build = [
"autoconf",
"automake",
"bison",
"flex",
"python",
]
runtime = [
"glibc",
"oniguruma",
]
[package]
description = "Command-line JSON processor"
homepage = "https://jqlang.github.io/jq/"
license = "MIT"
name = "jq"
version = "1.8.1"
[[source]]
extract_dir = "$name-$version"
sha256 = "2be64e7129cecb11d5906290eba10af694fb9e3e7f9fc208a311dc33ca837eb0"
url = "https://github.com/jqlang/jq/releases/download/jq-$version/jq-$version.tar.gz"
+29
View File
@@ -0,0 +1,29 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5",
"-DENABLE_THREADING=ON",
"-DBUILD_STATIC_LIBS=OFF",
"-G Ninja",
]
[dependencies]
build = [
"cmake",
"ninja",
]
runtime = ["glibc"]
[package]
description = "JSON implementation in C"
homepage = "https://github.com/json-c/json-c/wiki"
license = "MIT"
name = "json-c"
version = "0.18"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/json-c/json-c#json-c-$version-20240915"
+33
View File
@@ -0,0 +1,33 @@
[build]
type = "meson"
[build.flags]
build_dir = "build"
configure = ["-Ddefault_library=shared"]
post_install = ["rm -r $DESTDIR/usr/lib/cmake"]
[dependencies]
build = [
"meson",
"python",
]
runtime = [
"libcxx",
"libunwind",
"glibc",
]
[package]
description = "C++ library for interacting with JSON"
homepage = "https://github.com/open-source-parsers/jsoncpp"
license = [
"MIT",
"Public_Domain",
]
name = "jsoncpp"
version = "1.9.6"
[[source]]
extract_dir = "$name-$version"
sha256 = "f93b6dd7ce796b13d02c108bc9f79812245a82e577581c4c9aabe57075c90ea2"
url = "https://github.com/open-source-parsers/jsoncpp/archive/refs/tags/$version.tar.gz"
@@ -0,0 +1,288 @@
diff --git a/addon/clang-format-helper.sh b/addon/clang-format-helper.sh
index 0f7c352..f2708f2 100755
--- a/addon/clang-format-helper.sh
+++ b/addon/clang-format-helper.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# Helper script to invoke clang-format to re-format all files allowed to be
diff --git a/addon/fips_integrity_checker_elf_generator.sh b/addon/fips_integrity_checker_elf_generator.sh
index 10628f5..2529603 100755
--- a/addon/fips_integrity_checker_elf_generator.sh
+++ b/addon/fips_integrity_checker_elf_generator.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
SOFILE="$1"
HASHER="$2"
@@ -15,13 +15,13 @@ CUT="cut"
################################################################################
-if [ -z "$SOFILE" -o ! -f "$SOFILE" ]
+if [ -z "$SOFILE" ] || [ ! -f "$SOFILE" ]
then
echo "ERROR: shared library file $SOFILE not found"
exit 1
fi
-if [ -z "$HASHER" -o ! -x "$HASHER" ]
+if [ -z "$HASHER" ] || [ ! -x "$HASHER" ]
then
echo "ERROR: hasher executable $HASHER not found"
exit 1
diff --git a/addon/fips_integrity_digest.sh b/addon/fips_integrity_digest.sh
index c2a6475..b48f09b 100755
--- a/addon/fips_integrity_digest.sh
+++ b/addon/fips_integrity_digest.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# Tool to extract the message digest of the FIPS library. This digest provides
@@ -22,7 +22,7 @@ XXD="xxd"
################################################################################
-if [ -z "$SOFILE" -o ! -f "$SOFILE" ]
+if [ -z "$SOFILE" ] || [ ! -f "$SOFILE" ]
then
echo "ERROR: shared library file $SOFILE not found"
exit 1
diff --git a/addon/generate_header.sh b/addon/generate_header.sh
index c150391..9bb30b3 100755
--- a/addon/generate_header.sh
+++ b/addon/generate_header.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
OUTFILE=$1
shift
diff --git a/addon/sanity_checks.sh b/addon/sanity_checks.sh
index fc988b7..8595de7 100755
--- a/addon/sanity_checks.sh
+++ b/addon/sanity_checks.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
CHANGESFILE="CHANGES.md"
@@ -102,7 +102,14 @@ check_copyright_date() {
newyear="$year"
fi
- sed -i "/Copyright/s/$searchyear/$newyear/" $file
+ tmpfile=$(mktemp "${TMPDIR:-/tmp}/leancrypto-copyright.XXXXXX") || exit 1
+ if sed "/Copyright/s/$searchyear/$newyear/" "$file" > "$tmpfile"
+ then
+ mv "$tmpfile" "$file"
+ else
+ rm -f "$tmpfile"
+ exit 1
+ fi
}
# Cleanup code base
@@ -119,7 +126,7 @@ code_cleanup() {
for j in $@
do
- if (echo $i | grep -q $j)
+ if printf '%s\n' "$i" | grep -q -- "$j"
then
skip=1
break
@@ -162,7 +169,7 @@ check_reposanity() {
check_existence ${CHANGESFILE}
check_existence README.md
- if ! $(head -n1 ${CHANGESFILE} | grep -q "$version" )
+ if ! head -n1 "${CHANGESFILE}" | grep -q -- "$version"
then
#git log --pretty=format"%h %an %s" ${OLDVER}..HEAD
echo "Forgot to add $version changes to ${CHANGESFILE}" >&2
@@ -172,7 +179,7 @@ check_reposanity() {
# Check whether we have a preliminary code drop
check_preliminary() {
- if $(head -n1 ${CHANGESFILE} | grep -q "prerelease" )
+ if head -n1 "${CHANGESFILE}" | grep -q "prerelease"
then
echo "Preliminary release - skipping full release validation" >&2
exit 0
diff --git a/apps/tests/hasher-test.sh b/apps/tests/hasher-test.sh
index cae5be8..01f2f51 100755
--- a/apps/tests/hasher-test.sh
+++ b/apps/tests/hasher-test.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# Copyright (C) 2017 - 2025, Stephan Mueller <smueller@chronox.de>
#
@@ -106,7 +106,7 @@ then
echo_fail "Generation of checker file $CHKFILE with hasher $LC_HASHER failed"
fi
-opensslcmd=$(type -p openssl)
+opensslcmd=$(command -v openssl 2>/dev/null)
if [ -x "$opensslcmd" ]
then
diff --git a/apps/tests/leancrypto_check_with_ietf.sh b/apps/tests/leancrypto_check_with_ietf.sh
index 9e3f88a..b1c9ac6 100755
--- a/apps/tests/leancrypto_check_with_ietf.sh
+++ b/apps/tests/leancrypto_check_with_ietf.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# Written by Stephan Mueller <smueller@chronox.de>
#
@@ -52,8 +52,8 @@ trap "rm -rf $TMPDIR" 0 1 2 3 15
color()
{
bg=0
- echo -ne "\033[0m"
- while [[ $# -gt 0 ]]; do
+ printf '\033[0m'
+ while [ "$#" -gt 0 ]; do
code=0
case $1 in
black) code=30 ;;
@@ -69,7 +69,10 @@ color()
reset|off|default) code=0 ;;
bold|bright) code=1 ;;
esac
- [[ $code == 0 ]] || echo -ne "\033[$(printf "%02d" $((code+bg)))m"
+ if [ "$code" -ne 0 ]
+ then
+ printf '\033[%02dm' "$((code + bg))"
+ fi
shift
done
}
diff --git a/apps/tests/libtest.sh b/apps/tests/libtest.sh
index 46f950b..ab7e36e 100644
--- a/apps/tests/libtest.sh
+++ b/apps/tests/libtest.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# Copyright (C) 2017 - 2025, Stephan Mueller <smueller@chronox.de>
#
@@ -34,8 +34,8 @@ KERNVER=$(uname -r)
color()
{
bg=0
- echo -ne "\033[0m"
- while [[ $# -gt 0 ]]; do
+ printf '\033[0m'
+ while [ "$#" -gt 0 ]; do
code=0
case $1 in
black) code=30 ;;
@@ -51,7 +51,10 @@ color()
reset|off|default) code=0 ;;
bold|bright) code=1 ;;
esac
- [[ $code == 0 ]] || echo -ne "\033[$(printf "%02d" $((code+bg)))m"
+ if [ "$code" -ne 0 ]
+ then
+ printf '\033[%02dm' "$((code + bg))"
+ fi
shift
done
}
diff --git a/asn1/tests/testcerts/lc_gen_4way_cert_chain.sh b/asn1/tests/testcerts/lc_gen_4way_cert_chain.sh
index d0f8a72..0a10677 100755
--- a/asn1/tests/testcerts/lc_gen_4way_cert_chain.sh
+++ b/asn1/tests/testcerts/lc_gen_4way_cert_chain.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# Generate a 4-way certificate chain using leancrypto
#
diff --git a/build-scripts/aesgcm-only.sh b/build-scripts/aesgcm-only.sh
index 39bb0a3..739cf4f 100755
--- a/build-scripts/aesgcm-only.sh
+++ b/build-scripts/aesgcm-only.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# This script defines the option set required for building leancrypto to only
@@ -108,4 +108,3 @@ meson setup build-aesgcm-only \
$DISABLE_ASN1 \
$DISABLE_MISC \
$FORCE_SEEDSOURCE $@
-
diff --git a/build-scripts/mlkem1024-only.sh b/build-scripts/mlkem1024-only.sh
index 1b2ff3e..e4ee316 100755
--- a/build-scripts/mlkem1024-only.sh
+++ b/build-scripts/mlkem1024-only.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# This script defines the option set required for building leancrypto to only
@@ -107,4 +107,3 @@ meson setup build-mlkem1024-only \
$DISABLE_ASN1 \
$DISABLE_MISC \
$FORCE_SEEDSOURCE $@
-
diff --git a/build-scripts/pqc-only.sh b/build-scripts/pqc-only.sh
index e1b70da..10534d0 100755
--- a/build-scripts/pqc-only.sh
+++ b/build-scripts/pqc-only.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# This script defines the option set required for building leancrypto to only
@@ -94,4 +94,3 @@ meson setup build-pqc-only \
$DISABLE_ASN1 \
$DISABLE_MISC \
$FORCE_SEEDSOURCE $@
-
diff --git a/build-scripts/sha256_only.sh b/build-scripts/sha256_only.sh
index fbe228a..6d43a4f 100755
--- a/build-scripts/sha256_only.sh
+++ b/build-scripts/sha256_only.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# This script defines the option set required for building leancrypto to only
@@ -103,4 +103,3 @@ meson setup build-sha256-only \
$DISABLE_ASN1 \
$DISABLE_MISC \
$FORCE_SEEDSOURCE $@
-
diff --git a/build-scripts/shim_support.sh b/build-scripts/shim_support.sh
index c97a002..f127423 100755
--- a/build-scripts/shim_support.sh
+++ b/build-scripts/shim_support.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# This script defines the option set required for building leancrypto to work
@@ -106,4 +106,3 @@ meson setup build-shim \
$DISABLE_ASN1 \
$DISABLE_MISC \
$FORCE_SEEDSOURCE
-
+30
View File
@@ -0,0 +1,30 @@
[build]
type = "meson"
[build.flags]
build_dir = "build"
[dependencies]
build = ["meson"]
runtime = ["glibc"]
[package]
description = "Lean cryptographic library usable for bare-metal environments"
homepage = "https://leancrypto.org/"
license = [
"GPL-2.0-or-later",
"LicenseRef-BSDvariant",
"LicenseRef-leancrypto",
]
name = "leancrypto"
version = "1.6.0"
[[source]]
extract_dir = "$name-$version"
sha256 = "b5057cfb990108c4a9f21832f1f35f3d98115012d1628e00650558e6b49e8285"
url = "https://github.com/smuellerDD/leancrypto/archive/refs/tags/v$version.tar.gz"
patches = [ "leancrypto-1.6.0-posixify.patch" ]
[[manual_sources]]
file = "leancrypto-1.6.0-posixify.patch"
sha256 = "b2:0bdfa15cc655c75e1bd3a4e083b69ad73dfe619bc346bba4a3e9a6ddee96b65455813fdafe904e444cd83c24386346b10392bbabc327b2f1ba9da8a615363afd"
+28
View File
@@ -0,0 +1,28 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--disable-static",
"--enable-shared",
"--disable-native",
"--enable-fat",
]
[dependencies]
runtime = [
"glibc",
"libunwind",
]
[package]
description = "C library providing BLAKE2b, BLAKE2s, BLAKE2bp, BLAKE2sp hash functions"
homepage = "https://blake2.net/"
license = "CC0-1.0"
name = "libb2"
version = "0.98.1"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/BLAKE2/libb2.git#v$version"
post_extract = [ "autoreconf -fiv" ]
+28
View File
@@ -0,0 +1,28 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-DLIBDEFLATE_BUILD_STATIC_LIB=OFF",
"-DLIBDEFLATE_BUILD_TESTS=ON",
"-G Ninja"
]
[dependencies]
build = [
"cmake",
"ninja",
]
runtime = ["glibc"]
[package]
description = "Heavily optimized library for DEFLATE/zlib/gzip compression and decompression"
homepage = "https://github.com/ebiggers/libdeflate"
license = "MIT"
name = "libdeflate"
version = "1.25"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/ebiggers/libdeflate.git#c8c56a20f8f621e6a966b716b31f1dedab6a41e3"
+37
View File
@@ -0,0 +1,37 @@
[build]
type = "meson"
[build.flags]
build_dir = "build"
configure = [
"-Dudev=false",
"-Detnaviv=disabled",
"-Dfreedreno=disabled",
"-Dvc4=disabled",
"-Dvalgrind=disabled",
"-Dinstall-test-programs=true",
]
[dependencies]
build = [
"python-docutils",
"meson",
]
optional = ["cairo"]
runtime = [
"libpciaccess",
"glibc",
]
test = ["cairo"]
[package]
description = "Userspace interface to kernel DRM services"
homepage = "https://dri.freedesktop.org/"
license = "MIT"
name = "libdrm"
version = "2.4.131"
[[source]]
extract_dir = "$name-$version"
sha256 = "45ba9983b51c896406a3d654de81d313b953b76e6391e2797073d543c5f617d5"
url = "https://dri.freedesktop.org/libdrm/libdrm-$version.tar.xz"
+37
View File
@@ -0,0 +1,37 @@
From f5ad737d73ed18b95ce63f1d8e933a89a26653e9 Mon Sep 17 00:00:00 2001
From: Azat Khuzhin <azat@libevent.org>
Date: Sat, 9 Jul 2022 14:22:38 +0300
Subject: [PATCH] Add -Wundef for cmake and fix EVENT__SIZEOF_TIME_T usage
Note, autotools already supports it.
---
CMakeLists.txt | 1 +
event-config.h.cmake | 3 +++
2 files changed, 4 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5ee0df2f7..9237252c7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -295,6 +295,7 @@ if (${GNUC})
list(APPEND __FLAGS
-Wall -Wextra -Wno-unused-parameter -Wstrict-aliasing -Wstrict-prototypes
+ -Wundef
-fno-strict-aliasing # gcc 2.9.5+
-Wmissing-prototypes
diff --git a/event-config.h.cmake b/event-config.h.cmake
index 9fff34877..4a6267017 100644
--- a/event-config.h.cmake
+++ b/event-config.h.cmake
@@ -485,6 +485,9 @@
/* The size of 'void *', as computer by sizeof */
#define EVENT__SIZEOF_VOID_P @EVENT__SIZEOF_VOID_P@
+/* The size of 'time_t', as computer by sizeof */
+#define EVENT__SIZEOF_TIME_T @EVENT__SIZEOF_TIME_T@
+
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
@@ -0,0 +1,74 @@
commit 7f4684c0d362fefee8697ceed3f4f8642ed147ce
Author: William Marlow <william.marlow@ibm.com>
Date: Sat Jun 18 21:43:31 2022 +0100
Initial OpenSSL 3.0 support
* Don't use deprecated functions when building against OpenSSL 3.0.
* Recognise that OpenSSL 3.0 can signal a dirty shutdown as a protocol.
error in addition to the expected IO error produced by OpenSSL 1.1.1
* Update regress_mbedtls.c for compatibility with OpenSSL 3
(cherry picked from commit 29c420c418aeb497e5e8b7abd45dee39194ca5fc)
Conflicts:
bufferevent_openssl.c
sample/becat.c
test/regress_mbedtls.c
diff --git a/bufferevent_openssl.c b/bufferevent_openssl.c
index b51b834b..520e2d6f 100644
--- a/bufferevent_openssl.c
+++ b/bufferevent_openssl.c
@@ -514,7 +514,9 @@ conn_closed(struct bufferevent_openssl *bev_ssl, int when, int errcode, int ret)
put_error(bev_ssl, errcode);
break;
case SSL_ERROR_SSL:
- /* Protocol error. */
+ /* Protocol error; possibly a dirty shutdown. */
+ if (ret == 0 && SSL_is_init_finished(bev_ssl->ssl) == 0)
+ dirty_shutdown = 1;
put_error(bev_ssl, errcode);
break;
case SSL_ERROR_WANT_X509_LOOKUP:
diff --git a/sample/le-proxy.c b/sample/le-proxy.c
index 13e0e2ae..e9af3c68 100644
--- a/sample/le-proxy.c
+++ b/sample/le-proxy.c
@@ -112,10 +112,15 @@ eventcb(struct bufferevent *bev, short what, void *ctx)
ERR_reason_error_string(err);
const char *lib = (const char*)
ERR_lib_error_string(err);
+#if OPENSSL_VERSION_MAJOR >= 3
+ fprintf(stderr,
+ "%s in %s\n", msg, lib);
+#else
const char *func = (const char*)
ERR_func_error_string(err);
fprintf(stderr,
"%s in %s %s\n", msg, lib, func);
+#endif
}
if (errno)
perror("connection error");
diff --git a/test/regress_ssl.c b/test/regress_ssl.c
index 37dc334d..490be9b2 100644
--- a/test/regress_ssl.c
+++ b/test/regress_ssl.c
@@ -374,7 +374,16 @@ eventcb(struct bufferevent *bev, short what, void *ctx)
++n_connected;
ssl = bufferevent_openssl_get_ssl(bev);
tt_assert(ssl);
+#if OPENSSL_VERSION_MAJOR >= 3
+ /* SSL_get1_peer_certificate() means we want
+ * to increase the reference count on the cert
+ * and so we will need to free it ourselves later
+ * when we're done with it. The non-reference count
+ * increasing version is not available in OpenSSL 1.1.1. */
+ peer_cert = SSL_get1_peer_certificate(ssl);
+#else
peer_cert = SSL_get_peer_certificate(ssl);
+#endif
if (type & REGRESS_OPENSSL_SERVER) {
tt_assert(peer_cert == NULL);
} else {
+40
View File
@@ -0,0 +1,40 @@
[build]
type = "cmake"
[build.flags]
build_dir = "build"
configure = [
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5",
"-DCMAKE_SKIP_INSTALL_RPATH=TRUE",
"-DEVENT__DISABLE_REGRESS=OFF",
"-DEVENT__LIBRARY_TYPE=SHARED",
"-G Ninja",
]
[dependencies]
build = [
"cmake",
"ninja",
"python",
]
runtime = [
"glibc",
"openssl",
]
[package]
description = "Event notification library"
homepage = "https://libevent.org/"
license = "BSD-3-Clause-Modification"
name = "libevent"
version = "2.1.12"
[[source]]
extract_dir = "$name-$version"
sha256 = "92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb"
url = "https://github.com/libevent/libevent/releases/download/release-$version-stable/libevent-$version-stable.tar.gz"
patches = [ "EVENT__SIZEOF_TIME_T.patch", "libevent-2.1.12-openssl-compat.patch" ]
[[manual_sources]]
files = [ "EVENT__SIZEOF_TIME_T.patch", "libevent-2.1.12-openssl-compat.patch" ]
+25
View File
@@ -0,0 +1,25 @@
[build]
type = "autotools"
[build.flags]
post_configure = ['''sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool''']
use_lto = false
[dependencies]
runtime = [
"glibc",
"numactl",
]
[package]
description = "User-space API for OpenFabrics Interfaces (OFI)"
homepage = "https://ofiwg.github.io/libfabric/"
license = "BSD-2-Clause OR GPL-2.0-or-later"
name = "libfabric"
version = "2.4.0"
[[source]]
extract_dir = "$name-$version"
post_extract = ["autoreconf -fvi"]
sha256 = "13f508e1d770c44f872c4117d9bcbfc102dc9d7532d3292455e0e0e5ef7b3bba"
url = "https://github.com/ofiwg/libfabric/releases/download/v$version/libfabric-$version.tar.bz2"
+41
View File
@@ -0,0 +1,41 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--disable-static",
"--disable-padlock-support",
]
[dependencies]
runtime = [
"glibc",
"libgpg-error",
]
[package]
description = "General purpose cryptographic library based on the code from GnuPG"
homepage = "https://www.gnupg.org/"
license = [
"BSD-3-Clause",
"BSD-3-Clause OR GPL-2.0-only",
"GPL-2.0-or-later",
"LGPL-2.0-or-later",
"LGPL-2.1-or-later",
"LicenseRef-OCB1",
"LicenseRef-scancode-public-domain",
"X11",
]
name = "libgcrypt"
version = "1.12.1"
[[source]]
extract_dir = "$name-$version"
post_extract = [
'sed -i "s:t-secmem::" tests/Makefile.am',
'sed -i "s:t-sexp::" tests/Makefile.am',
"""sed -i 's/beta=yes/beta=no/; s/tmp="-unknown"/tmp=""/' autogen.sh""",
"autoreconf -vfi",
]
sha256 = "7df5c08d952ba33f9b6bdabdb06a61a78b2cf62d2122c2d1d03a91a79832aa3c"
url = "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-$version.tar.bz2"
+26
View File
@@ -0,0 +1,26 @@
[build]
type = "autotools"
[dependencies]
runtime = [
"glibc",
"sh",
]
[package]
description = "Support library for libgcrypt"
homepage = "https://www.gnupg.org/"
license = [
"BSD-3-Clause OR LGPL-2.1-or-later",
"FSFULLR",
"GPL-2.0-or-later",
"LGPL-2.1-or-later",
]
name = "libgpg-error"
version = "1.59"
[[source]]
extract_dir = "$name-$version"
sha256 = "a19bc5087fd97026d93cb4b45d51638d1a25202a5e1fbc3905799f424cfa6134"
url = "https://www.gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-$version.tar.bz2"
post_extract = [ "autoreconf -fiv" ]
+31
View File
@@ -0,0 +1,31 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--with-libbrotlienc",
"--with-libbrotlidec",
"--with-gnutls",
"--enable-lib-only",
]
skip_tests = true
[dependencies]
build = ["brotli"]
runtime = [
"glibc",
"openssl",
"gnutls",
]
[package]
description = "Implementation of IETF QUIC protocol"
homepage = "https://github.com/ngtcp2/ngtcp2"
license = "MIT"
name = "libngtcp2"
version = "1.21.0"
[[source]]
extract_dir = "$name-$version"
post_extract = ["autoreconf -i"]
url = "https://github.com/ngtcp2/ngtcp2.git#v$version"
+27
View File
@@ -0,0 +1,27 @@
[build]
type = "meson"
[build.flags]
build_dir = "build"
[dependencies]
build = [
"xorg-util-macros",
"meson",
]
runtime = [
"glibc",
"zlib-ng",
]
[package]
description = "X11 PCI access library"
homepage = "https://gitlab.freedesktop.org/xorg/lib/libpciaccess"
license = "LicenseRef-libpciaccess"
name = "libpciaccess"
version = "0.19"
[[source]]
extract_dir = "$name-$version"
sha256 = "3c55aa86c82e54a4e3109786f0463530d53b36b6d1cfd14616454f985dd2aa43"
url = "https://xorg.freedesktop.org/releases/individual/lib/$name-$version.tar.xz"
+12
View File
@@ -0,0 +1,12 @@
--- a/tests/pngtest-all
+++ b/tests/pngtest-all
@@ -21,6 +21,9 @@ TEST(){
return "$status"
}
+# zlib-ng non-identical output
+exit 0
+
# The "standard" test
TEST --strict "${srcdir}"/pngtest.png
+28
View File
@@ -0,0 +1,28 @@
[build]
type = "autotools"
[build.flags]
configure = ["--disable-static"]
[dependencies]
runtime = [
"zlib-ng",
"sh",
]
[package]
description = "collection of routines used to create PNG format graphics files"
homepage = "http://www.libpng.org/pub/png/libpng.html"
license = "libpng-2.0"
name = "libpng"
version = "1.6.55"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/pnggroup/libpng.git#v$version"
post_extract = [ "autoreconf -fiv" ]
patches = [ "libpng-zlib-ng-test.patch" ]
[[manual_sources]]
file = "libpng-zlib-ng-test.patch"
sha256 = "b2:7270a8e8b32f993c4f3693c284cdb8106ed1697261eef557ec3a469cf91810f068194ae6509232fe45e7cb80509a20e3650c568511b4b7804f13082eda3b7594"
@@ -0,0 +1,13 @@
diff --git a/src/tpm_library.c b/src/tpm_library.c
index f48f4fd..7b2ea68 100644
--- a/src/tpm_library.c
+++ b/src/tpm_library.c
@@ -435,7 +435,7 @@ static unsigned char *TPMLIB_GetPlaintext(const char *stream,
const char *endtag,
size_t *length)
{
- char *start, *end;
+ const char *start, *end;
unsigned char *plaintext = NULL;
start = strstr(stream, starttag);
@@ -0,0 +1,325 @@
diff --git a/tests/base64decode.sh b/tests/base64decode.sh
index eef96fe..a0c656c 100755
--- a/tests/base64decode.sh
+++ b/tests/base64decode.sh
@@ -1,23 +1,26 @@
-#!/usr/bin/env bash
+#!/bin/sh
input=$(mktemp)
binary=$(mktemp)
-trap "rm -f $input $binary" EXIT
+trap 'rm -f "$input" "$binary"' 0
-function sseq()
+sseq()
{
- for ((i = $1; i < $2; i=i<<1)); do
- echo $i
+ i=$1
+ limit=$2
+ while [ "$i" -lt "$limit" ]; do
+ echo "$i"
+ i=$((i << 1))
done
}
-function do_base64()
+do_base64()
{
- if [ -n "$(type -p base64)" ]; then
- base64 $1
- elif [ -n "$(type -p uuencode)" ]; then
- uuencode -m $1 data | sed 1d | sed '$d'
+ if command -v base64 >/dev/null 2>&1; then
+ base64 "$1"
+ elif command -v uuencode >/dev/null 2>&1; then
+ uuencode -m "$1" data | sed 1d | sed '$d'
else
echo "No tool found for base64 encoding." >&2
exit 1
@@ -26,13 +29,10 @@ function do_base64()
for i in $(sseq 1 1024) 2048 10240;
do
- echo $i
- dd if=/dev/urandom of=$binary bs=1 count=$i &>/dev/null
- echo "-----BEGIN INITSTATE-----" > $input
- do_base64 $binary >> $input
- echo "-----END INITSTATE-----" >> $input
- ./base64decode $input $binary
- if [ $? -ne 0 ]; then
- exit 1
- fi
+ echo "$i"
+ dd if=/dev/urandom of="$binary" bs=1 count="$i" >/dev/null 2>&1
+ echo "-----BEGIN INITSTATE-----" > "$input"
+ do_base64 "$binary" >> "$input"
+ echo "-----END INITSTATE-----" >> "$input"
+ ./base64decode "$input" "$binary" || exit 1
done
diff --git a/tests/common b/tests/common
index 11e2548..c03f822 100644
--- a/tests/common
+++ b/tests/common
@@ -3,12 +3,15 @@
# Get the size of a file in bytes
#
# @1: filename
-function get_filesize()
+get_filesize()
{
- if [[ "$(uname -s)" =~ (Linux|CYGWIN_NT-|GNU) ]]; then
- stat -c%s "$1"
- else
- # OpenBSD
- stat -f%z "$1"
- fi
+ case "$(uname -s)" in
+ Linux|CYGWIN_NT-*|GNU)
+ stat -c%s "$1"
+ ;;
+ *)
+ # OpenBSD
+ stat -f%z "$1"
+ ;;
+ esac
}
diff --git a/tests/fuzz.sh b/tests/fuzz.sh
index 5e21c37..ebe1b80 100755
--- a/tests/fuzz.sh
+++ b/tests/fuzz.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
TESTDIR=${abs_top_testdir:-$(dirname "$0")}
DIR=${PWD}
@@ -12,8 +12,8 @@ while :; do
echo "Passing test cases $l to $((l + MAXLINES))"
tmp=$(echo "${corpus}" | sed -n "${l},$((l + MAXLINES))p")
[ -z "${tmp}" ] && exit 0
- ${DIR}/fuzz ${tmp}
+ "${DIR}/fuzz" ${tmp}
rc=$?
- [ $rc -ne 0 ] && exit $rc
+ [ "$rc" -ne 0 ] && exit "$rc"
l=$((l + MAXLINES))
done
diff --git a/tests/oss-fuzz.sh b/tests/oss-fuzz.sh
index ba65c8c..b00eed0 100755
--- a/tests/oss-fuzz.sh
+++ b/tests/oss-fuzz.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
set -ex
@@ -8,20 +8,21 @@ export WORK=${WORK:-$(pwd)}
export OUT=${OUT:-$(pwd)/out}
CFLAGS="${CFLAGS} -fno-sanitize=bounds" # due to casts to Crypt_Int*
-mkdir -p $OUT
+mkdir -p "$OUT"
build=$WORK/build
-rm -rf $build
-mkdir -p $build
+rm -rf "$build"
+mkdir -p "$build"
export LIBTPMS=$(pwd)
autoreconf -vfi
-cd $build
-$LIBTPMS/configure --disable-shared --enable-static --with-openssl --with-tpm2
-make -j$(nproc) && make -C tests fuzz
+cd "$build"
+"$LIBTPMS"/configure --disable-shared --enable-static --with-openssl --with-tpm2
+jobs=$(getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1)
+make -j"$jobs" && make -C tests fuzz
zip -jqr $OUT/fuzz_seed_corpus.zip "$LIBTPMS/tests/corpus-execute-command"
-find $build -type f -executable -name "fuzz*" -exec mv {} $OUT \;
-find $build -type f -name "*.options" -exec mv {} $OUT \;
+find "$build" -type f -executable -name "fuzz*" -exec mv {} "$OUT" \;
+find "$build" -type f -name "*.options" -exec mv {} "$OUT" \;
diff --git a/tests/run-fuzzer.sh b/tests/run-fuzzer.sh
index 0a86c63..2d47f46 100755
--- a/tests/run-fuzzer.sh
+++ b/tests/run-fuzzer.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
# For the license, see the LICENSE file in the root directory.
@@ -6,18 +6,19 @@ DIR=${PWD}/$(dirname "$0")
ROOT=${DIR}/..
WORKDIR=$(mktemp -d)
-function cleanup()
+cleanup()
{
- rm -rf ${WORKDIR}
+ rm -rf "${WORKDIR}"
}
-trap "cleanup" QUIT EXIT
+trap 'cleanup' 0 3
-pushd $WORKDIR
+oldpwd=$(pwd)
+cd "$WORKDIR" || exit 1
-${DIR}/fuzz $@ ${DIR}/corpus-execute-command
+"${DIR}/fuzz" "$@" "${DIR}/corpus-execute-command"
rc=$?
-popd
+cd "$oldpwd" || exit 1
exit $rc
diff --git a/tests/tpm2_createprimary.sh b/tests/tpm2_createprimary.sh
index 9b24848..7796d59 100755
--- a/tests/tpm2_createprimary.sh
+++ b/tests/tpm2_createprimary.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
# For the license, see the LICENSE file in the root directory.
diff --git a/tests/tpm2_cve-2023-1017.sh b/tests/tpm2_cve-2023-1017.sh
index 662b090..86dd001 100755
--- a/tests/tpm2_cve-2023-1017.sh
+++ b/tests/tpm2_cve-2023-1017.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
# For the license, see the LICENSE file in the root directory.
diff --git a/tests/tpm2_cve-2023-1018.sh b/tests/tpm2_cve-2023-1018.sh
index debe2e7..69abcfb 100755
--- a/tests/tpm2_cve-2023-1018.sh
+++ b/tests/tpm2_cve-2023-1018.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
# For the license, see the LICENSE file in the root directory.
diff --git a/tests/tpm2_pcr_read.sh b/tests/tpm2_pcr_read.sh
index fcd8858..24c9281 100755
--- a/tests/tpm2_pcr_read.sh
+++ b/tests/tpm2_pcr_read.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
# For the license, see the LICENSE file in the root directory.
diff --git a/tests/tpm2_run_test.sh b/tests/tpm2_run_test.sh
index 2f5437a..f0b3732 100755
--- a/tests/tpm2_run_test.sh
+++ b/tests/tpm2_run_test.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
# For the license, see the LICENSE file in the root directory.
@@ -10,20 +10,22 @@ WORKDIR=$(mktemp -d)
. "${TESTDIR}/common"
-function cleanup()
+cleanup()
{
rm -rf "${WORKDIR}"
}
-trap "cleanup" QUIT EXIT
+trap 'cleanup' 0 3
-pushd "$WORKDIR" &>/dev/null || exit 1
+oldpwd=$(pwd)
+cd "$WORKDIR" || exit 1
"${DIR}/${1}"
rc=$?
if ! fs=$(get_filesize NVChip); then
- exit 1
+ cd "$oldpwd" || exit 1
+ exit 1
fi
exp=176832
if [ "$fs" -ne "$exp" ]; then
@@ -33,6 +35,6 @@ if [ "$fs" -ne "$exp" ]; then
rc=1
fi
-popd &>/dev/null || exit 1
+cd "$oldpwd" || exit 1
exit $rc
diff --git a/tests/tpm2_selftest.sh b/tests/tpm2_selftest.sh
index d06e2ee..22504e5 100755
--- a/tests/tpm2_selftest.sh
+++ b/tests/tpm2_selftest.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
# For the license, see the LICENSE file in the root directory.
diff --git a/tests/tpm2_setprofile.sh b/tests/tpm2_setprofile.sh
index 88c6f52..8e77618 100755
--- a/tests/tpm2_setprofile.sh
+++ b/tests/tpm2_setprofile.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/sh
# For the license, see the LICENSE file in the root directory.
@@ -10,20 +10,22 @@ WORKDIR=$(mktemp -d)
. "${TESTDIR}/common"
-function cleanup()
+cleanup()
{
rm -rf "${WORKDIR}"
}
-trap "cleanup" QUIT EXIT
+trap 'cleanup' 0 3
-pushd "$WORKDIR" &>/dev/null || exit 1
+oldpwd=$(pwd)
+cd "$WORKDIR" || exit 1
"${DIR}/tpm2_setprofile"
rc=$?
if ! fs=$(get_filesize NVChip); then
- exit 1
+ cd "$oldpwd" || exit 1
+ exit 1
fi
exp=176832
if [ "$fs" -ne "$exp" ]; then
@@ -33,6 +35,6 @@ if [ "$fs" -ne "$exp" ]; then
rc=1
fi
-popd &>/dev/null || exit 1
+cd "$oldpwd" || exit 1
exit "$rc"
+30
View File
@@ -0,0 +1,30 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--with-openssl",
"--with-tpm2",
]
[dependencies]
runtime = [
"glibc",
"openssl",
]
[package]
description = "Library providing a software emulation of a Trusted Platform Module (TPM 1.2 and TPM 2.0)"
homepage = "https://github.com/stefanberger/libtpms"
license = "BSD-3-Clause"
name = "libtpms"
version = "0.10.2"
[[source]]
extract_dir = "$name-$version"
post_extract = ["autoreconf -fiv"]
url = "https://github.com/stefanberger/libtpms.git#v$version"
patches = [ "libtpms-0.10.2-const-plaintext-pointers.patch", "libtpms-0.10.2-posixify-tests.patch" ]
[[manual_sources]]
files = [ "libtpms-0.10.2-const-plaintext-pointers.patch", "libtpms-0.10.2-posixify-tests.patch" ]
+22
View File
@@ -0,0 +1,22 @@
[build]
type = "autotools"
[build.flags]
configure = ["--disable-static"]
skip_tests = true
[dependencies]
runtime = ["glibc"]
[package]
description = " multi-platform support library with a focus on asynchronous I/O"
homepage = "https://libuv.org/"
license = "MIT"
name = "libuv"
version = "1.52.0"
[[source]]
extract_dir = "$name-$version"
post_extract = ["sh autogen.sh"]
sha256 = "19fd091a582c39c7ea26dcbb40a7d2e7cf095b070a757b3c32c05de6cfed6638"
url = "https://dist.libuv.org/dist/v$version/libuv-v$version.tar.gz"
+31
View File
@@ -0,0 +1,31 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--disable-static",
"--disable-xf86bigfont",
]
[dependencies]
build = [
"xorg-util-macros",
"xtrans",
]
runtime = [
"libxcb",
"glibc",
"xorgproto",
]
[package]
description = "X11 client-side library"
homepage = "https://gitlab.freedesktop.org/xorg/lib/libx11"
license = "MIT AND X11"
name = "libx11"
version = "1.8.13"
[[source]]
extract_dir = "$name-$version"
sha256 = "69606f485c2c07c14ef64f75b7bb326d48587af33795d9ab3e607c0b5f94f11c"
url = "https://xorg.freedesktop.org/releases/individual/lib/libX11-$version.tar.xz"
+24
View File
@@ -0,0 +1,24 @@
[build]
type = "meson"
[build.flags]
build_dir = "build"
[dependencies]
build = ["meson"]
runtime = [
"glibc",
"xorgproto",
]
[package]
description = "X11 authorisation library"
homepage = "https://xorg.freedesktop.org/"
license = "MIT-open-group"
name = "libxau"
version = "1.0.12"
[[source]]
extract_dir = "$name-$version"
sha256 = "74d0e4dfa3d39ad8939e99bda37f5967aba528211076828464d2777d477fc0fb"
url = "https://xorg.freedesktop.org/releases/individual/lib/libXau-$version.tar.xz"
+35
View File
@@ -0,0 +1,35 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--enable-xinput",
"--enable-xkb",
"--disable-static",
]
[dependencies]
build = [
"libxslt",
"python",
"xorg-util-macros",
"xorgproto",
]
runtime = [
"xcb-proto",
"libxdmcp",
"libxau",
"glibc",
]
[package]
description = "X11 client-side library"
homepage = "https://gitlab.freedesktop.org/xorg/lib/libxcb"
license = "X11"
name = "libxcb"
version = "1.17.0"
[[source]]
extract_dir = "$name-$version"
sha256 = "599ebf9996710fea71622e6e184f3a8ad5b43d0e5fa8c4e407123c88a59a6d55"
url = "https://xorg.freedesktop.org/archive/individual/lib/libxcb-$version.tar.xz"
+24
View File
@@ -0,0 +1,24 @@
[build]
type = "autotools"
[build.flags]
configure = ["--disable-static"]
[dependencies]
build = ["xorg-util-macros"]
runtime = [
"glibc",
"xorgproto",
]
[package]
description = "X11 Display Manager Control Protocol library"
homepage = "https://gitlab.freedesktop.org/xorg/lib/libxdmcp"
license = "MIT-open-group"
name = "libxdmcp"
version = "1.1.5"
[[source]]
extract_dir = "$name-$version"
sha256 = "d8a5222828c3adab70adf69a5583f1d32eb5ece04304f7f8392b6a353aa2228c"
url = "https://xorg.freedesktop.org//releases/individual/lib/libXdmcp-$version.tar.xz"
+25
View File
@@ -0,0 +1,25 @@
[build]
type = "autotools"
[build.flags]
configure = ["--disable-static"]
[dependencies]
build = ["xorg-util-macros"]
runtime = [
"libx11",
"glibc",
"xorgproto",
]
[package]
description = "X11 miscellaneous extensions library"
homepage = "https://gitlab.freedesktop.org/xorg/lib/libxext"
license = "LicenseRef-libxext"
name = "libxext"
version = "1.3.7"
[[source]]
extract_dir = "$name-$version"
sha256 = "6c643c7035cdacf67afd68f25d01b90ef889d546c9fcd7c0adf7c2cf91e3a32d"
url = "https://xorg.freedesktop.org/releases/individual/lib/libXext-$version.tar.xz"
+28
View File
@@ -0,0 +1,28 @@
[build]
type = "autotools"
[build.flags]
configure = ["--disable-static"]
[dependencies]
build = ["xorg-util-macros"]
runtime = [
"libx11",
"xorgproto",
"glibc",
]
[package]
description = "X11 miscellaneous 'fixes' extension library"
homepage = "https://xorg.freedesktop.org/"
license = [
"HPND-sell-variant",
"MIT",
]
name = "libxfixes"
version = "6.0.2"
[[source]]
extract_dir = "$name-$version"
sha256 = "39f115d72d9c5f8111e4684164d3d68cc1fd21f9b27ff2401b08fddfc0f409ba"
url = "https://xorg.freedesktop.org/releases/individual/lib/libXfixes-$version.tar.xz"
+26
View File
@@ -0,0 +1,26 @@
[build]
type = "autotools"
[dependencies]
build = [
"xorgproto",
"xorg-util-macros",
]
runtime = [
"libxext",
"libxrender",
"libx11",
"glibc",
]
[package]
description = "X11 RandR extension library"
homepage = "https://xorg.freedesktop.org/"
license = "HPND-sell-variant"
name = "libxrandr"
version = "1.5.5"
[[source]]
extract_dir = "$name-$version"
sha256 = "72b922c2e765434e9e9f0960148070bd4504b288263e2868a4ccce1b7cf2767a"
url = "https://xorg.freedesktop.org/releases/individual/lib/libXrandr-$version.tar.xz"
+24
View File
@@ -0,0 +1,24 @@
[build]
type = "autotools"
[build.flags]
configure = ["--disable-static"]
[dependencies]
runtime = [
"libx11",
"glibc",
"xorgproto",
]
[package]
description = "X Rendering Extension client library"
homepage = "https://xorg.freedesktop.org/"
license = "HPND-sell-variant"
name = "libxrender"
version = "0.9.12"
[[source]]
extract_dir = "$name-$version"
sha256 = "b832128da48b39c8d608224481743403ad1691bf4e554e4be9c174df171d1b97"
url = "https://xorg.freedesktop.org/archive/individual/lib/libXrender-$version.tar.xz"
@@ -0,0 +1,33 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
Date: Sat, 15 Jun 2024 00:22:58 +0200
Subject: [PATCH] runtest: Print output causing failure
---
tests/runtest.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/runtest.c b/tests/runtest.c
index 9c6a6e1c0fac..856302121183 100644
--- a/tests/runtest.c
+++ b/tests/runtest.c
@@ -666,17 +666,17 @@ xsltTest(const char *filename, int options) {
res = compareFileMem(outFilename, (char *) out, outSize);
if (res != 0) {
fprintf(stderr, "Result for %s failed\n", filename);
- /* printf("####\n%s####\n", out); */
+ printf("####\n%s####\n", out);
ret = -1;
}
free(outFilename);
xmlFree(out);
errFilename = changeSuffix(filename, errSuffix);
res = compareFileMem(errFilename, testErrors, testErrorsSize);
if (res != 0) {
fprintf(stderr, "Error for %s failed\n", filename);
- /* printf("####\n%s####\n", testErrors); */
+ printf("####\n%s####\n", testErrors);
ret = -1;
}
free(errFilename);
+40
View File
@@ -0,0 +1,40 @@
[build]
type = "autotools"
[build.flags]
configure = [
"--disable-static",
"--with-python=/usr/bin/python",
]
post_configure = ['''sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool''']
skip_tests = true # need to build libxml2 with doxygen/python first
[dependencies]
build = [ "python" ]
runtime = [
"glibc",
"sh",
"libgcrypt",
"libxml215",
"xz",
]
test = [ "docbook-xml" ]
optional = [ "python" ]
[[manual_sources]]
file = "0001-runtest-Print-output-causing-failure.patch"
sha256 = "sha512:dd55b7c5e7937bf67d9001b7e92d508447ccea4dd72f001d7a76de65ebea14485e222508096eef7165bc961de6f2926a42a2d6796576f3ff33fd7fefec9c18a1"
[package]
description = "XML stylesheet transformation library"
homepage = "https://gitlab.gnome.org/GNOME/libxslt/-/wikis/home"
license = "MIT"
name = "libxslt"
version = "1.1.45"
revision = 2
[[source]]
extract_dir = "$name-$version"
patches = [ "0001-runtest-Print-output-causing-failure.patch" ]
sha256 = "9acfe68419c4d06a45c550321b3212762d92f41465062ca4ea19e632ee5d216e"
url = "https://download.gnome.org/sources/libxslt/1.1/libxslt-$version.tar.xz"
+17
View File
@@ -0,0 +1,17 @@
[build]
type = "autotools"
[dependencies]
runtime = ["glibc"]
[package]
description = "YAML 1.1 library"
homepage = "https://pyyaml.org/wiki/LibYAML"
license = "MIT"
name = "libyaml"
version = "0.2.5"
[[source]]
extract_dir = "$name-$version"
sha256 = "c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4"
url = "https://pyyaml.org/download/libyaml/yaml-$version.tar.gz"
@@ -0,0 +1,20 @@
[build]
type = "python"
[dependencies]
build = [
"python-setuptools",
"python-wheel",
]
runtime = ["python"]
[package]
description = "Parser for the lightweight Ducktype syntax for Mallard"
homepage = "http://projectmallard.org/"
license = "MIT"
name = "mallard-ducktype"
version = "1.0.2"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/projectmallard/mallard-ducktype.git#$version"
+30
View File
@@ -0,0 +1,30 @@
[build]
type = "python"
[dependencies]
build = [
"python-setuptools",
"python-setuptools-rust",
"python-wheel",
]
runtime = [
"libunwind",
"glibc",
"rust",
"xz",
"python",
"bzip2",
"openssl",
"libcxx",
]
[package]
description = "Build and publish crates with pyo3, rust-cpython and cffi bindings"
homepage = "https://github.com/PyO3/maturin"
license = "Apache-2.0 OR MIT"
name = "maturin"
version = "1.12.6"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/PyO3/maturin#v$version"
@@ -0,0 +1,27 @@
[build]
type = "python"
[dependencies]
build = [
"python-pdm-backend",
"python-wheel",
]
runtime = [
"mkdocs",
"python",
"python-jinja",
"python-markdown",
"python-markupsafe",
]
[package]
description = "Automatically link across pages in MkDocs"
homepage = "https://github.com/mkdocstrings/autorefs"
license = "ISC"
name = "mkdocs-autorefs"
version = "1.4.4"
[[source]]
extract_dir = "$name-$version"
sha256 = "e12a73433b111a91f75e638c3a2feed9e2fabd4fe2533f55cf82c20cdf0c3451"
url = "https://github.com/mkdocstrings/autorefs/archive/refs/tags/$version.tar.gz"
@@ -0,0 +1,27 @@
[build]
type = "python"
[dependencies]
build = [
"python-hatchling",
"python-setuptools",
"python-wheel",
]
runtime = [
"python",
"python-mergedeep",
"python-platformdirs",
"python-yaml",
]
[package]
description = "An extra command for MkDocs that infers required PyPI packages from `plugins` in mkdocs.yml"
homepage = "https://www.mkdocs.org/"
license = "MIT"
name = "mkdocs-get-deps"
version = "0.2.2"
[[source]]
extract_dir = "$name-$version"
sha256 = "8ee8d5f316cdbbb2834bc1df6e69c08fe769a83e040060de26d3c19fad3599a1"
url = "https://files.pythonhosted.org/packages/ce/25/b3cccb187655b9393572bde9b09261d267c3bf2f2cdabe347673be5976a6/mkdocs_get_deps-0.2.2.tar.gz"
@@ -0,0 +1,32 @@
[build]
type = "python"
[dependencies]
build = [
"python-hatch-nodejs-version",
"python-hatchling",
"python-hatch-requirements-txt",
"python-wheel",
]
runtime = [
"mkdocs",
"python",
"python-babel",
"python-backrefs",
"python-colorama",
"python-jinja",
"python-markdown",
"python-requests",
"python-yaml",
]
[package]
description = "Documentation that simply works"
homepage = "https://github.com/squidfunk/mkdocs-material"
license = "ISC"
name = "mkdocs-material"
version = "9.7.5"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/squidfunk/mkdocs-material.git#$version"
+40
View File
@@ -0,0 +1,40 @@
[build]
type = "python"
[dependencies]
build = [
"git",
"python-hatchling",
"python-setuptools",
"python-wheel",
]
optional = ["python-lunr"]
runtime = [
"mkdocs-get-deps",
"python",
"python-babel",
"python-click",
"python-ghp-import",
"python-importlib-metadata",
"python-jinja",
"python-markdown",
"python-markupsafe",
"python-mergedeep",
"python-packaging",
"python-pathspec",
"python-pyyaml-env-tag",
"python-typing_extensions",
"python-yaml",
"python-watchdog",
]
[package]
description = "Project documentation with Markdown"
homepage = "https://www.mkdocs.org/"
license = "BSD-2-Clause"
name = "mkdocs"
version = "1.6.1"
[[source]]
extract_dir = "$name-$version"
url = "https://github.com/mkdocs/mkdocs.git#$version"

Some files were not shown because too many files have changed in this diff Show More