unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
* How to reference a module defined in another package?
@ 2021-04-23 19:57 mbcladwell
  2021-04-23 22:08 ` Vincent Legoll
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: mbcladwell @ 2021-04-23 19:57 UTC (permalink / raw)
  To: help-guix


Hi,
I am trying to package an application, my guix.scm is below.  The  
build starts OK but fails with the error:

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
no code for module (artanis utils)
make: *** [Makefile:1878: limsn/app/controllers/target.go] Error 1
command "make" "-j" "4" failed with status 2

artanis/utils.scm is a file within artanis. I use-module (artanis  
utils) to no effect.  Within artanis, utils is defined as a module:

(define-module (artanis artanis)
   #:use-module (artanis utils)
   #:use-module (artanis config)
   #:use-module (artanis env).....

I tried ("artanis:utils" ,artanis "utils") but that doesn't work.
How do I specify artanis/utils.scm as an input module?
Do I need to package artanis/utils.scm separately?
Thanks
Mortimer


===guix.scm===================

(use-modules
   (guix packages)
   ((guix licenses) #:prefix license:)
   (guix download)
   (guix build-system gnu)
   (gnu packages)
   (gnu packages autotools)
   (gnu packages guile)
   (gnu packages guile-xyz)
   (gnu packages pkg-config)
   (gnu packages texinfo)
   (artanis artanis)
   (artanis utils)(artanis irregex))

(package
   (name "limsn")
   (version "0.1")
   (source "./limsn-0.1.tar.gz")
   (build-system gnu-build-system)
   (arguments `())
   (native-inputs
     `(("autoconf" ,autoconf)
       ("automake" ,automake)
       ("pkg-config" ,pkg-config)
       ("texinfo" ,texinfo)
       ("artanis" ,artanis)
       ))
   (inputs `(("guile" ,guile-3.0)
		       ))
   (propagated-inputs `())
   (synopsis "")
   (description "")
   (home-page "www.acme.com")
   (license license:gpl3+))




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: How to reference a module defined in another package?
  2021-04-23 19:57 How to reference a module defined in another package? mbcladwell
@ 2021-04-23 22:08 ` Vincent Legoll
  2021-04-23 22:13   ` Vincent Legoll
  2021-04-25 16:08 ` Maxime Devos
  2021-04-26  8:19 ` Ricardo Wurmus
  2 siblings, 1 reply; 7+ messages in thread
From: Vincent Legoll @ 2021-04-23 22:08 UTC (permalink / raw)
  To: mbcladwell; +Cc: help-guix

Hello,

I think this may be of help:

https://guix.gnu.org/cookbook/en/html_node/GUIX_005fPACKAGE_005fPATH.html

The error seems to be that it does not find the code, that your use module
is trying to load.

-- 
Vincent Legoll


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: How to reference a module defined in another package?
  2021-04-23 22:08 ` Vincent Legoll
@ 2021-04-23 22:13   ` Vincent Legoll
  2021-04-24 12:56     ` mbcladwell
  0 siblings, 1 reply; 7+ messages in thread
From: Vincent Legoll @ 2021-04-23 22:13 UTC (permalink / raw)
  To: mbcladwell; +Cc: help-guix

On Sat, Apr 24, 2021 at 12:08 AM Vincent Legoll
<vincent.legoll@gmail.com> wrote:
> I think this may be of help:
>
> https://guix.gnu.org/cookbook/en/html_node/GUIX_005fPACKAGE_005fPATH.html

And the first thing this page tells you, is to go have a look at the
new way of doing
this kind of things: channels.

https://guix.gnu.org/manual/en/html_node/Channels.html#Channels

So I think I also have to read about the new world order... :-)

