Add bmake ports for a minimal Wayland desktop

This commit is contained in:
Michal S.
2026-08-06 10:26:36 +01:00
parent 06c4008c68
commit d7bce4403e
89 changed files with 2143 additions and 29 deletions
+2
View File
@@ -0,0 +1,2 @@
*.patch -whitespace
ports/**/files/patch-* -whitespace
+22 -14
View File
@@ -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
```
+22
View File
@@ -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
+36
View File
@@ -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
+4 -1
View File
@@ -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
+48
View File
@@ -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
+72 -3
View File
@@ -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"
+10 -4
View File
@@ -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
+25 -1
View File
@@ -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"
+37
View File
@@ -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"
+91 -4
View File
@@ -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
+9 -2
View File
@@ -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.
+49
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (zstd-1.5.7.tar.gz) = eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3
+13
View File
@@ -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
+35
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (bmake-20240909.tar.gz) = d4e019e26c64cc8ffcf1cae9bb04fbb13da8fa6f41fb30fd26e221f655d4e84d
+94
View File
@@ -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
+33
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (make-4.4.1.tar.gz) = dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3
@@ -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);
+3
View File
@@ -0,0 +1,3 @@
bin/gmake
share/licenses/gmake/COPYING
share/man/man1/gmake.1
+16
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (libffi-3.5.2.tar.gz) = f3a3082a23b37c293a4fcd1053147b371f2ff91fa7ea1b2a52e335676bac82dc
+3
View File
@@ -0,0 +1,3 @@
@tree include
@tree lib
@tree share
+20
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (libudev-garden-04fc426c9f772c01db1655c80c150280b8034fd6.tar) = d7e3ebeb8856fc661b9c92075e3598ee1f1951873766f78122186d9241b70b1c
+5
View File
@@ -0,0 +1,5 @@
include/libudev.h
lib/libudev.so
lib/libudev.so.1
share/licenses/libudev-garden/LICENSE
share/pkgconfig/libudev.pc
+18
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (libdisplay-info-0.3.0.tar.gz) = 2b467e3336aec63819d6aca28d7310d3dc7415b2b3a3c3a5aec9d3727053c078
+3
View File
@@ -0,0 +1,3 @@
@tree include
@tree lib
@tree share
+16
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (libdrm-2.4.134.tar.gz) = 28af861f62e7a2c3a48c5ff2ad4d01cf440a419f7f877de5caa7f73d3afa5367
+2
View File
@@ -0,0 +1,2 @@
@tree include
@tree lib
+17
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (pixman-0.46.4.tar.xz) = a098c33924754ad43f981b740f6d576c70f9ed1006e12221b1845431ebce1239
+3
View File
@@ -0,0 +1,3 @@
@tree include
@tree lib
@tree share
+17
View File
@@ -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"
@@ -0,0 +1 @@
SHA256 (wayland-protocols-1.49.tar.xz) = ec4c8f74942d6dff7ace8b4ce4764f0ef9ff618a935d974ea77edee2ad240b14
@@ -0,0 +1 @@
@tree share
+18
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (wayland-1.25.0.tar.xz) = c065f040afdff3177680600f249727e41a1afc22fccf27222f15f5306faa1f03
+4
View File
@@ -0,0 +1,4 @@
@tree bin
@tree include
@tree lib
@tree share
+28
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (hwdata-0.409.tar.gz) = 23006accc0f931dd5187d0307a57d0744e2b8feb85e73c37bc0f5229fb31eadd
+2
View File
@@ -0,0 +1,2 @@
@tree lib
@tree share
+93
View File
@@ -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"
+60
View File
@@ -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
+6
View File
@@ -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"
+26
View File
@@ -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"
@@ -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<std::io::Error> for Error {
}
}
-impl From<crate::pam::PamError> for Error {
- fn from(error: crate::pam::PamError) -> Self {
- Error::AuthError(error.to_string())
- }
-}
-
impl From<greetd_ipc::codec::Error> 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<bool> {
+ 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::<Result<Vec<_>, _>>()?;
- // 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(())
}
+4
View File
@@ -0,0 +1,4 @@
etc/greetd/config.toml
etc/rc.d/greetd
sbin/greetd
share/licenses/greetd/LICENSE
+25
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (seatd-0.9.3.tar.gz) = 302564d54d8e28191fadfd734f2675ecb0c9e0615a58011b89ef15dfa4dbaa96
+12
View File
@@ -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"
+8
View File
@@ -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
+17
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (expat-2.8.2.tar.xz) = 3ad89b8588e6644bd4e49981480d48b21289eebbcd4f0a1a4afb1c29f99b6ab4
+4
View File
@@ -0,0 +1,4 @@
@tree bin
@tree include
@tree lib
@tree share
+28
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (dwl-9b11a49cb757b80f8589088b487b5f1e56643aa1.tar.gz) = a80cc39794a17b9753349496e2cb127f1de22eb179d78f2c22ef647f2643a654
+12
View File
@@ -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
+15
View File
@@ -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} },
+5
View File
@@ -0,0 +1,5 @@
bin/dwl
bin/mouse-dwl-session
share/licenses/dwl/LICENSE
share/man/man1/dwl.1
share/wayland-sessions/dwl.desktop
+27
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (havoc-e9fd7e2623371338566432d6408267747dbf5146.tar) = 387844d919de6671c812d54eae52547e6acee9b7cd7818f2d22d53dbd6b66b42
+2
View File
@@ -0,0 +1,2 @@
bin/havoc
share/licenses/havoc/LICENSE
+17
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (libevdev-1.13.6.tar.xz) = 73f215eccbd8233f414737ac06bca2687e67c44b97d2d7576091aa9718551110
+4
View File
@@ -0,0 +1,4 @@
@tree bin
@tree include
@tree lib
@tree share
+22
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (libinput-1.31.3.tar.gz) = b6749bf6f1890f6631c0a70a027c35fec9d2e096a39f720548896e41474a9854
+3
View File
@@ -0,0 +1,3 @@
@tree include
@tree lib
@tree share
+21
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (xkbcommon-1.13.2.tar.gz) = acc4d5f7c3cbba5f9f8d08d8bdbeede84ecede46792f47929aa9321873385528
+3
View File
@@ -0,0 +1,3 @@
@tree include
@tree lib
@tree share
+17
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (mtdev-1.1.7.tar.gz) = a55bd02a9af4dd266c0042ec608744fff3a017577614c057da09f1f4566ea32c
+4
View File
@@ -0,0 +1,4 @@
@tree bin
@tree include
@tree lib
@tree share
+245
View File
@@ -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"
+220
View File
@@ -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
+2
View File
@@ -0,0 +1,2 @@
bin/tuigreet
share/licenses/tuigreet/LICENSE
+29
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (wlroots-0.19.3.tar.gz) = a6ff89b64ea15e424d1b0db4a22145fccf5ec2ff2e7b8af0fa35e2ac8975986f
+3
View File
@@ -0,0 +1,3 @@
@tree include
@tree lib
@tree share
+18
View File
@@ -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"
+1
View File
@@ -0,0 +1 @@
SHA256 (xkeyboard-config-2.48.tar.gz) = 5f6dd3ad8ddeae8f9837ed07c6e58873ed166f8da92d473fba285d0c98a14f13
+1
View File
@@ -0,0 +1 @@
@tree share
+12
View File
@@ -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 |