From 5ee6ca04583366102eaba7cc8b24cf8d40c9b137 Mon Sep 17 00:00:00 2001 From: Gustavo Coutinho de Souza Date: Fri, 1 Dec 2023 11:49:11 -0300 Subject: [PATCH 1/4] hare: migrate to pkgs/by-name --- .../compilers/hare/default.nix => by-name/ha/hare/package.nix} | 0 pkgs/{development/compilers => by-name/ha}/hare/setup-hook.sh | 0 pkgs/top-level/all-packages.nix | 2 -- 3 files changed, 2 deletions(-) rename pkgs/{development/compilers/hare/default.nix => by-name/ha/hare/package.nix} (100%) rename pkgs/{development/compilers => by-name/ha}/hare/setup-hook.sh (100%) diff --git a/pkgs/development/compilers/hare/default.nix b/pkgs/by-name/ha/hare/package.nix similarity index 100% rename from pkgs/development/compilers/hare/default.nix rename to pkgs/by-name/ha/hare/package.nix diff --git a/pkgs/development/compilers/hare/setup-hook.sh b/pkgs/by-name/ha/hare/setup-hook.sh similarity index 100% rename from pkgs/development/compilers/hare/setup-hook.sh rename to pkgs/by-name/ha/hare/setup-hook.sh diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1c80308d1b9a..fc8a480a3a7f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9140,8 +9140,6 @@ with pkgs; llvmPackages = llvmPackages_16; }; - hare = callPackage ../development/compilers/hare { }; - harec = callPackage ../development/compilers/harec { }; hareThirdParty = recurseIntoAttrs (callPackage ./hare-third-party.nix { }); From e3b56dd7021b616f6925a918c68c6224714e2b43 Mon Sep 17 00:00:00 2001 From: Gustavo Coutinho de Souza Date: Fri, 1 Dec 2023 11:50:01 -0300 Subject: [PATCH 2/4] harec: migrate to pkgs/by-name --- .../harec/default.nix => by-name/ha/harec/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{development/compilers/harec/default.nix => by-name/ha/harec/package.nix} (100%) diff --git a/pkgs/development/compilers/harec/default.nix b/pkgs/by-name/ha/harec/package.nix similarity index 100% rename from pkgs/development/compilers/harec/default.nix rename to pkgs/by-name/ha/harec/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fc8a480a3a7f..8ebb0319417a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9140,8 +9140,6 @@ with pkgs; llvmPackages = llvmPackages_16; }; - harec = callPackage ../development/compilers/harec { }; - hareThirdParty = recurseIntoAttrs (callPackage ./hare-third-party.nix { }); ham = pkgs.perlPackages.ham; From a0e632e84e16311d6a5ec0a2209a06b68ac646f0 Mon Sep 17 00:00:00 2001 From: Gustavo Coutinho de Souza Date: Fri, 1 Dec 2023 08:56:08 -0300 Subject: [PATCH 3/4] harec: unstable-2023-10-22 -> unstable-2023-11-29 --- pkgs/by-name/ha/harec/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ha/harec/package.nix b/pkgs/by-name/ha/harec/package.nix index 6ddb5ff1f01c..cbcb53b1ac4e 100644 --- a/pkgs/by-name/ha/harec/package.nix +++ b/pkgs/by-name/ha/harec/package.nix @@ -19,13 +19,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "harec"; - version = "unstable-2023-10-22"; + version = "unstable-2023-11-29"; src = fetchFromSourcehut { owner = "~sircmpwn"; repo = "harec"; - rev = "64dea196ce040fbf3417e1b4fb11331688672aca"; - hash = "sha256-2Aeb+OZ/hYUyyxx6aTw+Oxiac+p+SClxtg0h68ZBSHc="; + rev = "ec3193e3870436180b0f3df82b769adc57a1c099"; + hash = "sha256-HXQIgFC4YVDJjo5xbyg1ea3jWYKLEwKkD1KFzWFz9UI= "; }; nativeBuildInputs = [ From a47d6e0fd6edf862d53ea8554a181f810acb21b5 Mon Sep 17 00:00:00 2001 From: Gustavo Coutinho de Souza Date: Sat, 2 Dec 2023 13:13:44 -0300 Subject: [PATCH 4/4] hare: unstable-2023-10-23 -> unstable-2023-11-27 And also: - move platform and arch to outer let-in - patch tzdata paths to use the nix store - set `outputs` to `[ "out" "man" ]` - append `nixpkgs` `hare version`'s output - compact `postFixup` phase - rework description - move `binutils-unwrapped` only to `buildInputs` [1]: https://nixpk.gs/pr-tracker.html?pr=265124 --- pkgs/by-name/ha/hare/001-tzdata.patch | 28 +++++++++ pkgs/by-name/ha/hare/package.nix | 87 ++++++++++++--------------- 2 files changed, 67 insertions(+), 48 deletions(-) create mode 100644 pkgs/by-name/ha/hare/001-tzdata.patch diff --git a/pkgs/by-name/ha/hare/001-tzdata.patch b/pkgs/by-name/ha/hare/001-tzdata.patch new file mode 100644 index 000000000000..bb510514eb53 --- /dev/null +++ b/pkgs/by-name/ha/hare/001-tzdata.patch @@ -0,0 +1,28 @@ +diff --git a/time/chrono/+freebsd.ha b/time/chrono/+freebsd.ha +index 26d78ab1..6861bfe8 100644 +--- a/time/chrono/+freebsd.ha ++++ b/time/chrono/+freebsd.ha +@@ -2,7 +2,7 @@ + // (c) Hare authors + + def LOCALTIME_PATH: str = "/etc/localtime"; +-def ZONEINFO_PREFIX: str = "/usr/share/zoneinfo/"; ++def ZONEINFO_PREFIX: str = "@tzdata@/share/zoneinfo/"; + + // The filepath of the system's "leap-seconds.list" file, which contains UTC/TAI + // leap second data. +diff --git a/time/chrono/+linux.ha b/time/chrono/+linux.ha +index 600f606c..8d5617e2 100644 +--- a/time/chrono/+linux.ha ++++ b/time/chrono/+linux.ha +@@ -2,8 +2,8 @@ + // (c) Hare authors + + def LOCALTIME_PATH: str = "/etc/localtime"; +-def ZONEINFO_PREFIX: str = "/usr/share/zoneinfo/"; ++def ZONEINFO_PREFIX: str = "@tzdata@/share/zoneinfo/"; + + // The filepath of the system's "leap-seconds.list" file, which contains UTC/TAI + // leap second data. +-export def UTC_LEAPSECS_FILE: str = "/usr/share/zoneinfo/leap-seconds.list"; ++export def UTC_LEAPSECS_FILE: str = "@tzdata@/share/zoneinfo/leap-seconds.list"; diff --git a/pkgs/by-name/ha/hare/package.nix b/pkgs/by-name/ha/hare/package.nix index a78b3706f678..c509955c6f09 100644 --- a/pkgs/by-name/ha/hare/package.nix +++ b/pkgs/by-name/ha/hare/package.nix @@ -6,26 +6,40 @@ , makeWrapper , qbe , scdoc +, tzdata +, substituteAll }: let # We use harec's override of qbe until 1.2 is released, but the `qbe` argument # is kept to avoid breakage. qbe = harec.qbeUnstable; + # https://harelang.org/platforms/ + arch = stdenv.hostPlatform.uname.processor; + platform = lib.strings.toLower stdenv.hostPlatform.uname.system; in stdenv.mkDerivation (finalAttrs: { pname = "hare"; - version = "unstable-2023-10-23"; + version = "unstable-2023-11-27"; + + outputs = [ "out" "man" ]; src = fetchFromSourcehut { owner = "~sircmpwn"; repo = "hare"; - rev = "1048620a7a25134db370bf24736efff1ffcb2483"; - hash = "sha256-slQPIhrcM+KAVAvjuRnqNdEAEr4Xa4iQNVEpI7Wl+Ks="; + rev = "d94f355481a320fb2aec13ef62cb3bfe2416f5e4"; + hash = "sha256-Mpl3VO4xvLCKHeYr/FPuS6jl8CkyeqDz18mQ6Zv05oc="; }; + patches = [ + # Replace FHS paths with nix store + (substituteAll { + src = ./001-tzdata.patch; + inherit tzdata; + }) + ]; + nativeBuildInputs = [ - binutils-unwrapped harec makeWrapper qbe @@ -36,62 +50,39 @@ stdenv.mkDerivation (finalAttrs: { binutils-unwrapped harec qbe + tzdata ]; + makeFlags = [ + "HARECACHE=.harecache" + "PREFIX=${builtins.placeholder "out"}" + "PLATFORM=${platform}" + "ARCH=${arch}" + ]; + + enableParallelBuilding = true; + # Append the distribution name to the version - env.LOCALVER = "nix"; + env.LOCALVER = "nixpkgs"; - configurePhase = - let - # https://harelang.org/platforms/ - arch = - if stdenv.isx86_64 then "x86_64" - else if stdenv.isAarch64 then "aarch64" - else if stdenv.hostPlatform.isRiscV && stdenv.is64bit then "riscv64" - else "unsupported"; - platform = - if stdenv.isLinux then "linux" - else if stdenv.isFreeBSD then "freebsd" - else "unsupported"; - in - '' - runHook preConfigure - - cp config.example.mk config.mk - makeFlagsArray+=( - PREFIX="${builtins.placeholder "out"}" - HARECACHE="$(mktemp -d --tmpdir harecache.XXXXXXXX)" - BINOUT="$(mktemp -d --tmpdir bin.XXXXXXXX)" - PLATFORM="${platform}" - ARCH="${arch}" - ) - - runHook postConfigure - ''; + strictDeps = true; doCheck = true; - postFixup = - let - binPath = lib.makeBinPath [ - binutils-unwrapped - harec - qbe - ]; - in - '' - wrapProgram $out/bin/hare --prefix PATH : ${binPath} - ''; + preConfigure = '' + ln -s config.example.mk config.mk + ''; + + postFixup = '' + wrapProgram $out/bin/hare \ + --prefix PATH : ${lib.makeBinPath [binutils-unwrapped harec qbe]} + ''; setupHook = ./setup-hook.sh; - strictDeps = true; - enableParallelBuilding = true; - meta = { homepage = "https://harelang.org/"; - description = - "A systems programming language designed to be simple, stable, and robust"; + description = "Systems programming language designed to be simple, stable, and robust"; license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ onemoresuza ]; mainProgram = "hare";