-- 
Vincent Legoll


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: How to reference a module defined in another package?
  2021-04-23 22:13   ` Vincent Legoll
@ 2021-04-24 12:56     ` mbcladwell
  2021-04-24 18:18       ` Vincent Legoll
  0 siblings, 1 reply; 7+ messages in thread
From: mbcladwell @ 2021-04-24 12:56 UTC (permalink / raw)
  To: Vincent Legoll; +Cc: help-guix

Thanks but I don't see how channels will help me. Artanis is in the  
public Guix repository. If I query my local store for the missing  
module:

mbc@HP8300:~/temp/limsn$ find /gnu/store -wholename '*artanis/utils*'

/gnu/store/2slcmvlhyr0n5chrr6nyz0df886xb31s-artanis-0.3.1/share/guile/site/2.2/artanis/utils.scm
/gnu/store/2slcmvlhyr0n5chrr6nyz0df886xb31s-artanis-0.3.1/lib/guile/2.2/site-ccache/artanis/utils.go
/gnu/store/np3v3bifspgqslc7xl2rz2sg08q2wvzq-artanis-0.4.1/share/guile/site/2.2/artanis/utils.scm
/gnu/store/np3v3bifspgqslc7xl2rz2sg08q2wvzq-artanis-0.4.1/lib/guile/2.2/site-ccache/artanis/utils.go
/gnu/store/0zq9d6gjb6r4d98lgfkh3ccv57dbacq4-artanis-0.4.1/share/guile/site/2.2/artanis/utils.scm
/gnu/store/0zq9d6gjb6r4d98lgfkh3ccv57dbacq4-artanis-0.4.1/lib/guile/2.2/site-ccache/artanis/utils.go
etc.

Likewise I can find artanis/artanis.go and artanis/irregex.go so they  
are in the local store.
If I comment out the artanis/artanis native-input:

     ;;("artanis" ,artanis)

in my guix.scm  I get the error:
  ice-9/boot-9.scm:1669:16: In procedure raise-exception:
no code for module (artanis artanis)
make: *** [Makefile:1878: limsn/app/controllers/login.go] Error 1
make: *** Waiting for unfinished jobs....

   So a native-input of   ("artanis" ,artanis)  provides artanis/artanis.go
   How do I specify an input for artanis/utils.go that is within the  
artanis package but not defined as an external module?  But is in my  
store as artanis/utils.go?

   The closest I find in the manual would be something like:
      ("artanis:utils" ,artanis "utils")

      Which results in the error:
      guix package: error: reference to invalid output 'utils' of  
derivation  
'/gnu/store/v21j7g5xy6r48n94dbj2izs69cb48y5p-artanis-0.4.1.drv'

   Note that I (use-modules ....(artanis irregex)(artanis  
artanis)(artanis utils)) but that does not error?

   Also, at the beginning of the packaging log file where environment  
variables are displayed I see:

environment variable `GUILE_LOAD_PATH' unset
environment variable `GUILE_LOAD_COMPILED_PATH' unset
environment variable `BASH_LOADABLES_PATH' unset

Is this OK? I am in a protected GUIX environment that should not be  
dependent on system variables, correct?
   Thanks
   Mortimer

Quoting Vincent Legoll <vincent.legoll@gmail.com>:

> On Sat, Apr 24, 2021 at 12:08 AM Vincent Legoll
> <vincent.legoll@gmail.com> wrote:
>> I think this may be of help:
>>
>> https://guix.gnu.org/cookbook/en/html_node/GUIX_005fPACKAGE_005fPATH.html
>
> And the first thing this page tells you, is to go have a look at the
> new way of doing
> this kind of things: channels.
>
> https://guix.gnu.org/manual/en/html_node/Channels.html#Channels
>
> So I think I also have to read about the new world order... :-)
>
> --
> Vincent Legoll





^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: How to reference a module defined in another package?
  2021-04-24 12:56     ` mbcladwell
@ 2021-04-24 18:18       ` Vincent Legoll
  0 siblings, 0 replies; 7+ messages in thread
From: Vincent Legoll @ 2021-04-24 18:18 UTC (permalink / raw)
  To: mbcladwell; +Cc: help-guix

Hello,

On Sat, Apr 24, 2021 at 2:56 PM <mbcladwell@stihie.net> wrote:
> Thanks but I don't see how channels will help me. Artanis is in the
> public Guix repository. If I query my local store for the missing
> module:

Sorry, I misunderstood, and thought that your module was outside.

