Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix getexe warning #6

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Fix getexe warning #6

wants to merge 1 commit into from

Conversation

kuuote
Copy link
Member

@kuuote kuuote commented Oct 17, 2024

evaluation warningがうるさくてyasu活に集中できない

@kuuote
Copy link
Member Author

kuuote commented Oct 17, 2024

あ、コミットミスっとる

@kuuote kuuote closed this Oct 17, 2024
@kuuote kuuote reopened this Oct 17, 2024
@kuuote kuuote force-pushed the fix-getexe_warning branch from 7eeb999 to ca2a5f4 Compare October 17, 2024 14:24
Comment on lines +8 to 13
let
pname = "nikuussay";
in
stdenv.mkDerivation (finalAttrs: {
inherit pname;
version = "1.0.0";
Copy link
Collaborator

@natsukium natsukium Oct 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stdenv.mkDerivation は不動点コンビネータを使って再帰していくことができるのですが、変数を let で束縛してしまうとオーバーライドした際に他で使われている箇所の変更ができません。
なので stdenv.mkDerivation の引数には self: { a = 1; b = self.a + 1; } のような関数を渡すのが望ましいです。

nix-repl> pname = "kuusay"
nix-repl> ((stdenv.mkDerivation {
    inherit pname;
    version = "1.0.0";
    passthru.pname = pname;
  }).overrideAttrs (_: { pname = "nikuussay"; })).pname
"kuusay"
nix-repl> ((stdenv.mkDerivation (finalAttrs: {
    pname = "kuusay";
    version = "1.0.0";
    passthru.pname = finalAttrs.pname;
  })).overrideAttrs (_: { pname = "nikuussay"; })).pname
"nikuussay"

@@ -26,4 +29,6 @@ stdenv.mkDerivation (finalAttrs: {
runHook postInstall
'';

meta.mainProgram = pname;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

上の説明に従うと finalAttrs.pname と書くべきですが、実はここは変更されたくありません。
今回の場合はパッケージの名前とコマンドの名前がたまたま一致したケースであり、一般に mainProgrampname の間には関連がないのでやや冗長にはなりますが

meta.mainProgram = "nikuussay";

とするのが良いです。

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

なるほど、共通性あるもんだと誤解していました

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants