From 079e593d72fe43ee1c7ecf6834bb04da04c4c5ff Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 14 Jan 2023 18:53:47 +0000 Subject: evdev-proto: init at 6.0 FreeBSD implements Linux's evdev API, but doesn't come with headers for it. Instead, the Linux headers are just modified to be suitable for FreeBSD, via a port called evdev-proto. I don't want to copy the complicated sed expressions from the port into Nixpkgs, so instead we just build and install the port inside a Nix derivation. --- pkgs/os-specific/bsd/freebsd/default.nix | 7 ++- .../bsd/freebsd/evdev-proto/default.nix | 64 ++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 pkgs/os-specific/bsd/freebsd/evdev-proto/default.nix diff --git a/pkgs/os-specific/bsd/freebsd/default.nix b/pkgs/os-specific/bsd/freebsd/default.nix index cf68746898d..e7252ab35e6 100644 --- a/pkgs/os-specific/bsd/freebsd/default.nix +++ b/pkgs/os-specific/bsd/freebsd/default.nix @@ -2,7 +2,7 @@ , makeScopeWithSplicing, generateSplicesForMkScope , buildPackages , bsdSetupHook, makeSetupHook -, fetchgit, fetchurl, coreutils, groff, mandoc, byacc, flex, which, m4, gawk, substituteAll, runtimeShell +, fetchgit, fetchzip, coreutils, groff, mandoc, byacc, flex, which, m4, gawk, substituteAll, runtimeShell , zlib, expat, libmd , runCommand, writeShellScript, writeText, symlinkJoin }: @@ -75,6 +75,11 @@ in makeScopeWithSplicing in { inherit freebsdSrc; + ports = fetchzip { + url = "https://cgit.freebsd.org/ports/snapshot/ports-dde3b2b456c3a4bdd217d0bf3684231cc3724a0a.tar.gz"; + sha256 = "BpHqJfnGOeTE7tkFJBx0Wk8ryalmf4KNTit/Coh026E="; + }; + # Why do we have splicing and yet do `nativeBuildInputs = with self; ...`? # See note in ../netbsd/default.nix. diff --git a/pkgs/os-specific/bsd/freebsd/evdev-proto/default.nix b/pkgs/os-specific/bsd/freebsd/evdev-proto/default.nix new file mode 100644 index 00000000000..3c3dcb6d5d6 --- /dev/null +++ b/pkgs/os-specific/bsd/freebsd/evdev-proto/default.nix @@ -0,0 +1,64 @@ +{ lib, stdenv, linuxHeaders, freebsd, runCommandCC, buildPackages }: + +stdenv.mkDerivation { + pname = "evdev-proto"; + inherit (linuxHeaders) version; + + src = freebsd.ports; + + sourceRoot = "source/devel/evdev-proto"; + + useTempPrefix = true; + + nativeBuildInputs = [ freebsd.makeMinimal ]; + + ARCH = freebsd.makeMinimal.MACHINE_ARCH; + OPSYS = "FreeBSD"; + _OSRELEASE = "${lib.versions.majorMinor freebsd.makeMinimal.version}-RELEASE"; + + AWK = "awk"; + CHMOD = "chmod"; + FIND = "find"; + MKDIR = "mkdir -p"; + PKG_BIN = "${buildPackages.pkg}/bin/pkg"; + RM = "rm -f"; + SED = "${buildPackages.freebsd.sed}/bin/sed"; + SETENV = "env"; + SH = "sh"; + TOUCH = "touch"; + XARGS = "xargs"; + + ABI_FILE = runCommandCC "abifile" {} "$CC -shared -o $out"; + CLEAN_FETCH_ENV = true; + INSTALL_AS_USER = true; + NO_CHECKSUM = true; + NO_MTREE = true; + SRC_BASE = freebsd.freebsdSrc; + + preUnpack = '' + export MAKE_JOBS_NUMBER="$NIX_BUILD_CORES" + + export DISTDIR="$PWD/distfiles" + export PKG_DBDIR="$PWD/pkg" + export PREFIX="$prefix" + + mkdir -p "$DISTDIR/evdev-proto" + tar -C "$DISTDIR/evdev-proto" \ + -xf ${linuxHeaders.src} \ + --strip-components 4 \ + linux-${linuxHeaders.version}/include/uapi/linux + ''; + + makeFlags = [ "DIST_SUBDIR=evdev-proto" ]; + + postInstall = '' + mv $prefix $out + ''; + + meta = with lib; { + description = "Input event device header files for FreeBSD"; + maintainers = with maintainers; [ qyliss ]; + platforms = platforms.freebsd; + license = licenses.gpl2Only; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6f913f0f7c8..cc2e2233ae1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -25422,6 +25422,8 @@ with pkgs; erofs-utils = callPackage ../os-specific/linux/erofs-utils { }; + evdev-proto = callPackage ../os-specific/bsd/freebsd/evdev-proto { }; + fscryptctl = callPackage ../os-specific/linux/fscryptctl { }; # unstable until the first 1.x release fscrypt-experimental = callPackage ../os-specific/linux/fscrypt { }; -- cgit 1.4.1