From 17e4c6814c2c8de2159e85d11bb0131795ae7184 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Thu, 9 Nov 2023 08:17:34 +0000 Subject: [PATCH] Avoid building a llvm based bootstrap step --- default.nix | 42 ++++++++++-------------------------------- flake.lock | 39 +++++++++++++++++++++++++++++++++++++++ flake.nix | 31 ++++++++++++++----------------- test-drv.nix | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 113 insertions(+), 49 deletions(-) create mode 100644 flake.lock create mode 100644 test-drv.nix diff --git a/default.nix b/default.nix index 59758ae..4c283f9 100644 --- a/default.nix +++ b/default.nix @@ -1,34 +1,12 @@ -{ - nixPkgsVersion ? "f606c027310f06df398875960e04038db1f0129f", # release 23.0 # "3e52e76b70d5508f3cec70b882a29199f4d1ee85", # unstable - currentSystem -}: let - - getNixPkgs = args: import (builtins.fetchGit { - name = "nixpkg-serene-${nixPkgsVersion}"; - url = "https://github.com/nixos/nixpkgs/"; - # `git ls-remote https://github.com/nixos/nixpkgs nixos-unstable` - ref = "refs/heads/release-23.05"; # refs/heads/nixos-unstable - rev = nixPkgsVersion; - }) args; - - nixpkgs = getNixPkgs { system = currentSystem; }; - system = import ./system.nix { - pkgs = nixpkgs; - inherit currentSystem; + tmpPkgs = import ../nixpkgs {}; + pkgs = import ../nixpkgs { + crossSystem = tmpPkgs.stdenv.hostPlatform // { + config = "x86_64-unknown-linux-musl"; + useLLVM = true; + linker = "lld"; + isMusl = true; + isStatic = true; + }; }; - # staticMuslPkgs = getNixPkgs system; - # llvm = staticMuslPkgs.llvmPackages_16.override { stdenv = staticMuslPkgs.llvmPackages_16.libcxxStdenv; }; - - replaceStdenv = { pkgs }: - let - llvm = pkgs.llvmPackages_16.override { stdenv = pkgs.llvmPackages_16.libcxxStdenv; }; - in - llvm.libcxxStdenv; - - createPkgSet = _: - getNixPkgs (system // { config = { inherit replaceStdenv; }; }); - -in { - inherit createPkgSet; -} +in { inherit pkgs tmpPkgs; } diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..3a25743 --- /dev/null +++ b/flake.lock @@ -0,0 +1,39 @@ +{ + "nodes": { + "h": { + "flake": false, + "locked": { + "lastModified": 1, + "narHash": "sha256-FghzEGAvDzfNDjS4QPKu635KMnCbPAbMLoZBJDVrj9g=", + "path": "/nix/store/1qdpdwjgrz119dm0nr7fq4wiwiks8br7-source/test-drv.nix", + "type": "path" + }, + "original": { + "path": "/nix/store/1qdpdwjgrz119dm0nr7fq4wiwiks8br7-source/test-drv.nix", + "type": "path" + } + }, + "nixpkgs": { + "locked": { + "dirtyRev": "68ba5fd2ed8be749cf1865ed9a71667dfda944a7-dirty", + "dirtyShortRev": "68ba5fd2ed8b-dirty", + "lastModified": 1697211831, + "narHash": "sha256-baRp/RgDaU3rVlybOpTPzo/+FdsfTyKp3iv4igguHkY=", + "type": "git", + "url": "file:///home/lxsameer/src/nixpkgs" + }, + "original": { + "type": "git", + "url": "file:///home/lxsameer/src/nixpkgs" + } + }, + "root": { + "inputs": { + "h": "h", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix index 1ab6a1a..722cd56 100644 --- a/flake.nix +++ b/flake.nix @@ -1,22 +1,19 @@ { - description = "Serene Toolchain"; + description = "Serene Toolchain"; - outputs = inputs: - let - toolchain = import /home/lxsameer/src/toolchain/test-stdenv.nix {}; - nixpkgs = import /home/lxsameer/src/nixpkgs {}; - myenv = toolchain.createPkgSet; - in - { - testClang = myenv.stdenv.mkDerivation { - name = "testClang"; - unpackPhase = "echo AA $CC; echo '--'; env; NIX_DEBUG=1 $CC -v; echo '--'; exit 1"; - }; - testGcc = nixpkgs.stdenv.mkDerivation { - name = "testGcc"; - unpackPhase = "NIX_DEBUG=1 $CC --version; echo $CC; $CC -v; exit 1"; - }; - inherit myenv; + inputs.nixpkgs.url = "/home/lxsameer/src/nixpkgs/"; + inputs.h = { + flake = false; + url = "./test-drv.nix"; + }; + + outputs = {self, nixpkgs, h}: + let + h' = import h.outPath; + hello = h'.hello; + in { + packages.x86_64-linux.h = h; + packages.x86_64-linux.hello = hello; }; } diff --git a/test-drv.nix b/test-drv.nix new file mode 100644 index 0000000..511cea7 --- /dev/null +++ b/test-drv.nix @@ -0,0 +1,50 @@ +# let +# toolchain = import /home/lxsameer/src/toolchain/test-stdenv.nix {}; +# nixpkgs = import /home/lxsameer/src/nixpkgs {}; +# myenv = toolchain.createPkgSet; +# in myenv.ninja #.stdenv +# nix build --impure --expr 'with import ./. { crossSystem = (import ./lib).systems.examples.musl64 // { useLLVM = true; }; }; bash' + +let + tmpPkgs = import /home/lxsameer/src/nixpkgs {}; + # pkgs = import /home/lxsameer/src/nixpkgs { + # crossSystem = tmpPkgs.stdenv.hostPlatform // { + # config = "x86_64-unknown-linux-musl"; + # useLLVM = true; + # linker = "lld"; + # isMusl = true; + # isStatic = true; + # }; + # }; + + static = tmpPkgs.pkgsMusl.pkgsStatic; + #stdenv = static.llvmPackages_16.libcxxStdenv; + + + + monorepoSrc = tmpPkgs.fetchgit { + url = "https://devheroes.codes/Serene/llvm-project.git"; + rev = "b2c0361bcc08afdf466a605a23924bcd64fa2b86"; + hash = "sha256-wUKHwWYYlKa0v5zEJXxndleYtK7wzJKi0vqr3lNkGMI="; + }; + + overrideSrc = { inherit monorepoSrc; }; + buildLlvm = static.llvmPackages_16.override overrideSrc; + + targetLlvm = static.llvmPackages_16.override overrideSrc; + # pkgsStaticLlvm. + llvm = static.llvmPackages_16.override (prev: overrideSrc // { + + buildLlvmTools = buildLlvm.tools; + targetLlvmLibraries = targetLlvm.libraries or {}; + targetLlvm = targetLlvm.llvm or {}; + officialRelease = null; + gitRelease = { + version = "16.0.6"; + rev = "b2c0361bcc08afdf466a605a23924bcd64fa2b86"; + rev-version = "17-disable-shared-1"; + }; + }); + + stdenv = llvm.libcxxStdenv; +in tmpPkgs.hello.override { inherit stdenv; }