From 6b57a9f2ffe11d18aece218cd04e772713757f06 Mon Sep 17 00:00:00 2001 From: Adam Thompson-Sharpe Date: Thu, 19 Mar 2026 22:37:32 -0400 Subject: [PATCH] opentxl: init wrapper --- pkgs/by-name/op/opentxl-unwrapped/package.nix | 7 +- pkgs/by-name/op/opentxl/package.nix | 69 +++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 pkgs/by-name/op/opentxl/package.nix diff --git a/pkgs/by-name/op/opentxl-unwrapped/package.nix b/pkgs/by-name/op/opentxl-unwrapped/package.nix index 084179a97734..7524f904c7ca 100644 --- a/pkgs/by-name/op/opentxl-unwrapped/package.nix +++ b/pkgs/by-name/op/opentxl-unwrapped/package.nix @@ -72,8 +72,11 @@ stdenv.mkDerivation (finalAttrs: { runHook postInstall ''; - passthru.tests.factorial = callPackage ./factorial-test.nix { opentxl = finalAttrs.finalPackage; }; - passthru.updateScript = nix-update-script { }; + passthru = { + inherit osOption; + tests.factorial = callPackage ./factorial-test.nix { opentxl = finalAttrs.finalPackage; }; + updateScript = nix-update-script { }; + }; meta = { description = "Open-source compiler for the Txl language"; diff --git a/pkgs/by-name/op/opentxl/package.nix b/pkgs/by-name/op/opentxl/package.nix new file mode 100644 index 000000000000..ab1b5896ba1c --- /dev/null +++ b/pkgs/by-name/op/opentxl/package.nix @@ -0,0 +1,69 @@ +{ + lib, + stdenv, + makeWrapper, + opentxl-unwrapped, + targetPackages, +}: +let + inherit (targetPackages.stdenv.cc) targetPrefix; + + crossCompiling = stdenv.hostPlatform != stdenv.targetPlatform; + targetOpentxl = if !crossCompiling then opentxl-unwrapped else targetPackages.opentxl-unwrapped; +in +stdenv.mkDerivation (finalAttrs: { + pname = "${targetPrefix}opentxl-wrapper"; + inherit (opentxl-unwrapped) version; + preferLocalBuild = true; + strictDeps = true; + + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + + # Wrap compiler + makeWrapper ${opentxl-unwrapped}/bin/txlc \ + $out/bin/${targetPrefix}txlc \ + --set TXLLIB ${opentxl-unwrapped}/lib \ + --set BUILD_TXLLIB ${opentxl-unwrapped}/lib \ + --set TARGET_TXLLIB ${targetOpentxl}/lib \ + --set CC ${targetPackages.stdenv.cc}/bin/${targetPrefix}cc \ + --set OS ${opentxl-unwrapped.osOption stdenv.targetPlatform} + ${ + # For convenience, if there is a target prefix, create a symlink named txlc + lib.optionalString (targetPrefix != "") '' + ln -s $out/bin/${targetPrefix}txlc $out/bin/txlc + '' + } + + # Wrap other scripts + for name in txl2c txlp; do + makeWrapper "${opentxl-unwrapped}/bin/$name" \ + "$out/bin/$name" \ + --set-default TXLLIB ${opentxl-unwrapped}/lib + done + + # Link to binaries that don't need wrapping + for name in txl txldb; do + ln -s "${opentxl-unwrapped}/bin/$name" "$out/bin/$name" + done + + runHook postInstall + ''; + + passthru = { + unwrapped = opentxl-unwrapped; + inherit (opentxl-unwrapped.passthru) tests; + }; + + meta = opentxl-unwrapped.meta // { + platforms = lib.platforms.unix; + }; +})