all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Jesse <dev@millwood.earth>
To: Jesse <dev@millwood.earth>, help-guix@gnu.org
Subject: Re: Using local package in shell manifest
Date: Thu, 26 Oct 2023 10:48:45 -0400	[thread overview]
Message-ID: <b7c18653-6e42-41f5-ac9f-aeb1e4fd3a3c@millwood.earth> (raw)
In-Reply-To: <ZTp0ww0_Gwr96UyM@ws>

Thanks Tomas,

I plan to upstream it but there is some more development I'd like to try 
out first. If I put it in the manifest, is there some different syntax I 
need to use? I have been doing some searching and it seems like I would 
have to wrap the "(package ...)" expression in define-public and the 
use-module seems to be a bit different too? I am having trouble finding 
the distinction in the manual.

On 10/26/23 10:16, Tomas Volf wrote:
> On 2023-10-25 16:49:43 -0400, Jesse wrote:
>> Hello,
>>
>> I have written a package that I have installed with "guix package
>> --install-from-file=crosstool-ng.scm". I was able to get it to build and
>> install. I can use it if I do "source ~/.guix-profile/etc/profile".
>>
>> However, I would like to add it to a shell manifest. My manifest just
>> includes
>>
>> (specifications->manifest
>>    (list "gcc" "git" "zsh" "crosstool-ng"))
>>
>> My understanding is that "specifications->manifest" is supposed to search
>> for the packages in the list? It returns the following when I rung "guix
>> shell" in the directory with the manifest.scm:
>>
>> guix shell: loading environment from
>> '/home/jesse/Code/guix-tests/manifest.scm'...
>> hint: Consider passing the `--check' option once to make sure your shell
>> does not
>> clobber environment variables.
>>
>> guix shell: error: crosstool-ng: unknown package
>> guix shell: error: failed to load
>> '/home/jesse/Code/guix-tests/manifest.scm':
>> gnu/packages.scm:545:4: In procedure specification->package+output:
>> Throw to key `quit' with args `(1)'.
>>
>> I'd imagine it doesn't know where to look for the package? Is there a way to
>> tell guix shell where to look? If not, is there a way to include the package
>> in the manifest file? For what it's worth, I have attached the package file
>> in question.
> I can think of few options:
>
> 0. If it would make sense to upstream the package, you should.  That will solve
> your problem.
>
> 1. Next you could create your own channel, and publish the package there.  After
> adding the channel, it should also just work.
>
> 2. You could load the package by an absolute path and use it that way, something
> like this (untested):
>
> (concatenate-manifests
>   (list (specifications->manifest (list "gcc" "git" "zsh"))
>         (packages->manifest (list (load "/home/.../crosstool-ng.scm")))))
>
> 3. Alternative of the above would be to move the package definition into the
> manifest.scm itself, allowing you to drop the load invocation.
>
> Dunno, maybe there are better ways.
>
>> This is also my first foray into Guix and Guile, so I've been kind of
>> banging my head through writing a package and the manual but I got a little
>> stuck here.
>>
>> Thanks
>> (use-modules
>>   (guix packages)
>>   (guix git-download)
>>   (guix licenses)
>>   (guix profiles)
>>   (guix build-system gnu)
>>   (guix build-system python)
>>   (guix build utils)
>>   (gnu packages python)
>>   (gnu packages autotools)
>>   (gnu packages gettext)
>>   (gnu packages texinfo)
>>   (gnu packages pkg-config)
>>   (gnu packages base)
>>   (gnu packages flex)
>>   (gnu packages gawk)
>>   (gnu packages man)
>>   (gnu packages bison)
>>   (gnu packages compression)
>>   (gnu packages ncurses)
>>   )
>>
>> (package
>>   (name "crosstool-ng")
>>   (version "1.26.0")
>>   (source (origin
>>            (method git-fetch)
>>            (uri (git-reference
>>                  (url "https://github.com/crosstool-ng/crosstool-ng.git")
>>                  (commit (string-append "crosstool-ng-" version))))
>>            (sha256
>>             (base32
>>              "04z7zwhxfbjqrd4j16lviilppsd8phwi8zv2rs4jpkmqni6856j1")
>>             )
>>            ))
>>   (build-system gnu-build-system)
>>   (native-inputs
>>    (list autoconf
>>          automake
>>          gettext-minimal
>>          libtool
>>          texinfo
>>          bison
>>          flex
>>          gawk
>>          unzip
>>          which
>>          help2man
>>          python
>>          ncurses
>>          pkg-config))
>>   (arguments
>>    '(#:phases (modify-phases %standard-phases
>>                              (add-before 'bootstrap 'fix-version-gen
>>                                          (lambda* _
>>                                                   (patch-shebang "maintainer/git-version-gen")
>>                                                   )))))
>>
>>   (synopsis "A versatile (cross-)toolchain generator.")
>>   (description "A versatile (cross-)toolchain generator.")
>>   (home-page "https://crosstool-ng.github.io/docs/")
>>   (license gpl2)
>>   )
> T.
>


  reply	other threads:[~2023-10-26 14:49 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-25 20:49 Using local package in shell manifest Jesse
2023-10-26 14:16 ` Tomas Volf
2023-10-26 14:48   ` Jesse [this message]
2023-10-26 15:43     ` Tomas Volf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b7c18653-6e42-41f5-ac9f-aeb1e4fd3a3c@millwood.earth \
    --to=dev@millwood.earth \
    --cc=help-guix@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.