-- 
Vincent Legoll


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: How to reference a module defined in another package?
  2021-04-23 19:57 How to reference a module defined in another package? mbcladwell
  2021-04-23 22:08 ` Vincent Legoll
@ 2021-04-25 16:08 ` Maxime Devos
  2021-04-26  8:19 ` Ricardo Wurmus
  2 siblings, 0 replies; 7+ messages in thread
From: Maxime Devos @ 2021-04-25 16:08 UTC (permalink / raw)
  To: mbcladwell, help-guix

[-- Attachment #1: Type: text/plain, Size: 2440 bytes --]

mbcladwell@stihie.net schreef op vr 23-04-2021 om 14:57 [-0500]:
> Hi,
> I am trying to package an application, my guix.scm is below.  The  
> build starts OK but fails with the error:
> 
> ice-9/boot-9.scm:1669:16: In procedure raise-exception:
> no code for module (artanis utils)
> make: *** [Makefile:1878: limsn/app/controllers/target.go] Error 1
> command "make" "-j" "4" failed with status 2

When I do "guix edit artanis", I see the "artanis" package currently
uses guile-2.2.  You should: (a) change artanis to use guile-3.0 instead,
or (b) change your package to use guile-2.2 instead of guile-3.0.

> artanis/utils.scm is a file within artanis. I use-module (artanis  
> utils) to no effect.  Within artanis, utils is defined as a module:
> 
> (define-module (artanis artanis)
>    #:use-module (artanis utils)
>    #:use-module (artanis config)
>    #:use-module (artanis env).....
> 
> I tried ("artanis:utils" ,artanis "utils") but that doesn't work.
> How do I specify artanis/utils.scm as an input module?

Just use ("artanis" ,artanis).  The ("package:x" ,x "output") construction
is only needed for very few package, that split the documentation or binaries
out in a separate output, for space reasons.

> Do I need to package artanis/utils.scm separately?
No, all artanis stuff is packaged in the artanis package.
(Maybe the documentation is separate, I dunno, but you're not looking
for documentation.)

> >[...]
>    (native-inputs
>      `(("autoconf" ,autoconf)
>        ("automake" ,automake)
>        ("pkg-config" ,pkg-config)
>        ("texinfo" ,texinfo)
>        ("artanis" ,artanis)

artanis must most likely be placed in 'propagated-inputs', and not 'inputs'.
It's a bit complicated to explain why though, particularily if you're from
a ‘classical distro’ (e.g. Debian).  python and guile libraries usually need
to go into 'propagated-inputs' instead of 'inputs'.

It will build just fine if you put it in 'inputs' instead, but at run-time in
a pure profile, your package won't find artanis, as your package most likely
refers to artanis by module name (artanis utils) instead of by absolute file
name "/gnu/store/...-artanis-.../SOME-DIR-WITH-GUILE-STUFF".

Maybe when cross-compiling, it should _also_ be placed in native-inputs,
not sure though. (If you don't know what cross-compiling is, you're
most likely not doing it.)

Greetings,
Maxime.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: How to reference a module defined in another package?
  2021-04-23 19:57 How to reference a module defined in another package? mbcladwell
  2021-04-23 22:08 ` Vincent Legoll
  2021-04-25 16:08 ` Maxime Devos
@ 2021-04-26  8:19 ` Ricardo Wurmus
  2 siblings, 0 replies; 7+ messages in thread
From: Ricardo Wurmus @ 2021-04-26  8:19 UTC (permalink / raw)
  To: mbcladwell; +Cc: help-guix

Hi,

mbcladwell@stihie.net writes:

> artanis/utils.scm is a file within artanis. I use-module 
> (artanis
> utils) to no effect.  Within artanis, utils is defined as a 
> module:

There must be some confusion here: whatever modules Artanis 
provides has no impact on your Guix manifest.  For Guix we only 
care about modules exporting package values.

> How do I specify artanis/utils.scm as an input module?

You don’t.

Your problem likely stems from the fact that limsn uses Guile 3 
but Artanis is built for Guile 2.2.

-- 
Ricardo


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-04-26  8:19 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-23 19:57 How to reference a module defined in another package? mbcladwell
2021-04-23 22:08 ` Vincent Legoll
2021-04-23 22:13   ` Vincent Legoll
2021-04-24 12:56     ` mbcladwell
2021-04-24 18:18       ` Vincent Legoll
2021-04-25 16:08 ` Maxime Devos
2021-04-26  8:19 ` Ricardo Wurmus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).