mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-23 15:33:13 +00:00
Merge pull request #315687 from NixOS/backport-311836-to-release-24.05
[Backport release-24.05] openbsd: init at 7.5
This commit is contained in:
commit
a7b0b30004
@ -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;
|
||||
|
@ -1,6 +1,6 @@
|
||||
{ lowPrio, newScope, pkgs, lib, stdenv, cmake, ninja
|
||||
, preLibcCrossHeaders
|
||||
, libxml2, python3, fetchFromGitHub, substituteAll, overrideCC, wrapCCWith, wrapBintoolsWith
|
||||
, libxml2, python3, fetchFromGitHub, fetchpatch, substituteAll, overrideCC, wrapCCWith, wrapBintoolsWith
|
||||
, buildLlvmTools # tools, but from the previous stage, for cross
|
||||
, targetLlvmLibraries # libraries, but from the next stage, for cross
|
||||
, targetLlvm
|
||||
@ -146,6 +146,11 @@ in let
|
||||
# https://reviews.llvm.org/D51899
|
||||
./clang/gnu-install-dirs.patch
|
||||
../common/clang/add-nostdlibinc-flag.patch
|
||||
(fetchpatch {
|
||||
url = "https://github.com/llvm/llvm-project/commit/48c1364200b5649dda2f9ccbe382b0bd908b99de.patch";
|
||||
sha256 = "sha256-beSydky0P/06YDLk0GJDtcREpMcU2FspxuYU6EnQGfA=";
|
||||
stripLen = 1;
|
||||
})
|
||||
(substituteAll {
|
||||
src = ../common/clang/clang-at-least-16-LLVMgold-path.patch;
|
||||
libllvmLibdir = "${tools.libllvm.lib}/lib";
|
||||
@ -391,7 +396,12 @@ in let
|
||||
# so: we use the clang from this LLVM package set instead of the regular
|
||||
# stdenv's compiler.
|
||||
libcxx = callPackage ../common/libcxx {
|
||||
patches = lib.optionals (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
url = "https://github.com/llvm/llvm-project/commit/1118c2e05e67a36ed8ca250524525cdb66a55256.patch";
|
||||
sha256 = "sha256-2lDO9UsglvYAxDG3/iTXqGVHn1Hq3O7wtkCUb9I/Buc=";
|
||||
})
|
||||
] ++ lib.optionals (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [
|
||||
# https://github.com/llvm/llvm-project/issues/64226
|
||||
./libcxx/0001-darwin-10.12-mbstate_t-fix.patch
|
||||
];
|
||||
|
@ -14,7 +14,18 @@
|
||||
, libllvm
|
||||
, linuxHeaders
|
||||
, libxcrypt
|
||||
|
||||
# Some platforms have switched to using compiler-rt, but still want a
|
||||
# libgcc.a for ABI compat purposes. The use case would be old code that
|
||||
# expects to link `-lgcc` but doesn't care exactly what its contents
|
||||
# are, so long as it provides some builtins.
|
||||
, doFakeLibgcc ? stdenv.hostPlatform.isFreeBSD
|
||||
|
||||
# In recent releases, the compiler-rt build seems to produce
|
||||
# many `libclang_rt*` libraries, but not a single unified
|
||||
# `libcompiler_rt` library, at least under certain configurations. Some
|
||||
# platforms stil expect this, however, so we symlink one into place.
|
||||
, forceLinkCompilerRt ? stdenv.hostPlatform.isOpenBSD
|
||||
}:
|
||||
|
||||
let
|
||||
@ -149,7 +160,9 @@ stdenv.mkDerivation ({
|
||||
ln -s $out/lib/*/clang_rt.crtbegin_shared-*.o $out/lib/crtbeginS.o
|
||||
ln -s $out/lib/*/clang_rt.crtend_shared-*.o $out/lib/crtendS.o
|
||||
'' + lib.optionalString doFakeLibgcc ''
|
||||
ln -s $out/lib/freebsd/libclang_rt.builtins-*.a $out/lib/libgcc.a
|
||||
ln -s $out/lib/*/libclang_rt.builtins-*.a $out/lib/libgcc.a
|
||||
'' + lib.optionalString forceLinkCompilerRt ''
|
||||
ln -s $out/lib/*/libclang_rt.builtins-*.a $out/lib/libcompiler_rt.a
|
||||
'';
|
||||
|
||||
meta = llvm_meta // {
|
||||
|
@ -93,12 +93,6 @@ let
|
||||
|
||||
cmakeFlags = [
|
||||
"-DLLVM_ENABLE_RUNTIMES=${lib.concatStringsSep ";" runtimes}"
|
||||
] ++ lib.optionals (useLLVM && !stdenv.hostPlatform.isWasm) [
|
||||
# libcxxabi's CMake looks as though it treats -nostdlib++ as implying -nostdlib,
|
||||
# but that does not appear to be the case for example when building
|
||||
# pkgsLLVM.libcxxabi (which uses clangNoCompilerRtWithLibc).
|
||||
"-DCMAKE_EXE_LINKER_FLAGS=-nostdlib"
|
||||
"-DCMAKE_SHARED_LINKER_FLAGS=-nostdlib"
|
||||
] ++ lib.optionals stdenv.hostPlatform.isWasm [
|
||||
"-DCMAKE_C_COMPILER_WORKS=ON"
|
||||
"-DCMAKE_CXX_COMPILER_WORKS=ON"
|
||||
|
@ -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";
|
||||
|
75
pkgs/os-specific/bsd/netbsd/pkgs/make-rules.nix
Normal file
75
pkgs/os-specific/bsd/netbsd/pkgs/make-rules.nix
Normal file
@ -0,0 +1,75 @@
|
||||
{
|
||||
lib,
|
||||
mkDerivation,
|
||||
fetchNetBSD,
|
||||
stdenv,
|
||||
bsdSetupHook,
|
||||
netbsdSetupHook,
|
||||
rsync,
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
path = "share/mk";
|
||||
sha256 = "0w9x77cfnm6zwy40slradzi0ip9gz80x6lk7pvnlxzsr2m5ra5sy";
|
||||
version = "9.2";
|
||||
noCC = true;
|
||||
|
||||
buildInputs = [ ];
|
||||
nativeBuildInputs = [
|
||||
bsdSetupHook
|
||||
netbsdSetupHook
|
||||
rsync
|
||||
];
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
postPatch =
|
||||
''
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.doc.mk \
|
||||
--replace '-o ''${DOCOWN}' "" \
|
||||
--replace '-g ''${DOCGRP}' ""
|
||||
for mk in $BSDSRCDIR/share/mk/bsd.inc.mk $BSDSRCDIR/share/mk/bsd.kinc.mk; do
|
||||
substituteInPlace $mk \
|
||||
--replace '-o ''${BINOWN}' "" \
|
||||
--replace '-g ''${BINGRP}' ""
|
||||
done
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.kmodule.mk \
|
||||
--replace '-o ''${KMODULEOWN}' "" \
|
||||
--replace '-g ''${KMODULEGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.lib.mk \
|
||||
--replace '-o ''${LIBOWN}' "" \
|
||||
--replace '-g ''${LIBGRP}' "" \
|
||||
--replace '-o ''${DEBUGOWN}' "" \
|
||||
--replace '-g ''${DEBUGGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.lua.mk \
|
||||
--replace '-o ''${LIBOWN}' "" \
|
||||
--replace '-g ''${LIBGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.man.mk \
|
||||
--replace '-o ''${MANOWN}' "" \
|
||||
--replace '-g ''${MANGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.nls.mk \
|
||||
--replace '-o ''${NLSOWN}' "" \
|
||||
--replace '-g ''${NLSGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.prog.mk \
|
||||
--replace '-o ''${BINOWN}' "" \
|
||||
--replace '-g ''${BINGRP}' "" \
|
||||
--replace '-o ''${RUMPBINOWN}' "" \
|
||||
--replace '-g ''${RUMPBINGRP}' "" \
|
||||
--replace '-o ''${DEBUGOWN}' "" \
|
||||
--replace '-g ''${DEBUGGRP}' ""
|
||||
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.lib.mk \
|
||||
--replace '_INSTRANLIB=''${empty(PRESERVE):?-a "''${RANLIB} -t":}' '_INSTRANLIB='
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.kinc.mk \
|
||||
--replace /bin/rm rm
|
||||
''
|
||||
+ lib.optionalString stdenv.targetPlatform.isDarwin ''
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.sys.mk \
|
||||
--replace '-Wl,--fatal-warnings' "" \
|
||||
--replace '-Wl,--warn-shared-textrel' ""
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cp -r . $out
|
||||
'';
|
||||
}
|
@ -3,6 +3,7 @@
|
||||
mkDerivation,
|
||||
fetchNetBSD,
|
||||
stdenv,
|
||||
make-rules,
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
@ -11,53 +12,12 @@ mkDerivation {
|
||||
version = "9.2";
|
||||
|
||||
postPatch =
|
||||
''
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.doc.mk \
|
||||
--replace '-o ''${DOCOWN}' "" \
|
||||
--replace '-g ''${DOCGRP}' ""
|
||||
for mk in $BSDSRCDIR/share/mk/bsd.inc.mk $BSDSRCDIR/share/mk/bsd.kinc.mk; do
|
||||
substituteInPlace $mk \
|
||||
--replace '-o ''${BINOWN}' "" \
|
||||
--replace '-g ''${BINGRP}' ""
|
||||
done
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.kmodule.mk \
|
||||
--replace '-o ''${KMODULEOWN}' "" \
|
||||
--replace '-g ''${KMODULEGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.lib.mk \
|
||||
--replace '-o ''${LIBOWN}' "" \
|
||||
--replace '-g ''${LIBGRP}' "" \
|
||||
--replace '-o ''${DEBUGOWN}' "" \
|
||||
--replace '-g ''${DEBUGGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.lua.mk \
|
||||
--replace '-o ''${LIBOWN}' "" \
|
||||
--replace '-g ''${LIBGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.man.mk \
|
||||
--replace '-o ''${MANOWN}' "" \
|
||||
--replace '-g ''${MANGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.nls.mk \
|
||||
--replace '-o ''${NLSOWN}' "" \
|
||||
--replace '-g ''${NLSGRP}' ""
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.prog.mk \
|
||||
--replace '-o ''${BINOWN}' "" \
|
||||
--replace '-g ''${BINGRP}' "" \
|
||||
--replace '-o ''${RUMPBINOWN}' "" \
|
||||
--replace '-g ''${RUMPBINGRP}' "" \
|
||||
--replace '-o ''${DEBUGOWN}' "" \
|
||||
--replace '-g ''${DEBUGGRP}' ""
|
||||
|
||||
# make needs this to pick up our sys make files
|
||||
export NIX_CFLAGS_COMPILE+=" -D_PATH_DEFSYSPATH=\"$out/share/mk\""
|
||||
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.lib.mk \
|
||||
--replace '_INSTRANLIB=''${empty(PRESERVE):?-a "''${RANLIB} -t":}' '_INSTRANLIB='
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.kinc.mk \
|
||||
--replace /bin/rm rm
|
||||
''
|
||||
+ lib.optionalString stdenv.isDarwin ''
|
||||
substituteInPlace $BSDSRCDIR/share/mk/bsd.sys.mk \
|
||||
--replace '-Wl,--fatal-warnings' "" \
|
||||
--replace '-Wl,--warn-shared-textrel' ""
|
||||
make-rules.postPatch
|
||||
+ ''
|
||||
# make needs this to pick up our sys make files
|
||||
appendToVar NIX_CFLAGS_COMPILE "-D_PATH_DEFSYSPATH=\"$out/share/mk\""
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
make -C $BSDSRCDIR/share/mk FILESDIR=$out/share/mk install
|
||||
'';
|
||||
|
@ -4,6 +4,7 @@
|
||||
netbsdSetupHook,
|
||||
rsync,
|
||||
make,
|
||||
make-rules,
|
||||
}:
|
||||
|
||||
mkDerivation {
|
||||
@ -22,7 +23,9 @@ mkDerivation {
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs $COMPONENT_PATH/configure
|
||||
${make.postPatch}
|
||||
|
||||
# make needs this to pick up our sys make files
|
||||
appendToVar NIX_CFLAGS_COMPILE "-D_PATH_DEFSYSPATH=\"$out/share/mk\""
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
@ -39,10 +42,10 @@ mkDerivation {
|
||||
install -D nbmake $out/bin/nbmake
|
||||
ln -s $out/bin/nbmake $out/bin/make
|
||||
mkdir -p $out/share
|
||||
cp -r $BSDSRCDIR/share/mk $out/share/mk
|
||||
cp -r ${make-rules} $out/share/mk
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
extraPaths = [ make.src ] ++ make.extraPaths;
|
||||
extraPaths = [ make.src ];
|
||||
}
|
||||
|
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=";
|
||||
}
|
@ -16286,6 +16286,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
|
||||
@ -21021,6 +21022,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
|
||||
@ -40780,6 +40782,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