mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 06:53:01 +00:00
openbsd: init at 7.5
This commit is contained in:
parent
ad6fa01c06
commit
888dee445d
@ -93,6 +93,7 @@ let
|
||||
else if final.isAndroid then "bionic"
|
||||
else if final.isLinux /* default */ then "glibc"
|
||||
else if final.isFreeBSD then "fblibc"
|
||||
else if final.isOpenBSD then "oblibc"
|
||||
else if final.isNetBSD then "nblibc"
|
||||
else if final.isAvr then "avrlibc"
|
||||
else if final.isGhcjs then null
|
||||
|
@ -342,6 +342,11 @@ rec {
|
||||
useLLVM = true;
|
||||
};
|
||||
|
||||
x86_64-openbsd = {
|
||||
config = "x86_64-unknown-openbsd";
|
||||
useLLVM = true;
|
||||
};
|
||||
|
||||
#
|
||||
# WASM
|
||||
#
|
||||
|
@ -469,6 +469,7 @@ rec {
|
||||
elem (elemAt l 2) [ "wasi" "redox" "mmixware" "ghcjs" "mingw32" ] ||
|
||||
hasPrefix "freebsd" (elemAt l 2) ||
|
||||
hasPrefix "netbsd" (elemAt l 2) ||
|
||||
hasPrefix "openbsd" (elemAt l 2) ||
|
||||
hasPrefix "genode" (elemAt l 2)
|
||||
then {
|
||||
cpu = elemAt l 0;
|
||||
|
@ -14,5 +14,5 @@
|
||||
}
|
||||
.${stdenv'.hostPlatform.parsed.cpu.name} or stdenv'.hostPlatform.parsed.cpu.name;
|
||||
|
||||
install-wrapper = builtins.readFile ./install-wrapper.sh;
|
||||
install-wrapper = builtins.readFile ../../lib/install-wrapper.sh;
|
||||
}
|
||||
|
@ -17,12 +17,12 @@
|
||||
# HACK: to ensure parent directories exist. This emulates GNU
|
||||
# install’s -D option. No alternative seems to exist in BSD install.
|
||||
let
|
||||
binstall = writeShellScript "binstall" ''
|
||||
set -eu
|
||||
for last in "$@"; do true; done
|
||||
mkdir -p $(dirname $last)
|
||||
@out@/bin/xinstall "$@"
|
||||
'';
|
||||
binstall = writeShellScript "binstall" (
|
||||
builtins.readFile ../../../lib/install-wrapper.sh
|
||||
+ ''
|
||||
@out@/bin/xinstall "''${args[@]}"
|
||||
''
|
||||
);
|
||||
in
|
||||
mkDerivation {
|
||||
path = "usr.bin/xinstall";
|
||||
|
49
pkgs/os-specific/bsd/openbsd/default.nix
Normal file
49
pkgs/os-specific/bsd/openbsd/default.nix
Normal file
@ -0,0 +1,49 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
makeScopeWithSplicing',
|
||||
generateSplicesForMkScope,
|
||||
pkgs,
|
||||
buildPackages,
|
||||
netbsd,
|
||||
}:
|
||||
|
||||
makeScopeWithSplicing' {
|
||||
otherSplices = generateSplicesForMkScope "openbsd";
|
||||
f = (
|
||||
self:
|
||||
lib.packagesFromDirectoryRecursive {
|
||||
callPackage = self.callPackage;
|
||||
directory = ./pkgs;
|
||||
}
|
||||
// {
|
||||
libc = self.callPackage ./pkgs/libc/package.nix {
|
||||
inherit (self) csu include lorder;
|
||||
inherit (buildPackages.openbsd) makeMinimal;
|
||||
inherit (buildPackages.netbsd)
|
||||
install
|
||||
gencat
|
||||
rpcgen
|
||||
tsort
|
||||
;
|
||||
};
|
||||
makeMinimal = buildPackages.netbsd.makeMinimal.override { inherit (self) make-rules; };
|
||||
mkDerivation = self.callPackage ./pkgs/mkDerivation.nix {
|
||||
inherit stdenv;
|
||||
inherit (buildPackages.netbsd) install;
|
||||
};
|
||||
include = self.callPackage ./pkgs/include/package.nix {
|
||||
inherit (buildPackages.openbsd) makeMinimal;
|
||||
inherit (buildPackages.netbsd) install rpcgen mtree;
|
||||
};
|
||||
csu = self.callPackage ./pkgs/csu.nix {
|
||||
inherit (self) include;
|
||||
inherit (buildPackages.openbsd) makeMinimal;
|
||||
inherit (buildPackages.netbsd) install;
|
||||
};
|
||||
make-rules = self.callPackage ./pkgs/make-rules/package.nix { };
|
||||
lorder = self.callPackage ./pkgs/lorder.nix { inherit (buildPackages.netbsd) install; };
|
||||
}
|
||||
);
|
||||
}
|
22
pkgs/os-specific/bsd/openbsd/pkgs/csu.nix
Normal file
22
pkgs/os-specific/bsd/openbsd/pkgs/csu.nix
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
lib,
|
||||
mkDerivation,
|
||||
bsdSetupHook,
|
||||
openbsdSetupHook,
|
||||
makeMinimal,
|
||||
install,
|
||||
include,
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
path = "lib/csu";
|
||||
nativeBuildInputs = [
|
||||
bsdSetupHook
|
||||
openbsdSetupHook
|
||||
makeMinimal
|
||||
install
|
||||
];
|
||||
buildInputs = [ include ];
|
||||
meta.platforms = lib.platforms.openbsd;
|
||||
extraPaths = [ "libexec/ld.so" ];
|
||||
}
|
57
pkgs/os-specific/bsd/openbsd/pkgs/include/package.nix
Normal file
57
pkgs/os-specific/bsd/openbsd/pkgs/include/package.nix
Normal file
@ -0,0 +1,57 @@
|
||||
{
|
||||
lib,
|
||||
mkDerivation,
|
||||
makeMinimal,
|
||||
bsdSetupHook,
|
||||
openbsdSetupHook,
|
||||
install,
|
||||
rpcgen,
|
||||
mtree,
|
||||
pax,
|
||||
buildPackages,
|
||||
}:
|
||||
mkDerivation {
|
||||
path = "include";
|
||||
noCC = true;
|
||||
|
||||
extraPaths = [
|
||||
"lib"
|
||||
#"sys"
|
||||
"sys/arch"
|
||||
# LDIRS from the mmakefile
|
||||
"sys/crypto"
|
||||
"sys/ddb"
|
||||
"sys/dev"
|
||||
"sys/isofs"
|
||||
"sys/miscfs"
|
||||
"sys/msdosfs"
|
||||
"sys/net"
|
||||
"sys/netinet"
|
||||
"sys/netinet6"
|
||||
"sys/netmpls"
|
||||
"sys/net80211"
|
||||
"sys/nfs"
|
||||
"sys/ntfs"
|
||||
"sys/scsi"
|
||||
"sys/sys"
|
||||
"sys/ufs"
|
||||
"sys/uvm"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
bsdSetupHook
|
||||
install
|
||||
makeMinimal
|
||||
mtree
|
||||
openbsdSetupHook
|
||||
pax
|
||||
rpcgen
|
||||
];
|
||||
|
||||
makeFlags = [
|
||||
"RPCGEN_CPP=${buildPackages.stdenv.cc.cc}/bin/cpp"
|
||||
"-B"
|
||||
];
|
||||
|
||||
headersOnly = true;
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
diff --git a/lib/libc/Makefile b/lib/libc/Makefile
|
||||
index 4bb4b67fcbb..1c8a8e08e60 100644
|
||||
--- a/lib/libc/Makefile
|
||||
+++ b/lib/libc/Makefile
|
||||
@@ -6,7 +6,6 @@
|
||||
.include <bsd.own.mk>
|
||||
|
||||
LIB=c
|
||||
-LIBREBUILD=y
|
||||
CLEANFILES+=tags Symbols.map
|
||||
CFLAGS+=-Wimplicit
|
||||
#CFLAGS+=-Werror
|
@ -0,0 +1,16 @@
|
||||
NetBSD's make uses `${variable:tl}` not `${variable:L}`.
|
||||
|
||||
diff --git a/lib/libc/Makefile b/lib/libc/Makefile
|
||||
index 4bb4b67fcbb..ffb35c196ea 100644
|
||||
--- a/lib/libc/Makefile
|
||||
+++ b/lib/libc/Makefile
|
||||
@@ -11,8 +11,8 @@ CLEANFILES+=tags Symbols.map
|
||||
CFLAGS+=-Wimplicit
|
||||
#CFLAGS+=-Werror
|
||||
LDADD=-nostdlib
|
||||
-.if ${COMPILER_VERSION:L} == "clang"
|
||||
+.if ${COMPILER_VERSION:tl} == "clang"
|
||||
LDADD+=-lcompiler_rt
|
||||
.else
|
||||
LDADD+=-lgcc
|
||||
.endif
|
120
pkgs/os-specific/bsd/openbsd/pkgs/libc/package.nix
Normal file
120
pkgs/os-specific/bsd/openbsd/pkgs/libc/package.nix
Normal file
@ -0,0 +1,120 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
mkDerivation,
|
||||
bsdSetupHook,
|
||||
openbsdSetupHook,
|
||||
makeMinimal,
|
||||
install,
|
||||
flex,
|
||||
byacc,
|
||||
gencat,
|
||||
rpcgen,
|
||||
lorder,
|
||||
csu,
|
||||
include,
|
||||
ctags,
|
||||
tsort,
|
||||
llvmPackages,
|
||||
fetchpatch,
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "libc";
|
||||
path = "lib/libc";
|
||||
extraPaths = [
|
||||
"lib/csu/os-note-elf.h"
|
||||
"sys/arch"
|
||||
|
||||
"lib/libm"
|
||||
"lib/libpthread"
|
||||
"lib/librpcsvc"
|
||||
"lib/librpcsvc"
|
||||
"lib/librthread"
|
||||
"lib/libutil"
|
||||
];
|
||||
|
||||
patches = [
|
||||
./netbsd-make-to-lower.patch
|
||||
./disable-librebuild.patch
|
||||
(fetchpatch {
|
||||
url = "https://marc.info/?l=openbsd-tech&m=171575286706032&q=raw";
|
||||
sha256 = "sha256-2fqabJZLUvXUIWe5WZ4NrTOwgQCXqH49Wo0hAPu5lu0=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
bsdSetupHook
|
||||
openbsdSetupHook
|
||||
makeMinimal
|
||||
install
|
||||
flex
|
||||
byacc
|
||||
gencat
|
||||
rpcgen
|
||||
ctags
|
||||
lorder
|
||||
tsort
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
include
|
||||
csu
|
||||
];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = builtins.toString [
|
||||
"-B${csu}/lib"
|
||||
"-Wno-error"
|
||||
];
|
||||
|
||||
# Suppress lld >= 16 undefined version errors
|
||||
# https://github.com/freebsd/freebsd-src/commit/2ba84b4bcdd6012e8cfbf8a0d060a4438623a638
|
||||
env.NIX_LDFLAGS = lib.optionalString (stdenv.hostPlatform.linker == "lld") "--undefined-version";
|
||||
|
||||
makeFlags = [
|
||||
"STRIP=-s" # flag to install, not command
|
||||
"COMPILER_VERSION=clang"
|
||||
"LIBC_TAGS=no"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
symlink_so () {
|
||||
pushd $out/lib
|
||||
ln -s "lib$1".so.* "lib$1.so"
|
||||
popd
|
||||
}
|
||||
|
||||
symlink_so c
|
||||
|
||||
pushd ${include}
|
||||
find . -type d -exec mkdir -p $out/\{} \;
|
||||
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
|
||||
popd
|
||||
substituteInPlace $out/include/sys/time.h --replace "defined (_LIBC)" "true"
|
||||
|
||||
pushd ${csu}
|
||||
find . -type d -exec mkdir -p $out/\{} \;
|
||||
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
|
||||
popd
|
||||
|
||||
NIX_CFLAGS_COMPILE+=" -B$out/lib"
|
||||
NIX_CFLAGS_COMPILE+=" -I$out/include"
|
||||
NIX_LDFLAGS+=" -L$out/lib"
|
||||
|
||||
make -C $BSDSRCDIR/lib/libm $makeFlags
|
||||
make -C $BSDSRCDIR/lib/libm $makeFlags install
|
||||
symlink_so m
|
||||
|
||||
make -C $BSDSRCDIR/lib/librthread $makeFlags
|
||||
make -C $BSDSRCDIR/lib/librthread $makeFlags install
|
||||
symlink_so pthread
|
||||
|
||||
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags
|
||||
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags install
|
||||
symlink_so rpcsv
|
||||
|
||||
make -C $BSDSRCDIR/lib/libutil $makeFlags
|
||||
make -C $BSDSRCDIR/lib/libutil $makeFlags install
|
||||
symlink_so util
|
||||
'';
|
||||
}
|
20
pkgs/os-specific/bsd/openbsd/pkgs/lorder.nix
Normal file
20
pkgs/os-specific/bsd/openbsd/pkgs/lorder.nix
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
lib,
|
||||
mkDerivation,
|
||||
bsdSetupHook,
|
||||
openbsdSetupHook,
|
||||
makeMinimal,
|
||||
install,
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
path = "usr.bin/lorder";
|
||||
nativeBuildInputs = [
|
||||
bsdSetupHook
|
||||
openbsdSetupHook
|
||||
makeMinimal
|
||||
install
|
||||
];
|
||||
|
||||
meta.platforms = lib.platforms.unix;
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
NetBSD make prefers `.-include` to `sinclude` (without a dot)
|
||||
|
||||
diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk
|
||||
index 7019adb57f7..277064eb5c2 100644
|
||||
--- a/share/mk/bsd.dep.mk
|
||||
+++ b/share/mk/bsd.dep.mk
|
||||
@@ -11,7 +11,7 @@ depend:
|
||||
# catch22: don't include potentially bogus files we are going to clean
|
||||
. if !(make(clean) || make(cleandir) || make(obj))
|
||||
. for o in ${DEPS}
|
||||
- sinclude $o
|
||||
+. -include "$o"
|
||||
. endfor
|
||||
. endif
|
||||
.endif
|
36
pkgs/os-specific/bsd/openbsd/pkgs/make-rules/package.nix
Normal file
36
pkgs/os-specific/bsd/openbsd/pkgs/make-rules/package.nix
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
fetchpatch,
|
||||
lib,
|
||||
mkDerivation,
|
||||
stdenv,
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
path = "share/mk";
|
||||
noCC = true;
|
||||
|
||||
buildInputs = [ ];
|
||||
nativeBuildInputs = [ ];
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
url = "https://marc.info/?l=openbsd-tech&m=171575284906018&q=raw";
|
||||
sha256 = "sha256-bigxJGbaf9mCmFXxLVzQpnUUaEMMDfF3eZkTXVzd6B8=";
|
||||
})
|
||||
./netbsd-make-sinclude.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
sed -i -E \
|
||||
-e 's|/usr/lib|\$\{LIBDIR\}|' \
|
||||
share/mk/bsd.prog.mk
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cp -r share/mk $out
|
||||
'';
|
||||
|
||||
meta.platforms = lib.platforms.unix;
|
||||
}
|
91
pkgs/os-specific/bsd/openbsd/pkgs/mkDerivation.nix
Normal file
91
pkgs/os-specific/bsd/openbsd/pkgs/mkDerivation.nix
Normal file
@ -0,0 +1,91 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
runCommand,
|
||||
rsync,
|
||||
source,
|
||||
bsdSetupHook,
|
||||
openbsdSetupHook,
|
||||
makeMinimal,
|
||||
install,
|
||||
}:
|
||||
|
||||
lib.makeOverridable (
|
||||
attrs:
|
||||
let
|
||||
stdenv' = if attrs.noCC or false then stdenvNoCC else stdenv;
|
||||
in
|
||||
stdenv'.mkDerivation (
|
||||
rec {
|
||||
pname = "${attrs.pname or (baseNameOf attrs.path)}-openbsd";
|
||||
version = "0";
|
||||
src = runCommand "${pname}-filtered-src" { nativeBuildInputs = [ rsync ]; } ''
|
||||
for p in ${lib.concatStringsSep " " ([ attrs.path ] ++ attrs.extraPaths or [ ])}; do
|
||||
set -x
|
||||
path="$out/$p"
|
||||
mkdir -p "$(dirname "$path")"
|
||||
src_path="${source}/$p"
|
||||
if [[ -d "$src_path" ]]; then src_path+=/; fi
|
||||
rsync --chmod="+w" -r "$src_path" "$path"
|
||||
set +x
|
||||
done
|
||||
'';
|
||||
|
||||
extraPaths = [ ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
bsdSetupHook
|
||||
openbsdSetupHook
|
||||
makeMinimal
|
||||
install
|
||||
];
|
||||
|
||||
HOST_SH = stdenv'.shell;
|
||||
|
||||
# Since STRIP below is the flag
|
||||
STRIPBIN = "${stdenv.cc.bintools.targetPrefix}strip";
|
||||
|
||||
makeFlags = [
|
||||
"STRIP=-s" # flag to install, not command
|
||||
"-B"
|
||||
];
|
||||
|
||||
MACHINE_ARCH =
|
||||
{
|
||||
# amd64 not x86_64 for this on unlike NetBSD
|
||||
x86_64 = "amd64";
|
||||
aarch64 = "arm64";
|
||||
i486 = "i386";
|
||||
i586 = "i386";
|
||||
i686 = "i386";
|
||||
}
|
||||
.${stdenv'.hostPlatform.parsed.cpu.name} or stdenv'.hostPlatform.parsed.cpu.name;
|
||||
|
||||
MACHINE = MACHINE_ARCH;
|
||||
|
||||
MACHINE_CPU = MACHINE_ARCH;
|
||||
|
||||
MACHINE_CPUARCH = MACHINE_ARCH;
|
||||
|
||||
COMPONENT_PATH = attrs.path or null;
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
meta = with lib; {
|
||||
maintainers = with maintainers; [ ericson2314 ];
|
||||
platforms = platforms.openbsd;
|
||||
license = licenses.bsd2;
|
||||
};
|
||||
}
|
||||
// lib.optionalAttrs stdenv'.hasCC {
|
||||
# TODO should CC wrapper set this?
|
||||
CPP = "${stdenv'.cc.targetPrefix}cpp";
|
||||
}
|
||||
// lib.optionalAttrs (attrs.headersOnly or false) {
|
||||
installPhase = "includesPhase";
|
||||
dontBuild = true;
|
||||
}
|
||||
// attrs
|
||||
)
|
||||
)
|
@ -0,0 +1,3 @@
|
||||
{ makeSetupHook }:
|
||||
|
||||
makeSetupHook { name = "openbsd-setup-hook"; } ./setup-hook.sh
|
@ -0,0 +1,21 @@
|
||||
addOpenBSDMakeFlags() {
|
||||
makeFlags="INCSDIR=${!outputDev}/include $makeFlags"
|
||||
makeFlags="MANDIR=${!outputMan}/share/man $makeFlags"
|
||||
}
|
||||
|
||||
fixOpenBSDInstallDirs() {
|
||||
find "$BSDSRCDIR" -name Makefile -exec \
|
||||
sed -i -E \
|
||||
-e 's|/usr/include|${INCSDIR}|' \
|
||||
-e 's|/usr/bin|${BINDIR}|' \
|
||||
-e 's|/usr/lib|${LIBDIR}|' \
|
||||
{} \;
|
||||
}
|
||||
|
||||
setBinownBingrp() {
|
||||
export BINOWN=$(id -u)
|
||||
export BINGRP=$(id -g)
|
||||
}
|
||||
|
||||
preConfigureHooks+=(addOpenBSDMakeFlags)
|
||||
postPatchHooks+=(fixOpenBSDInstallDirs setBinownBingrp)
|
8
pkgs/os-specific/bsd/openbsd/pkgs/source.nix
Normal file
8
pkgs/os-specific/bsd/openbsd/pkgs/source.nix
Normal file
@ -0,0 +1,8 @@
|
||||
{ fetchcvs }:
|
||||
|
||||
fetchcvs {
|
||||
cvsRoot = "anoncvs@anoncvs.fr.openbsd.org/cvs";
|
||||
module = "src";
|
||||
tag = "OPENBSD_7_5";
|
||||
sha256 = "sha256-hzdATew6h/FQV72SWtg3YvUXdPoGjm2SoUS7m3c3fSU=";
|
||||
}
|
@ -16284,6 +16284,7 @@ with pkgs;
|
||||
choose = platform:
|
||||
/**/ if platform.isDarwin then 16
|
||||
else if platform.isFreeBSD then 16
|
||||
else if platform.isOpenBSD then 18
|
||||
else if platform.isAndroid then 12
|
||||
else if platform.isLinux then 17
|
||||
else if platform.isWasm then 16
|
||||
@ -21019,6 +21020,7 @@ with pkgs;
|
||||
then targetPackages.darwin.iosSdkPkgs.libraries or darwin.iosSdkPkgs.libraries
|
||||
else targetPackages.darwin.LibsystemCross or (throw "don't yet have a `targetPackages.darwin.LibsystemCross for ${stdenv.targetPlatform.config}`")
|
||||
else if name == "fblibc" then targetPackages.freebsdCross.libc or freebsdCross.libc
|
||||
else if name == "oblibc" then targetPackages.openbsdCross.libc or openbsdCross.libc
|
||||
else if name == "nblibc" then targetPackages.netbsdCross.libc or netbsdCross.libc
|
||||
else if name == "wasilibc" then targetPackages.wasilibc or wasilibc
|
||||
else if name == "relibc" then targetPackages.relibc or relibc
|
||||
@ -40744,6 +40746,11 @@ with pkgs;
|
||||
stdenv = crossLibcStdenv;
|
||||
};
|
||||
|
||||
openbsd = callPackage ../os-specific/bsd/openbsd { };
|
||||
openbsdCross = callPackage ../os-specific/bsd/openbsd {
|
||||
stdenv = crossLibcStdenv;
|
||||
};
|
||||
|
||||
yrd = callPackage ../tools/networking/yrd { };
|
||||
|
||||
powershell = callPackage ../shells/powershell { };
|
||||
|
Loading…
Reference in New Issue
Block a user