From ff45f46ae124b2cdff38d2b4c0981c071eec6109 Mon Sep 17 00:00:00 2001 From: Adam Perkowski Date: Thu, 6 Feb 2025 19:41:47 +0100 Subject: [PATCH 1/4] maintainers: add adamperkowski --- maintainers/maintainer-list.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 4549dd47d887..8955795d92a1 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -579,6 +579,17 @@ githubId = 50264672; name = "Adam Freeth"; }; + adamperkowski = { + name = "Adam Perkowski"; + email = "adas1per@protonmail.com"; + matrix = "@xx0a_q:matrix.org"; + github = "adamperkowski"; + githubId = 75480869; + keys = [ + { fingerprint = "00F6 1623 FB56 BC5B B709 4E63 4CE6 C117 2DF6 BE79"; } + { fingerprint = "5A53 0832 DA91 20B0 CA57 DDB6 7CBD B58E CF1D 3478"; } + ]; + }; adamt = { email = "mail@adamtulinius.dk"; github = "adamtulinius"; From cedc68f75e5148b031c71d99ce5177cf7b945fe2 Mon Sep 17 00:00:00 2001 From: Sebaguardian Date: Thu, 6 Feb 2025 19:42:46 +0100 Subject: [PATCH 2/4] maintainers: add sebaguardian Signed-off-by: Adam Perkowski --- maintainers/maintainer-list.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 8955795d92a1..487277884e17 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -21372,6 +21372,11 @@ githubId = 19472270; name = "Sebastian"; }; + sebaguardian = { + name = "Sebaguardian"; + github = "Sebaguardian"; + githubId = 68247013; + }; sebastianblunt = { name = "Sebastian Blunt"; email = "nix@sebastianblunt.com"; From 19da07f91fbc20f04c065045f553e9352a32354a Mon Sep 17 00:00:00 2001 From: Adam Perkowski Date: Sun, 16 Mar 2025 02:52:42 +0100 Subject: [PATCH 3/4] julec: init at 0.1.2 Co-authored-by: Sebaguardian Signed-off-by: Adam Perkowski --- pkgs/by-name/ju/julec/package.nix | 89 +++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 pkgs/by-name/ju/julec/package.nix diff --git a/pkgs/by-name/ju/julec/package.nix b/pkgs/by-name/ju/julec/package.nix new file mode 100644 index 000000000000..6e0ecd4e5004 --- /dev/null +++ b/pkgs/by-name/ju/julec/package.nix @@ -0,0 +1,89 @@ +{ + lib, + stdenv, + fetchFromGitHub, + clang, +}: + +let + irFile = + if stdenv.hostPlatform.system == "x86_64-linux" then + "linux-amd64.cpp" + else if stdenv.hostPlatform.system == "aarch64-linux" then + "linux-arm64.cpp" + else if stdenv.hostPlatform.system == "i686-linux" then + "linux-i386.cpp" + else if stdenv.hostPlatform.system == "x86_64-darwin" then + "darwin-amd64.cpp" + else if stdenv.hostPlatform.system == "aarch64-darwin" then + "darwin-arm64.cpp" + else + abort "Unsupported platform: ${stdenv.hostPlatform.system}"; +in +stdenv.mkDerivation rec { + pname = "julec"; + version = "0.1.2"; + irCommit = "03f3ebe18a79bb8dcb5440f0e6297e1d2e032e19"; + + src = fetchFromGitHub { + owner = "julelang"; + repo = "jule"; + rev = "jule${version}"; + name = "jule-${version}"; + sha256 = "FhM25fff0TAhnO1RX0rhqHyox7ksyqYFBKSFby/4i0E="; + }; + + irSrc = fetchFromGitHub { + owner = "julelang"; + repo = "julec-ir"; + rev = irCommit; + name = "jule-ir-${version}"; + sha256 = "0omZu/2t09eOqbLAps3KdGy6InrtzeIoM3rLtkmJwqE="; + }; + + dontConfigure = true; + propagatedBuildInputs = [ clang ]; + + unpackPhase = '' + cp -R ${src}/* . + cp "${irSrc}/src/${irFile}" ./ir.cpp + mkdir -p bin + + chmod +w -R . + + find ./*/* -type f -name '*.md' -exec rm -f {} + + ''; + + buildPhase = '' + echo "Building ${pname} v${version} for ${stdenv.hostPlatform.system}..." + clang++ ./ir.cpp \ + --std=c++17 \ + -O0 \ + -Wno-everything \ + -o "bin/${pname}" + ''; + + installPhase = '' + mkdir -p $out/lib/jule + mkdir -p $out/bin + cp -R api $out/lib/jule/api + cp -R std $out/lib/jule/std + cp -R bin $out/lib/jule/bin + ln -s $out/lib/jule/bin/${pname} $out/bin/${pname} + ''; + + meta = with lib; { + description = "The Jule Programming Language Compiler"; + longDescription = '' + Jule is an effective programming language designed to build efficient, fast, reliable and safe software while maintaining simplicity. + It is a statically typed, compiled language with a syntax influenced by Go, Rust, and C++. + ''; + homepage = "https://jule.dev"; + license = licenses.bsd3; + platforms = platforms.unix; + maintainers = with maintainers; [ + adamperkowski + sebaguardian + ]; + }; +} From 8579b43123c314b2b33aeb915918ebdda8e9b269 Mon Sep 17 00:00:00 2001 From: Adam Perkowski Date: Tue, 18 Mar 2025 11:38:21 +0100 Subject: [PATCH 4/4] julec: 0.1.2 -> 0.1.3 Co-authored-by: Sebaguardian Co-authored-by: FliegendeWurst Signed-off-by: Adam Perkowski --- pkgs/by-name/ju/julec/package.nix | 73 ++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 26 deletions(-) diff --git a/pkgs/by-name/ju/julec/package.nix b/pkgs/by-name/ju/julec/package.nix index 6e0ecd4e5004..abc2c8aa05c2 100644 --- a/pkgs/by-name/ju/julec/package.nix +++ b/pkgs/by-name/ju/julec/package.nix @@ -2,7 +2,6 @@ lib, stdenv, fetchFromGitHub, - clang, }: let @@ -18,72 +17,94 @@ let else if stdenv.hostPlatform.system == "aarch64-darwin" then "darwin-arm64.cpp" else - abort "Unsupported platform: ${stdenv.hostPlatform.system}"; + throw "Unsupported platform: ${stdenv.hostPlatform.system}"; in -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "julec"; - version = "0.1.2"; - irCommit = "03f3ebe18a79bb8dcb5440f0e6297e1d2e032e19"; + version = "0.1.3"; src = fetchFromGitHub { owner = "julelang"; repo = "jule"; - rev = "jule${version}"; - name = "jule-${version}"; - sha256 = "FhM25fff0TAhnO1RX0rhqHyox7ksyqYFBKSFby/4i0E="; + tag = "jule${finalAttrs.version}"; + name = "jule-${finalAttrs.version}"; + hash = "sha256-hFWoGeTmfXIPcICWXa5W36QDOk3yB7faORxFaM9shcQ="; }; irSrc = fetchFromGitHub { owner = "julelang"; repo = "julec-ir"; - rev = irCommit; - name = "jule-ir-${version}"; - sha256 = "0omZu/2t09eOqbLAps3KdGy6InrtzeIoM3rLtkmJwqE="; + # revision determined by the upstream commit hash in julec-ir/README.md + rev = "a274782922e4275c4a036d63acffd3369dbc382f"; + name = "jule-ir-${finalAttrs.version}"; + hash = "sha256-TXMSXTGTzZntPUhT6QTmn3nD2k855ZoAW9aQWyhrE8s="; }; dontConfigure = true; - propagatedBuildInputs = [ clang ]; unpackPhase = '' - cp -R ${src}/* . - cp "${irSrc}/src/${irFile}" ./ir.cpp - mkdir -p bin + runHook preUnpack + + cp -R ${finalAttrs.src}/* . + cp "${finalAttrs.irSrc}/src/${irFile}" ./ir.cpp chmod +w -R . find ./*/* -type f -name '*.md' -exec rm -f {} + + + runHook postUnpack ''; buildPhase = '' - echo "Building ${pname} v${version} for ${stdenv.hostPlatform.system}..." - clang++ ./ir.cpp \ + runHook preBuild + + echo "Building ${finalAttrs.meta.mainProgram} v${finalAttrs.version} for ${stdenv.hostPlatform.system}..." + mkdir -p bin + ${stdenv.cc.targetPrefix}c++ ir.cpp \ --std=c++17 \ - -O0 \ -Wno-everything \ - -o "bin/${pname}" + -O3 \ + -flto \ + -DNDEBUG \ + -fomit-frame-pointer \ + -o "bin/${finalAttrs.meta.mainProgram}" + + runHook postBuild ''; installPhase = '' + runHook preInstall + mkdir -p $out/lib/jule mkdir -p $out/bin cp -R api $out/lib/jule/api cp -R std $out/lib/jule/std cp -R bin $out/lib/jule/bin - ln -s $out/lib/jule/bin/${pname} $out/bin/${pname} + ln -s $out/lib/jule/bin/${finalAttrs.meta.mainProgram} $out/bin/${finalAttrs.meta.mainProgram} + + runHook postInstall ''; - meta = with lib; { - description = "The Jule Programming Language Compiler"; + meta = { + description = "Jule Programming Language Compiler"; longDescription = '' Jule is an effective programming language designed to build efficient, fast, reliable and safe software while maintaining simplicity. It is a statically typed, compiled language with a syntax influenced by Go, Rust, and C++. ''; homepage = "https://jule.dev"; - license = licenses.bsd3; - platforms = platforms.unix; - maintainers = with maintainers; [ + changelog = "https://github.com/julelang/manual/releases/tag/jule${finalAttrs.version}"; + license = lib.licenses.bsd3; + platforms = [ + "x86_64-linux" + "aarch64-linux" + "i686-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + mainProgram = "julec"; + maintainers = with lib.maintainers; [ adamperkowski sebaguardian ]; }; -} +})