diff --git a/.gitignore b/.gitignore index 7c60fdf..4234790 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ result target # Gets generated by Nix .pre-commit-config.yaml +# The result of running the command +sword.tar.xz diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4e5865d..a86fba9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,13 +20,19 @@ build: needs: - job: check artifacts: true + parallel: + matrix: + - ARCH: [x86, ucrt] tags: - nix script: - - nix build -L - - URL=$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/sword-utils/$TAG/sword-$TAG.tar.xz - - 'curl -i --fail-with-body --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ./result/sword.tar.xz "${URL}"' - - echo "X86_TARBALL=${URL}" > build.env + - nix build -L ".#${ARCH}" + - URL=$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/sword-utils/$TAG/sword-${ARCH}-${TAG}.tar.xz + - >- + if [ "$CI_COMMIT_BRANCH" == "main" ]; then + 'curl -i --fail-with-body --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ./sword.tar.xz "${URL}"' + fi + - echo "${ARCH}_TARBALL=${URL}" > build.env artifacts: reports: dotenv: build.env @@ -34,6 +40,9 @@ build: "Create release": stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest + rules: + - if: $CI_COMMIT_BRANCH == "main" + when: always needs: - job: check artifacts: true @@ -42,9 +51,11 @@ build: script: echo "Tagging as released" release: name: Release $TAG - tag_name: '$TAG' + tag_name: "$TAG" description: Automatic SWORD utils build for Windows assets: links: - name: Windows (x86-64) release url: "${X86_TARBALL}" + - name: Windows (x86-64) release with UCRT + url: "${UCRT_TARBALL}" diff --git a/flake.lock b/flake.lock index cd94e77..6005bcb 100644 --- a/flake.lock +++ b/flake.lock @@ -21,11 +21,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "lastModified": 1738453229, + "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", "type": "github" }, "original": { @@ -74,15 +74,14 @@ "inputs": { "flake-compat": "flake-compat", "gitignore": "gitignore", - "nixpkgs": "nixpkgs", - "nixpkgs-stable": "nixpkgs-stable" + "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1734425854, - "narHash": "sha256-nzE5UbJ41aPEKf8R2ZFYtLkqPmF7EIUbNEdHMBLg0Ig=", + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "0ddd26d0925f618c3a5d85a4fa5eb1e23a09491d", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", "type": "github" }, "original": { @@ -109,39 +108,23 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1733096140, - "narHash": "sha256-1qRH7uAUsyQI7R1Uwl4T+XvdNv778H0Nb5njNrqvylY=", + "lastModified": 1738452942, + "narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" + "url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz" }, "original": { "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1730741070, - "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.05", - "repo": "nixpkgs", - "type": "github" + "url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz" } }, "nixpkgs_2": { "locked": { - "lastModified": 1734435836, - "narHash": "sha256-kMBQ5PRiFLagltK0sH+08aiNt3zGERC2297iB6vrvlU=", + "lastModified": 1738797219, + "narHash": "sha256-KRwX9Z1XavpgeSDVM/THdFd6uH8rNm/6R+7kIbGa+2s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4989a246d7a390a859852baddb1013f825435cee", + "rev": "1da52dd49a127ad74486b135898da2cef8c62665", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 17d6042..bd594bd 100644 --- a/flake.nix +++ b/flake.nix @@ -31,12 +31,14 @@ ]; perSystem = { pkgs, self', ... }@inputs': - let - in { _module.args.pkgs = import inputs.nixpkgs { inherit (inputs') system; - overlays = [ ]; + overlays = [ + (_: prev: { + icu = prev.icu76; + }) + ]; }; devShells.default = pkgs.mkShell { # These will just be available @@ -68,27 +70,31 @@ # This is not special, this is just flakes packages = let - win = pkgs.pkgsCross.mingwW64; - svnSword = ( - win.sword.overrideAttrs { - src = pkgs.fetchsvn { - url = "https://svn.crosswire.org/svn/sword/trunk"; - rev = "3895"; - hash = "sha256-ju6TsfiAUquXbost6PzStHDLfvOJTNON/iSIupi6IOc="; - }; - } - ); - in - { - default = pkgs.stdenv.mkDerivation { - name = "mingw-sword"; - phases = [ "installPhase" ]; - installPhase = '' - mkdir -p $out + tar = + win: + let + svnSword = ( + win.sword.overrideAttrs { + src = pkgs.fetchsvn { + url = "https://svn.crosswire.org/svn/sword/trunk"; + rev = "3895"; + hash = "sha256-ju6TsfiAUquXbost6PzStHDLfvOJTNON/iSIupi6IOc="; + }; + } + ); + in + pkgs.writeShellScriptBin "package-sword" '' + out=$(pwd) pushd ${svnSword} - ${pkgs.gnutar}/bin/tar cvhaf $out/sword.tar.xz * + ${pkgs.gnutar}/bin/tar cvhaf $out/sword.tar.xz * --transform "s+^+sword/+" ''; - }; + in + with pkgs.pkgsCross; + { + default = tar mingwW64; + x86 = tar mingwW64; + ucrt = tar ucrt64; + ucrtAarch = tar ucrtAarch64; }; }; };