unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Jelle Licht <jlicht@fsfe.org>
To: swedebugia@riseup.net
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: Cyclic npm dependencies
Date: Sat, 24 Nov 2018 15:41:35 +0000	[thread overview]
Message-ID: <CAPsKtfKV9-7VoDREJ4MbonXNcRoaNp4SHx+S6UnN8LZQO2LHwA@mail.gmail.com> (raw)
In-Reply-To: <b0efe0ea-464d-08a5-8749-f8f943c511b1@riseup.net>

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

Hey swedebugia,

I will still send a more elaborate reply to the general npm-importer
thread later this week, but we can assume that generally these
recursive dependencies can be untangled by looking at the different
versions of the dependencies.

So in your example, I imagine an input chain like:
node-glob 0.1  -> node-rimraf 0.1 -> node-glob 0.2 -> node-rimraf 0.2 ->
.... -> node-glob 1.0 -> node-rimraf 1.0

While *extremely* annoying to untangle, this is definitely doable.
Problems arise if this chain does not actually exist, which basically
means that we have to hunt down commits [1] which are steps in these
chains. Another complication is the versioning scheme used by many npm
packages, the semver [2] + ranges notation [3]. This makes this kind of
'versioning archeology' even harder to do.

For the case where this chain does exist, I have been working on a
semi-npm-compatible semver parser for guile [4], which I was hoping to
integrate in the npm importer or a standalone tool to assist people
wanting to untangle these dependency chains. The goal would be to
reconstruct the needed versions to package by parsing data in the
package.json files of historic versions of these packages.

HTH,

Jelle

[1]: ... or even more granular, parts of commits!
[2]: https://semver.org/
[3]: https://docs.npmjs.com/misc/semver
[4]: https://git.fsfe.org/jlicht/guile-semver


Op za 24 nov. 2018 om 15:10 schreef swedebugia <swedebugia@riseup.net>:

> Hi
>
> We need to wonder about what to do with cyclic dependencies.
>
> In the case below node-rimraf has node-glob in input and node-glob has
> node-rimraf in NATIVE-input.
>
> I have no idea how to solve this. Both packages are by the same author.
>
> Same problem with jasmine and jasmine-core
>
> ~/guix-tree/pre-inst-env guix build -K node-rimraf
> allocate_stack failed: Cannot allocate memory
> Warning: Unwind-only `stack-overflow' exception; skipping pre-unwind
> handler.
> allocate_stack failed: Cannot allocate memory
> Warning: Unwind-only `stack-overflow' exception; skipping pre-unwind
> handler.
> allocate_stack failed: Cannot allocate memory
> Warning: Unwind-only `stack-overflow' exception; skipping pre-unwind
> handler.
>
>
> --
> Cheers Swedebugia
>
>

[-- Attachment #2: Type: text/html, Size: 2905 bytes --]

  reply	other threads:[~2018-11-24 15:41 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-24 15:16 Cyclic npm dependencies swedebugia
2018-11-24 15:41 ` Jelle Licht [this message]
2018-11-24 16:38   ` Pjotr Prins
2018-11-24 23:29     ` Jelle Licht
2018-11-25  8:34       ` Pjotr Prins
2018-11-25 13:16   ` swedebugia

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=CAPsKtfKV9-7VoDREJ4MbonXNcRoaNp4SHx+S6UnN8LZQO2LHwA@mail.gmail.com \
    --to=jlicht@fsfe.org \
    --cc=guix-devel@gnu.org \
    --cc=swedebugia@riseup.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.
Code repositories for project(s) associated with this public inbox

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

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).