From b28950353b21e272d7f89608be848a90f13eac75 Mon Sep 17 00:00:00 2001 From: Christian Schendel Date: Mon, 1 Sep 2025 22:42:03 +0200 Subject: [PATCH] Initial commit --- .SRCINFO | 52 ++++++++++++++++++++++++++++ .gitignore | 17 ++++++++++ .nvchecker.toml | 4 +++ LICENSE | 12 +++++++ LICENSES/0BSD.txt | 1 + PKGBUILD | 86 +++++++++++++++++++++++++++++++++++++++++++++++ REUSE.toml | 23 +++++++++++++ chroot-build | 65 +++++++++++++++++++++++++++++++++++ hardinfo2.install | 6 ++++ 9 files changed, 266 insertions(+) create mode 100644 .SRCINFO create mode 100644 .gitignore create mode 100644 .nvchecker.toml create mode 100644 LICENSE create mode 120000 LICENSES/0BSD.txt create mode 100644 PKGBUILD create mode 100644 REUSE.toml create mode 100755 chroot-build create mode 100644 hardinfo2.install diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 0000000..dd264cc --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,52 @@ +pkgbase = hardinfo2 + pkgdesc = System Information and Benchmark for Linux Systems. + pkgver = 2.2.13 + pkgrel = 2 + url = https://github.com/hardinfo2/hardinfo2 + install = hardinfo2.install + arch = x86_64 + arch = aarch64 + arch = riscv64 + license = GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-2.1-or-later + checkdepends = appstream + makedepends = cmake + makedepends = git + makedepends = qt5-base + depends = bash + depends = cairo + depends = gcc-libs + depends = gdk-pixbuf2 + depends = glib2 + depends = glibc + depends = glslang + depends = gtk3 + depends = hicolor-icon-theme + depends = json-glib + depends = libdecor + depends = libsoup3 + depends = libx11 + depends = libxcb + depends = mesa-utils + depends = pango + depends = vulkan-headers + depends = vulkan-icd-loader + depends = vulkan-tools + depends = wayland + optdepends = dmidecode: Memory Devices / System DMI module + optdepends = fwupd: Firmware module + optdepends = gawk: determine System Type + optdepends = iperf3: Internal Network Speed benchmark + optdepends = lm_sensors: Sensors module + optdepends = pciutils: PCI Devices module + optdepends = qt5-base: OpenGL benchmark + optdepends = sysbench: SysBench CPU benchmark + optdepends = udisks2: Storage module + optdepends = usbutils: USB Devices module + optdepends = xdg-utils: open your browser for bugs, homepage & links + optdepends = xorg-xrandr: read monitor setup + provides = hardinfo + conflicts = hardinfo + source = hardinfo2-2.2.13::git+https://github.com/hardinfo2/hardinfo2.git#tag=release-2.2.13 + b2sums = ff04c63ee0da1dfd37a0d6b0284c68df59e12ff245fd189d5a042acad95d68a868f0dde135212fe521b58b5d330a2f0aaa8eefaee99043ca4052875668761005 + +pkgname = hardinfo2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ffbfd3c --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +# Ignore everything +* + +# But not these files... +!.gitignore +!PKGBUILD +!.SRCINFO +!LICENSE +!chroot-build +!.nvchecker.toml +!/keys +!/keys/pgp +!/keys/pgp/*.asc +!/LICENSES +!/LICENSES/*.txt +!REUSE.toml +!*.install diff --git a/.nvchecker.toml b/.nvchecker.toml new file mode 100644 index 0000000..b866ae3 --- /dev/null +++ b/.nvchecker.toml @@ -0,0 +1,4 @@ +[hardinfo2] +source = "git" +git = "https://github.com/hardinfo2/hardinfo2.git" +prefix = "release-" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b87c5e4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,12 @@ +Copyright Arch Linux Contributors + +Permission to use, copy, modify, and/or distribute this software for +any purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE +FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/LICENSES/0BSD.txt b/LICENSES/0BSD.txt new file mode 120000 index 0000000..ea5b606 --- /dev/null +++ b/LICENSES/0BSD.txt @@ -0,0 +1 @@ +../LICENSE \ No newline at end of file diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..6325c94 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,86 @@ +# Maintainer: Christian Schendel +# Contributor: Mark Wagie + +pkgname=hardinfo2 +pkgver=2.2.13 +pkgrel=2 +pkgdesc="System Information and Benchmark for Linux Systems." +arch=('x86_64' 'aarch64' 'riscv64') +url="https://github.com/hardinfo2/hardinfo2" +license=( + 'GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-2.1-or-later' +) +depends=( + bash + cairo + gcc-libs + gdk-pixbuf2 + glib2 + glibc + glslang + gtk3 + hicolor-icon-theme + json-glib + libdecor + libsoup3 + libx11 + libxcb + mesa-utils + pango + vulkan-headers + vulkan-icd-loader + vulkan-tools + wayland +) +makedepends=( + cmake + git + qt5-base +) +checkdepends=( + appstream +) +optdepends=( + 'dmidecode: Memory Devices / System DMI module' + 'fwupd: Firmware module' + 'gawk: determine System Type' + 'iperf3: Internal Network Speed benchmark' + 'lm_sensors: Sensors module' + 'pciutils: PCI Devices module' + 'qt5-base: OpenGL benchmark' + 'sysbench: SysBench CPU benchmark' + 'udisks2: Storage module' + 'usbutils: USB Devices module' + 'xdg-utils: open your browser for bugs, homepage & links' + 'xorg-xrandr: read monitor setup' +) # 'mesa-utils: GLX info for Display module' + +provides=('hardinfo') +conflicts=('hardinfo') +install="$pkgname.install" +source=("$pkgname-$pkgver::git+$url.git#tag=release-$pkgver") +b2sums=('ff04c63ee0da1dfd37a0d6b0284c68df59e12ff245fd189d5a042acad95d68a868f0dde135212fe521b58b5d330a2f0aaa8eefaee99043ca4052875668761005') + +build() { + local cmake_options=( + -B build + -S "$pkgname-$pkgver" + -DCMAKE_BUILD_TYPE='None' + -DCMAKE_INSTALL_PREFIX='/usr' + -DCMAKE_INSTALL_LIBDIR='lib' + -Wno-dev + ) + cmake "${cmake_options[@]}" + cmake --build build +} + +check() { + desktop-file-validate "build/$pkgname.desktop" + appstreamcli validate --no-net "build/org.$pkgname.$pkgname.metainfo.xml" +} + +package() { + DESTDIR="$pkgdir" cmake --install build +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 0000000..e45b4ff --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,23 @@ +version = 1 + +[[annotations]] +path = [ + "PKGBUILD", + "README.md", + "keys/**", + ".SRCINFO", + ".nvchecker.toml", + ".gitignore", + "*.install", + "*.sysusers", + "*.tmpfiles", + "*.logrotate", + "*.pam", + "*.service", + "*.socket", + "*.timer", + "*.desktop", + "*.hook", +] +SPDX-FileCopyrightText = "Arch Linux contributors" +SPDX-License-Identifier = "0BSD" diff --git a/chroot-build b/chroot-build new file mode 100755 index 0000000..f69cac8 --- /dev/null +++ b/chroot-build @@ -0,0 +1,65 @@ +#!/bin/bash + +# SPDX-FileCopyrightText: Christian Schendel +# SPDX-License-Identifier: 0BSD + +set -euo pipefail +use_tmpfs=true +CHROOT="/tmp/mkarchroot" + +check_available_ram() { + if [ "$(awk '/^MemAvailable:/ { print $2; }' /proc/meminfo)" -lt 50000 ]; then + use_tmpfs=false + fi +} + +create_chroot_directory() { + if [ $use_tmpfs ]; then + sudo mount --mkdir -t tmpfs -o defaults,size=20G tmpfs $CHROOT + else + sudo mkdir -p "$CHROOT" + fi +} + +create_chroot_environment() { + if [[ ! -d "$CHROOT/root" ]]; then + mkarchroot -M ~/.config/pacman/makepkg.conf "$CHROOT/root" base-devel + fi +} + +build_package(){ + arch-nspawn "$CHROOT/root" pacman -Syu + if makechrootpkg -c -r "$CHROOT" -- -Asf . ; then + makepkg --printsrcinfo >.SRCINFO + else + delete_chroot_environment && echo -e "\n\e[1;31m==> BUILD FAILED: \e[1;37m$CHROOT removed\e[0m " && exit 1 + fi +} + +sign_package(){ + PACKAGE="$(makepkg --packagelist)" + gpg --use-agent --output "$PACKAGE.sig" --detach-sign "$PACKAGE" +} + +delete_chroot_environment() { + if [ "$(stat -f --format=%T "$CHROOT")" == "btrfs" ]; then + { + sudo btrfs subvolume delete "$CHROOT/root/var/lib/portables" + sudo btrfs subvolume delete "$CHROOT/root/var/lib/machines" + sudo btrfs subvolume delete "$CHROOT/root" + sudo rm -Rf $CHROOT + } >>/dev/null 2>&1 + elif [ "$(stat -f --format=%T "$CHROOT")" == "tmpfs" ]; then + sudo umount -f $CHROOT + fi + sudo rm -Rf $CHROOT +} + +check_available_ram +create_chroot_directory +create_chroot_environment +build_package +sign_package +delete_chroot_environment + +# vim: set ts=4 sw=4 et: diff --git a/hardinfo2.install b/hardinfo2.install new file mode 100644 index 0000000..a901c7b --- /dev/null +++ b/hardinfo2.install @@ -0,0 +1,6 @@ +post_install() { + echo "" + echo "The included service is required for root access:" + echo "systemctl start hardinfo2" + echo "" +}