From d7bce4403eecde9a0be24cf7485f790062544fc4 Mon Sep 17 00:00:00 2001 From: "Michal S." Date: Thu, 6 Aug 2026 10:26:36 +0100 Subject: [PATCH] Add bmake ports for a minimal Wayland desktop --- .gitattributes | 2 + README.md | 36 +- ports/Mk/Scripts/check-plist.sh | 22 ++ ports/Mk/Scripts/checksum-cargo.sh | 36 ++ ports/Mk/Scripts/checksum.sh | 5 +- ports/Mk/Scripts/fetch-cargo.sh | 48 +++ ports/Mk/Scripts/fetch.sh | 75 +++- ports/Mk/Scripts/install-depends.sh | 14 +- ports/Mk/Scripts/package.sh | 26 +- ports/Mk/Scripts/vendor-cargo.sh | 37 ++ ports/Mk/mouse.port.mk | 95 ++++- ports/README.md | 11 +- ports/archivers/zstd/Makefile | 49 +++ ports/archivers/zstd/distinfo | 1 + ports/archivers/zstd/pkg-plist | 13 + ports/devel/bmake/Makefile | 35 ++ ports/devel/bmake/distinfo | 1 + ports/devel/bmake/pkg-plist | 94 +++++ ports/devel/gmake/Makefile | 33 ++ ports/devel/gmake/distinfo | 1 + .../gmake/files/patch-c23-musl-prototypes | 33 ++ ports/devel/gmake/pkg-plist | 3 + ports/devel/libffi/Makefile | 16 + ports/devel/libffi/distinfo | 1 + ports/devel/libffi/pkg-plist | 3 + ports/devel/libudev-garden/Makefile | 20 + ports/devel/libudev-garden/distinfo | 1 + ports/devel/libudev-garden/pkg-plist | 5 + ports/graphics/libdisplay-info/Makefile | 18 + ports/graphics/libdisplay-info/distinfo | 1 + ports/graphics/libdisplay-info/pkg-plist | 3 + ports/graphics/libdrm/Makefile | 16 + ports/graphics/libdrm/distinfo | 1 + ports/graphics/libdrm/pkg-plist | 2 + ports/graphics/pixman/Makefile | 17 + ports/graphics/pixman/distinfo | 1 + ports/graphics/pixman/pkg-plist | 3 + ports/graphics/wayland-protocols/Makefile | 17 + ports/graphics/wayland-protocols/distinfo | 1 + ports/graphics/wayland-protocols/pkg-plist | 1 + ports/graphics/wayland/Makefile | 18 + ports/graphics/wayland/distinfo | 1 + ports/graphics/wayland/pkg-plist | 4 + ports/misc/hwdata/Makefile | 28 ++ ports/misc/hwdata/distinfo | 1 + ports/misc/hwdata/pkg-plist | 2 + ports/sysutils/greetd/Makefile | 93 +++++ ports/sysutils/greetd/distinfo | 60 +++ ports/sysutils/greetd/files/config.toml | 6 + ports/sysutils/greetd/files/greetd | 26 ++ ports/sysutils/greetd/files/patch-mouse-auth | 346 ++++++++++++++++++ ports/sysutils/greetd/pkg-plist | 4 + ports/sysutils/seatd/Makefile | 25 ++ ports/sysutils/seatd/distinfo | 1 + ports/sysutils/seatd/files/seatd | 12 + ports/sysutils/seatd/pkg-plist | 8 + ports/textproc/expat/Makefile | 17 + ports/textproc/expat/distinfo | 1 + ports/textproc/expat/pkg-plist | 4 + ports/x11/dwl/Makefile | 28 ++ ports/x11/dwl/distinfo | 1 + ports/x11/dwl/files/mouse-dwl-session | 12 + ports/x11/dwl/files/patch-havoc-command | 15 + ports/x11/dwl/pkg-plist | 5 + ports/x11/havoc/Makefile | 27 ++ ports/x11/havoc/distinfo | 1 + ports/x11/havoc/pkg-plist | 2 + ports/x11/libevdev/Makefile | 17 + ports/x11/libevdev/distinfo | 1 + ports/x11/libevdev/pkg-plist | 4 + ports/x11/libinput/Makefile | 22 ++ ports/x11/libinput/distinfo | 1 + ports/x11/libinput/pkg-plist | 3 + ports/x11/libxkbcommon/Makefile | 21 ++ ports/x11/libxkbcommon/distinfo | 1 + ports/x11/libxkbcommon/pkg-plist | 3 + ports/x11/mtdev/Makefile | 17 + ports/x11/mtdev/distinfo | 1 + ports/x11/mtdev/pkg-plist | 4 + ports/x11/tuigreet/Makefile | 245 +++++++++++++ ports/x11/tuigreet/distinfo | 220 +++++++++++ ports/x11/tuigreet/pkg-plist | 2 + ports/x11/wlroots/Makefile | 29 ++ ports/x11/wlroots/distinfo | 1 + ports/x11/wlroots/pkg-plist | 3 + ports/x11/xkeyboard-config/Makefile | 18 + ports/x11/xkeyboard-config/distinfo | 1 + ports/x11/xkeyboard-config/pkg-plist | 1 + tests/check-layout.sh | 12 + 89 files changed, 2143 insertions(+), 29 deletions(-) create mode 100644 .gitattributes create mode 100755 ports/Mk/Scripts/checksum-cargo.sh create mode 100755 ports/Mk/Scripts/fetch-cargo.sh create mode 100755 ports/Mk/Scripts/vendor-cargo.sh create mode 100644 ports/archivers/zstd/Makefile create mode 100644 ports/archivers/zstd/distinfo create mode 100644 ports/archivers/zstd/pkg-plist create mode 100644 ports/devel/bmake/Makefile create mode 100644 ports/devel/bmake/distinfo create mode 100644 ports/devel/bmake/pkg-plist create mode 100644 ports/devel/gmake/Makefile create mode 100644 ports/devel/gmake/distinfo create mode 100644 ports/devel/gmake/files/patch-c23-musl-prototypes create mode 100644 ports/devel/gmake/pkg-plist create mode 100644 ports/devel/libffi/Makefile create mode 100644 ports/devel/libffi/distinfo create mode 100644 ports/devel/libffi/pkg-plist create mode 100644 ports/devel/libudev-garden/Makefile create mode 100644 ports/devel/libudev-garden/distinfo create mode 100644 ports/devel/libudev-garden/pkg-plist create mode 100644 ports/graphics/libdisplay-info/Makefile create mode 100644 ports/graphics/libdisplay-info/distinfo create mode 100644 ports/graphics/libdisplay-info/pkg-plist create mode 100644 ports/graphics/libdrm/Makefile create mode 100644 ports/graphics/libdrm/distinfo create mode 100644 ports/graphics/libdrm/pkg-plist create mode 100644 ports/graphics/pixman/Makefile create mode 100644 ports/graphics/pixman/distinfo create mode 100644 ports/graphics/pixman/pkg-plist create mode 100644 ports/graphics/wayland-protocols/Makefile create mode 100644 ports/graphics/wayland-protocols/distinfo create mode 100644 ports/graphics/wayland-protocols/pkg-plist create mode 100644 ports/graphics/wayland/Makefile create mode 100644 ports/graphics/wayland/distinfo create mode 100644 ports/graphics/wayland/pkg-plist create mode 100644 ports/misc/hwdata/Makefile create mode 100644 ports/misc/hwdata/distinfo create mode 100644 ports/misc/hwdata/pkg-plist create mode 100644 ports/sysutils/greetd/Makefile create mode 100644 ports/sysutils/greetd/distinfo create mode 100644 ports/sysutils/greetd/files/config.toml create mode 100755 ports/sysutils/greetd/files/greetd create mode 100644 ports/sysutils/greetd/files/patch-mouse-auth create mode 100644 ports/sysutils/greetd/pkg-plist create mode 100644 ports/sysutils/seatd/Makefile create mode 100644 ports/sysutils/seatd/distinfo create mode 100644 ports/sysutils/seatd/files/seatd create mode 100644 ports/sysutils/seatd/pkg-plist create mode 100644 ports/textproc/expat/Makefile create mode 100644 ports/textproc/expat/distinfo create mode 100644 ports/textproc/expat/pkg-plist create mode 100644 ports/x11/dwl/Makefile create mode 100644 ports/x11/dwl/distinfo create mode 100644 ports/x11/dwl/files/mouse-dwl-session create mode 100644 ports/x11/dwl/files/patch-havoc-command create mode 100644 ports/x11/dwl/pkg-plist create mode 100644 ports/x11/havoc/Makefile create mode 100644 ports/x11/havoc/distinfo create mode 100644 ports/x11/havoc/pkg-plist create mode 100644 ports/x11/libevdev/Makefile create mode 100644 ports/x11/libevdev/distinfo create mode 100644 ports/x11/libevdev/pkg-plist create mode 100644 ports/x11/libinput/Makefile create mode 100644 ports/x11/libinput/distinfo create mode 100644 ports/x11/libinput/pkg-plist create mode 100644 ports/x11/libxkbcommon/Makefile create mode 100644 ports/x11/libxkbcommon/distinfo create mode 100644 ports/x11/libxkbcommon/pkg-plist create mode 100644 ports/x11/mtdev/Makefile create mode 100644 ports/x11/mtdev/distinfo create mode 100644 ports/x11/mtdev/pkg-plist create mode 100644 ports/x11/tuigreet/Makefile create mode 100644 ports/x11/tuigreet/distinfo create mode 100644 ports/x11/tuigreet/pkg-plist create mode 100644 ports/x11/wlroots/Makefile create mode 100644 ports/x11/wlroots/distinfo create mode 100644 ports/x11/wlroots/pkg-plist create mode 100644 ports/x11/xkeyboard-config/Makefile create mode 100644 ports/x11/xkeyboard-config/distinfo create mode 100644 ports/x11/xkeyboard-config/pkg-plist diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..20fe5bc --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.patch -whitespace +ports/**/files/patch-* -whitespace diff --git a/README.md b/README.md index 58aa112..6788814 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,21 @@ machinery lives under `ports/Mk`. Each port lives below `ports/category/name` and contains a `Makefile`, `distinfo`, and `pkg-plist`, plus optional patches and service definitions -under `files`. A MOUSE release pins one tested commit from this repository, -while installed systems may move to later compatible ports revisions without +under `files`. Build-only and runtime dependencies remain distinct, so tools +such as GNU make do not become installed dependencies of the software they +compile. A MOUSE release pins one tested commit from this repository, while +installed systems may move to later compatible ports revisions without replacing the base system. -The adversarial and demonstration recipes used by the base-system acceptance -suite are deliberately not part of this collection. They live in -`mouse-src/tests/fixtures/ports`. +The collection is driven by BSD make (`bmake`) at every framework and recursive +dependency boundary. A recipe invokes GNU make only when its upstream build +requires it. Rust recipes use checksum-locked crate archives and an offline +Cargo source replacement, so Cargo never becomes an undeclared fetcher during +the build. + +Packing lists name individual payload files. A list may use `@tree path` for a +large data-only directory; the framework verifies that tree in staging and +expands it into concrete file ownership records in the resulting package. The shared framework uses the base system's ChimeraUtils `fetch` and `sha256` commands. TLS trust comes from MOUSE's pinned CA bundle; the ports tree does @@ -21,18 +29,18 @@ not carry private download or cryptographic implementations. Run the collection checks with: ```sh -make check +bmake check ``` On MOUSE, a port's public interface is: ```sh -make fetch -make checksum -make build -make stage -make package -make install -make deinstall -make clean +bmake fetch +bmake checksum +bmake build +bmake stage +bmake package +bmake install +bmake deinstall +bmake clean ``` diff --git a/ports/Mk/Scripts/check-plist.sh b/ports/Mk/Scripts/check-plist.sh index fde6f15..29a394e 100755 --- a/ports/Mk/Scripts/check-plist.sh +++ b/ports/Mk/Scripts/check-plist.sh @@ -21,10 +21,25 @@ normalize() { esac } +tree_entry() { + case "$1" in + @tree\ *) printf '%s\n' "${1#@tree }" ;; + *) return 1 ;; + esac +} + while IFS= read -r entry || [ -n "$entry" ]; do case "$entry" in ""|\#*) continue ;; esac + if tree=$(tree_entry "$entry"); then + path=$(normalize "$tree") + if [ ! -d "$stage$path" ]; then + printf '%s\n' "packing-list tree was not staged: $path" >&2 + exit 1 + fi + continue + fi path=$(normalize "$entry") if [ ! -f "$stage$path" ] && [ ! -L "$stage$path" ]; then printf '%s\n' "packing-list path was not staged: $path" >&2 @@ -43,6 +58,13 @@ while IFS= read -r relative; do case "$entry" in ""|\#*) continue ;; esac + if tree=$(tree_entry "$entry"); then + normalized=$(normalize "$tree") + case "$path" in + "$normalized"/*) found=1; break ;; + esac + continue + fi normalized=$(normalize "$entry") if [ "$normalized" = "$path" ]; then found=1 diff --git a/ports/Mk/Scripts/checksum-cargo.sh b/ports/Mk/Scripts/checksum-cargo.sh new file mode 100755 index 0000000..e6e18bd --- /dev/null +++ b/ports/Mk/Scripts/checksum-cargo.sh @@ -0,0 +1,36 @@ +#!/bin/sh +set -eu + +if [ "$#" -lt 4 ]; then + printf '%s\n' \ + "usage: checksum-cargo.sh DISTDIR DISTINFO SHA256_COMMAND CRATE/VERSION..." >&2 + exit 2 +fi + +distdir=$1 +distinfo=$2 +sha256_command=$3 +shift 3 + +for crate in "$@"; do + name=${crate%/*} + version=${crate##*/} + distfile=$name-$version.crate + expected=$(sed -n "s/^SHA256 ($distfile) = //p" "$distinfo") + case "$expected" in + ????????????????????????????????????????????????????????????????) ;; + *) printf '%s\n' "invalid or missing checksum for $distfile" >&2; exit 1 ;; + esac + case "$expected" in + *[!0-9a-f]*) printf '%s\n' "invalid checksum for $distfile" >&2; exit 1 ;; + esac + case "${sha256_command##*/}" in + sha256sum) actual=$("$sha256_command" "$distdir/$distfile"); actual=${actual%% *} ;; + *) actual=$("$sha256_command" -q "$distdir/$distfile") ;; + esac + [ "$actual" = "$expected" ] || { + printf '%s\n' \ + "$distfile checksum mismatch: expected $expected, got $actual" >&2 + exit 1 + } +done diff --git a/ports/Mk/Scripts/checksum.sh b/ports/Mk/Scripts/checksum.sh index 8dd5c97..187552d 100755 --- a/ports/Mk/Scripts/checksum.sh +++ b/ports/Mk/Scripts/checksum.sh @@ -25,7 +25,10 @@ for distfile in "$@"; do case "$expected" in *[!0-9a-f]*) printf '%s\n' "invalid checksum for $distfile" >&2; exit 1 ;; esac - actual=$("$sha256_command" -q "$distdir/$distfile") + case "${sha256_command##*/}" in + sha256sum) actual=$("$sha256_command" "$distdir/$distfile"); actual=${actual%% *} ;; + *) actual=$("$sha256_command" -q "$distdir/$distfile") ;; + esac [ "$actual" = "$expected" ] || { printf '%s\n' \ "$distfile checksum mismatch: expected $expected, got $actual" >&2 diff --git a/ports/Mk/Scripts/fetch-cargo.sh b/ports/Mk/Scripts/fetch-cargo.sh new file mode 100755 index 0000000..3b561ec --- /dev/null +++ b/ports/Mk/Scripts/fetch-cargo.sh @@ -0,0 +1,48 @@ +#!/bin/sh +set -eu + +if [ "$#" -lt 3 ]; then + printf '%s\n' "usage: fetch-cargo.sh DISTDIR FETCH_COMMAND CRATE/VERSION..." >&2 + exit 2 +fi + +distdir=$1 +fetch_command=$2 +shift 2 +mkdir -p "$distdir" + +fetch_url() +{ + case "${fetch_command##*/}" in + curl) + "$fetch_command" --fail --location \ + --connect-timeout 15 --max-time 60 \ + --speed-limit 1024 --speed-time 30 \ + --retry 2 --retry-all-errors --retry-max-time 120 \ + --output "$1" "$2" + ;; + *) "$fetch_command" -o "$1" "$2" ;; + esac +} + +for crate in "$@"; do + case "$crate" in + */*) name=${crate%/*}; version=${crate##*/} ;; + *) printf '%s\n' "invalid Cargo crate: $crate" >&2; exit 1 ;; + esac + case "$name:$version" in + *[!A-Za-z0-9_.+:-]*) printf '%s\n' "unsafe Cargo crate: $crate" >&2; exit 1 ;; + esac + distfile=$name-$version.crate + url=https://static.crates.io/crates/$name/$distfile + if [ ! -s "$distdir/$distfile" ]; then + temporary=$distdir/$distfile.part + rm -f "$temporary" + if fetch_url "$temporary" "$url"; then + mv "$temporary" "$distdir/$distfile" + else + rm -f "$temporary" + exit 1 + fi + fi +done diff --git a/ports/Mk/Scripts/fetch.sh b/ports/Mk/Scripts/fetch.sh index c52a8d6..fd62e37 100755 --- a/ports/Mk/Scripts/fetch.sh +++ b/ports/Mk/Scripts/fetch.sh @@ -13,14 +13,83 @@ fetch_command=$3 shift 3 mkdir -p "$distdir" -for distfile in "$@"; do +fetch_url() +{ + case "${fetch_command##*/}" in + curl) + "$fetch_command" --fail --location \ + --connect-timeout 15 --max-time 60 \ + --speed-limit 1024 --speed-time 30 \ + --retry 2 --retry-all-errors --retry-max-time 120 \ + --output "$1" "$2" + ;; + *) "$fetch_command" -o "$1" "$2" ;; + esac +} + +fetch_git_archive() +{ + destination=$1 + url=$2 + distfile=$3 + project=${url##*/} + project=${project%.git} + revision=${distfile#"$project-"} + revision=${revision%.tar} + case "$revision" in + ????????????????????????????????????????) ;; + *) printf '%s\n' "invalid Git archive revision: $distfile" >&2; return 1 ;; + esac + case "$revision" in + *[!0-9a-f]*) printf '%s\n' "invalid Git revision: $revision" >&2; return 1 ;; + esac + repository=$(mktemp -d "${TMPDIR:-/tmp}/mouse-port-git.XXXXXX") + if git -C "$repository" init --quiet && + git -C "$repository" remote add origin "$url" && + git -c http.lowSpeedLimit=1024 -c http.lowSpeedTime=30 \ + -C "$repository" fetch --quiet --depth=1 origin "$revision" && + [ "$(git -C "$repository" rev-parse 'FETCH_HEAD^{commit}')" = "$revision" ] && + git -C "$repository" archive --format=tar \ + --prefix="$project/" -o "$destination" "$revision" + then + rm -rf "$repository" + return 0 + fi + rm -rf "$repository" "$destination" + return 1 +} + +for source in "$@"; do + case "$source" in + *@https://*) + distfile=${source%%@*} + url=${source#*@} + ;; + *) + distfile=$source + url=$master_sites$distfile + ;; + esac case "$distfile" in ""|*/*) printf '%s\n' "unsafe distfile name: $distfile" >&2; exit 1 ;; esac - if [ ! -f "$distdir/$distfile" ]; then + case "$url" in + https://*) ;; + *) printf '%s\n' "distfile URL must use HTTPS: $url" >&2; exit 1 ;; + esac + if [ ! -s "$distdir/$distfile" ]; then temporary="$distdir/$distfile.part" rm -f "$temporary" - if "$fetch_command" -o "$temporary" "$master_sites$distfile"; then + if case "$url" in + *.git) fetch_git_archive "$temporary" "$url" "$distfile" ;; + *) fetch_url "$temporary" "$url" ;; + esac + then + [ -s "$temporary" ] || { + printf '%s\n' "empty distfile: $distfile" >&2 + rm -f "$temporary" + exit 1 + } mv "$temporary" "$distdir/$distfile" else rm -f "$temporary" diff --git a/ports/Mk/Scripts/install-depends.sh b/ports/Mk/Scripts/install-depends.sh index 68c3f95..43a5b80 100755 --- a/ports/Mk/Scripts/install-depends.sh +++ b/ports/Mk/Scripts/install-depends.sh @@ -1,15 +1,21 @@ #!/bin/sh set -eu -if [ "$#" -lt 2 ]; then +if [ "$#" -lt 3 ]; then printf '%s\n' \ - "usage: install-depends.sh PORTSDIR PACKAGE_COMMAND DEPENDENCY..." >&2 + "usage: install-depends.sh PORTSDIR PACKAGE_COMMAND BMAKE DEPENDENCY..." >&2 exit 2 fi portsdir=$1 package_command=$2 -shift 2 +bmake=$3 +shift 3 + +case "$bmake" in + /*/bmake|bmake) ;; + *) printf '%s\n' "invalid BSD make command: $bmake" >&2; exit 1 ;; +esac for dependency in "$@"; do case "$dependency" in @@ -32,6 +38,6 @@ for dependency in "$@"; do esac done if ! "$package_command" status "$name" >/dev/null 2>&1; then - make -C "$portsdir/$origin" install + "$bmake" -C "$portsdir/$origin" install fi done diff --git a/ports/Mk/Scripts/package.sh b/ports/Mk/Scripts/package.sh index 9a5ef35..5015dd7 100755 --- a/ports/Mk/Scripts/package.sh +++ b/ports/Mk/Scripts/package.sh @@ -28,6 +28,31 @@ esac rm -rf "$package" mkdir -p "$package/root" cp -R "$stage/." "$package/root/" +: >"$package/+PLIST" +while IFS= read -r entry || [ -n "$entry" ]; do + case "$entry" in + ""|\#*) continue ;; + @tree\ *) + tree=${entry#@tree } + case "$tree" in + ""|/*|.|..|../*|*/../*|*/..|./*|*/./*) + printf '%s\n' "unsafe packing-list tree: $tree" >&2 + exit 1 + ;; + esac + [ -d "$stage/usr/local/$tree" ] || { + printf '%s\n' "packing-list tree was not staged: $tree" >&2 + exit 1 + } + ( + cd "$stage/usr/local" + find "./$tree" -type f -o -type l + ) | sed 's#^\./##' | sort >>"$package/+PLIST" + ;; + *) printf '%s\n' "$entry" >>"$package/+PLIST" ;; + esac +done <"$plist" +sort -u "$package/+PLIST" -o "$package/+PLIST" { printf 'name=%s\n' "$name" printf 'version=%s\n' "$version" @@ -62,7 +87,6 @@ cp -R "$stage/." "$package/root/" done printf '\n' } >"$package/+MANIFEST" -cp "$plist" "$package/+PLIST" cp "$distinfo" "$package/+DISTINFO" cp "$makefile" "$package/+BUILD" cp "$ports_revision" "$package/+PORTS_REVISION" diff --git a/ports/Mk/Scripts/vendor-cargo.sh b/ports/Mk/Scripts/vendor-cargo.sh new file mode 100755 index 0000000..55c0754 --- /dev/null +++ b/ports/Mk/Scripts/vendor-cargo.sh @@ -0,0 +1,37 @@ +#!/bin/sh +set -eu + +if [ "$#" -lt 4 ]; then + printf '%s\n' \ + "usage: vendor-cargo.sh WRKDIR DISTDIR DISTINFO CRATE/VERSION..." >&2 + exit 2 +fi + +wrkdir=$1 +distdir=$2 +distinfo=$3 +shift 3 +vendor=$wrkdir/cargo-vendor +config=$wrkdir/cargo-home/config.toml +rm -rf "$vendor" "$wrkdir/cargo-home" +mkdir -p "$vendor" "${config%/*}" + +for crate in "$@"; do + name=${crate%/*} + version=${crate##*/} + distfile=$name-$version.crate + archive=$distdir/$distfile + destination=$vendor/$name-$version + mkdir -p "$destination" + tar -xf "$archive" -C "$destination" --strip-components 1 + checksum=$(sed -n "s/^SHA256 ($distfile) = //p" "$distinfo") + printf '%s\n' "{\"files\":{},\"package\":\"$checksum\"}" \ + > "$destination/.cargo-checksum.json" +done + +{ + printf '%s\n' '[source.crates-io]' + printf '%s\n' 'replace-with = "vendored-sources"' + printf '%s\n' '[source.vendored-sources]' + printf 'directory = "%s"\n' "$vendor" +} > "$config" diff --git a/ports/Mk/mouse.port.mk b/ports/Mk/mouse.port.mk index c26ecc6..6fab85f 100644 --- a/ports/Mk/mouse.port.mk +++ b/ports/Mk/mouse.port.mk @@ -26,16 +26,32 @@ PREFIX?= /usr/local DISTDIR?= /var/cache/mouse/ports/distfiles WRKDIR?= /var/tmp/mouse-ports/${PORTNAME}-${PORTVERSION} WRKSRC?= ${WRKDIR}/source +SOURCE_DIR?= ${WRKSRC} +BUILD_DIR?= ${WRKDIR}/build STAGEDIR?= ${WRKDIR}/stage PACKAGES?= /var/cache/mouse/packages PKGNAME?= ${PORTNAME}-${PORTVERSION} PKGDIR?= ${PACKAGES}/${PKGNAME} DISTINFO_FILE?= ${PORTDIR}/distinfo +DIST_SOURCES?= ${DISTFILES} +CARGO_CRATES?= PLIST?= ${PORTDIR}/pkg-plist PORTS_REVISION_FILE?=/usr/share/mouse/ports.revision RUN_DEPENDS?= +BUILD_DEPENDS?= +BMAKE?= ${MAKE} +BUILD_STYLE?= custom +CONFIGURE_ARGS?= +BUILD_ARGS?= +INSTALL_ARGS?= +PATCHFILES?= NO_EXTRACT?= no EXTRACT_CMD?= /usr/bin/tar +PATCH?= /usr/bin/patch +GMAKE?= /usr/bin/gmake +MESON?= /usr/local/bin/meson +NINJA?= /usr/local/bin/ninja +CMAKE?= /usr/local/bin/cmake MOUSE_PACKAGE?= /usr/libexec/mouse-package MOUSE_FETCH?= /usr/bin/fetch @@ -43,24 +59,36 @@ MOUSE_SHA256?= /usr/bin/sha256 MOUSE_SH?= /bin/sh FETCH_SCRIPT= ${PORTSDIR}/Mk/Scripts/fetch.sh +FETCH_CARGO_SCRIPT=${PORTSDIR}/Mk/Scripts/fetch-cargo.sh CHECKSUM_SCRIPT=${PORTSDIR}/Mk/Scripts/checksum.sh +CHECKSUM_CARGO_SCRIPT=${PORTSDIR}/Mk/Scripts/checksum-cargo.sh +VENDOR_CARGO_SCRIPT=${PORTSDIR}/Mk/Scripts/vendor-cargo.sh PLIST_SCRIPT= ${PORTSDIR}/Mk/Scripts/check-plist.sh DEPENDS_SCRIPT= ${PORTSDIR}/Mk/Scripts/install-depends.sh PACKAGE_SCRIPT= ${PORTSDIR}/Mk/Scripts/package.sh -.PHONY: all fetch checksum extract configure build stage stage-qa package \ - install deinstall status clean do-extract do-configure do-build do-install +.PHONY: all fetch checksum extract patch build-depends configure build test \ + stage stage-qa package install deinstall status clean do-extract do-patch \ + do-configure do-build do-test do-install .MAIN: all all: build fetch: ${MOUSE_SH} ${FETCH_SCRIPT} "${DISTDIR}" "${MASTER_SITES}" \ - "${MOUSE_FETCH}" ${DISTFILES} + "${MOUSE_FETCH}" ${DIST_SOURCES} +.if !empty(CARGO_CRATES) + ${MOUSE_SH} ${FETCH_CARGO_SCRIPT} "${DISTDIR}" "${MOUSE_FETCH}" \ + ${CARGO_CRATES} +.endif checksum: fetch ${MOUSE_SH} ${CHECKSUM_SCRIPT} "${DISTDIR}" "${DISTINFO_FILE}" \ "${MOUSE_SHA256}" ${DISTFILES} +.if !empty(CARGO_CRATES) + ${MOUSE_SH} ${CHECKSUM_CARGO_SCRIPT} "${DISTDIR}" \ + "${DISTINFO_FILE}" "${MOUSE_SHA256}" ${CARGO_CRATES} +.endif extract: checksum rm -rf "${WRKDIR}" @@ -76,12 +104,24 @@ extract: checksum .endif ${MAKE} do-extract -configure: extract +patch: extract + ${MAKE} do-patch + +build-depends: + ${MOUSE_SH} ${DEPENDS_SCRIPT} "${PORTSDIR}" "${MOUSE_PACKAGE}" \ + "${BMAKE}" \ + ${BUILD_DEPENDS} + +configure: patch + ${MAKE} build-depends ${MAKE} do-configure build: configure ${MAKE} do-build +test: build + ${MAKE} do-test + stage: build rm -rf "${STAGEDIR}" mkdir -p "${STAGEDIR}" @@ -99,6 +139,7 @@ package: stage install: ${MOUSE_SH} ${DEPENDS_SCRIPT} "${PORTSDIR}" "${MOUSE_PACKAGE}" \ + "${BMAKE}" \ ${RUN_DEPENDS} ${MAKE} package ${MOUSE_PACKAGE} add "${PKGDIR}" @@ -117,18 +158,64 @@ do-extract: : .endif +.if !target(do-patch) +do-patch: +.for patchfile in ${PATCHFILES} + cd "${SOURCE_DIR}" && ${PATCH} -p1 < "${PORTDIR}/files/${patchfile}" +.endfor +.if !empty(CARGO_CRATES) + ${MOUSE_SH} ${VENDOR_CARGO_SCRIPT} "${WRKDIR}" "${DISTDIR}" \ + "${DISTINFO_FILE}" \ + ${CARGO_CRATES} +.endif + : +.endif + .if !target(do-configure) do-configure: +.if ${BUILD_STYLE} == "meson" + rm -rf "${BUILD_DIR}" + ${MESON} setup "${BUILD_DIR}" "${SOURCE_DIR}" \ + --prefix="${PREFIX}" --libdir=lib --buildtype=release \ + --wrap-mode=nodownload ${CONFIGURE_ARGS} +.elif ${BUILD_STYLE} == "cmake" + rm -rf "${BUILD_DIR}" + ${CMAKE} -S "${SOURCE_DIR}" -B "${BUILD_DIR}" -G Ninja \ + -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${PREFIX}" \ + -DCMAKE_INSTALL_LIBDIR=lib ${CONFIGURE_ARGS} +.elif ${BUILD_STYLE} == "gnu-configure" + cd "${SOURCE_DIR}" && ./configure --prefix="${PREFIX}" ${CONFIGURE_ARGS} +.else : .endif +.endif .if !target(do-build) do-build: +.if ${BUILD_STYLE} == "meson" || ${BUILD_STYLE} == "cmake" + ${NINJA} -C "${BUILD_DIR}" ${BUILD_ARGS} +.elif ${BUILD_STYLE} == "gnu-configure" || ${BUILD_STYLE} == "gmake" + cd "${SOURCE_DIR}" && ${GMAKE} ${BUILD_ARGS} +.else + : +.endif +.endif + +.if !target(do-test) +do-test: : .endif .if !target(do-install) do-install: +.if ${BUILD_STYLE} == "meson" || ${BUILD_STYLE} == "cmake" + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install \ + ${INSTALL_ARGS} +.elif ${BUILD_STYLE} == "gnu-configure" || ${BUILD_STYLE} == "gmake" + cd "${SOURCE_DIR}" && ${GMAKE} DESTDIR="${STAGEDIR}" install \ + ${INSTALL_ARGS} +.else @echo "mouse.port.mk: ${PORTNAME} must define do-install" >&2 @false .endif +.endif diff --git a/ports/README.md b/ports/README.md index 2d6a8f9..396ae76 100644 --- a/ports/README.md +++ b/ports/README.md @@ -10,5 +10,12 @@ Every port ends its Makefile with: .include "${.PARSEDIR}/../../Mk/mouse.port.mk" ``` -The collection is intentionally empty until the first real third-party port is -accepted. Test-only recipes do not belong here. +`BUILD_DEPENDS` and `RUN_DEPENDS` entries use +`package-name:category/port`. Build dependencies are installed before +configuration but are not recorded as runtime dependencies in the finished +package. The framework and dependency resolver always recurse through +`/usr/local/bin/bmake`; a port may invoke GNU make explicitly when its upstream +build requires it. `BUILD_STYLE` supplies narrow defaults for Meson, CMake, +GNU-configure and GNU-make projects, while recipes retain explicit source, +dependency, option and packing-list declarations. Test-only recipes do not +belong here. diff --git a/ports/archivers/zstd/Makefile b/ports/archivers/zstd/Makefile new file mode 100644 index 0000000..ae19fb9 --- /dev/null +++ b/ports/archivers/zstd/Makefile @@ -0,0 +1,49 @@ +PORTNAME= zstd +PORTVERSION= 1.5.7 +CATEGORIES= archivers +MASTER_SITES= https://github.com/facebook/zstd/releases/download/v${PORTVERSION}/ +DISTFILES= zstd-${PORTVERSION}.tar.gz +BUILD_DEPENDS= gmake:devel/gmake +MOUSE_BUILD_JOBS?=1 + +SOURCE_DIR= ${WRKSRC}/zstd-${PORTVERSION} +GMAKE= ${PREFIX}/bin/gmake +GMAKE_ARGS= CC=cc AR=ar RANLIB=ranlib BACKTRACE=0 \ + HAVE_LZ4=0 HAVE_LZMA=0 HAVE_ZLIB=1 + +do-build: + ${GMAKE} -C "${SOURCE_DIR}" -j${MOUSE_BUILD_JOBS} \ + ${GMAKE_ARGS} zstd-release + ${GMAKE} -C "${SOURCE_DIR}/lib" -j${MOUSE_BUILD_JOBS} \ + ${GMAKE_ARGS} libzstd.a-release libzstd.pc + +do-install: + mkdir -p \ + "${STAGEDIR}${PREFIX}/bin" \ + "${STAGEDIR}${PREFIX}/include" \ + "${STAGEDIR}${PREFIX}/lib/pkgconfig" \ + "${STAGEDIR}${PREFIX}/share/licenses/zstd" \ + "${STAGEDIR}${PREFIX}/share/man/man1" + install -m 0755 "${SOURCE_DIR}/programs/zstd" \ + "${STAGEDIR}${PREFIX}/bin/zstd" + ln -s zstd "${STAGEDIR}${PREFIX}/bin/unzstd" + ln -s zstd "${STAGEDIR}${PREFIX}/bin/zstdcat" + ln -s zstd "${STAGEDIR}${PREFIX}/bin/zstdmt" + install -m 0644 \ + "${SOURCE_DIR}/lib/zstd.h" \ + "${SOURCE_DIR}/lib/zstd_errors.h" \ + "${SOURCE_DIR}/lib/zdict.h" \ + "${STAGEDIR}${PREFIX}/include/" + install -m 0644 "${SOURCE_DIR}/lib/libzstd.a" \ + "${STAGEDIR}${PREFIX}/lib/libzstd.a" + install -m 0644 "${SOURCE_DIR}/lib/libzstd.pc" \ + "${STAGEDIR}${PREFIX}/lib/pkgconfig/libzstd.pc" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/zstd/LICENSE" + sed 's/zstd 1\.5\.6/zstd 1.5.7/' \ + "${SOURCE_DIR}/programs/zstd.1" > \ + "${STAGEDIR}${PREFIX}/share/man/man1/zstd.1" + ln -s zstd.1 "${STAGEDIR}${PREFIX}/share/man/man1/unzstd.1" + ln -s zstd.1 "${STAGEDIR}${PREFIX}/share/man/man1/zstdcat.1" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/archivers/zstd/distinfo b/ports/archivers/zstd/distinfo new file mode 100644 index 0000000..5fccb84 --- /dev/null +++ b/ports/archivers/zstd/distinfo @@ -0,0 +1 @@ +SHA256 (zstd-1.5.7.tar.gz) = eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3 diff --git a/ports/archivers/zstd/pkg-plist b/ports/archivers/zstd/pkg-plist new file mode 100644 index 0000000..15eb6fe --- /dev/null +++ b/ports/archivers/zstd/pkg-plist @@ -0,0 +1,13 @@ +bin/unzstd +bin/zstd +bin/zstdcat +bin/zstdmt +include/zdict.h +include/zstd.h +include/zstd_errors.h +lib/libzstd.a +lib/pkgconfig/libzstd.pc +share/licenses/zstd/LICENSE +share/man/man1/unzstd.1 +share/man/man1/zstd.1 +share/man/man1/zstdcat.1 diff --git a/ports/devel/bmake/Makefile b/ports/devel/bmake/Makefile new file mode 100644 index 0000000..2ff3bce --- /dev/null +++ b/ports/devel/bmake/Makefile @@ -0,0 +1,35 @@ +PORTNAME= bmake +PORTVERSION= 20240909 +CATEGORIES= devel +MASTER_SITES= https://www.crufty.net/ftp/pub/sjg/ +DISTFILES= bmake-${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/bmake + +do-configure: + rm -rf "${BUILD_DIR}" + cd "${SOURCE_DIR}" && sh ./boot-strap \ + --prefix="${PREFIX}" --without-filemon \ + --objdir "${BUILD_DIR}" op=configure + +do-build: + cd "${BUILD_DIR}" && sh ./make-bootstrap.sh + +do-test: + cd "${SOURCE_DIR}" && sh ./boot-strap \ + --prefix="${PREFIX}" --without-filemon \ + --objdir "${BUILD_DIR}" op=test + +do-install: + cd "${SOURCE_DIR}" && env \ + MAKESYSPATH="${SOURCE_DIR}/mk" \ + SRCTOP="${SOURCE_DIR}" \ + OBJTOP="${BUILD_DIR}" \ + MAKEOBJDIR='$${.CURDIR:S,$${SRCTOP:tA},$${OBJTOP:tA},}' \ + "${BUILD_DIR}/bmake" -f "${SOURCE_DIR}/Makefile" install \ + prefix="${PREFIX}" BINDIR="${PREFIX}/bin" DESTDIR="${STAGEDIR}" + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/bmake" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/bmake/LICENSE" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/devel/bmake/distinfo b/ports/devel/bmake/distinfo new file mode 100644 index 0000000..eb76580 --- /dev/null +++ b/ports/devel/bmake/distinfo @@ -0,0 +1 @@ +SHA256 (bmake-20240909.tar.gz) = d4e019e26c64cc8ffcf1cae9bb04fbb13da8fa6f41fb30fd26e221f655d4e84d diff --git a/ports/devel/bmake/pkg-plist b/ports/devel/bmake/pkg-plist new file mode 100644 index 0000000..fffcdd1 --- /dev/null +++ b/ports/devel/bmake/pkg-plist @@ -0,0 +1,94 @@ +bin/bmake +share/man/man1/bmake.1 +share/mk/auto.dep.mk +share/mk/auto.obj.mk +share/mk/autoconf.mk +share/mk/autodep.mk +share/mk/bsd.dep.mk +share/mk/bsd.doc.mk +share/mk/bsd.files.mk +share/mk/bsd.inc.mk +share/mk/bsd.init.mk +share/mk/bsd.lib.mk +share/mk/bsd.links.mk +share/mk/bsd.man.mk +share/mk/bsd.nls.mk +share/mk/bsd.obj.mk +share/mk/bsd.own.mk +share/mk/bsd.prog.mk +share/mk/bsd.subdir.mk +share/mk/cc-wrap.mk +share/mk/ccm.dep.mk +share/mk/compiler.mk +share/mk/cython.mk +share/mk/dep.mk +share/mk/dirdeps-cache-update.mk +share/mk/dirdeps-options.mk +share/mk/dirdeps-targets.mk +share/mk/dirdeps.mk +share/mk/doc.mk +share/mk/dpadd.mk +share/mk/files.mk +share/mk/final.mk +share/mk/gendirdeps.mk +share/mk/host-target.mk +share/mk/host.libnames.mk +share/mk/inc.mk +share/mk/init.mk +share/mk/install-new.mk +share/mk/install-sh +share/mk/java.mk +share/mk/jobs.mk +share/mk/ldorder.mk +share/mk/lib.mk +share/mk/libnames.mk +share/mk/libs.mk +share/mk/links.mk +share/mk/man.mk +share/mk/manifest.mk +share/mk/meta.autodep.mk +share/mk/meta.stage.mk +share/mk/meta.subdir.mk +share/mk/meta.sys.mk +share/mk/meta2deps.py +share/mk/meta2deps.sh +share/mk/mkopt.sh +share/mk/newlog.sh +share/mk/nls.mk +share/mk/obj.mk +share/mk/options.mk +share/mk/own.mk +share/mk/posix.mk +share/mk/prlist.mk +share/mk/prog.mk +share/mk/progs.mk +share/mk/rst2htm.mk +share/mk/scripts.mk +share/mk/srctop.mk +share/mk/stage-install.sh +share/mk/subdir.mk +share/mk/suffixes.mk +share/mk/sys.clean-env.mk +share/mk/sys.debug.mk +share/mk/sys.dependfile.mk +share/mk/sys.dirdeps.mk +share/mk/sys.mk +share/mk/sys.vars.mk +share/mk/sys/AIX.mk +share/mk/sys/Cygwin.mk +share/mk/sys/Darwin.mk +share/mk/sys/Generic.mk +share/mk/sys/HP-UX.mk +share/mk/sys/IRIX.mk +share/mk/sys/Linux.mk +share/mk/sys/NetBSD.mk +share/mk/sys/OSF1.mk +share/mk/sys/OpenBSD.mk +share/mk/sys/SCO_SV.mk +share/mk/sys/SunOS.mk +share/mk/sys/UnixWare.mk +share/mk/target-flags.mk +share/mk/warnings.mk +share/mk/whats.mk +share/mk/yacc.mk +share/licenses/bmake/LICENSE diff --git a/ports/devel/gmake/Makefile b/ports/devel/gmake/Makefile new file mode 100644 index 0000000..c582f3d --- /dev/null +++ b/ports/devel/gmake/Makefile @@ -0,0 +1,33 @@ +PORTNAME= gmake +PORTVERSION= 4.4.1 +CATEGORIES= devel +MASTER_SITES= https://ftp.gnu.org/gnu/make/ +DISTFILES= make-${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/make-${PORTVERSION} +PATCHFILES= patch-c23-musl-prototypes + +do-configure: + cd "${SOURCE_DIR}" && \ + CC=cc CFLAGS="-O2" ./configure \ + --prefix="${PREFIX}" \ + --program-prefix=g \ + --disable-nls \ + --without-guile + +do-build: + cd "${SOURCE_DIR}" && sh ./build.sh + +do-install: + mkdir -p \ + "${STAGEDIR}${PREFIX}/bin" \ + "${STAGEDIR}${PREFIX}/share/licenses/gmake" \ + "${STAGEDIR}${PREFIX}/share/man/man1" + install -m 0755 "${SOURCE_DIR}/make" \ + "${STAGEDIR}${PREFIX}/bin/gmake" + install -m 0644 "${SOURCE_DIR}/COPYING" \ + "${STAGEDIR}${PREFIX}/share/licenses/gmake/COPYING" + install -m 0644 "${SOURCE_DIR}/doc/make.1" \ + "${STAGEDIR}${PREFIX}/share/man/man1/gmake.1" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/devel/gmake/distinfo b/ports/devel/gmake/distinfo new file mode 100644 index 0000000..2131f7a --- /dev/null +++ b/ports/devel/gmake/distinfo @@ -0,0 +1 @@ +SHA256 (make-4.4.1.tar.gz) = dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3 diff --git a/ports/devel/gmake/files/patch-c23-musl-prototypes b/ports/devel/gmake/files/patch-c23-musl-prototypes new file mode 100644 index 0000000..448bcd8 --- /dev/null +++ b/ports/devel/gmake/files/patch-c23-musl-prototypes @@ -0,0 +1,33 @@ +--- a/lib/fnmatch.c ++++ b/lib/fnmatch.c +@@ -121,7 +121,7 @@ + whose names are inconsistent. */ + + # if !defined _LIBC && !defined getenv +-extern char *getenv (); ++extern char *getenv (const char *__name); + # endif + + # ifndef errno +--- a/src/getopt.c ++++ b/src/getopt.c +@@ -202,7 +202,7 @@ static char *posixly_correct; + whose names are inconsistent. */ + + #ifndef getenv +-extern char *getenv (); ++extern char *getenv (const char *__name); + #endif + + static char * +--- a/src/getopt.h ++++ b/src/getopt.h +@@ -91,7 +91,7 @@ struct option + errors, only prototype getopt for the GNU C library. */ + extern int getopt (int argc, char *const *argv, const char *shortopts); + #else /* not __GNU_LIBRARY__ */ +-extern int getopt (); ++extern int getopt (int argc, char *const *argv, const char *shortopts); + #endif /* __GNU_LIBRARY__ */ + extern int getopt_long (int argc, char *const *argv, const char *shortopts, + const struct option *longopts, int *longind); diff --git a/ports/devel/gmake/pkg-plist b/ports/devel/gmake/pkg-plist new file mode 100644 index 0000000..17012a4 --- /dev/null +++ b/ports/devel/gmake/pkg-plist @@ -0,0 +1,3 @@ +bin/gmake +share/licenses/gmake/COPYING +share/man/man1/gmake.1 diff --git a/ports/devel/libffi/Makefile b/ports/devel/libffi/Makefile new file mode 100644 index 0000000..8077b6f --- /dev/null +++ b/ports/devel/libffi/Makefile @@ -0,0 +1,16 @@ +PORTNAME= libffi +PORTVERSION= 3.5.2 +CATEGORIES= devel +MASTER_SITES= https://github.com/libffi/libffi/releases/download/v${PORTVERSION}/ +DISTFILES= libffi-${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/libffi-${PORTVERSION} +BUILD_STYLE= gnu-configure + +do-install: + cd "${SOURCE_DIR}" && ${GMAKE} DESTDIR="${STAGEDIR}" install + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/libffi" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/libffi/LICENSE" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/devel/libffi/distinfo b/ports/devel/libffi/distinfo new file mode 100644 index 0000000..688654b --- /dev/null +++ b/ports/devel/libffi/distinfo @@ -0,0 +1 @@ +SHA256 (libffi-3.5.2.tar.gz) = f3a3082a23b37c293a4fcd1053147b371f2ff91fa7ea1b2a52e335676bac82dc diff --git a/ports/devel/libffi/pkg-plist b/ports/devel/libffi/pkg-plist new file mode 100644 index 0000000..caa145b --- /dev/null +++ b/ports/devel/libffi/pkg-plist @@ -0,0 +1,3 @@ +@tree include +@tree lib +@tree share diff --git a/ports/devel/libudev-garden/Makefile b/ports/devel/libudev-garden/Makefile new file mode 100644 index 0000000..511eab0 --- /dev/null +++ b/ports/devel/libudev-garden/Makefile @@ -0,0 +1,20 @@ +PORTNAME= libudev-garden +PORTVERSION= 0.2.1 +CATEGORIES= devel +GIT_COMMIT= 04fc426c9f772c01db1655c80c150280b8034fd6 +MASTER_SITES= https://git.pinkro.se/Rose/gardenhouse/libudev-garden.git +DISTFILES= libudev-garden-${GIT_COMMIT}.tar +DIST_SOURCES= ${DISTFILES}@${MASTER_SITES} + +SOURCE_DIR= ${WRKSRC}/libudev-garden +BUILD_STYLE= meson +BUILD_DEPENDS= meson:devel/meson +CONFIGURE_ARGS= -Dstatic=false + +do-install: + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/libudev-garden" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/libudev-garden/LICENSE" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/devel/libudev-garden/distinfo b/ports/devel/libudev-garden/distinfo new file mode 100644 index 0000000..8816578 --- /dev/null +++ b/ports/devel/libudev-garden/distinfo @@ -0,0 +1 @@ +SHA256 (libudev-garden-04fc426c9f772c01db1655c80c150280b8034fd6.tar) = d7e3ebeb8856fc661b9c92075e3598ee1f1951873766f78122186d9241b70b1c diff --git a/ports/devel/libudev-garden/pkg-plist b/ports/devel/libudev-garden/pkg-plist new file mode 100644 index 0000000..3667fca --- /dev/null +++ b/ports/devel/libudev-garden/pkg-plist @@ -0,0 +1,5 @@ +include/libudev.h +lib/libudev.so +lib/libudev.so.1 +share/licenses/libudev-garden/LICENSE +share/pkgconfig/libudev.pc diff --git a/ports/graphics/libdisplay-info/Makefile b/ports/graphics/libdisplay-info/Makefile new file mode 100644 index 0000000..9b77563 --- /dev/null +++ b/ports/graphics/libdisplay-info/Makefile @@ -0,0 +1,18 @@ +PORTNAME= libdisplay-info +PORTVERSION= 0.3.0 +CATEGORIES= graphics +MASTER_SITES= https://gitlab.freedesktop.org/emersion/libdisplay-info/-/archive/${PORTVERSION}/ +DISTFILES= libdisplay-info-${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/libdisplay-info-${PORTVERSION} +BUILD_STYLE= meson +RUN_DEPENDS= hwdata:misc/hwdata + +do-install: + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install + rm -f "${STAGEDIR}${PREFIX}/bin/di-edid-decode" + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/libdisplay-info" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/libdisplay-info/LICENSE" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/graphics/libdisplay-info/distinfo b/ports/graphics/libdisplay-info/distinfo new file mode 100644 index 0000000..e726f28 --- /dev/null +++ b/ports/graphics/libdisplay-info/distinfo @@ -0,0 +1 @@ +SHA256 (libdisplay-info-0.3.0.tar.gz) = 2b467e3336aec63819d6aca28d7310d3dc7415b2b3a3c3a5aec9d3727053c078 diff --git a/ports/graphics/libdisplay-info/pkg-plist b/ports/graphics/libdisplay-info/pkg-plist new file mode 100644 index 0000000..caa145b --- /dev/null +++ b/ports/graphics/libdisplay-info/pkg-plist @@ -0,0 +1,3 @@ +@tree include +@tree lib +@tree share diff --git a/ports/graphics/libdrm/Makefile b/ports/graphics/libdrm/Makefile new file mode 100644 index 0000000..a7781de --- /dev/null +++ b/ports/graphics/libdrm/Makefile @@ -0,0 +1,16 @@ +PORTNAME= libdrm +PORTVERSION= 2.4.134 +CATEGORIES= graphics +MASTER_SITES= https://gitlab.freedesktop.org/mesa/drm/-/archive/libdrm-${PORTVERSION}/ +DISTFILES= libdrm-${PORTVERSION}.tar.gz +DIST_SOURCES= ${DISTFILES}@${MASTER_SITES}libdrm-libdrm-${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/libdrm-libdrm-${PORTVERSION} +BUILD_STYLE= meson +CONFIGURE_ARGS= -Dintel=disabled -Dradeon=disabled -Damdgpu=disabled \ + -Dnouveau=disabled -Dvmwgfx=disabled -Domap=disabled \ + -Dexynos=disabled -Dfreedreno=disabled -Dtegra=disabled \ + -Dvc4=disabled -Detnaviv=disabled -Dudev=false \ + -Dtests=false -Dinstall-test-programs=false -Dman-pages=disabled + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/graphics/libdrm/distinfo b/ports/graphics/libdrm/distinfo new file mode 100644 index 0000000..2ad632e --- /dev/null +++ b/ports/graphics/libdrm/distinfo @@ -0,0 +1 @@ +SHA256 (libdrm-2.4.134.tar.gz) = 28af861f62e7a2c3a48c5ff2ad4d01cf440a419f7f877de5caa7f73d3afa5367 diff --git a/ports/graphics/libdrm/pkg-plist b/ports/graphics/libdrm/pkg-plist new file mode 100644 index 0000000..95bce44 --- /dev/null +++ b/ports/graphics/libdrm/pkg-plist @@ -0,0 +1,2 @@ +@tree include +@tree lib diff --git a/ports/graphics/pixman/Makefile b/ports/graphics/pixman/Makefile new file mode 100644 index 0000000..0969c6f --- /dev/null +++ b/ports/graphics/pixman/Makefile @@ -0,0 +1,17 @@ +PORTNAME= pixman +PORTVERSION= 0.46.4 +CATEGORIES= graphics +MASTER_SITES= https://xorg.freedesktop.org/releases/individual/lib/ +DISTFILES= pixman-${PORTVERSION}.tar.xz + +SOURCE_DIR= ${WRKSRC}/pixman-${PORTVERSION} +BUILD_STYLE= meson +CONFIGURE_ARGS= -Dlibpng=disabled -Dtests=disabled -Ddemos=disabled + +do-install: + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/pixman" + install -m 0644 "${SOURCE_DIR}/COPYING" \ + "${STAGEDIR}${PREFIX}/share/licenses/pixman/COPYING" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/graphics/pixman/distinfo b/ports/graphics/pixman/distinfo new file mode 100644 index 0000000..358f423 --- /dev/null +++ b/ports/graphics/pixman/distinfo @@ -0,0 +1 @@ +SHA256 (pixman-0.46.4.tar.xz) = a098c33924754ad43f981b740f6d576c70f9ed1006e12221b1845431ebce1239 diff --git a/ports/graphics/pixman/pkg-plist b/ports/graphics/pixman/pkg-plist new file mode 100644 index 0000000..caa145b --- /dev/null +++ b/ports/graphics/pixman/pkg-plist @@ -0,0 +1,3 @@ +@tree include +@tree lib +@tree share diff --git a/ports/graphics/wayland-protocols/Makefile b/ports/graphics/wayland-protocols/Makefile new file mode 100644 index 0000000..8e9fd86 --- /dev/null +++ b/ports/graphics/wayland-protocols/Makefile @@ -0,0 +1,17 @@ +PORTNAME= wayland-protocols +PORTVERSION= 1.49 +CATEGORIES= graphics +MASTER_SITES= https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/${PORTVERSION}/downloads/ +DISTFILES= wayland-protocols-${PORTVERSION}.tar.xz + +SOURCE_DIR= ${WRKSRC}/wayland-protocols-${PORTVERSION} +BUILD_STYLE= meson +CONFIGURE_ARGS= -Dtests=false + +do-install: + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/wayland-protocols" + install -m 0644 "${SOURCE_DIR}/COPYING" \ + "${STAGEDIR}${PREFIX}/share/licenses/wayland-protocols/COPYING" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/graphics/wayland-protocols/distinfo b/ports/graphics/wayland-protocols/distinfo new file mode 100644 index 0000000..92e4380 --- /dev/null +++ b/ports/graphics/wayland-protocols/distinfo @@ -0,0 +1 @@ +SHA256 (wayland-protocols-1.49.tar.xz) = ec4c8f74942d6dff7ace8b4ce4764f0ef9ff618a935d974ea77edee2ad240b14 diff --git a/ports/graphics/wayland-protocols/pkg-plist b/ports/graphics/wayland-protocols/pkg-plist new file mode 100644 index 0000000..08b4089 --- /dev/null +++ b/ports/graphics/wayland-protocols/pkg-plist @@ -0,0 +1 @@ +@tree share diff --git a/ports/graphics/wayland/Makefile b/ports/graphics/wayland/Makefile new file mode 100644 index 0000000..249c8ea --- /dev/null +++ b/ports/graphics/wayland/Makefile @@ -0,0 +1,18 @@ +PORTNAME= wayland +PORTVERSION= 1.25.0 +CATEGORIES= graphics +MASTER_SITES= https://gitlab.freedesktop.org/wayland/wayland/-/releases/${PORTVERSION}/downloads/ +DISTFILES= wayland-${PORTVERSION}.tar.xz + +SOURCE_DIR= ${WRKSRC}/wayland-${PORTVERSION} +BUILD_STYLE= meson +RUN_DEPENDS= expat:textproc/expat libffi:devel/libffi +CONFIGURE_ARGS= -Ddocumentation=false -Ddtd_validation=false -Dtests=false + +do-install: + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/wayland" + install -m 0644 "${SOURCE_DIR}/COPYING" \ + "${STAGEDIR}${PREFIX}/share/licenses/wayland/COPYING" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/graphics/wayland/distinfo b/ports/graphics/wayland/distinfo new file mode 100644 index 0000000..315bdb9 --- /dev/null +++ b/ports/graphics/wayland/distinfo @@ -0,0 +1 @@ +SHA256 (wayland-1.25.0.tar.xz) = c065f040afdff3177680600f249727e41a1afc22fccf27222f15f5306faa1f03 diff --git a/ports/graphics/wayland/pkg-plist b/ports/graphics/wayland/pkg-plist new file mode 100644 index 0000000..8172420 --- /dev/null +++ b/ports/graphics/wayland/pkg-plist @@ -0,0 +1,4 @@ +@tree bin +@tree include +@tree lib +@tree share diff --git a/ports/misc/hwdata/Makefile b/ports/misc/hwdata/Makefile new file mode 100644 index 0000000..69de4bc --- /dev/null +++ b/ports/misc/hwdata/Makefile @@ -0,0 +1,28 @@ +PORTNAME= hwdata +PORTVERSION= 0.409 +CATEGORIES= misc +MASTER_SITES= https://github.com/vcrhonek/hwdata/archive/refs/tags/ +DISTFILES= hwdata-${PORTVERSION}.tar.gz +DIST_SOURCES= ${DISTFILES}@${MASTER_SITES}v${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/hwdata-${PORTVERSION} +RUN_DEPENDS= + +do-install: + mkdir -p \ + "${STAGEDIR}${PREFIX}/lib/pkgconfig" \ + "${STAGEDIR}${PREFIX}/share/hwdata" \ + "${STAGEDIR}${PREFIX}/share/licenses/hwdata" + install -m 0644 "${SOURCE_DIR}/pnp.ids" \ + "${STAGEDIR}${PREFIX}/share/hwdata/pnp.ids" + sed -e 's|@prefix@|${PREFIX}|g' \ + -e 's|@datadir@|${PREFIX}/share|g' \ + -e 's|@pkgdatadir@|${PREFIX}/share/hwdata|g' \ + -e 's|@NAME@|hwdata|g' \ + -e 's|@VERSION@|${PORTVERSION}|g' \ + "${SOURCE_DIR}/hwdata.pc.in" > \ + "${STAGEDIR}${PREFIX}/lib/pkgconfig/hwdata.pc" + install -m 0644 "${SOURCE_DIR}/COPYING" \ + "${STAGEDIR}${PREFIX}/share/licenses/hwdata/COPYING" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/misc/hwdata/distinfo b/ports/misc/hwdata/distinfo new file mode 100644 index 0000000..a58f4ea --- /dev/null +++ b/ports/misc/hwdata/distinfo @@ -0,0 +1 @@ +SHA256 (hwdata-0.409.tar.gz) = 23006accc0f931dd5187d0307a57d0744e2b8feb85e73c37bc0f5229fb31eadd diff --git a/ports/misc/hwdata/pkg-plist b/ports/misc/hwdata/pkg-plist new file mode 100644 index 0000000..6393f61 --- /dev/null +++ b/ports/misc/hwdata/pkg-plist @@ -0,0 +1,2 @@ +@tree lib +@tree share diff --git a/ports/sysutils/greetd/Makefile b/ports/sysutils/greetd/Makefile new file mode 100644 index 0000000..49efdb0 --- /dev/null +++ b/ports/sysutils/greetd/Makefile @@ -0,0 +1,93 @@ +PORTNAME= greetd +PORTVERSION= 0.10.3 +CATEGORIES= sysutils +MASTER_SITES= https://git.sr.ht/~kennylevinsen/greetd/archive/ +DISTFILES= greetd-${PORTVERSION}.tar.gz +DIST_SOURCES= ${DISTFILES}@${MASTER_SITES}${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/greetd-${PORTVERSION} +BUILD_DEPENDS= rust:lang/rust +RUN_DEPENDS= tuigreet:x11/tuigreet +PATCHFILES= patch-mouse-auth +CARGO_CRATES= \ + addr2line/0.21.0 \ + adler/1.0.2 \ + async-trait/0.1.80 \ + backtrace/0.3.71 \ + bitflags/2.5.0 \ + bytes/1.6.0 \ + cc/1.0.95 \ + cfg-if/1.0.0 \ + enquote/1.1.0 \ + getopts/0.2.21 \ + gimli/0.28.1 \ + itoa/1.0.11 \ + libc/0.2.153 \ + memchr/2.7.2 \ + miniz_oxide/0.7.2 \ + mio/0.8.11 \ + nix/0.27.1 \ + object/0.32.2 \ + pin-project-lite/0.2.14 \ + proc-macro2/1.0.81 \ + quote/1.0.36 \ + rpassword/5.0.1 \ + rustc-demangle/0.1.23 \ + ryu/1.0.17 \ + serde/1.0.198 \ + serde_derive/1.0.198 \ + serde_json/1.0.116 \ + signal-hook-registry/1.4.1 \ + socket2/0.5.6 \ + syn/2.0.60 \ + thiserror/1.0.58 \ + thiserror-impl/1.0.58 \ + tokio/1.37.0 \ + tokio-macros/2.2.0 \ + unicode-ident/1.0.12 \ + unicode-width/0.1.11 \ + wasi/0.11.0+wasi-snapshot-preview1 \ + winapi/0.3.9 \ + winapi-i686-pc-windows-gnu/0.4.0 \ + winapi-x86_64-pc-windows-gnu/0.4.0 \ + windows-sys/0.48.0 \ + windows-sys/0.52.0 \ + windows-targets/0.48.5 \ + windows-targets/0.52.5 \ + windows_aarch64_gnullvm/0.48.5 \ + windows_aarch64_gnullvm/0.52.5 \ + windows_aarch64_msvc/0.48.5 \ + windows_aarch64_msvc/0.52.5 \ + windows_i686_gnu/0.48.5 \ + windows_i686_gnu/0.52.5 \ + windows_i686_gnullvm/0.52.5 \ + windows_i686_msvc/0.48.5 \ + windows_i686_msvc/0.52.5 \ + windows_x86_64_gnu/0.48.5 \ + windows_x86_64_gnu/0.52.5 \ + windows_x86_64_gnullvm/0.48.5 \ + windows_x86_64_gnullvm/0.52.5 \ + windows_x86_64_msvc/0.48.5 \ + windows_x86_64_msvc/0.52.5 + +do-build: + cd "${SOURCE_DIR}" && env CARGO_HOME="${WRKDIR}/cargo-home" \ + cargo rustc --offline --locked --release \ + -p greetd --bin greetd -- -C target-feature=+crt-static + +do-install: + mkdir -p \ + "${STAGEDIR}${PREFIX}/etc/greetd" \ + "${STAGEDIR}${PREFIX}/etc/rc.d" \ + "${STAGEDIR}${PREFIX}/sbin" \ + "${STAGEDIR}${PREFIX}/share/licenses/greetd" + install -m 0755 "${SOURCE_DIR}/target/release/greetd" \ + "${STAGEDIR}${PREFIX}/sbin/greetd" + install -m 0644 "${PORTDIR}/files/config.toml" \ + "${STAGEDIR}${PREFIX}/etc/greetd/config.toml" + install -m 0755 "${PORTDIR}/files/greetd" \ + "${STAGEDIR}${PREFIX}/etc/rc.d/greetd" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/greetd/LICENSE" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/sysutils/greetd/distinfo b/ports/sysutils/greetd/distinfo new file mode 100644 index 0000000..28ef751 --- /dev/null +++ b/ports/sysutils/greetd/distinfo @@ -0,0 +1,60 @@ +SHA256 (greetd-0.10.3.tar.gz) = ee5cb70e0add4ca9c9fe57e47581ab0002d44c07743fb5492469f3b570db640b +SHA256 (addr2line-0.21.0.crate) = 8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb +SHA256 (adler-1.0.2.crate) = f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe +SHA256 (async-trait-0.1.80.crate) = c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca +SHA256 (backtrace-0.3.71.crate) = 26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d +SHA256 (bitflags-2.5.0.crate) = cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1 +SHA256 (bytes-1.6.0.crate) = 514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9 +SHA256 (cc-1.0.95.crate) = d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b +SHA256 (cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd +SHA256 (enquote-1.1.0.crate) = 06c36cb11dbde389f4096111698d8b567c0720e3452fd5ac3e6b4e47e1939932 +SHA256 (getopts-0.2.21.crate) = 14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5 +SHA256 (gimli-0.28.1.crate) = 4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253 +SHA256 (itoa-1.0.11.crate) = 49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b +SHA256 (libc-0.2.153.crate) = 9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd +SHA256 (memchr-2.7.2.crate) = 6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d +SHA256 (miniz_oxide-0.7.2.crate) = 9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7 +SHA256 (mio-0.8.11.crate) = a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c +SHA256 (nix-0.27.1.crate) = 2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053 +SHA256 (object-0.32.2.crate) = a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441 +SHA256 (pin-project-lite-0.2.14.crate) = bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02 +SHA256 (proc-macro2-1.0.81.crate) = 3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba +SHA256 (quote-1.0.36.crate) = 0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7 +SHA256 (rpassword-5.0.1.crate) = ffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efb +SHA256 (rustc-demangle-0.1.23.crate) = d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76 +SHA256 (ryu-1.0.17.crate) = e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1 +SHA256 (serde-1.0.198.crate) = 9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc +SHA256 (serde_derive-1.0.198.crate) = e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9 +SHA256 (serde_json-1.0.116.crate) = 3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813 +SHA256 (signal-hook-registry-1.4.1.crate) = d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1 +SHA256 (socket2-0.5.6.crate) = 05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871 +SHA256 (syn-2.0.60.crate) = 909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3 +SHA256 (thiserror-1.0.58.crate) = 03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297 +SHA256 (thiserror-impl-1.0.58.crate) = c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7 +SHA256 (tokio-1.37.0.crate) = 1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787 +SHA256 (tokio-macros-2.2.0.crate) = 5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b +SHA256 (unicode-ident-1.0.12.crate) = 3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b +SHA256 (unicode-width-0.1.11.crate) = e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85 +SHA256 (wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423 +SHA256 (winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419 +SHA256 (winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6 +SHA256 (winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f +SHA256 (windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9 +SHA256 (windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d +SHA256 (windows-targets-0.48.5.crate) = 9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c +SHA256 (windows-targets-0.52.5.crate) = 6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb +SHA256 (windows_aarch64_gnullvm-0.48.5.crate) = 2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8 +SHA256 (windows_aarch64_gnullvm-0.52.5.crate) = 7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263 +SHA256 (windows_aarch64_msvc-0.48.5.crate) = dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc +SHA256 (windows_aarch64_msvc-0.52.5.crate) = 9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6 +SHA256 (windows_i686_gnu-0.48.5.crate) = a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e +SHA256 (windows_i686_gnu-0.52.5.crate) = 88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670 +SHA256 (windows_i686_gnullvm-0.52.5.crate) = 87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9 +SHA256 (windows_i686_msvc-0.48.5.crate) = 8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406 +SHA256 (windows_i686_msvc-0.52.5.crate) = db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf +SHA256 (windows_x86_64_gnu-0.48.5.crate) = 53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e +SHA256 (windows_x86_64_gnu-0.52.5.crate) = 4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9 +SHA256 (windows_x86_64_gnullvm-0.48.5.crate) = 0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc +SHA256 (windows_x86_64_gnullvm-0.52.5.crate) = 852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596 +SHA256 (windows_x86_64_msvc-0.48.5.crate) = ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538 +SHA256 (windows_x86_64_msvc-0.52.5.crate) = bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0 diff --git a/ports/sysutils/greetd/files/config.toml b/ports/sysutils/greetd/files/config.toml new file mode 100644 index 0000000..8deff38 --- /dev/null +++ b/ports/sysutils/greetd/files/config.toml @@ -0,0 +1,6 @@ +[terminal] +vt = 1 + +[default_session] +command = "/usr/local/bin/tuigreet --time --remember --cmd /usr/local/bin/mouse-dwl-session" +user = "greeter" diff --git a/ports/sysutils/greetd/files/greetd b/ports/sysutils/greetd/files/greetd new file mode 100755 index 0000000..b5b0ad5 --- /dev/null +++ b/ports/sysutils/greetd/files/greetd @@ -0,0 +1,26 @@ +#!/bin/sh +# PROVIDE: greetd LOGIN +# REQUIRE: gardendevd seatd +# AFTER: gardendevd seatd + +. /etc/rc.subr + +name=greetd +command=/usr/local/sbin/greetd +command_args="-c /usr/local/etc/greetd/config.toml &" +start_precmd=greetd_prepare_cache + +greetd_prepare_cache() +{ + mkdir -p /var/cache/tuigreet + chown greeter:greeter /var/cache/tuigreet + chmod 0755 /var/cache/tuigreet + mkdir -p /run/user + chown root:root /run/user + chmod 0755 /run/user + mkdir -p /run/user/1000 + chown mouse:mouse /run/user/1000 + chmod 0700 /run/user/1000 +} + +run_rc_command "$1" diff --git a/ports/sysutils/greetd/files/patch-mouse-auth b/ports/sysutils/greetd/files/patch-mouse-auth new file mode 100644 index 0000000..4606fdd --- /dev/null +++ b/ports/sysutils/greetd/files/patch-mouse-auth @@ -0,0 +1,346 @@ +diff --git a/Cargo.lock b/Cargo.lock +index f89b04a..cc0837d 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -124,7 +124,6 @@ dependencies = [ + "inish", + "libc", + "nix", +- "pam-sys", + "serde", + "serde_json", + "thiserror", +@@ -204,15 +203,6 @@ dependencies = [ + "memchr", + ] + +-[[package]] +-name = "pam-sys" +-version = "0.5.6" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cd4858311a097f01a0006ef7d0cd50bca81ec430c949d7bf95cbefd202282434" +-dependencies = [ +- "libc", +-] +- + [[package]] + name = "pin-project-lite" + version = "0.2.14" +diff --git a/greetd/Cargo.toml b/greetd/Cargo.toml +index a9ac8d1..3e68a98 100644 +--- a/greetd/Cargo.toml ++++ b/greetd/Cargo.toml +@@ -12,7 +12,6 @@ debug = [] + + [dependencies] + nix = { version = "0.27", features = ["ioctl", "signal", "user", "fs", "mman"] } +-pam-sys = "0.5.6" + serde = { version = "1.0", features = ["derive"] } + serde_json = "1.0" + greetd_ipc = { path = "../greetd_ipc", features = ["tokio-codec"] } +diff --git a/greetd/src/error.rs b/greetd/src/error.rs +index 68aa07c..ca7d4d2 100644 +--- a/greetd/src/error.rs ++++ b/greetd/src/error.rs +@@ -33,12 +33,6 @@ impl From for Error { + } + } + +-impl From for Error { +- fn from(error: crate::pam::PamError) -> Self { +- Error::AuthError(error.to_string()) +- } +-} +- + impl From for Error { + fn from(error: greetd_ipc::codec::Error) -> Self { + match error { +diff --git a/greetd/src/main.rs b/greetd/src/main.rs +index 92a53d4..d63d66e 100644 +--- a/greetd/src/main.rs ++++ b/greetd/src/main.rs +@@ -1,7 +1,6 @@ + mod config; + mod context; + mod error; +-mod pam; + mod scrambler; + mod server; + mod session; +diff --git a/greetd/src/server.rs b/greetd/src/server.rs +index b215c4a..3fa5a49 100644 +--- a/greetd/src/server.rs ++++ b/greetd/src/server.rs +@@ -1,4 +1,4 @@ +-use std::{path::Path, rc::Rc}; ++use std::rc::Rc; + + use nix::unistd::{chown, getpid, Gid, Uid}; + use tokio::{ +@@ -198,31 +198,8 @@ impl Drop for Listener { + } + + pub async fn main(config: Config) -> Result<(), Error> { +- let service = if Path::new(&format!("/etc/pam.d/{}", config.file.general.service)).exists() { +- &config.file.general.service +- } else if Path::new(&format!("/usr/lib/pam.d/{}", config.file.general.service)).exists() { +- &config.file.general.service +- } else { +- return Err(format!("PAM '{}' service missing", config.file.general.service).into()); +- }; +- +- let greeter_service = if Path::new(&format!( +- "/etc/pam.d/{}", +- config.file.default_session.service +- )) +- .exists() +- { +- &config.file.default_session.service +- } else if Path::new(&format!( +- "/usr/lib/pam.d/{}", +- config.file.default_session.service +- )) +- .exists() +- { +- &config.file.default_session.service +- } else { +- service +- }; ++ let service = &config.file.general.service; ++ let greeter_service = &config.file.default_session.service; + + let u = nix::unistd::User::from_name(&config.file.default_session.user)?.ok_or(format!( + "configured default session user '{}' not found", +diff --git a/greetd/src/session/mod.rs b/greetd/src/session/mod.rs +index e1a08cb..698425e 100644 +--- a/greetd/src/session/mod.rs ++++ b/greetd/src/session/mod.rs +@@ -1,4 +1,3 @@ +-pub mod conv; + pub mod interface; + mod prctl; + pub mod worker; +diff --git a/greetd/src/session/worker.rs b/greetd/src/session/worker.rs +index 71c9d10..ede3a6d 100644 +--- a/greetd/src/session/worker.rs ++++ b/greetd/src/session/worker.rs +@@ -1,17 +1,43 @@ +-use std::{env, ffi::CString, os::unix::net::UnixDatagram}; ++use std::{ ++ env, ++ ffi::CString, ++ io::Write, ++ os::unix::net::UnixDatagram, ++ process::{Command, Stdio}, ++}; + + use nix::{ + sys::wait::waitpid, + unistd::{execve, fork, initgroups, setgid, setsid, setuid, ForkResult}, + }; +-use pam_sys::{PamFlag, PamItemType}; + use serde::{Deserialize, Serialize}; + +-use super::{ +- conv::SessionConv, +- prctl::{prctl, PrctlOption}, +-}; +-use crate::{error::Error, pam::session::PamSession, terminal}; ++use super::prctl::{prctl, PrctlOption}; ++use crate::{error::Error, scrambler::Scrambler, terminal}; ++ ++const AUTH_HELPER: &str = "/usr/libexec/mouse-auth"; ++ ++fn authenticate(username: &str, mut password: String) -> Result<(), Error> { ++ let result = (|| -> std::io::Result { ++ let mut child = Command::new(AUTH_HELPER) ++ .stdin(Stdio::piped()) ++ .stdout(Stdio::null()) ++ .stderr(Stdio::null()) ++ .spawn()?; ++ if let Some(mut input) = child.stdin.take() { ++ input.write_all(username.as_bytes())?; ++ input.write_all(b"\n")?; ++ input.write_all(password.as_bytes())?; ++ input.write_all(b"\n")?; ++ } ++ Ok(child.wait()?.success()) ++ })(); ++ password.scramble(); ++ match result { ++ Ok(true) => Ok(()), ++ Ok(false) | Err(_) => Err(Error::AuthError("authentication failed".to_string())), ++ } ++} + + #[derive(Clone, Debug, Serialize, Deserialize)] + pub enum AuthMessageType { +@@ -100,10 +126,10 @@ impl SessionChildToParent { + /// started by Session::start. + fn worker(sock: &UnixDatagram) -> Result<(), Error> { + let mut data = [0; 10240]; +- let (service, class, user, authenticate, tty, source_profile, listener_path) = ++ let (class, username, authenticate_user, tty, source_profile, listener_path) = + match ParentToSessionChild::recv(sock, &mut data)? { + ParentToSessionChild::InitiateLogin { +- service, ++ service: _, + class, + user, + authenticate, +@@ -111,38 +137,39 @@ fn worker(sock: &UnixDatagram) -> Result<(), Error> { + source_profile, + listener_path, + } => ( +- service, + class, +- user, ++ user.to_owned(), + authenticate, + tty, + source_profile, +- listener_path, ++ listener_path.to_owned(), + ), + ParentToSessionChild::Cancel => return Err("cancelled".into()), + msg => return Err(format!("expected InitiateLogin or Cancel, got: {:?}", msg).into()), + }; + +- let conv = Box::pin(SessionConv::new(sock)); +- let mut pam = PamSession::start(service, user, conv)?; +- +- if authenticate { +- pam.authenticate(PamFlag::NONE)?; ++ if authenticate_user { ++ SessionChildToParent::PamMessage { ++ style: AuthMessageType::Secret, ++ msg: "Password: ".to_string(), ++ } ++ .send(sock)?; ++ let auth_result = match ParentToSessionChild::recv(sock, &mut data)? { ++ ParentToSessionChild::PamResponse { ++ resp: Some(password), ++ } => authenticate(&username, password), ++ ParentToSessionChild::PamResponse { resp: None } | ParentToSessionChild::Cancel => { ++ return Err("cancelled".into()) ++ } ++ msg => return Err(format!("expected PamResponse or Cancel, got: {:?}", msg).into()), ++ }; ++ data.fill(0); ++ auth_result?; + } +- pam.acct_mgmt(PamFlag::NONE)?; +- +- // Not the credentials you think. +- pam.setcred(PamFlag::ESTABLISH_CRED)?; + + // Mark authentication as a success. + SessionChildToParent::Success.send(sock)?; + +- // Add GREETD_SOCK if this is a greeter session - we do this early as we are about to reuse the +- // buffer, invalidating our borrow. +- if let SessionClass::Greeter = class { +- pam.putenv(&format!("GREETD_SOCK={}", &listener_path))?; +- } +- + // Fetch our arguments from the parent. + let (env, cmd) = match ParentToSessionChild::recv(sock, &mut data)? { + ParentToSessionChild::Args { env, cmd } => (env, cmd), +@@ -159,20 +186,18 @@ fn worker(sock: &UnixDatagram) -> Result<(), Error> { + msg => return Err(format!("expected Start or Cancel, got: {:?}", msg).into()), + }; + +- let pam_username = pam.get_user()?; +- +- let user = nix::unistd::User::from_name(&pam_username)?.ok_or("unable to get user info")?; ++ let user = nix::unistd::User::from_name(&username)?.ok_or("unable to get user info")?; + + // Make this process a session leader. + setsid().map_err(|e| format!("unable to become session leader: {}", e))?; + ++ let xdg_vtnr = match &tty { ++ TerminalMode::Terminal { vt, .. } => Some(*vt), ++ TerminalMode::Stdin => None, ++ }; + match tty { + TerminalMode::Stdin => (), + TerminalMode::Terminal { path, vt, switch } => { +- // Tell PAM what TTY we're targetting, which is used by logind. +- pam.set_item(PamItemType::TTY, &format!("tty{}", vt))?; +- pam.putenv(&format!("XDG_VTNR={}", vt))?; +- + // Opening our target terminal. + let target_term = terminal::Terminal::open(&path)?; + +@@ -197,12 +222,7 @@ fn worker(sock: &UnixDatagram) -> Result<(), Error> { + } + } + +- // PAM has to be provided a bunch of environment variables before +- // open_session. We pass any environment variables from our greeter +- // through here as well. This allows them to affect PAM (more +- // specifically, pam_systemd.so), as well as make it easier to gather +- // and set all environment variables later. +- let prepared_env = [ ++ let mut prepared_env = vec![ + "XDG_SEAT=seat0".to_string(), + format!("XDG_SESSION_CLASS={}", class.as_str()), + format!("USER={}", user.name), +@@ -214,15 +234,12 @@ fn worker(sock: &UnixDatagram) -> Result<(), Error> { + env::var("TERM").unwrap_or_else(|_| "linux".to_string()) + ), + ]; +- for e in env.iter().chain(prepared_env.iter()) { +- pam.putenv(e)?; ++ if let SessionClass::Greeter = class { ++ prepared_env.push(format!("GREETD_SOCK={}", listener_path)); ++ } ++ if let Some(vt) = xdg_vtnr { ++ prepared_env.push(format!("XDG_VTNR={}", vt)); + } +- +- // Session time! +- pam.open_session(PamFlag::NONE)?; +- +- // We are done with PAM, clear variables that the child will not need. +- _ = pam.putenv(&"XDG_SESSION_CLASS"); + + // Prepare some strings in C format that we'll need. + let cusername = CString::new(user.name)?; +@@ -235,13 +252,14 @@ fn worker(sock: &UnixDatagram) -> Result<(), Error> { + format!("exec {}", cmd.join(" ")) + }; + +- // Extract PAM environment for use with execve below. +- let pamenvlist = pam.getenvlist()?; +- let envvec = pamenvlist.to_vec(); ++ let envvec = env ++ .iter() ++ .chain(prepared_env.iter()) ++ .map(|entry| CString::new(entry.as_str())) ++ .collect::, _>>()?; + +- // PAM is weird and gets upset if you exec from the process that opened +- // the session, registering it automatically as a log-out. Thus, we must +- // exec in a new child. ++ // Keep a privileged outer worker so it can own and reap the session while ++ // the inner child runs entirely as the authenticated account. + let child = match unsafe { fork() }.map_err(|e| format!("unable to fork: {}", e))? { + ForkResult::Parent { child, .. } => child, + ForkResult::Child => { +@@ -300,15 +318,6 @@ fn worker(sock: &UnixDatagram) -> Result<(), Error> { + } + } + +- // Close the session. This step requires root privileges to run, as it +- // will result in various forms of login teardown (including unmounting +- // home folders, telling logind that the session ended, etc.). This is +- // why we cannot drop privileges in this process, but must do it in the +- // inner-most child. +- pam.close_session(PamFlag::NONE)?; +- pam.setcred(PamFlag::DELETE_CRED)?; +- pam.end()?; +- + Ok(()) + } + diff --git a/ports/sysutils/greetd/pkg-plist b/ports/sysutils/greetd/pkg-plist new file mode 100644 index 0000000..da9efcc --- /dev/null +++ b/ports/sysutils/greetd/pkg-plist @@ -0,0 +1,4 @@ +etc/greetd/config.toml +etc/rc.d/greetd +sbin/greetd +share/licenses/greetd/LICENSE diff --git a/ports/sysutils/seatd/Makefile b/ports/sysutils/seatd/Makefile new file mode 100644 index 0000000..85fca40 --- /dev/null +++ b/ports/sysutils/seatd/Makefile @@ -0,0 +1,25 @@ +PORTNAME= seatd +PORTVERSION= 0.9.3 +CATEGORIES= sysutils +MASTER_SITES= https://git.sr.ht/~kennylevinsen/seatd/archive/ +DISTFILES= seatd-${PORTVERSION}.tar.gz +DIST_SOURCES= ${DISTFILES}@${MASTER_SITES}${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/seatd-${PORTVERSION} +BUILD_STYLE= meson +BUILD_DEPENDS= meson:devel/meson +CONFIGURE_ARGS= -Dexamples=disabled -Dlibseat-logind=disabled \ + -Dlibseat-seatd=enabled -Dlibseat-builtin=disabled \ + -Dserver=enabled -Dman-pages=disabled + +do-install: + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install + mkdir -p \ + "${STAGEDIR}${PREFIX}/etc/rc.d" \ + "${STAGEDIR}${PREFIX}/share/licenses/seatd" + install -m 0755 "${PORTDIR}/files/seatd" \ + "${STAGEDIR}${PREFIX}/etc/rc.d/seatd" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/seatd/LICENSE" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/sysutils/seatd/distinfo b/ports/sysutils/seatd/distinfo new file mode 100644 index 0000000..469381c --- /dev/null +++ b/ports/sysutils/seatd/distinfo @@ -0,0 +1 @@ +SHA256 (seatd-0.9.3.tar.gz) = 302564d54d8e28191fadfd734f2675ecb0c9e0615a58011b89ef15dfa4dbaa96 diff --git a/ports/sysutils/seatd/files/seatd b/ports/sysutils/seatd/files/seatd new file mode 100644 index 0000000..f51c9a0 --- /dev/null +++ b/ports/sysutils/seatd/files/seatd @@ -0,0 +1,12 @@ +#!/bin/sh +# PROVIDE: seatd SEAT +# REQUIRE: gardendevd +# BEFORE: greetd + +. /etc/rc.subr + +name=seatd +command=/usr/local/bin/seatd +command_args="-g seat &" + +run_rc_command "$1" diff --git a/ports/sysutils/seatd/pkg-plist b/ports/sysutils/seatd/pkg-plist new file mode 100644 index 0000000..896ba88 --- /dev/null +++ b/ports/sysutils/seatd/pkg-plist @@ -0,0 +1,8 @@ +bin/seatd +bin/seatd-launch +etc/rc.d/seatd +include/libseat.h +lib/libseat.so +lib/libseat.so.1 +lib/pkgconfig/libseat.pc +share/licenses/seatd/LICENSE diff --git a/ports/textproc/expat/Makefile b/ports/textproc/expat/Makefile new file mode 100644 index 0000000..d9569e1 --- /dev/null +++ b/ports/textproc/expat/Makefile @@ -0,0 +1,17 @@ +PORTNAME= expat +PORTVERSION= 2.8.2 +CATEGORIES= textproc +MASTER_SITES= https://github.com/libexpat/libexpat/releases/download/R_2_8_2/ +DISTFILES= expat-${PORTVERSION}.tar.xz + +SOURCE_DIR= ${WRKSRC}/expat-${PORTVERSION} +BUILD_STYLE= gnu-configure +CONFIGURE_ARGS= --disable-static + +do-install: + cd "${SOURCE_DIR}" && ${GMAKE} DESTDIR="${STAGEDIR}" install + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/expat" + install -m 0644 "${SOURCE_DIR}/COPYING" \ + "${STAGEDIR}${PREFIX}/share/licenses/expat/COPYING" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/textproc/expat/distinfo b/ports/textproc/expat/distinfo new file mode 100644 index 0000000..e70f6e5 --- /dev/null +++ b/ports/textproc/expat/distinfo @@ -0,0 +1 @@ +SHA256 (expat-2.8.2.tar.xz) = 3ad89b8588e6644bd4e49981480d48b21289eebbcd4f0a1a4afb1c29f99b6ab4 diff --git a/ports/textproc/expat/pkg-plist b/ports/textproc/expat/pkg-plist new file mode 100644 index 0000000..8172420 --- /dev/null +++ b/ports/textproc/expat/pkg-plist @@ -0,0 +1,4 @@ +@tree bin +@tree include +@tree lib +@tree share diff --git a/ports/x11/dwl/Makefile b/ports/x11/dwl/Makefile new file mode 100644 index 0000000..ddaae95 --- /dev/null +++ b/ports/x11/dwl/Makefile @@ -0,0 +1,28 @@ +PORTNAME= dwl +PORTVERSION= 0.8 +CATEGORIES= x11 +GIT_COMMIT= 9b11a49cb757b80f8589088b487b5f1e56643aa1 +MASTER_SITES= https://git.pupes.org/jachym/dwl/archive/ +DISTFILES= dwl-${GIT_COMMIT}.tar.gz +DIST_SOURCES= ${DISTFILES}@${MASTER_SITES}${GIT_COMMIT}.tar.gz + +SOURCE_DIR= ${WRKSRC}/dwl +RUN_DEPENDS= havoc:x11/havoc wlroots:x11/wlroots +PATCHFILES= patch-havoc-command + +do-build: + cd "${SOURCE_DIR}" && ${GMAKE} \ + CC=cc PKG_CONFIG=pkgconf PREFIX="${PREFIX}" XWAYLAND= + +do-install: + cd "${SOURCE_DIR}" && ${GMAKE} \ + DESTDIR="${STAGEDIR}" PREFIX="${PREFIX}" install + mkdir -p \ + "${STAGEDIR}${PREFIX}/bin" \ + "${STAGEDIR}${PREFIX}/share/licenses/dwl" + install -m 0755 "${PORTDIR}/files/mouse-dwl-session" \ + "${STAGEDIR}${PREFIX}/bin/mouse-dwl-session" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/dwl/LICENSE" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/x11/dwl/distinfo b/ports/x11/dwl/distinfo new file mode 100644 index 0000000..37eda4f --- /dev/null +++ b/ports/x11/dwl/distinfo @@ -0,0 +1 @@ +SHA256 (dwl-9b11a49cb757b80f8589088b487b5f1e56643aa1.tar.gz) = a80cc39794a17b9753349496e2cb127f1de22eb179d78f2c22ef647f2643a654 diff --git a/ports/x11/dwl/files/mouse-dwl-session b/ports/x11/dwl/files/mouse-dwl-session new file mode 100644 index 0000000..e3124e1 --- /dev/null +++ b/ports/x11/dwl/files/mouse-dwl-session @@ -0,0 +1,12 @@ +#!/bin/sh +set -eu + +runtime=/run/user/$(id -u) +umask 077 +mkdir -p "$runtime" +chmod 0700 "$runtime" +export XDG_CURRENT_DESKTOP=dwl +export XDG_RUNTIME_DIR="$runtime" +export XDG_SESSION_TYPE=wayland +export WLR_RENDERER=pixman +exec /usr/local/bin/dwl diff --git a/ports/x11/dwl/files/patch-havoc-command b/ports/x11/dwl/files/patch-havoc-command new file mode 100644 index 0000000..9653779 --- /dev/null +++ b/ports/x11/dwl/files/patch-havoc-command @@ -0,0 +1,15 @@ +--- a/config.def.h ++++ b/config.def.h +@@ -105,7 +105,6 @@ static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TA + #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } + + /* commands */ +-static const char *termcmd[] = { "foot", NULL }; +-static const char *menucmd[] = { "wmenu-run", NULL }; ++static const char *termcmd[] = { "/usr/local/bin/havoc", NULL }; + + static const Key keys[] = { +@@ -114,3 +113,2 @@ static const Key keys[] = { + /* modifier key function argument */ +- { MODKEY, XKB_KEY_p, spawn, {.v = menucmd} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd} }, diff --git a/ports/x11/dwl/pkg-plist b/ports/x11/dwl/pkg-plist new file mode 100644 index 0000000..de65647 --- /dev/null +++ b/ports/x11/dwl/pkg-plist @@ -0,0 +1,5 @@ +bin/dwl +bin/mouse-dwl-session +share/licenses/dwl/LICENSE +share/man/man1/dwl.1 +share/wayland-sessions/dwl.desktop diff --git a/ports/x11/havoc/Makefile b/ports/x11/havoc/Makefile new file mode 100644 index 0000000..7abc895 --- /dev/null +++ b/ports/x11/havoc/Makefile @@ -0,0 +1,27 @@ +PORTNAME= havoc +PORTVERSION= 0.7.0 +CATEGORIES= x11 +GIT_COMMIT= e9fd7e2623371338566432d6408267747dbf5146 +MASTER_SITES= https://github.com/ii8/havoc.git +DISTFILES= havoc-${GIT_COMMIT}.tar +DIST_SOURCES= ${DISTFILES}@${MASTER_SITES} + +SOURCE_DIR= ${WRKSRC}/havoc +RUN_DEPENDS= wayland:graphics/wayland \ + wayland-protocols:graphics/wayland-protocols \ + libxkbcommon:x11/libxkbcommon + +do-build: + cd "${SOURCE_DIR}" && ${GMAKE} \ + CC=cc CFLAGS="-O2 -DNDEBUG" PKG_CONFIG=pkgconf + +do-install: + mkdir -p \ + "${STAGEDIR}${PREFIX}/bin" \ + "${STAGEDIR}${PREFIX}/share/licenses/havoc" + install -m 0755 "${SOURCE_DIR}/havoc" \ + "${STAGEDIR}${PREFIX}/bin/havoc" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/havoc/LICENSE" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/x11/havoc/distinfo b/ports/x11/havoc/distinfo new file mode 100644 index 0000000..24751fa --- /dev/null +++ b/ports/x11/havoc/distinfo @@ -0,0 +1 @@ +SHA256 (havoc-e9fd7e2623371338566432d6408267747dbf5146.tar) = 387844d919de6671c812d54eae52547e6acee9b7cd7818f2d22d53dbd6b66b42 diff --git a/ports/x11/havoc/pkg-plist b/ports/x11/havoc/pkg-plist new file mode 100644 index 0000000..73b96a6 --- /dev/null +++ b/ports/x11/havoc/pkg-plist @@ -0,0 +1,2 @@ +bin/havoc +share/licenses/havoc/LICENSE diff --git a/ports/x11/libevdev/Makefile b/ports/x11/libevdev/Makefile new file mode 100644 index 0000000..c0040be --- /dev/null +++ b/ports/x11/libevdev/Makefile @@ -0,0 +1,17 @@ +PORTNAME= libevdev +PORTVERSION= 1.13.6 +CATEGORIES= x11 +MASTER_SITES= https://www.freedesktop.org/software/libevdev/ +DISTFILES= libevdev-${PORTVERSION}.tar.xz + +SOURCE_DIR= ${WRKSRC}/libevdev-${PORTVERSION} +BUILD_STYLE= meson +CONFIGURE_ARGS= -Dtests=disabled -Ddocumentation=disabled + +do-install: + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/libevdev" + install -m 0644 "${SOURCE_DIR}/COPYING" \ + "${STAGEDIR}${PREFIX}/share/licenses/libevdev/COPYING" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/x11/libevdev/distinfo b/ports/x11/libevdev/distinfo new file mode 100644 index 0000000..3c2584b --- /dev/null +++ b/ports/x11/libevdev/distinfo @@ -0,0 +1 @@ +SHA256 (libevdev-1.13.6.tar.xz) = 73f215eccbd8233f414737ac06bca2687e67c44b97d2d7576091aa9718551110 diff --git a/ports/x11/libevdev/pkg-plist b/ports/x11/libevdev/pkg-plist new file mode 100644 index 0000000..8172420 --- /dev/null +++ b/ports/x11/libevdev/pkg-plist @@ -0,0 +1,4 @@ +@tree bin +@tree include +@tree lib +@tree share diff --git a/ports/x11/libinput/Makefile b/ports/x11/libinput/Makefile new file mode 100644 index 0000000..5329a8d --- /dev/null +++ b/ports/x11/libinput/Makefile @@ -0,0 +1,22 @@ +PORTNAME= libinput +PORTVERSION= 1.31.3 +CATEGORIES= x11 +MASTER_SITES= https://gitlab.freedesktop.org/libinput/libinput/-/archive/${PORTVERSION}/ +DISTFILES= libinput-${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/libinput-${PORTVERSION} +BUILD_STYLE= meson +RUN_DEPENDS= libudev-garden:devel/libudev-garden \ + libevdev:x11/libevdev mtdev:x11/mtdev +CONFIGURE_ARGS= -Ddocumentation=false -Dlibwacom=false -Ddebug-gui=false \ + -Dtests=false -Dinstall-tests=false + +do-install: + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install + rm -rf "${STAGEDIR}${PREFIX}/bin" \ + "${STAGEDIR}${PREFIX}/libexec" + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/libinput" + install -m 0644 "${SOURCE_DIR}/COPYING" \ + "${STAGEDIR}${PREFIX}/share/licenses/libinput/COPYING" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/x11/libinput/distinfo b/ports/x11/libinput/distinfo new file mode 100644 index 0000000..d05c2af --- /dev/null +++ b/ports/x11/libinput/distinfo @@ -0,0 +1 @@ +SHA256 (libinput-1.31.3.tar.gz) = b6749bf6f1890f6631c0a70a027c35fec9d2e096a39f720548896e41474a9854 diff --git a/ports/x11/libinput/pkg-plist b/ports/x11/libinput/pkg-plist new file mode 100644 index 0000000..caa145b --- /dev/null +++ b/ports/x11/libinput/pkg-plist @@ -0,0 +1,3 @@ +@tree include +@tree lib +@tree share diff --git a/ports/x11/libxkbcommon/Makefile b/ports/x11/libxkbcommon/Makefile new file mode 100644 index 0000000..0104f67 --- /dev/null +++ b/ports/x11/libxkbcommon/Makefile @@ -0,0 +1,21 @@ +PORTNAME= libxkbcommon +PORTVERSION= 1.13.2 +CATEGORIES= x11 +MASTER_SITES= https://github.com/xkbcommon/libxkbcommon/archive/refs/tags/ +DISTFILES= xkbcommon-${PORTVERSION}.tar.gz +DIST_SOURCES= ${DISTFILES}@${MASTER_SITES}xkbcommon-${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/libxkbcommon-xkbcommon-${PORTVERSION} +BUILD_STYLE= meson +RUN_DEPENDS= xkeyboard-config:x11/xkeyboard-config +CONFIGURE_ARGS= -Denable-tools=false -Denable-x11=false -Denable-wayland=false \ + -Denable-docs=false -Denable-xkbregistry=false \ + -Denable-bash-completion=false + +do-install: + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/libxkbcommon" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/libxkbcommon/LICENSE" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/x11/libxkbcommon/distinfo b/ports/x11/libxkbcommon/distinfo new file mode 100644 index 0000000..1f4d70a --- /dev/null +++ b/ports/x11/libxkbcommon/distinfo @@ -0,0 +1 @@ +SHA256 (xkbcommon-1.13.2.tar.gz) = acc4d5f7c3cbba5f9f8d08d8bdbeede84ecede46792f47929aa9321873385528 diff --git a/ports/x11/libxkbcommon/pkg-plist b/ports/x11/libxkbcommon/pkg-plist new file mode 100644 index 0000000..caa145b --- /dev/null +++ b/ports/x11/libxkbcommon/pkg-plist @@ -0,0 +1,3 @@ +@tree include +@tree lib +@tree share diff --git a/ports/x11/mtdev/Makefile b/ports/x11/mtdev/Makefile new file mode 100644 index 0000000..f49f1a7 --- /dev/null +++ b/ports/x11/mtdev/Makefile @@ -0,0 +1,17 @@ +PORTNAME= mtdev +PORTVERSION= 1.1.7 +CATEGORIES= x11 +MASTER_SITES= https://bitmath.org/code/mtdev/ +DISTFILES= mtdev-${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/mtdev-${PORTVERSION} +BUILD_STYLE= gnu-configure +CONFIGURE_ARGS= --disable-static + +do-install: + cd "${SOURCE_DIR}" && ${GMAKE} DESTDIR="${STAGEDIR}" install + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/mtdev" + install -m 0644 "${SOURCE_DIR}/COPYING" \ + "${STAGEDIR}${PREFIX}/share/licenses/mtdev/COPYING" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/x11/mtdev/distinfo b/ports/x11/mtdev/distinfo new file mode 100644 index 0000000..f7f1eca --- /dev/null +++ b/ports/x11/mtdev/distinfo @@ -0,0 +1 @@ +SHA256 (mtdev-1.1.7.tar.gz) = a55bd02a9af4dd266c0042ec608744fff3a017577614c057da09f1f4566ea32c diff --git a/ports/x11/mtdev/pkg-plist b/ports/x11/mtdev/pkg-plist new file mode 100644 index 0000000..8172420 --- /dev/null +++ b/ports/x11/mtdev/pkg-plist @@ -0,0 +1,4 @@ +@tree bin +@tree include +@tree lib +@tree share diff --git a/ports/x11/tuigreet/Makefile b/ports/x11/tuigreet/Makefile new file mode 100644 index 0000000..372e991 --- /dev/null +++ b/ports/x11/tuigreet/Makefile @@ -0,0 +1,245 @@ +PORTNAME= tuigreet +PORTVERSION= 0.9.1 +CATEGORIES= x11 +MASTER_SITES= https://github.com/apognu/tuigreet/archive/refs/tags/ +DISTFILES= tuigreet-${PORTVERSION}.tar.gz +DIST_SOURCES= ${DISTFILES}@${MASTER_SITES}${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/tuigreet-${PORTVERSION} +BUILD_DEPENDS= rust:lang/rust +CARGO_CRATES= \ + addr2line/0.21.0 \ + adler/1.0.2 \ + ahash/0.8.11 \ + aho-corasick/1.1.3 \ + allocator-api2/0.2.18 \ + android-tzdata/0.1.1 \ + android_system_properties/0.1.5 \ + arc-swap/1.7.1 \ + async-trait/0.1.80 \ + autocfg/1.2.0 \ + backtrace/0.3.71 \ + bitflags/1.3.2 \ + bitflags/2.5.0 \ + block/0.1.6 \ + block-buffer/0.10.4 \ + bumpalo/3.16.0 \ + bytes/1.6.0 \ + cassowary/0.3.0 \ + castaway/0.2.2 \ + cc/1.0.95 \ + cfg-if/1.0.0 \ + cfg_aliases/0.1.1 \ + chrono/0.4.38 \ + compact_str/0.7.1 \ + const-random/0.1.18 \ + const-random-macro/0.1.16 \ + core-foundation-sys/0.8.6 \ + cpufeatures/0.2.12 \ + crossbeam-channel/0.5.12 \ + crossbeam-utils/0.8.19 \ + crossterm/0.27.0 \ + crossterm_winapi/0.9.1 \ + crunchy/0.2.2 \ + crypto-common/0.1.6 \ + dashmap/5.5.3 \ + deranged/0.3.11 \ + digest/0.10.7 \ + displaydoc/0.2.4 \ + dlv-list/0.5.2 \ + either/1.11.0 \ + equivalent/1.0.1 \ + find-crate/0.6.3 \ + fluent/0.16.0 \ + fluent-bundle/0.15.2 \ + fluent-langneg/0.13.0 \ + fluent-syntax/0.11.0 \ + futures/0.3.30 \ + futures-channel/0.3.30 \ + futures-core/0.3.30 \ + futures-executor/0.3.30 \ + futures-io/0.3.30 \ + futures-macro/0.3.30 \ + futures-sink/0.3.30 \ + futures-task/0.3.30 \ + futures-util/0.3.30 \ + generic-array/0.14.7 \ + getopts/0.2.21 \ + getrandom/0.2.14 \ + gimli/0.28.1 \ + greetd_ipc/0.10.0 \ + hashbrown/0.14.3 \ + heck/0.4.1 \ + hermit-abi/0.3.9 \ + i18n-config/0.4.6 \ + i18n-embed/0.14.1 \ + i18n-embed-fl/0.8.0 \ + i18n-embed-impl/0.8.3 \ + iana-time-zone/0.1.60 \ + iana-time-zone-haiku/0.1.2 \ + indexmap/2.2.6 \ + indoc/2.0.5 \ + intl-memoizer/0.5.1 \ + intl_pluralrules/7.0.2 \ + itertools/0.12.1 \ + itoa/1.0.11 \ + js-sys/0.3.69 \ + lazy_static/1.4.0 \ + libc/0.2.153 \ + locale_config/0.3.0 \ + lock_api/0.4.11 \ + log/0.4.21 \ + lru/0.12.3 \ + malloc_buf/0.0.6 \ + memchr/2.7.2 \ + miniz_oxide/0.7.2 \ + mio/0.8.11 \ + nix/0.28.0 \ + nu-ansi-term/0.46.0 \ + num-conv/0.1.0 \ + num-traits/0.2.18 \ + num_cpus/1.16.0 \ + objc/0.2.7 \ + objc-foundation/0.1.1 \ + objc_id/0.1.1 \ + object/0.32.2 \ + once_cell/1.19.0 \ + ordered-multimap/0.7.3 \ + overload/0.1.1 \ + parking_lot/0.12.1 \ + parking_lot_core/0.9.9 \ + paste/1.0.14 \ + pin-project-lite/0.2.14 \ + pin-utils/0.1.0 \ + powerfmt/0.2.0 \ + ppv-lite86/0.2.17 \ + proc-macro-error/1.0.4 \ + proc-macro-error-attr/1.0.4 \ + proc-macro2/1.0.81 \ + pure-rust-locales/0.8.1 \ + quote/1.0.36 \ + rand/0.8.5 \ + rand_chacha/0.3.1 \ + rand_core/0.6.4 \ + ratatui/0.26.2 \ + redox_syscall/0.4.1 \ + regex/1.10.4 \ + regex-automata/0.4.6 \ + regex-syntax/0.8.3 \ + rust-embed/8.3.0 \ + rust-embed-impl/8.3.0 \ + rust-embed-utils/8.3.0 \ + rust-ini/0.21.0 \ + rustc-demangle/0.1.23 \ + rustc-hash/1.1.0 \ + rustversion/1.0.15 \ + ryu/1.0.17 \ + same-file/1.0.6 \ + scopeguard/1.2.0 \ + self_cell/0.10.3 \ + self_cell/1.0.3 \ + serde/1.0.198 \ + serde_derive/1.0.198 \ + serde_json/1.0.116 \ + serde_spanned/0.6.5 \ + sha2/0.10.8 \ + sharded-slab/0.1.7 \ + signal-hook/0.3.17 \ + signal-hook-mio/0.2.3 \ + signal-hook-registry/1.4.2 \ + slab/0.4.9 \ + smallvec/1.13.2 \ + smart-default/0.7.1 \ + smawk/0.3.2 \ + socket2/0.5.6 \ + stability/0.2.0 \ + static_assertions/1.1.0 \ + strsim/0.10.0 \ + strum/0.26.2 \ + strum_macros/0.26.2 \ + syn/1.0.109 \ + syn/2.0.60 \ + textwrap/0.16.1 \ + thiserror/1.0.59 \ + thiserror-impl/1.0.59 \ + thread_local/1.1.8 \ + time/0.3.36 \ + time-core/0.1.2 \ + time-macros/0.2.18 \ + tiny-keccak/2.0.2 \ + tinystr/0.7.5 \ + tokio/1.37.0 \ + tokio-macros/2.2.0 \ + toml/0.5.11 \ + toml/0.8.12 \ + toml_datetime/0.6.5 \ + toml_edit/0.22.12 \ + tracing/0.1.40 \ + tracing-appender/0.2.3 \ + tracing-attributes/0.1.27 \ + tracing-core/0.1.32 \ + tracing-log/0.2.0 \ + tracing-subscriber/0.3.18 \ + trim-in-place/0.1.7 \ + type-map/0.4.0 \ + typenum/1.17.0 \ + unic-langid/0.9.4 \ + unic-langid-impl/0.9.4 \ + unicode-ident/1.0.12 \ + unicode-linebreak/0.1.5 \ + unicode-segmentation/1.11.0 \ + unicode-width/0.1.11 \ + uzers/0.12.0 \ + valuable/0.1.0 \ + version_check/0.9.4 \ + walkdir/2.5.0 \ + wasi/0.11.0+wasi-snapshot-preview1 \ + wasm-bindgen/0.2.92 \ + wasm-bindgen-backend/0.2.92 \ + wasm-bindgen-macro/0.2.92 \ + wasm-bindgen-macro-support/0.2.92 \ + wasm-bindgen-shared/0.2.92 \ + winapi/0.3.9 \ + winapi-i686-pc-windows-gnu/0.4.0 \ + winapi-util/0.1.7 \ + winapi-x86_64-pc-windows-gnu/0.4.0 \ + windows-core/0.52.0 \ + windows-sys/0.48.0 \ + windows-sys/0.52.0 \ + windows-targets/0.48.5 \ + windows-targets/0.52.5 \ + windows_aarch64_gnullvm/0.48.5 \ + windows_aarch64_gnullvm/0.52.5 \ + windows_aarch64_msvc/0.48.5 \ + windows_aarch64_msvc/0.52.5 \ + windows_i686_gnu/0.48.5 \ + windows_i686_gnu/0.52.5 \ + windows_i686_gnullvm/0.52.5 \ + windows_i686_msvc/0.48.5 \ + windows_i686_msvc/0.52.5 \ + windows_x86_64_gnu/0.48.5 \ + windows_x86_64_gnu/0.52.5 \ + windows_x86_64_gnullvm/0.48.5 \ + windows_x86_64_gnullvm/0.52.5 \ + windows_x86_64_msvc/0.48.5 \ + windows_x86_64_msvc/0.52.5 \ + winnow/0.6.6 \ + zerocopy/0.7.32 \ + zerocopy-derive/0.7.32 \ + zeroize/1.7.0 + +do-build: + cd "${SOURCE_DIR}" && env CARGO_HOME="${WRKDIR}/cargo-home" \ + cargo rustc --offline --locked --release \ + --bin tuigreet -- -C target-feature=+crt-static + +do-install: + mkdir -p \ + "${STAGEDIR}${PREFIX}/bin" \ + "${STAGEDIR}${PREFIX}/share/licenses/tuigreet" + install -m 0755 "${SOURCE_DIR}/target/release/tuigreet" \ + "${STAGEDIR}${PREFIX}/bin/tuigreet" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/tuigreet/LICENSE" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/x11/tuigreet/distinfo b/ports/x11/tuigreet/distinfo new file mode 100644 index 0000000..beb223b --- /dev/null +++ b/ports/x11/tuigreet/distinfo @@ -0,0 +1,220 @@ +SHA256 (tuigreet-0.9.1.tar.gz) = 14fd1fadeb84040eb31901da2b53a48aa55b0fdaccb36d96fa52ce2d2113667f +SHA256 (addr2line-0.21.0.crate) = 8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb +SHA256 (adler-1.0.2.crate) = f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe +SHA256 (ahash-0.8.11.crate) = e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011 +SHA256 (aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916 +SHA256 (allocator-api2-0.2.18.crate) = 5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f +SHA256 (android-tzdata-0.1.1.crate) = e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0 +SHA256 (android_system_properties-0.1.5.crate) = 819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311 +SHA256 (arc-swap-1.7.1.crate) = 69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457 +SHA256 (async-trait-0.1.80.crate) = c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca +SHA256 (autocfg-1.2.0.crate) = f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80 +SHA256 (backtrace-0.3.71.crate) = 26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d +SHA256 (bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a +SHA256 (bitflags-2.5.0.crate) = cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1 +SHA256 (block-0.1.6.crate) = 0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a +SHA256 (block-buffer-0.10.4.crate) = 3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71 +SHA256 (bumpalo-3.16.0.crate) = 79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c +SHA256 (bytes-1.6.0.crate) = 514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9 +SHA256 (cassowary-0.3.0.crate) = df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53 +SHA256 (castaway-0.2.2.crate) = 8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc +SHA256 (cc-1.0.95.crate) = d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b +SHA256 (cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd +SHA256 (cfg_aliases-0.1.1.crate) = fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e +SHA256 (chrono-0.4.38.crate) = a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401 +SHA256 (compact_str-0.7.1.crate) = f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f +SHA256 (const-random-0.1.18.crate) = 87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359 +SHA256 (const-random-macro-0.1.16.crate) = f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e +SHA256 (core-foundation-sys-0.8.6.crate) = 06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f +SHA256 (cpufeatures-0.2.12.crate) = 53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504 +SHA256 (crossbeam-channel-0.5.12.crate) = ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95 +SHA256 (crossbeam-utils-0.8.19.crate) = 248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345 +SHA256 (crossterm-0.27.0.crate) = f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df +SHA256 (crossterm_winapi-0.9.1.crate) = acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b +SHA256 (crunchy-0.2.2.crate) = 7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7 +SHA256 (crypto-common-0.1.6.crate) = 1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3 +SHA256 (dashmap-5.5.3.crate) = 978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856 +SHA256 (deranged-0.3.11.crate) = b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4 +SHA256 (digest-0.10.7.crate) = 9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292 +SHA256 (displaydoc-0.2.4.crate) = 487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d +SHA256 (dlv-list-0.5.2.crate) = 442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f +SHA256 (either-1.11.0.crate) = a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2 +SHA256 (equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5 +SHA256 (find-crate-0.6.3.crate) = 59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2 +SHA256 (fluent-0.16.0.crate) = 61f69378194459db76abd2ce3952b790db103ceb003008d3d50d97c41ff847a7 +SHA256 (fluent-bundle-0.15.2.crate) = e242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffd +SHA256 (fluent-langneg-0.13.0.crate) = 2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94 +SHA256 (fluent-syntax-0.11.0.crate) = c0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78 +SHA256 (futures-0.3.30.crate) = 645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0 +SHA256 (futures-channel-0.3.30.crate) = eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78 +SHA256 (futures-core-0.3.30.crate) = dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d +SHA256 (futures-executor-0.3.30.crate) = a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d +SHA256 (futures-io-0.3.30.crate) = a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1 +SHA256 (futures-macro-0.3.30.crate) = 87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac +SHA256 (futures-sink-0.3.30.crate) = 9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5 +SHA256 (futures-task-0.3.30.crate) = 38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004 +SHA256 (futures-util-0.3.30.crate) = 3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48 +SHA256 (generic-array-0.14.7.crate) = 85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a +SHA256 (getopts-0.2.21.crate) = 14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5 +SHA256 (getrandom-0.2.14.crate) = 94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c +SHA256 (gimli-0.28.1.crate) = 4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253 +SHA256 (greetd_ipc-0.10.0.crate) = 1600ad23798daf53f5c336ebca8a7c603696ef4455103e9c713fab574131eb35 +SHA256 (hashbrown-0.14.3.crate) = 290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604 +SHA256 (heck-0.4.1.crate) = 95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8 +SHA256 (hermit-abi-0.3.9.crate) = d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024 +SHA256 (i18n-config-0.4.6.crate) = 0c9ce3c48cbc21fd5b22b9331f32b5b51f6ad85d969b99e793427332e76e7640 +SHA256 (i18n-embed-0.14.1.crate) = 94205d95764f5bb9db9ea98fa77f89653365ca748e27161f5bbea2ffd50e459c +SHA256 (i18n-embed-fl-0.8.0.crate) = 8241a781f49e923415e106fcd1f89c3fab92cc9f699a521c56e95dee273903d3 +SHA256 (i18n-embed-impl-0.8.3.crate) = 81093c4701672f59416582fe3145676126fd23ba5db910acad0793c1108aaa58 +SHA256 (iana-time-zone-0.1.60.crate) = e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141 +SHA256 (iana-time-zone-haiku-0.1.2.crate) = f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f +SHA256 (indexmap-2.2.6.crate) = 168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26 +SHA256 (indoc-2.0.5.crate) = b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5 +SHA256 (intl-memoizer-0.5.1.crate) = c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f +SHA256 (intl_pluralrules-7.0.2.crate) = 078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972 +SHA256 (itertools-0.12.1.crate) = ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569 +SHA256 (itoa-1.0.11.crate) = 49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b +SHA256 (js-sys-0.3.69.crate) = 29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d +SHA256 (lazy_static-1.4.0.crate) = e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646 +SHA256 (libc-0.2.153.crate) = 9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd +SHA256 (locale_config-0.3.0.crate) = 08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934 +SHA256 (lock_api-0.4.11.crate) = 3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45 +SHA256 (log-0.4.21.crate) = 90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c +SHA256 (lru-0.12.3.crate) = d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc +SHA256 (malloc_buf-0.0.6.crate) = 62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb +SHA256 (memchr-2.7.2.crate) = 6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d +SHA256 (miniz_oxide-0.7.2.crate) = 9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7 +SHA256 (mio-0.8.11.crate) = a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c +SHA256 (nix-0.28.0.crate) = ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4 +SHA256 (nu-ansi-term-0.46.0.crate) = 77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84 +SHA256 (num-conv-0.1.0.crate) = 51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9 +SHA256 (num-traits-0.2.18.crate) = da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a +SHA256 (num_cpus-1.16.0.crate) = 4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43 +SHA256 (objc-0.2.7.crate) = 915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1 +SHA256 (objc-foundation-0.1.1.crate) = 1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9 +SHA256 (objc_id-0.1.1.crate) = c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b +SHA256 (object-0.32.2.crate) = a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441 +SHA256 (once_cell-1.19.0.crate) = 3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92 +SHA256 (ordered-multimap-0.7.3.crate) = 49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79 +SHA256 (overload-0.1.1.crate) = b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39 +SHA256 (parking_lot-0.12.1.crate) = 3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f +SHA256 (parking_lot_core-0.9.9.crate) = 4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e +SHA256 (paste-1.0.14.crate) = de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c +SHA256 (pin-project-lite-0.2.14.crate) = bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02 +SHA256 (pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184 +SHA256 (powerfmt-0.2.0.crate) = 439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391 +SHA256 (ppv-lite86-0.2.17.crate) = 5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de +SHA256 (proc-macro-error-1.0.4.crate) = da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c +SHA256 (proc-macro-error-attr-1.0.4.crate) = a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869 +SHA256 (proc-macro2-1.0.81.crate) = 3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba +SHA256 (pure-rust-locales-0.8.1.crate) = 1190fd18ae6ce9e137184f207593877e70f39b015040156b1e05081cdfe3733a +SHA256 (quote-1.0.36.crate) = 0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7 +SHA256 (rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404 +SHA256 (rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88 +SHA256 (rand_core-0.6.4.crate) = ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c +SHA256 (ratatui-0.26.2.crate) = a564a852040e82671dc50a37d88f3aa83bbc690dfc6844cfe7a2591620206a80 +SHA256 (redox_syscall-0.4.1.crate) = 4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa +SHA256 (regex-1.10.4.crate) = c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c +SHA256 (regex-automata-0.4.6.crate) = 86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea +SHA256 (regex-syntax-0.8.3.crate) = adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56 +SHA256 (rust-embed-8.3.0.crate) = fb78f46d0066053d16d4ca7b898e9343bc3530f71c61d5ad84cd404ada068745 +SHA256 (rust-embed-impl-8.3.0.crate) = b91ac2a3c6c0520a3fb3dd89321177c3c692937c4eb21893378219da10c44fc8 +SHA256 (rust-embed-utils-8.3.0.crate) = 86f69089032567ffff4eada41c573fc43ff466c7db7c5688b2e7969584345581 +SHA256 (rust-ini-0.21.0.crate) = 0d625ed57d8f49af6cfa514c42e1a71fadcff60eb0b1c517ff82fe41aa025b41 +SHA256 (rustc-demangle-0.1.23.crate) = d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76 +SHA256 (rustc-hash-1.1.0.crate) = 08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2 +SHA256 (rustversion-1.0.15.crate) = 80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47 +SHA256 (ryu-1.0.17.crate) = e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1 +SHA256 (same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502 +SHA256 (scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49 +SHA256 (self_cell-0.10.3.crate) = e14e4d63b804dc0c7ec4a1e52bcb63f02c7ac94476755aa579edac21e01f915d +SHA256 (self_cell-1.0.3.crate) = 58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba +SHA256 (serde-1.0.198.crate) = 9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc +SHA256 (serde_derive-1.0.198.crate) = e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9 +SHA256 (serde_json-1.0.116.crate) = 3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813 +SHA256 (serde_spanned-0.6.5.crate) = eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1 +SHA256 (sha2-0.10.8.crate) = 793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8 +SHA256 (sharded-slab-0.1.7.crate) = f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6 +SHA256 (signal-hook-0.3.17.crate) = 8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801 +SHA256 (signal-hook-mio-0.2.3.crate) = 29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af +SHA256 (signal-hook-registry-1.4.2.crate) = a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1 +SHA256 (slab-0.4.9.crate) = 8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67 +SHA256 (smallvec-1.13.2.crate) = 3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67 +SHA256 (smart-default-0.7.1.crate) = 0eb01866308440fc64d6c44d9e86c5cc17adfe33c4d6eed55da9145044d0ffc1 +SHA256 (smawk-0.3.2.crate) = b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c +SHA256 (socket2-0.5.6.crate) = 05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871 +SHA256 (stability-0.2.0.crate) = 2ff9eaf853dec4c8802325d8b6d3dffa86cc707fd7a1a4cdbf416e13b061787a +SHA256 (static_assertions-1.1.0.crate) = a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f +SHA256 (strsim-0.10.0.crate) = 73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623 +SHA256 (strum-0.26.2.crate) = 5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29 +SHA256 (strum_macros-0.26.2.crate) = c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946 +SHA256 (syn-1.0.109.crate) = 72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237 +SHA256 (syn-2.0.60.crate) = 909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3 +SHA256 (textwrap-0.16.1.crate) = 23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9 +SHA256 (thiserror-1.0.59.crate) = f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa +SHA256 (thiserror-impl-1.0.59.crate) = d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66 +SHA256 (thread_local-1.1.8.crate) = 8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c +SHA256 (time-0.3.36.crate) = 5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885 +SHA256 (time-core-0.1.2.crate) = ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3 +SHA256 (time-macros-0.2.18.crate) = 3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf +SHA256 (tiny-keccak-2.0.2.crate) = 2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237 +SHA256 (tinystr-0.7.5.crate) = 83c02bf3c538ab32ba913408224323915f4ef9a6d61c0e85d493f355921c0ece +SHA256 (tokio-1.37.0.crate) = 1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787 +SHA256 (tokio-macros-2.2.0.crate) = 5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b +SHA256 (toml-0.5.11.crate) = f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234 +SHA256 (toml-0.8.12.crate) = e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3 +SHA256 (toml_datetime-0.6.5.crate) = 3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1 +SHA256 (toml_edit-0.22.12.crate) = d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef +SHA256 (tracing-0.1.40.crate) = c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef +SHA256 (tracing-appender-0.2.3.crate) = 3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf +SHA256 (tracing-attributes-0.1.27.crate) = 34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7 +SHA256 (tracing-core-0.1.32.crate) = c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54 +SHA256 (tracing-log-0.2.0.crate) = ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3 +SHA256 (tracing-subscriber-0.3.18.crate) = ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b +SHA256 (trim-in-place-0.1.7.crate) = 343e926fc669bc8cde4fa3129ab681c63671bae288b1f1081ceee6d9d37904fc +SHA256 (type-map-0.4.0.crate) = b6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46 +SHA256 (typenum-1.17.0.crate) = 42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825 +SHA256 (unic-langid-0.9.4.crate) = 238722e6d794ed130f91f4ea33e01fcff4f188d92337a21297892521c72df516 +SHA256 (unic-langid-impl-0.9.4.crate) = 4bd55a2063fdea4ef1f8633243a7b0524cbeef1905ae04c31a1c9b9775c55bc6 +SHA256 (unicode-ident-1.0.12.crate) = 3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b +SHA256 (unicode-linebreak-0.1.5.crate) = 3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f +SHA256 (unicode-segmentation-1.11.0.crate) = d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202 +SHA256 (unicode-width-0.1.11.crate) = e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85 +SHA256 (uzers-0.12.0.crate) = 7d85875e16d59b3b1549efce83ff8251a64923b03bef94add0a1862847448de4 +SHA256 (valuable-0.1.0.crate) = 830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d +SHA256 (version_check-0.9.4.crate) = 49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f +SHA256 (walkdir-2.5.0.crate) = 29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b +SHA256 (wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423 +SHA256 (wasm-bindgen-0.2.92.crate) = 4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8 +SHA256 (wasm-bindgen-backend-0.2.92.crate) = 614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da +SHA256 (wasm-bindgen-macro-0.2.92.crate) = a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726 +SHA256 (wasm-bindgen-macro-support-0.2.92.crate) = e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7 +SHA256 (wasm-bindgen-shared-0.2.92.crate) = af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96 +SHA256 (winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419 +SHA256 (winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6 +SHA256 (winapi-util-0.1.7.crate) = 134306a13c5647ad6453e8deaec55d3a44d6021970129e6188735e74bf546697 +SHA256 (winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f +SHA256 (windows-core-0.52.0.crate) = 33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9 +SHA256 (windows-sys-0.48.0.crate) = 677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9 +SHA256 (windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d +SHA256 (windows-targets-0.48.5.crate) = 9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c +SHA256 (windows-targets-0.52.5.crate) = 6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb +SHA256 (windows_aarch64_gnullvm-0.48.5.crate) = 2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8 +SHA256 (windows_aarch64_gnullvm-0.52.5.crate) = 7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263 +SHA256 (windows_aarch64_msvc-0.48.5.crate) = dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc +SHA256 (windows_aarch64_msvc-0.52.5.crate) = 9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6 +SHA256 (windows_i686_gnu-0.48.5.crate) = a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e +SHA256 (windows_i686_gnu-0.52.5.crate) = 88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670 +SHA256 (windows_i686_gnullvm-0.52.5.crate) = 87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9 +SHA256 (windows_i686_msvc-0.48.5.crate) = 8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406 +SHA256 (windows_i686_msvc-0.52.5.crate) = db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf +SHA256 (windows_x86_64_gnu-0.48.5.crate) = 53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e +SHA256 (windows_x86_64_gnu-0.52.5.crate) = 4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9 +SHA256 (windows_x86_64_gnullvm-0.48.5.crate) = 0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc +SHA256 (windows_x86_64_gnullvm-0.52.5.crate) = 852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596 +SHA256 (windows_x86_64_msvc-0.48.5.crate) = ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538 +SHA256 (windows_x86_64_msvc-0.52.5.crate) = bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0 +SHA256 (winnow-0.6.6.crate) = f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352 +SHA256 (zerocopy-0.7.32.crate) = 74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be +SHA256 (zerocopy-derive-0.7.32.crate) = 9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6 +SHA256 (zeroize-1.7.0.crate) = 525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d diff --git a/ports/x11/tuigreet/pkg-plist b/ports/x11/tuigreet/pkg-plist new file mode 100644 index 0000000..5baa7d4 --- /dev/null +++ b/ports/x11/tuigreet/pkg-plist @@ -0,0 +1,2 @@ +bin/tuigreet +share/licenses/tuigreet/LICENSE diff --git a/ports/x11/wlroots/Makefile b/ports/x11/wlroots/Makefile new file mode 100644 index 0000000..79350ef --- /dev/null +++ b/ports/x11/wlroots/Makefile @@ -0,0 +1,29 @@ +PORTNAME= wlroots +PORTVERSION= 0.19.3 +CATEGORIES= x11 +MASTER_SITES= https://gitlab.freedesktop.org/wlroots/wlroots/-/archive/${PORTVERSION}/ +DISTFILES= wlroots-${PORTVERSION}.tar.gz + +SOURCE_DIR= ${WRKSRC}/wlroots-${PORTVERSION} +BUILD_STYLE= meson +RUN_DEPENDS= libudev-garden:devel/libudev-garden \ + seatd:sysutils/seatd \ + wayland:graphics/wayland \ + wayland-protocols:graphics/wayland-protocols \ + libdrm:graphics/libdrm \ + hwdata:misc/hwdata \ + libdisplay-info:graphics/libdisplay-info \ + libinput:x11/libinput \ + libxkbcommon:x11/libxkbcommon \ + pixman:graphics/pixman +CONFIGURE_ARGS= -Dbackends=drm,libinput -Drenderers=[] -Dallocators=[] \ + -Dsession=enabled -Dxwayland=disabled -Dexamples=false \ + -Dcolor-management=disabled -Dlibliftoff=disabled + +do-install: + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/wlroots" + install -m 0644 "${SOURCE_DIR}/LICENSE" \ + "${STAGEDIR}${PREFIX}/share/licenses/wlroots/LICENSE" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/x11/wlroots/distinfo b/ports/x11/wlroots/distinfo new file mode 100644 index 0000000..58cad6a --- /dev/null +++ b/ports/x11/wlroots/distinfo @@ -0,0 +1 @@ +SHA256 (wlroots-0.19.3.tar.gz) = a6ff89b64ea15e424d1b0db4a22145fccf5ec2ff2e7b8af0fa35e2ac8975986f diff --git a/ports/x11/wlroots/pkg-plist b/ports/x11/wlroots/pkg-plist new file mode 100644 index 0000000..caa145b --- /dev/null +++ b/ports/x11/wlroots/pkg-plist @@ -0,0 +1,3 @@ +@tree include +@tree lib +@tree share diff --git a/ports/x11/xkeyboard-config/Makefile b/ports/x11/xkeyboard-config/Makefile new file mode 100644 index 0000000..9262a7c --- /dev/null +++ b/ports/x11/xkeyboard-config/Makefile @@ -0,0 +1,18 @@ +PORTNAME= xkeyboard-config +PORTVERSION= 2.48 +CATEGORIES= x11 +MASTER_SITES= https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/archive/xkeyboard-config-${PORTVERSION}/ +DISTFILES= xkeyboard-config-${PORTVERSION}.tar.gz + +GIT_COMMIT= cf8d1151bb4c9ef5b895828d0e6dd7860c0833e0 +SOURCE_DIR= ${WRKSRC}/xkeyboard-config-xkeyboard-config-${PORTVERSION}-${GIT_COMMIT} +BUILD_STYLE= meson +CONFIGURE_ARGS= -Dnls=false + +do-install: + env DESTDIR="${STAGEDIR}" ${NINJA} -C "${BUILD_DIR}" install + mkdir -p "${STAGEDIR}${PREFIX}/share/licenses/xkeyboard-config" + install -m 0644 "${SOURCE_DIR}/COPYING" \ + "${STAGEDIR}${PREFIX}/share/licenses/xkeyboard-config/COPYING" + +.include "${.PARSEDIR}/../../Mk/mouse.port.mk" diff --git a/ports/x11/xkeyboard-config/distinfo b/ports/x11/xkeyboard-config/distinfo new file mode 100644 index 0000000..63562ac --- /dev/null +++ b/ports/x11/xkeyboard-config/distinfo @@ -0,0 +1 @@ +SHA256 (xkeyboard-config-2.48.tar.gz) = 5f6dd3ad8ddeae8f9837ed07c6e58873ed166f8da92d473fba285d0c98a14f13 diff --git a/ports/x11/xkeyboard-config/pkg-plist b/ports/x11/xkeyboard-config/pkg-plist new file mode 100644 index 0000000..08b4089 --- /dev/null +++ b/ports/x11/xkeyboard-config/pkg-plist @@ -0,0 +1 @@ +@tree share diff --git a/tests/check-layout.sh b/tests/check-layout.sh index 390e8aa..521c60c 100755 --- a/tests/check-layout.sh +++ b/tests/check-layout.sh @@ -6,9 +6,21 @@ root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd) [ -f "$root/ports/Mk/mouse.port.mk" ] [ -x "$root/ports/Mk/Scripts/check-plist.sh" ] [ -x "$root/ports/Mk/Scripts/checksum.sh" ] +[ -x "$root/ports/Mk/Scripts/checksum-cargo.sh" ] [ -x "$root/ports/Mk/Scripts/fetch.sh" ] +[ -x "$root/ports/Mk/Scripts/fetch-cargo.sh" ] [ -x "$root/ports/Mk/Scripts/install-depends.sh" ] [ -x "$root/ports/Mk/Scripts/package.sh" ] +[ -x "$root/ports/Mk/Scripts/vendor-cargo.sh" ] + +if grep -REn '(^|[[:space:]])make[[:space:]]+-C' "$root/ports/Mk"; then + printf '%s\n' "ports infrastructure must recurse with bmake" >&2 + exit 1 +fi + +grep -Fq 'BMAKE?=' "$root/ports/Mk/mouse.port.mk" +grep -Fq '"$bmake" -C "$portsdir/$origin" install' \ + "$root/ports/Mk/Scripts/install-depends.sh" find "$root/ports" -mindepth 2 -maxdepth 2 -type d \ ! -path "$root/ports/Mk/*" -print |