!lZLfSUtSOVjwYTmPbU:nixos.org

nixpkgs-update

146 Members
Keeping nixpkgs up to date. r-ryantm bot. https://github.com/ryantm/nixpkgs-update and https://github.com/nix-community/infra/blob/master/build02/nixpkgs-update.nix42 Servers

Load older messages


SenderMessageTime
25 Dec 2024
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoeHere16:02:45
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe* Here is my pkg definition16:02:56
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe *

Here is my pkg definition

{
  buildGoModule,
  fetchFromGitHub,
  lib,
  nix-update-script,
}:
buildGoModule rec {
  pname = "lipo-go";
  version = "0.9.3";

  src = fetchFromGitHub {
    owner = "konoui";
    repo = "lipo";
    rev = "b7b34565565e3cde8037d1b5ee95dd2bb3579ef1";
    # tag = "v${version}";
    hash = "sha256-mDx1kQ5FzM4b/1LWccRbaGAt68ez4Bs+7N04aQUUaQg=";
  };

  env = {
    GIT_VERSION = version;
    GIT_REVISION = "b7b34565565e3cde8037d1b5ee95dd2bb3579ef1";
  };
  passthru.updateScript = nix-update-script { };

  vendorHash = "sha256-7M6CRxJd4fgYQLJDkNa3ds3f7jOp3dyloOZtwMtCBQk=";

  postPatch = ''
    # remove the test that requires access permit to /bin
    sed -i '/bin := filepath.Join/a info, err := os.Stat(bin);if err != nil || info.Mode().Perm()&0444 != 0444 { continue }' pkg/lipo/archs_test.go
  '';

  buildPhase = ''
    make build VERSION=$GIT_VERSION REVISION=$GIT_REVISION BINARY=$out/bin/lipo
  '';

  meta = {
    description = "This lipo is designed to be compatible with macOS lipo, written in golang.";
    homepage = "https://github.com/konoui/lipo";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ xiaoxiangmoe ];
  };
}
16:03:07
@perchun:matrix.orgPerchun Pak [don't ping; dm instead] it is much easier to just set GIT_REVISION to an empty string or a git tag. in case if you want to do it the perfect way, you can write your own update script which calls nix-update and then replaces the GIT_REVISION to the correct one 18:23:55
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe

I found a workaround for this

{
  buildGoModule,
  fetchFromGitHub,
  lib,
  nix-update-script,
}:
buildGoModule rec {
  pname = "lipo-go";
  version = "0.9.3";
  src = fetchFromGitHub {
    owner = "konoui";
    repo = "lipo";
    rev = "refs/tags/v${version}";
    hash = "sha256-lZgOoN+oibo2h6bw5KHXuiwQvQecTQiqu400sGfaMi0=";
    # populate values that require us to use git. By doing this in postFetch we
    # can delete .git afterwards and maintain better reproducibility of the src.
    leaveDotGit = true;
    postFetch = ''
      cd "$out"
      git rev-parse --short HEAD > "$out/CI_COMMIT_SHORT_SHA"
      find "$out" -name .git -print0 | xargs -0 rm -rf
    '';
  };

  passthru.updateScript = nix-update-script { };

  vendorHash = "sha256-7M6CRxJd4fgYQLJDkNa3ds3f7jOp3dyloOZtwMtCBQk=";

  postPatch = ''
    # remove the test that requires access permit to /bin
    sed -i '/bin := filepath.Join/a info, err := os.Stat(bin);if err != nil || info.Mode().Perm()&0444 != 0444 { continue }' pkg/lipo/archs_test.go
  '';

  buildPhase = ''
    make build VERSION=${version} REVISION=$(<CI_COMMIT_SHORT_SHA) BINARY=$out/bin/lipo
  '';

  meta = {
    description = "This lipo is designed to be compatible with macOS lipo, written in golang.";
    homepage = "https://github.com/konoui/lipo";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ xiaoxiangmoe ];
  };
}
18:33:14
@k900:0upti.meK900Absolutely do not do that18:33:56
@k900:0upti.meK900 leaveDotGit is not reproducible 18:34:00
@k900:0upti.meK900And not consistent18:34:02
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoeBut I must get CI_COMMIT_SHORT_SHA for build18:34:24
@k900:0upti.meK900Get it from the update script then18:34:35
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe
find "$out" -name .git -print0 | xargs -0 rm -rf

Will keep it reproducible

18:34:39
@k900:0upti.meK900Not guaranteed, technically18:35:09
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoeOkay18:35:19
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe Maybe I should create a PR for fetchFromGitHub to support update both CI_COMMIT_SHA and version? 18:36:57
@k900:0upti.meK900No, we should not be encouraging people to hardcode git revisions in random places18:39:47
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe

How about this?

  src = fetchFromGitHub {
    owner = "konoui";
    repo = "lipo";
    tag = "v${version}";
    rev = "4f0dadbf38ee4cf4cc38cbc232b7708fddf965bc";
    hash = "sha256-lZgOoN+oibo2h6bw5KHXuiwQvQecTQiqu400sGfaMi0=";
  }
18:41:27
@k900:0upti.meK900That is completely duplicate information18:41:58
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoetag may change18:42:18
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoerev is the only source of truth18:42:27
@k900:0upti.meK900Then you shouldn't provide the tag18:42:39
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoeBut the tag is needed for version18:42:58
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoenixpkg need version field18:43:06
@k900:0upti.meK900Look18:43:11
@k900:0upti.meK900We can't be making accommodations in nixpkgs for every stupid decision an upstream makes18:43:29
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoeOkay18:43:50
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe Also, builtins.fetchGit { url= "https://github.com/konoui/lipo.git"; } can provide lastModified, lastModifiedDate, rev, shortRev attr 18:47:52
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoeShould fetchFromGitHub also provide this?18:48:04
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe
nix-repl> builtins.fetchGit { url= "https://github.com/konoui/lipo.git"; } 
copying '«git+https://github.com/konoui/lipo.git?exportIgnore=1&ref=refs/heads/main&rev=d405c7e62772120bf98ea326b26799bde8d5a128»«unkn{
  lastModified = 1735092575;
  lastModifiedDate = "20241225020935";
  narHash = "sha256-T4V6VDjwMJ1/uopxbotrCgjNkG8lc3ecYKWRjqT3GnU=";
  outPath = "/nix/store/na175bylllrcnn0yq8irfj9q7w3xhh2k-source";
  rev = "d405c7e62772120bf98ea326b26799bde8d5a128";
  revCount = 134;
  shortRev = "d405c7e";
  submodules = false;
}
18:48:28
@me:linj.techlinj
In reply to @k900:0upti.me
Not guaranteed, technically
I am curious why removing .git does not guarante reproducibility. Could you elaborate?
18:52:23
@xiaoxiangmoe:matrix.org🐰 xiaoxiangmoe Also, I'm curious whether passthru.updateScript will work for unfree apps or not. I found passthru.tests will not run in nixpkgs ci for unfree apps. 18:57:23

Show newer messages


Back to Room ListRoom Version: 9