unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: "Cássio Tavares" <cassio.ufg@gmail.com>
To: Ricardo Wurmus <rekado@elephly.net>
Cc: help-guix@gnu.org
Subject: Re: Packaging existing software for Guix
Date: Mon, 4 Apr 2022 21:17:50 +0000	[thread overview]
Message-ID: <CAJTCCxPtKKKqg5DtZ_mn1vC71SbXN_FVPPD=ED4jaA+iXhp_Hg@mail.gmail.com> (raw)
In-Reply-To: <875ynw8zra.fsf@elephly.net>

Hi, and thanks for your patient guidance, Ricardo!
So . . .

My progress

I'm trying to follow your (and @Vagrant <mailto:vagrant@debian.org>Cascadian
<mailto:vagrant@debian.org>'s) suggestions, looking into the `
guix.git/gnu/packages/*` files for examples of package definitions, reading
the development versions of the manual and the cookbook, and also
experimenting on my own. With that I could find out, for the package I'm
trying to port, what build-system to use, how to specify the origin and the
commit, and how to get the hash for that commit. So, some progress, but
there are still things to debug.

Your challenge

>    5. Is there a relatively simple way to port packages from other distros
> >    into Guix? Could this be an automated process?
>
> Not from other distros but from upstream repositories; see “guix import”.


I'm looking into `guix import`, and made a few experiments with it.  And ...


> If you want a fun project you could work on extending “guix
> import” to import from distro archives.


Interesting challenge ─ I'd like to be able to accept it. *But* (a *big*
*but*) I think I'm hundreds of miles away from being capable of doing
that ─ just
look at the picture you're painting:

Nixpkgs is often not a good template, because more often than not they
> are cutting corners when it comes to bootstrapping or building from source.
>

Tricky, isn't it? But just for brainstorming, does any other distro package
its applications in a way that is more descriptive of the build process, so
that it could be more easily translated into Scheme for Guix?

And, redirecting a bit the problem ─ would it be useful to have an importer
for NodeJS packages? (I know that most Node packages are defined
per-project in a package.json file, but there are those that can be used as
a stand-alone App) And that would be simpler or more complex than an
importer for a distro (assuming a carefully chosen, favorable distro)?
Just to be clear, this is just for the sake of exploring possibilities ─
I'm not committing to undertaking this project.

Anyway, I was touched by your availability:

You are welcome to send me issue numbers with your patches and
> I’ll review them more quickly.
>

Your offer makes me feel very much encouraged to proceed with my attempts
to package things for Guix, and, in doing so, contribute in a more concrete
way to the Free Software movement. But...

Failed attempts (help needed)

I want to install and use TiddlyMap
<https://github.com/felixhayashi/TW5-TiddlyMap>, which extends TiddlyWiki5
<https://github.com/Jermolene/TiddlyWiki5>, which is then its dependency.
So to isolate things, I started by writing a package definition for the
latter, which didn't work. At first debugging was easy, because guix
informs that some `use-module` expression is missing. But then I got stuck.
So, maybe you would be willing to take a look at how far I've got up to
now, and give me some guidance? Here it is:

(define-module (gnu packages tiddlywiki)
  #:use-module (guix packages)
  #:use-module (guix git-download)
  #:use-module (guix build-system node)
  #:use-module (guix licenses)

  #:use-module (gnu packages node))



(define-public tiddlywiki
  (package
    (name "tiddlywiki")
    (version "5.2.2")
    (source
      (origin
        (method git-fetch)
        (uri (git-reference
               (url "https://github.com/Jermolene/TiddlyWiki5")
               (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
          (base32
            "0ji5c3bqhjaign101fjy13bfhq1i804cxaibs61xmnfync6g1pf7"))))
    (build-system node-build-system)
    (home-page "https://tiddlywiki.com")
    (synopsis "A non-linear web-browser based personal notebook app")
    (description "TiddlyWiki is a complete interactive wiki in
      JavaScript. It can be used as a single HTML file in the browser
      or as a powerful Node.js application. It is highly
      customisable: the entire user interface is itself implemented
      in hackable WikiText.")
    (license bsd-3)))


# This last line is so that this file returns a package definition

tiddlywiki


Then I tried to install it with:  `guix shell --pure -f
/path/to/tiddlywiki.scm`, but it failed.
This is the relevant information (I think) inside the log-file:

starting phase `set-SOURCE-DATE-EPOCH'
phase `set-SOURCE-DATE-EPOCH' succeeded after 0.0 seconds
starting phase `set-paths'
environment variable `PATH' set to
`/gnu/store/akwqc82xg9l0g873hh7ia81pdwkf2sm6-node-14.18.3/bin:/gnu/store/g2ajyl8xk9aarxrgjbng2hkj3qm2v0z2-tar-1.34/bin:/gnu/store/iixwcv3k49ks1rf34pjgfzmzyhhgwng3-gzip-1.10/bin:/gnu/store/s3hl12jxz9ybs7nsy7kq7ybzz7qnzmsg-bzip2-1.0.8/bin:/gnu/store/c8isj4jq6knv0icfgr43di6q3nvdzkx7-xz-5.2.5/bin:/gnu/store/4ic6244i3ca4b4rxc2wnrgllsidyishv-file-5.39/bin:/gnu/store/ahmmvw21p11ik80lg1f953y7fd8bqkjm-diffutils-3.8/bin:/gnu/store/z39hnrwds1dgcbpfgj8dnv2cngjb2xbl-patch-2.7.6/bin:/gnu/store/39rsx3nl4c31952jybbjb8d6idr5hx7r-findutils-4.8.0/bin:/gnu/store/690qz3fg334dpwn3pn6k59n4wc943p2b-gawk-5.1.0/bin:/gnu/store/wxgv6i8g0p24q5gcyzd0yr07s8kn9680-sed-4.8/bin:/gnu/store/xjwp2hsd9256icjjybfrmznppjicywf6-grep-3.6/bin:/gnu/store/d251rfgc9nm2clzffzhgiipdvfvzkvwi-coreutils-8.32/bin:/gnu/store/55cbpsi18mahg131nmiya6km5b4mscfa-make-4.3/bin:/gnu/store/4y5m9lb8k3qkb1y9m02sw9w9a6hacd16-bash-minimal-5.1.8/bin:/gnu/store/s2pg5k98fl2g2szg9dykxyd9zl3xihv9-ld-wrapper-0/bin:/gnu/store/rc781v4k0drhaqn90xfwwpspki5x0bvf-binutils-2.37/bin:/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0/bin:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/bin:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/sbin'
environment variable `NODE_PATH' set to
`/gnu/store/akwqc82xg9l0g873hh7ia81pdwkf2sm6-node-14.18.3/lib/node_modules'
environment variable `BASH_LOADABLES_PATH' unset
environment variable `C_INCLUDE_PATH' set to
`/gnu/store/akwqc82xg9l0g873hh7ia81pdwkf2sm6-node-14.18.3/include:/gnu/store/ri34iqiy08wn7k6czq43g5wl24ghsk97-libuv-1.42.0/include:/gnu/store/s3hl12jxz9ybs7nsy7kq7ybzz7qnzmsg-bzip2-1.0.8/include:/gnu/store/c8isj4jq6knv0icfgr43di6q3nvdzkx7-xz-5.2.5/include:/gnu/store/4ic6244i3ca4b4rxc2wnrgllsidyishv-file-5.39/include:/gnu/store/690qz3fg334dpwn3pn6k59n4wc943p2b-gawk-5.1.0/include:/gnu/store/55cbpsi18mahg131nmiya6km5b4mscfa-make-4.3/include:/gnu/store/rc781v4k0drhaqn90xfwwpspki5x0bvf-binutils-2.37/include:/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0/include:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/include:/gnu/store/6mjww4iz4xdan74d5bbjfh7il8rngfkk-linux-libre-headers-5.10.35/include'
environment variable `CPLUS_INCLUDE_PATH' set to
`/gnu/store/akwqc82xg9l0g873hh7ia81pdwkf2sm6-node-14.18.3/include:/gnu/store/ri34iqiy08wn7k6czq43g5wl24ghsk97-libuv-1.42.0/include:/gnu/store/s3hl12jxz9ybs7nsy7kq7ybzz7qnzmsg-bzip2-1.0.8/include:/gnu/store/c8isj4jq6knv0icfgr43di6q3nvdzkx7-xz-5.2.5/include:/gnu/store/4ic6244i3ca4b4rxc2wnrgllsidyishv-file-5.39/include:/gnu/store/690qz3fg334dpwn3pn6k59n4wc943p2b-gawk-5.1.0/include:/gnu/store/55cbpsi18mahg131nmiya6km5b4mscfa-make-4.3/include:/gnu/store/rc781v4k0drhaqn90xfwwpspki5x0bvf-binutils-2.37/include:/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0/include/c++:/gnu/store/069aq2v993kpc41yabp5b6vm4wb9jkhg-gcc-10.3.0/include:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/include:/gnu/store/6mjww4iz4xdan74d5bbjfh7il8rngfkk-linux-libre-headers-5.10.35/include'
environment variable `LIBRARY_PATH' set to
`/gnu/store/akwqc82xg9l0g873hh7ia81pdwkf2sm6-node-14.18.3/lib:/gnu/store/ri34iqiy08wn7k6czq43g5wl24ghsk97-libuv-1.42.0/lib:/gnu/store/s3hl12jxz9ybs7nsy7kq7ybzz7qnzmsg-bzip2-1.0.8/lib:/gnu/store/c8isj4jq6knv0icfgr43di6q3nvdzkx7-xz-5.2.5/lib:/gnu/store/4ic6244i3ca4b4rxc2wnrgllsidyishv-file-5.39/lib:/gnu/store/690qz3fg334dpwn3pn6k59n4wc943p2b-gawk-5.1.0/lib:/gnu/store/rc781v4k0drhaqn90xfwwpspki5x0bvf-binutils-2.37/lib:/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib:/gnu/store/4jdghmc65q7i7ib89zmvq66l0ghf7jc4-glibc-2.33-static/lib:/gnu/store/fnr1z6xsan0437r0yg48d0y8k32kqxby-glibc-utf8-locales-2.33/lib'
environment variable `GUIX_LOCPATH' set to
`/gnu/store/fnr1z6xsan0437r0yg48d0y8k32kqxby-glibc-utf8-locales-2.33/lib/locale'
phase `set-paths' succeeded after 0.0 seconds
starting phase `install-locale'
using 'en_US.utf8' locale for category "LC_ALL"
phase `install-locale' succeeded after 0.0 seconds
starting phase `unpack'
      *... (very long list of unpacked files, with the indication of where
to)*
phase `unpack' succeeded after 0.6 seconds
starting phase `set-home'
set HOME to "/tmp/guix-build-tiddlywiki-5.2.2.drv-0/npm-home-0"
phase `set-home' succeeded after 0.0 seconds
starting phase `bootstrap'
no 'configure.ac' or anything like that, doing nothing
phase `bootstrap' succeeded after 0.0 seconds
starting phase `patch-usr-bin-file'
phase `patch-usr-bin-file' succeeded after 0.0 seconds
starting phase `patch-source-shebangs'
    *... (list of shebangs patches)*
phase `patch-source-shebangs' succeeded after 0.5 seconds
starting phase `patch-dependencies'
phase `patch-dependencies' succeeded after 0.0 seconds
starting phase `delete-lockfiles'
phase `delete-lockfiles' succeeded after 0.0 seconds
starting phase `configure'
npm ERR! code ENOTCACHED
npm ERR! request to https://registry.npmjs.org/eslint failed: cache mode is
'only-if-cached' but no cached response available.

npm ERR! A complete log of this run can be found in:
npm ERR!
/tmp/guix-build-tiddlywiki-5.2.2.drv-0/npm-home-0/.npm/_logs/2022-04-02T17_48_43_558Z-debug.log
error: in phase 'configure': uncaught exception:
%exception #<&invoke-error program:
"/gnu/store/akwqc82xg9l0g873hh7ia81pdwkf2sm6-node-14.18.3/bin/npm"
arguments: ("--offline" "--ignore-scripts" "install") exit-status: 1
term-signal: #f stop-signal: #f>
phase `configure' failed after 0.6 seconds
command "/gnu/store/akwqc82xg9l0g873hh7ia81pdwkf2sm6-node-14.18.3/bin/npm"
"--offline" "--ignore-scripts" "install" failed with status 1

I have no idea what this means. Can you deduce anything useful from that?
What do I need to know to fix this?

Thanks again,
Cássio

  reply	other threads:[~2022-04-04 21:18 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-29 14:22 Packaging existing software for Guix Cássio Tavares
2022-03-29 15:55 ` Ricardo Wurmus
2022-04-04 21:17   ` Cássio Tavares [this message]
2022-04-08  3:59     ` raingloom
2022-03-29 16:31 ` Vagrant Cascadian
2022-03-31 22:23   ` Cássio Tavares
2022-04-02 17:00     ` Bird
  -- strict thread matches above, loose matches on Subject: below --
2022-04-01  6:26 Liliana Marie Prikler
2022-04-01 13:21 ` Cássio Tavares

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

  List information: https://guix.gnu.org/

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

  git send-email \
    --in-reply-to='CAJTCCxPtKKKqg5DtZ_mn1vC71SbXN_FVPPD=ED4jaA+iXhp_Hg@mail.gmail.com' \
    --to=cassio.ufg@gmail.com \
    --cc=help-guix@gnu.org \
    --cc=rekado@elephly.net \
    /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.
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).