mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-27 01:13:05 +00:00
Merge pull request #321509 from Mic92/zerotierone-darwin
zerotierone: fix darwin build
This commit is contained in:
commit
860772f499
@ -0,0 +1,32 @@
|
||||
From f71d88a15f537cbc5ea80ad2922c013553a5caab Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <joerg@thalheim.io>
|
||||
Date: Fri, 21 Jun 2024 14:43:03 +0200
|
||||
Subject: [PATCH 2/2] darwin: disable link-time optimization
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
It's not yet clear to me, but in our build we somehow mix objects with
|
||||
and without flto.
|
||||
|
||||
Signed-off-by: Jörg Thalheim <joerg@thalheim.io>
|
||||
---
|
||||
make-mac.mk | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/make-mac.mk b/make-mac.mk
|
||||
index 7af200ad..b388c05a 100644
|
||||
--- a/make-mac.mk
|
||||
+++ b/make-mac.mk
|
||||
@@ -84,7 +84,7 @@ ifeq ($(ZT_DEBUG),1)
|
||||
node/Salsa20.o node/SHA512.o node/C25519.o node/Poly1305.o: CFLAGS = -Wall -O2 -g $(INCLUDES) $(DEFS)
|
||||
else
|
||||
CFLAGS?=-Ofast -fstack-protector-strong
|
||||
- CFLAGS+=$(ARCH_FLAGS) -Wall -flto -fPIE -mmacosx-version-min=$(MACOS_VERSION_MIN) -DNDEBUG -Wno-unused-private-field $(INCLUDES) $(DEFS)
|
||||
+ CFLAGS+=$(ARCH_FLAGS) -Wall -fPIE -mmacosx-version-min=$(MACOS_VERSION_MIN) -DNDEBUG -Wno-unused-private-field $(INCLUDES) $(DEFS)
|
||||
STRIP=strip
|
||||
EXTRA_CARGO_FLAGS=--release
|
||||
RUST_VARIANT=release
|
||||
--
|
||||
2.44.1
|
||||
|
@ -10,6 +10,9 @@
|
||||
, ronn
|
||||
, rustc
|
||||
, zlib
|
||||
, libiconv
|
||||
, darwin
|
||||
, fetchpatch
|
||||
}:
|
||||
|
||||
let
|
||||
@ -33,8 +36,17 @@ in stdenv.mkDerivation {
|
||||
"rustfsm-0.1.0" = "sha256-q7J9QgN67iuoNhQC8SDVzUkjCNRXGiNCkE8OsQc5+oI=";
|
||||
};
|
||||
};
|
||||
patches = [
|
||||
# https://github.com/zerotier/ZeroTierOne/pull/2314
|
||||
(fetchpatch {
|
||||
url = "https://github.com/zerotier/ZeroTierOne/commit/f9c6ee0181acb1b77605d9a4e4106ac79aaacca3.patch";
|
||||
hash = "sha256-zw7KmaxiCH99Y0wQtOQM4u0ruxiePhvv/birxMQioJU=";
|
||||
})
|
||||
./0001-darwin-disable-link-time-optimization.patch
|
||||
];
|
||||
postPatch = "cp ${./Cargo.lock} Cargo.lock";
|
||||
|
||||
|
||||
preConfigure = ''
|
||||
cmp ./Cargo.lock ./rustybits/Cargo.lock || {
|
||||
echo 1>&2 "Please make sure that the derivation's Cargo.lock is identical to ./rustybits/Cargo.lock!"
|
||||
@ -57,10 +69,15 @@ in stdenv.mkDerivation {
|
||||
cargo
|
||||
rustc
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
lzo
|
||||
openssl
|
||||
zlib
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
libiconv
|
||||
darwin.apple_sdk.frameworks.SystemConfiguration
|
||||
darwin.apple_sdk.frameworks.CoreServices
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
@ -68,10 +85,25 @@ in stdenv.mkDerivation {
|
||||
# Ensure Rust compiles for the right target
|
||||
env.CARGO_BUILD_TARGET = stdenv.hostPlatform.rust.rustcTarget;
|
||||
|
||||
# Cargo won't compile to target/release but to target/<RUST_TARGET>/release when a target is
|
||||
# explicitly defined. The build-system however expects target/release. Hence we just symlink from
|
||||
# the latter to the former.
|
||||
preBuild = ''
|
||||
preBuild = if stdenv.isDarwin then ''
|
||||
makeFlagsArray+=("ARCH_FLAGS=") # disable multi-arch build
|
||||
if ! grep -q MACOS_VERSION_MIN=10.13 make-mac.mk; then
|
||||
echo "You may need to update MACOSX_DEPLOYMENT_TARGET to match the value in make-mac.mk"
|
||||
exit 1
|
||||
fi
|
||||
(cd rustybits && MACOSX_DEPLOYMENT_TARGET=10.13 cargo build -p zeroidc --release)
|
||||
|
||||
cp \
|
||||
./rustybits/target/${stdenv.hostPlatform.rust.rustcTarget}/release/libzeroidc.a \
|
||||
./rustybits/target
|
||||
|
||||
# zerotier uses the "FORCE" target as a phony target to force rebuilds.
|
||||
# We don't want to rebuild libzeroidc.a as we build want to build this library ourself for a single architecture
|
||||
touch FORCE
|
||||
'' else ''
|
||||
# Cargo won't compile to target/release but to target/<RUST_TARGET>/release when a target is
|
||||
# explicitly defined. The build-system however expects target/release. Hence we just symlink from
|
||||
# the latter to the former.
|
||||
mkdir -p rustybits/target/release
|
||||
ln -rs \
|
||||
./rustybits/target/${stdenv.hostPlatform.rust.rustcTarget}/release/libzeroidc.a \
|
||||
@ -87,7 +119,11 @@ in stdenv.mkDerivation {
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
installFlags = [ "DESTDIR=$$out/upstream" ];
|
||||
installFlags = [
|
||||
# only linux has an install target, we borrow this for macOS as well
|
||||
"-f" "make-linux.mk"
|
||||
"DESTDIR=$$out/upstream"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
mv $out/upstream/usr/sbin $out/bin
|
||||
@ -106,7 +142,10 @@ in stdenv.mkDerivation {
|
||||
description = "Create flat virtual Ethernet networks of almost unlimited size";
|
||||
homepage = "https://www.zerotier.com";
|
||||
license = licenses.bsl11;
|
||||
maintainers = with maintainers; [ sjmackenzie zimbatm ehmry obadz danielfullmer ];
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [
|
||||
sjmackenzie zimbatm ehmry obadz danielfullmer
|
||||
mic92 # also can test darwin
|
||||
];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user