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

Include a git distribution, as many packages on npm depend on it #67

Open
dbkaplun opened this Issue Sep 16, 2014 · 172 comments

Comments

@dbkaplun

npm depends on git in the following ways (credit to @isaacs):

  • Parsing out the git remote for npm init (see maryrosecook/gitlet#8)
  • Fetching dependencies that are listed as git urls (gitlet, possibly jsgit)
  • Verifying that the git repo is clean on npm version
  • Committing and tagging the local repo on npm version (and, optionally, signing said tag by passing the -s arg to git.)

The issue should be closed once a git is found that can run on NodeOS and can do all of these.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 16, 2014

Member

There are several pure-Javascript git client libraries (https://www.npmjs.org/package/git, https://www.npmjs.org/package/js-git), but seems none of them has a CLI... :-/

Could you be able to point us why a git CLI command is needed? NPM should manage automatically git repositories and not depend on external tools, and if so, then it should be fixed...

Member

piranna commented Sep 16, 2014

There are several pure-Javascript git client libraries (https://www.npmjs.org/package/git, https://www.npmjs.org/package/js-git), but seems none of them has a CLI... :-/

Could you be able to point us why a git CLI command is needed? NPM should manage automatically git repositories and not depend on external tools, and if so, then it should be fixed...

@dbkaplun

This comment has been minimized.

Show comment
Hide comment
@dbkaplun

dbkaplun Sep 17, 2014

@piranna see here. npm allows git dependencies, but requires a git command as an external tool in order to fetch them.

@piranna see here. npm allows git dependencies, but requires a git command as an external tool in order to fetch them.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 17, 2014

Member

I know npm support git urls (we use them at work during development since we only publish on npm the stable releases), I'm only saying npm should use a Javascript library instead of a external command.

Member

piranna commented Sep 17, 2014

I know npm support git urls (we use them at work during development since we only publish on npm the stable releases), I'm only saying npm should use a Javascript library instead of a external command.

@seanewest

This comment has been minimized.

Show comment
Hide comment
@seanewest

seanewest Sep 17, 2014

Contributor

I think it would be cool to implement a minimal CLI on top of https://github.com/creationix/js-git . We could start by just implementing the functionality that npm requires out of the git command line tool.

Contributor

seanewest commented Sep 17, 2014

I think it would be cool to implement a minimal CLI on top of https://github.com/creationix/js-git . We could start by just implementing the functionality that npm requires out of the git command line tool.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 17, 2014

Member

It's not a bad idea...

Member

piranna commented Sep 17, 2014

It's not a bad idea...

@groundwater

This comment has been minimized.

Show comment
Hide comment
@groundwater

groundwater Sep 22, 2014

Contributor

I think in general, a git written in pure-js that fulfills all of npm's needs would be fantastic. Perhaps @othiym23 has a word on how useful that would be.

Contributor

groundwater commented Sep 22, 2014

I think in general, a git written in pure-js that fulfills all of npm's needs would be fantastic. Perhaps @othiym23 has a word on how useful that would be.

@othiym23

This comment has been minimized.

Show comment
Hide comment
@othiym23

othiym23 Sep 22, 2014

It would be fantastic! Obviously! But the amount of git that npm uses is pretty hefty at this point. It's mostly git clone, git status, and git tag (with support for calling out to gpg --sign), but lots of different kinds of git URLS, lots of permissions logic, etc.

It would be fantastic! Obviously! But the amount of git that npm uses is pretty hefty at this point. It's mostly git clone, git status, and git tag (with support for calling out to gpg --sign), but lots of different kinds of git URLS, lots of permissions logic, etc.

@dbkaplun

This comment has been minimized.

Show comment
Hide comment
@dbkaplun

dbkaplun Sep 22, 2014

Would it be possible to package git as a binary that works in NodeOS? That would be a good way to get npm working without having to implement or extend a pure Node-based git replacement.

Would it be possible to package git as a binary that works in NodeOS? That would be a good way to get npm working without having to implement or extend a pure Node-based git replacement.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 22, 2014

Member

If they are so few commands, why npm doesn't use already a Javascript library? How does it do in Windows if there's no git command available, for example? Shouldn't it be better and easier add it to npm itself instead of add a git command to NodeOS?

Member

piranna commented Sep 22, 2014

If they are so few commands, why npm doesn't use already a Javascript library? How does it do in Windows if there's no git command available, for example? Shouldn't it be better and easier add it to npm itself instead of add a git command to NodeOS?

@othiym23

This comment has been minimized.

Show comment
Hide comment
@othiym23

othiym23 Sep 23, 2014

If they are so few commands, why npm doesn't use already a Javascript library?

I bet @creationix would have a pithy answer to this; it turns out that supporting all of git's transport mechanisms in addition to dealing with packfiles and all of the file-manipulation magic necessary to check out a repo correctly isn't trivial business.

How does it do in Windows if there's no git command available, for example?

It fails miserably. npm on Windows requires Git just as much as it does on Unix.

Shouldn't it be better and easier add it to npm itself instead of add a git command to NodeOS?

We have to pick and choose our battles. Apparently, @isaacs chose the battle where he rewrote his own version of tar from the ground up to handle all of the many, many weird edge cases that can show up in tar files, and that's comparatively simple next to making a functional git client.

As always, though: patches welcome!

If they are so few commands, why npm doesn't use already a Javascript library?

I bet @creationix would have a pithy answer to this; it turns out that supporting all of git's transport mechanisms in addition to dealing with packfiles and all of the file-manipulation magic necessary to check out a repo correctly isn't trivial business.

How does it do in Windows if there's no git command available, for example?

It fails miserably. npm on Windows requires Git just as much as it does on Unix.

Shouldn't it be better and easier add it to npm itself instead of add a git command to NodeOS?

We have to pick and choose our battles. Apparently, @isaacs chose the battle where he rewrote his own version of tar from the ground up to handle all of the many, many weird edge cases that can show up in tar files, and that's comparatively simple next to making a functional git client.

As always, though: patches welcome!

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Sep 24, 2014

Getting js-git to the point that it can be used internally by npm is closer. If someone wanted to take on this task, I could guide them. The main tasks are:

  • Clone over HTTPS. The actual clone is pretty much finished, you just need a node adapter to use node's https client (or use http-codec on top of node's tls module).
  • Check out files. Since npm doesn't need to create an actual git checkout complete with index, we can just export the files for a given commit/tag to disk. Trivial in current js-git
  • Clone over TCP, this is also easy, but only works for git:// read-only urls.
  • Clone over SSH. This is considerably harder, but much easier in node as opposed to in browser where raw TCP and TLS are harder to come by. The https://github.com/mscdex/ssh2 module would come in handy here.

As far as tagging and writing to a git database, that's not implemented as a high-level API, but it's pretty trivial to import a directory into git, create a commit from it and tag that commit. You'd still need to shell out to gpg or find a JS implementation for that use case.

Overall I think it's quite possible and just needs someone motivated and with time to finish it.

Getting js-git to the point that it can be used internally by npm is closer. If someone wanted to take on this task, I could guide them. The main tasks are:

  • Clone over HTTPS. The actual clone is pretty much finished, you just need a node adapter to use node's https client (or use http-codec on top of node's tls module).
  • Check out files. Since npm doesn't need to create an actual git checkout complete with index, we can just export the files for a given commit/tag to disk. Trivial in current js-git
  • Clone over TCP, this is also easy, but only works for git:// read-only urls.
  • Clone over SSH. This is considerably harder, but much easier in node as opposed to in browser where raw TCP and TLS are harder to come by. The https://github.com/mscdex/ssh2 module would come in handy here.

As far as tagging and writing to a git database, that's not implemented as a high-level API, but it's pretty trivial to import a directory into git, create a commit from it and tag that commit. You'd still need to shell out to gpg or find a JS implementation for that use case.

Overall I think it's quite possible and just needs someone motivated and with time to finish it.

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Sep 24, 2014

Also on my list of mad science experiments, fuse for node in pure js and zip for node in pure js. Though if you're willing to bundle node-fuse I have a library that lets you mount a git repo as a read-only filesystem that could be interesting for node_modules.

Also on my list of mad science experiments, fuse for node in pure js and zip for node in pure js. Though if you're willing to bundle node-fuse I have a library that lets you mount a git repo as a read-only filesystem that could be interesting for node_modules.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 25, 2014

Member

@creationix, these are great news if it could be so easy! :-)

Clone over TCP, this is also easy, but only works for git:// read-only urls.

Why is that? Shouldn't read-write urls fetched the same way? Only point you can't be able to push... And if you are talking about NPM GitHub repos, it should be managed by npm itself...

You'd still need to shell out to gpg or find a JS implementation for that use case.

Probably these two could be used:

http://openpgpjs.org/
https://www.npmjs.org/package/gpg

Though if you're willing to bundle node-fuse I have a library that lets you mount a git repo as a read-only filesystem that could be interesting for node_modules.

Current Ubuntu kernel has FUSE support, so node-fuse could be added when building the image, it's on the roadmap to be able to install on runtime compiled modules, but it's not easy seems it requires to have installed a toolchain, and we are trying to make NodeOS to be minmalistic and have a small footprint, and install only the required resources when needed by using `ǹpm install``. Could you be able to explain us how the mounted git repo could be used for node_modules?

P.D.: greetings from an old Ubuntu-Tweak user ;-)

Member

piranna commented Sep 25, 2014

@creationix, these are great news if it could be so easy! :-)

Clone over TCP, this is also easy, but only works for git:// read-only urls.

Why is that? Shouldn't read-write urls fetched the same way? Only point you can't be able to push... And if you are talking about NPM GitHub repos, it should be managed by npm itself...

You'd still need to shell out to gpg or find a JS implementation for that use case.

Probably these two could be used:

http://openpgpjs.org/
https://www.npmjs.org/package/gpg

Though if you're willing to bundle node-fuse I have a library that lets you mount a git repo as a read-only filesystem that could be interesting for node_modules.

Current Ubuntu kernel has FUSE support, so node-fuse could be added when building the image, it's on the roadmap to be able to install on runtime compiled modules, but it's not easy seems it requires to have installed a toolchain, and we are trying to make NodeOS to be minmalistic and have a small footprint, and install only the required resources when needed by using `ǹpm install``. Could you be able to explain us how the mounted git repo could be used for node_modules?

P.D.: greetings from an old Ubuntu-Tweak user ;-)

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Sep 26, 2014

When I said "read-only urls" I meant you wouldn't be able to push to the remote, only read from it. This is fine for most npm actions, but npm does write for some things like auto tagging/publishing I think.

The fuse idea is mad science. I wouldn't use node-fuse if you're going for minimal. Implementing fuse in JS isn't that terrible (it's easier than git or zlib). But the basic idea is instead of exporting the files to disk, mount the repos as subfolders under node_modules. This is probably not that good for npm's typical use case though.

When I said "read-only urls" I meant you wouldn't be able to push to the remote, only read from it. This is fine for most npm actions, but npm does write for some things like auto tagging/publishing I think.

The fuse idea is mad science. I wouldn't use node-fuse if you're going for minimal. Implementing fuse in JS isn't that terrible (it's easier than git or zlib). But the basic idea is instead of exporting the files to disk, mount the repos as subfolders under node_modules. This is probably not that good for npm's typical use case though.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 26, 2014

Member

When I said "read-only urls" I meant you wouldn't be able to push to the remote, only read from it. This is fine for most npm actions, but npm does write for some things like auto tagging/publishing I think.

AFAIK, npm doesn't write to git never. When publishing, content is
uploaded by simple HTTP POST to npm registry, and in fact there are
published several packages without a repository at all, so I believe
read-only git urls is just enough.

Bower on the other hand, it use git repositories for publishing since
it doesn't have a real registry (bower registry is mostly an url
shortened, said by their developers themselves), but that's another
story.

The fuse idea is mad science. I wouldn't use node-fuse if you're going for minimal. Implementing fuse in JS isn't that terrible (it's easier than git or zlib). But the basic idea is instead of exporting the files to disk, mount the repos as subfolders under node_modules. This is probably not that good for npm's typical use case though.

I would need to see the use case in detail, I don't finish to
understand what you are trying to achieve. But it's true, fuse is
ideal for mad science... :-D

"Si quieres viajar alrededor del mundo y ser invitado a hablar en un
monton de sitios diferentes, simplemente escribe un sistema operativo
Unix."
– Linus Tordvals, creador del sistema operativo Linux

Member

piranna commented Sep 26, 2014

When I said "read-only urls" I meant you wouldn't be able to push to the remote, only read from it. This is fine for most npm actions, but npm does write for some things like auto tagging/publishing I think.

AFAIK, npm doesn't write to git never. When publishing, content is
uploaded by simple HTTP POST to npm registry, and in fact there are
published several packages without a repository at all, so I believe
read-only git urls is just enough.

Bower on the other hand, it use git repositories for publishing since
it doesn't have a real registry (bower registry is mostly an url
shortened, said by their developers themselves), but that's another
story.

The fuse idea is mad science. I wouldn't use node-fuse if you're going for minimal. Implementing fuse in JS isn't that terrible (it's easier than git or zlib). But the basic idea is instead of exporting the files to disk, mount the repos as subfolders under node_modules. This is probably not that good for npm's typical use case though.

I would need to see the use case in detail, I don't finish to
understand what you are trying to achieve. But it's true, fuse is
ideal for mad science... :-D

"Si quieres viajar alrededor del mundo y ser invitado a hablar en un
monton de sitios diferentes, simplemente escribe un sistema operativo
Unix."
– Linus Tordvals, creador del sistema operativo Linux

@othiym23

This comment has been minimized.

Show comment
Hide comment
@othiym23

othiym23 Sep 27, 2014

npm doesn't push upstream, but it does create commits, and GnuPG signs those commits, when creating new versions. Signed versions are one of the cornerstones of the npm release flow and are an absolute requirement. Dist-tagging is a registry operation and doesn't have a git dependency.

npm doesn't push upstream, but it does create commits, and GnuPG signs those commits, when creating new versions. Signed versions are one of the cornerstones of the npm release flow and are an absolute requirement. Dist-tagging is a registry operation and doesn't have a git dependency.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 27, 2014

Member

npm does commits and signatures when publishing, from client side?!?! I though it was done on the server, but not that it was done from the client, so in that case I was totally wrong... :-( Where could I be able to read a doc describing the full process?

Member

piranna commented Sep 27, 2014

npm does commits and signatures when publishing, from client side?!?! I though it was done on the server, but not that it was done from the client, so in that case I was totally wrong... :-( Where could I be able to read a doc describing the full process?

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Sep 27, 2014

As long as npm doesn't need to actually push the new commits to the remote, we're good. JS-GIt has no problem creating local commits. I'd recommend using the https://github.com/creationix/git-node-fs backend which is compatible with real git.

As long as npm doesn't need to actually push the new commits to the remote, we're good. JS-GIt has no problem creating local commits. I'd recommend using the https://github.com/creationix/git-node-fs backend which is compatible with real git.

@dbkaplun

This comment has been minimized.

Show comment
Hide comment
@dbkaplun

dbkaplun Sep 27, 2014

Is it possible to include a binary git distribution?

Is it possible to include a binary git distribution?

@seanewest

This comment has been minimized.

Show comment
Hide comment
@seanewest

seanewest Sep 27, 2014

Contributor

@beardtree totally.

Contributor

seanewest commented Sep 27, 2014

@beardtree totally.

@dbkaplun

This comment has been minimized.

Show comment
Hide comment
@dbkaplun

dbkaplun Sep 28, 2014

How complex would it be? Why don't we do that instead of writing/augmenting a JS git client?

How complex would it be? Why don't we do that instead of writing/augmenting a JS git client?

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 28, 2014

Member

It's easy to do it on the barebones or initramfs layers so it's available
for all the users, but it will be loaded all the time in ram and due to
this initram should be as minimal as possible and also it will not be
easily upgradeable. A better alternative is to add it to rootfs, but until
we have aufs or overlayfs on the kernel it will be available only for root
user, and also not easily upgradeable. The ideal case is to have it on
usersfs on a per-user basis, but then it should be available on npm, so we
could have an egg-or-chicken problem here.

As a temporal solution, only solution is to add it on barebones or
initramfs until the functionality is available natively on npm.
El 28/09/2014 18:09, "Dan Kaplun" notifications@github.com escribió:

How complex would it be? Why don't we do that instead of
writing/augmenting a JS git client?


Reply to this email directly or view it on GitHub
#67 (comment).

Member

piranna commented Sep 28, 2014

It's easy to do it on the barebones or initramfs layers so it's available
for all the users, but it will be loaded all the time in ram and due to
this initram should be as minimal as possible and also it will not be
easily upgradeable. A better alternative is to add it to rootfs, but until
we have aufs or overlayfs on the kernel it will be available only for root
user, and also not easily upgradeable. The ideal case is to have it on
usersfs on a per-user basis, but then it should be available on npm, so we
could have an egg-or-chicken problem here.

As a temporal solution, only solution is to add it on barebones or
initramfs until the functionality is available natively on npm.
El 28/09/2014 18:09, "Dan Kaplun" notifications@github.com escribió:

How complex would it be? Why don't we do that instead of
writing/augmenting a JS git client?


Reply to this email directly or view it on GitHub
#67 (comment).

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Oct 1, 2014

Member

(cross-post message)

Ok, after reading git needed libraries and external commands (uhm?), in my opinion use it on NodeOS is a no-way (ssh? Perl?!?!), so if anyone is interested, I think will be easier to improve js-git and use it on npm that port git to NodeOS, so I advise don't take that last path.

Member

piranna commented Oct 1, 2014

(cross-post message)

Ok, after reading git needed libraries and external commands (uhm?), in my opinion use it on NodeOS is a no-way (ssh? Perl?!?!), so if anyone is interested, I think will be easier to improve js-git and use it on npm that port git to NodeOS, so I advise don't take that last path.

@dbkaplun

This comment has been minimized.

Show comment
Hide comment
@dbkaplun

dbkaplun Jan 25, 2015

Looks like we may have what we need: https://github.com/maryrosecook/gitlet

Looks like we may have what we need: https://github.com/maryrosecook/gitlet

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Jan 25, 2015

That looks pretty awesome (gitlet). I hope my work was somewhat useful to
her.

On Sat, Jan 24, 2015 at 8:12 PM, Dan Kaplun notifications@github.com
wrote:

Looks like we may have what we need:
https://github.com/maryrosecook/gitlet


Reply to this email directly or view it on GitHub
#67 (comment).

That looks pretty awesome (gitlet). I hope my work was somewhat useful to
her.

On Sat, Jan 24, 2015 at 8:12 PM, Dan Kaplun notifications@github.com
wrote:

Looks like we may have what we need:
https://github.com/maryrosecook/gitlet


Reply to this email directly or view it on GitHub
#67 (comment).

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Jan 25, 2015

Member

1000 lines of code

O_O

Member

piranna commented Jan 25, 2015

1000 lines of code

O_O

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Jan 25, 2015

Member

If the repository is not bare, put the directories inside the .gitlet directory

That directory is not standard, don't know how much problems this would bring... :-/ I've open an issue asking for this.

Member

piranna commented Jan 25, 2015

If the repository is not bare, put the directories inside the .gitlet directory

That directory is not standard, don't know how much problems this would bring... :-/ I've open an issue asking for this.

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Jan 25, 2015

Since the goal in NodeOS is to not ever need real git, it doesn't matter if
gitlet's filesystem format is compatible. You could store the objects in
leveldb and it would look the same externally. The only points where
compatibility matters is the hashing algorithm and the network protocols
which gitlet appears to implement correctly (otherwise cloning and pushing
wouldn't work at all)

On Sun, Jan 25, 2015 at 5:24 AM, Jesús Leganés Combarro <
notifications@github.com> wrote:

If the repository is not bare, put the directories inside the .gitlet
directory http://gitlet.maryrosecook.com/docs/gitlet.html#section-31

That directory is not standard, don't know how much problems this would
bring... :-/ I've open an issue asking for this
maryrosecook/gitlet#5.


Reply to this email directly or view it on GitHub
#67 (comment).

Since the goal in NodeOS is to not ever need real git, it doesn't matter if
gitlet's filesystem format is compatible. You could store the objects in
leveldb and it would look the same externally. The only points where
compatibility matters is the hashing algorithm and the network protocols
which gitlet appears to implement correctly (otherwise cloning and pushing
wouldn't work at all)

On Sun, Jan 25, 2015 at 5:24 AM, Jesús Leganés Combarro <
notifications@github.com> wrote:

If the repository is not bare, put the directories inside the .gitlet
directory http://gitlet.maryrosecook.com/docs/gitlet.html#section-31

That directory is not standard, don't know how much problems this would
bring... :-/ I've open an issue asking for this
maryrosecook/gitlet#5.


Reply to this email directly or view it on GitHub
#67 (comment).

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Jan 25, 2015

Member

Good point, I forgot that the .git folder is not transmitted :-P I though it would be mandatory for compatibiliy issues, like .gitignore and similar. Ok, then I think maybe we can use it... :-)

Member

piranna commented Jan 25, 2015

Good point, I forgot that the .git folder is not transmitted :-P I though it would be mandatory for compatibiliy issues, like .gitignore and similar. Ok, then I think maybe we can use it... :-)

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Jan 25, 2015

Hmm, looking at gitlet in more detail, I don't think it actually implements pack protocol needed for git network transfers. The clone example is just cloning from another repo on the local disk.

js-git is actually farther along if your goal is to be able to pull down packages over git. The main piece missing from js-git is the push protocol since I never found a safe way to do it in the browser (which was my main use case and motivation for creating js-git). But it's quite possible technically with a node.js backend.

Gitlet does have a lot more of the normal git workflow implemented than js-git so the overlap actually isn't that great. Between the two we should be able to make something that works great for nodeOS. I believe there is enough in js-git today to do what npm needs (unless npm also uses git push, which is still missing from js-git)

Hmm, looking at gitlet in more detail, I don't think it actually implements pack protocol needed for git network transfers. The clone example is just cloning from another repo on the local disk.

js-git is actually farther along if your goal is to be able to pull down packages over git. The main piece missing from js-git is the push protocol since I never found a safe way to do it in the browser (which was my main use case and motivation for creating js-git). But it's quite possible technically with a node.js backend.

Gitlet does have a lot more of the normal git workflow implemented than js-git so the overlap actually isn't that great. Between the two we should be able to make something that works great for nodeOS. I believe there is enough in js-git today to do what npm needs (unless npm also uses git push, which is still missing from js-git)

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Jan 25, 2015

Member

The main piece missing from js-git is the push protocol since I never found a safe way to do it in the browser (which was my main use case and motivation for creating js-git).

Just a suggestion, what about implement git push by using
XmlHttpRequest? This would only allow to use HTTP(S) repos, but
probably it's more than enough on a browser environment... Also, in
the future could be implemented a SSH-like or GIT-like protocol using
websockets... Other repos would need to support it (the same way that
they support HTTP), but a Node.js proxy would be easily feasable :-)

Gitlet does have a lot more of the normal git workflow implemented than js-git so the overlap actually isn't that great.

Yes, seems gitlet has all the common use cases, at least from an UX
point of view.

Between the two we should be able to make something that works great for nodeOS. I believe there is enough in js-git today to do what npm needs (unless npm also uses git push, which is still missing from js-git)

I'm not a npm guru at all, I think I've heard it need to push git tags
and that's why it was not being used in the npm core as a dependency,
but I'm not sure. Anyway, for NodeOS and just only to download
dependencies as a final user (not a developer that could publish
packages), I think a simple git downloader cli tool is just enough
(and for HTTP this is just a special use case of curl... :-) ).

"Si quieres viajar alrededor del mundo y ser invitado a hablar en un
monton de sitios diferentes, simplemente escribe un sistema operativo
Unix."
– Linus Tordvals, creador del sistema operativo Linux

Member

piranna commented Jan 25, 2015

The main piece missing from js-git is the push protocol since I never found a safe way to do it in the browser (which was my main use case and motivation for creating js-git).

Just a suggestion, what about implement git push by using
XmlHttpRequest? This would only allow to use HTTP(S) repos, but
probably it's more than enough on a browser environment... Also, in
the future could be implemented a SSH-like or GIT-like protocol using
websockets... Other repos would need to support it (the same way that
they support HTTP), but a Node.js proxy would be easily feasable :-)

Gitlet does have a lot more of the normal git workflow implemented than js-git so the overlap actually isn't that great.

Yes, seems gitlet has all the common use cases, at least from an UX
point of view.

Between the two we should be able to make something that works great for nodeOS. I believe there is enough in js-git today to do what npm needs (unless npm also uses git push, which is still missing from js-git)

I'm not a npm guru at all, I think I've heard it need to push git tags
and that's why it was not being used in the npm core as a dependency,
but I'm not sure. Anyway, for NodeOS and just only to download
dependencies as a final user (not a developer that could publish
packages), I think a simple git downloader cli tool is just enough
(and for HTTP this is just a special use case of curl... :-) ).

"Si quieres viajar alrededor del mundo y ser invitado a hablar en un
monton de sitios diferentes, simplemente escribe un sistema operativo
Unix."
– Linus Tordvals, creador del sistema operativo Linux

@isaacs

This comment has been minimized.

Show comment
Hide comment
@isaacs

isaacs Jan 25, 2015

Just to clarify explicitly, npm uses git for the following things:

  1. Parsing out the git remote for npm init
  2. Fetching dependencies that are listed as git urls.
  3. Verifying that the git repo is clean on npm version
  4. Committing and tagging the local repo on npm version (and, optionally, signing said tag by passing the -s arg to git.)

At no point does npm ever push anything using git. All git operations are either fetch or local.

In all of these cases, npm shells out to the system git command found first in the PATH, though this can be overridden by passing in a --git config option pointing to a specific git binary.

Once upon a time, npm used to shell out to the system tar command for creating and extracting packages. This was replaced with a tar implementation in JavaScript.

It would be desirable to replace the git system dependency with a node implementation of git, but this is not a priority. Unlike tar, git is: (a) much more stable between operating systems, (b) much less frequently used by npm, and (c) much more difficult to get exactly right.

isaacs commented Jan 25, 2015

Just to clarify explicitly, npm uses git for the following things:

  1. Parsing out the git remote for npm init
  2. Fetching dependencies that are listed as git urls.
  3. Verifying that the git repo is clean on npm version
  4. Committing and tagging the local repo on npm version (and, optionally, signing said tag by passing the -s arg to git.)

At no point does npm ever push anything using git. All git operations are either fetch or local.

In all of these cases, npm shells out to the system git command found first in the PATH, though this can be overridden by passing in a --git config option pointing to a specific git binary.

Once upon a time, npm used to shell out to the system tar command for creating and extracting packages. This was replaced with a tar implementation in JavaScript.

It would be desirable to replace the git system dependency with a node implementation of git, but this is not a priority. Unlike tar, git is: (a) much more stable between operating systems, (b) much less frequently used by npm, and (c) much more difficult to get exactly right.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Jan 25, 2015

Member
  1. Verifying that the git repo is clean on npm version
  2. Committing and tagging the local repo on npm version (and, optionally, signing said tag by passing the -s arg to git.)
    At no point does npm ever push anything using git. All git operations are either fetch or local.

But this operations are not read-only, that I think is the problem here, isn't it?

Member

piranna commented Jan 25, 2015

  1. Verifying that the git repo is clean on npm version
  2. Committing and tagging the local repo on npm version (and, optionally, signing said tag by passing the -s arg to git.)
    At no point does npm ever push anything using git. All git operations are either fetch or local.

But this operations are not read-only, that I think is the problem here, isn't it?

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Jan 26, 2015

But this operations are not read-only, that I think is the problem here, isn't it?

He means you never push over the network, which is exactly where I got stuck in browsers because...

what about implement git push by using XmlHttpRequest?

I did, but it doesn't work because github, nor any of the popular git hosting services will enable CORS headers on their services. I've asked repeatedly for years, but nobody has done anything about it. Of course it could be worked around using a proxy, but I don't trust third-party proxies with my git credentials. Also I don't want to host proxies that can see the credentials for others.

But this problem is doubly not a problem for node-os since you have full network access via node and don't need git push for npm.

Parsing out the git remote for npm init

I haven't implemented this yet, but I think this information is pretty trivial to get.

Fetching dependencies that are listed as git urls.

This is the hardest part, but the good news is I've done it already.

Verifying that the git repo is clean on npm version

I've not implemented this fully, it involves the git index. It's not too complicated though. Also gitlet implemented a mostly compatable version of this for it's git status command. I noticed her index format wasn't quite compitable with real git, but the real format is well documented and not too hard to implement with a real fs backend like node has. (I was trying to do it via the chrome.fileSystem API for chrome packaged apps)

Committing and tagging the local repo on npm version (and, optionally, signing said tag by passing the -s arg to git.)

This is done except for the signing part. I'm not about to implement gpg in pure javascript. But if a user wants to sign using a gpg key, we can probably assume they have gpg in path and shell out to it.

But this operations are not read-only, that I think is the problem here, isn't it?

He means you never push over the network, which is exactly where I got stuck in browsers because...

what about implement git push by using XmlHttpRequest?

I did, but it doesn't work because github, nor any of the popular git hosting services will enable CORS headers on their services. I've asked repeatedly for years, but nobody has done anything about it. Of course it could be worked around using a proxy, but I don't trust third-party proxies with my git credentials. Also I don't want to host proxies that can see the credentials for others.

But this problem is doubly not a problem for node-os since you have full network access via node and don't need git push for npm.

Parsing out the git remote for npm init

I haven't implemented this yet, but I think this information is pretty trivial to get.

Fetching dependencies that are listed as git urls.

This is the hardest part, but the good news is I've done it already.

Verifying that the git repo is clean on npm version

I've not implemented this fully, it involves the git index. It's not too complicated though. Also gitlet implemented a mostly compatable version of this for it's git status command. I noticed her index format wasn't quite compitable with real git, but the real format is well documented and not too hard to implement with a real fs backend like node has. (I was trying to do it via the chrome.fileSystem API for chrome packaged apps)

Committing and tagging the local repo on npm version (and, optionally, signing said tag by passing the -s arg to git.)

This is done except for the signing part. I'm not about to implement gpg in pure javascript. But if a user wants to sign using a gpg key, we can probably assume they have gpg in path and shell out to it.

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Jan 26, 2015

In other words, implementing the git needed for nodeOS is 100x easier than the problem I was trying to solve for webpages and chromeapps. It's quite feasable.

In other words, implementing the git needed for nodeOS is 100x easier than the problem I was trying to solve for webpages and chromeapps. It's quite feasable.

@dbkaplun

This comment has been minimized.

Show comment
Hide comment
@dbkaplun

dbkaplun Jan 26, 2015

I've updated the original post to include a list of things a NodeOS git has to be able to do. Collaborators, please feel free to update my post as you see fit!

I've updated the original post to include a list of things a NodeOS git has to be able to do. Collaborators, please feel free to update my post as you see fit!

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 21, 2016

Member

Unfortently not, im really busy with exams

Ok, they have priority. Could you be able to give me access to the repo? I would like to fix the tests and move it forward, since is one of the remaining things for the RC3 and want to check it's working properly...

Member

piranna commented Sep 21, 2016

Unfortently not, im really busy with exams

Ok, they have priority. Could you be able to give me access to the repo? I would like to fix the tests and move it forward, since is one of the remaining things for the RC3 and want to check it's working properly...

@luii

This comment has been minimized.

Show comment
Hide comment
@luii

luii Sep 21, 2016

Member

Yes sure

Member

luii commented Sep 21, 2016

Yes sure

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 21, 2016

Member

We have just found that there was another nogit project with the same purposse of our one, and based on @creationix js-git library. We could take a look on it, if it works maybe npm guys are more willingly to include it because there would be no more need to include full nodegit library and instead use our one to build a more complete git client, what do you think? How we could be able to test that it has all the required functionality beyond check that it can download and install a package? Is it just enough that it has the git commands listed before?

Member

piranna commented Sep 21, 2016

We have just found that there was another nogit project with the same purposse of our one, and based on @creationix js-git library. We could take a look on it, if it works maybe npm guys are more willingly to include it because there would be no more need to include full nodegit library and instead use our one to build a more complete git client, what do you think? How we could be able to test that it has all the required functionality beyond check that it can download and install a package? Is it just enough that it has the git commands listed before?

@tylerl0706

This comment has been minimized.

Show comment
Hide comment
@tylerl0706

tylerl0706 Sep 24, 2016

Contributor

Wow @piranna... you hit that jackpot with the other nogit :) I know it's not maintained... but it seems to already have all the functionality needed.

I am worried about the regressions with new versions of npm... but if we can get 1 working, we'll at least have something to iterate off of.

Contributor

tylerl0706 commented Sep 24, 2016

Wow @piranna... you hit that jackpot with the other nogit :) I know it's not maintained... but it seems to already have all the functionality needed.

I am worried about the regressions with new versions of npm... but if we can get 1 working, we'll at least have something to iterate off of.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 24, 2016

Member

Merits are from @luii, not mine ;-) I think we can fork it under NodeOS
organization and maintain it, how do you see it? :-)

El 24/9/2016 7:55 PM, "Tyler James Leonhardt" notifications@github.com
escribió:

Wow @piranna https://github.com/piranna... you hit that jackpot with
the other nogit :) I know it's not maintained... but it seems to already
have all the functionality needed.

I am worried about the regressions with new versions of npm... but if we
can get 1 working, we'll at least have something to iterate off of.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#67 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAgfvkU7DqoCFU-3aGLDdeO-EcSLAiG1ks5qtWQOgaJpZM4CipO9
.

Member

piranna commented Sep 24, 2016

Merits are from @luii, not mine ;-) I think we can fork it under NodeOS
organization and maintain it, how do you see it? :-)

El 24/9/2016 7:55 PM, "Tyler James Leonhardt" notifications@github.com
escribió:

Wow @piranna https://github.com/piranna... you hit that jackpot with
the other nogit :) I know it's not maintained... but it seems to already
have all the functionality needed.

I am worried about the regressions with new versions of npm... but if we
can get 1 working, we'll at least have something to iterate off of.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#67 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAgfvkU7DqoCFU-3aGLDdeO-EcSLAiG1ks5qtWQOgaJpZM4CipO9
.

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Sep 26, 2016

I can help maintain if if you're worried about resources (since it was originally based on some of my code).

I can help maintain if if you're worried about resources (since it was originally based on some of my code).

@tylerl0706

This comment has been minimized.

Show comment
Hide comment
@tylerl0706

tylerl0706 Sep 26, 2016

Contributor

Fork away! :)

Contributor

tylerl0706 commented Sep 26, 2016

Fork away! :)

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Sep 26, 2016

Member

I can help maintain if if you're worried about resources (since it was originally based on some of my code).

That would be great! :-D What better person than you to maintain something based on your lib? ;-)

Fork away! :)

So forked ;-) I think the first thing would be to add tests, @luii's nogit has some progress on this that could be used as basis, but would be better to identify the exact use cases. I think the most basic and important one is to download current content of a git repository, so I would start with it.

Member

piranna commented Sep 26, 2016

I can help maintain if if you're worried about resources (since it was originally based on some of my code).

That would be great! :-D What better person than you to maintain something based on your lib? ;-)

Fork away! :)

So forked ;-) I think the first thing would be to add tests, @luii's nogit has some progress on this that could be used as basis, but would be better to identify the exact use cases. I think the most basic and important one is to download current content of a git repository, so I would start with it.

@luii

This comment has been minimized.

Show comment
Hide comment
@luii

luii Jan 2, 2017

Member

@piranna Nodegit supports prebuilds of libgit2 which cuts down the install time.
On the other hand nodegit wont install with Node.js 7.x.x means that were stuck with 6.x.x.
But i think that is a minor problem considering the last years where we had Node 0.12.x.

What do you think? Nodegit supports a richer feature set than js-gitkit and is more or less well maintained and nodeos-git supports all neccesarry commands and im activly adding more features!

Member

luii commented Jan 2, 2017

@piranna Nodegit supports prebuilds of libgit2 which cuts down the install time.
On the other hand nodegit wont install with Node.js 7.x.x means that were stuck with 6.x.x.
But i think that is a minor problem considering the last years where we had Node 0.12.x.

What do you think? Nodegit supports a richer feature set than js-gitkit and is more or less well maintained and nodeos-git supports all neccesarry commands and im activly adding more features!

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna May 7, 2017

Member

since now we have a good shell and the only missing thing for final 1.0.0 version is the git client, how do you see it if we could have it ready for the keynote of this saturday? What's the actual status of the diferent alternatives? Any of them is ready to be used as a git client to install packages with npm from inside NodeOS?

Member

piranna commented May 7, 2017

since now we have a good shell and the only missing thing for final 1.0.0 version is the git client, how do you see it if we could have it ready for the keynote of this saturday? What's the actual status of the diferent alternatives? Any of them is ready to be used as a git client to install packages with npm from inside NodeOS?

@thisconnect

This comment has been minimized.

Show comment
Hide comment
@thisconnect

thisconnect May 8, 2017

nodegit got updated and should run on Node.js 7.x again

nodegit got updated and should run on Node.js 7.x again

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna May 9, 2017

Member

To sumarize this long thread a bit:

Needed commands

  • git config --get remote..url
  • git rev-list -n1 master
  • git checkout [something]
  • git clone [param] [param]
  • git clone --template=[value] --mirror [param] [param]

Libraries

CLIs

We have several things to choose now... :-P It's time to decide to focus on what one. Probably the best options are use a nodegit-based one, or check if @whyleee nogit is ready to use. The point of this last one is that it would clean the path to propose @creationix js-git to be integrated directly on npm itself as a dependency. Any other idea or volunteer to integrate it?

Member

piranna commented May 9, 2017

To sumarize this long thread a bit:

Needed commands

  • git config --get remote..url
  • git rev-list -n1 master
  • git checkout [something]
  • git clone [param] [param]
  • git clone --template=[value] --mirror [param] [param]

Libraries

CLIs

We have several things to choose now... :-P It's time to decide to focus on what one. Probably the best options are use a nodegit-based one, or check if @whyleee nogit is ready to use. The point of this last one is that it would clean the path to propose @creationix js-git to be integrated directly on npm itself as a dependency. Any other idea or volunteer to integrate it?

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix May 9, 2017

I wouldn't integrate js-git as-is into npm, I've learned a lot since writing it. But if someone gives me npm's exact requirements and even a proposed API, I might be able to make it happen.

I've since implemented git in lua and use it heavily for luvit's package manager.

I wouldn't integrate js-git as-is into npm, I've learned a lot since writing it. But if someone gives me npm's exact requirements and even a proposed API, I might be able to make it happen.

I've since implemented git in lua and use it heavily for luvit's package manager.

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix May 9, 2017

But if you want a full featured git, complete with merge, textual diff, etc., then nodegit is probably an easier path. I've never implemented the diff and merge logic in any of my git implementations.

creationix commented May 9, 2017

But if you want a full featured git, complete with merge, textual diff, etc., then nodegit is probably an easier path. I've never implemented the diff and merge logic in any of my git implementations.

@thisconnect

This comment has been minimized.

Show comment
Hide comment

there is also https://www.npmjs.com/package/nodegit-clone based on nodegit

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna May 10, 2017

Member

I wouldn't integrate js-git as-is into npm, I've learned a lot since writing it. But if someone gives me npm's exact requirements and even a proposed API, I might be able to make it happen.

I'm not saying to integrate js-git as-is, but if we can have a pure javascript git cli with all the npm needed functionality, then it would be easy to convince them to integrate it (or an improved source code, as you have suggested). So far, seems the npm exact requirements is just the list we have put before:

  • git config --get remote..url
  • git rev-list -n1 master
  • git checkout [something]
  • git clone [param] [param]
  • git clone --template=[value] --mirror [param] [param]

Regarding the proposed API... it's up to you :-) Callbacks is a safe bet, don't know if npm have adopted Promises yet.

But if you want a full featured git, complete with merge, textual diff, etc., then nodegit is probably an easier path. I've never implemented the diff and merge logic in any of my git implementations.

Obviously, so first we would need to decide if we want some thing soon, we want something that could be later integrated on npm, or a full featured git client. I vote to check if any of the currently available git clients has all the needed functionality (nogit seems to be good candidates, both @luii and @whyleee ones) so we can release NodeOS 1.0.0 soon, and later decide if find a good pure javascript implementation using js-git that could be integrated in npm itself and keep improving and adding functionality later to have a full git client, or go directly with nodegit. After so much people working a lot more than me on this task, I feel I'm not in the position to take a decission on this point.

Member

piranna commented May 10, 2017

I wouldn't integrate js-git as-is into npm, I've learned a lot since writing it. But if someone gives me npm's exact requirements and even a proposed API, I might be able to make it happen.

I'm not saying to integrate js-git as-is, but if we can have a pure javascript git cli with all the npm needed functionality, then it would be easy to convince them to integrate it (or an improved source code, as you have suggested). So far, seems the npm exact requirements is just the list we have put before:

  • git config --get remote..url
  • git rev-list -n1 master
  • git checkout [something]
  • git clone [param] [param]
  • git clone --template=[value] --mirror [param] [param]

Regarding the proposed API... it's up to you :-) Callbacks is a safe bet, don't know if npm have adopted Promises yet.

But if you want a full featured git, complete with merge, textual diff, etc., then nodegit is probably an easier path. I've never implemented the diff and merge logic in any of my git implementations.

Obviously, so first we would need to decide if we want some thing soon, we want something that could be later integrated on npm, or a full featured git client. I vote to check if any of the currently available git clients has all the needed functionality (nogit seems to be good candidates, both @luii and @whyleee ones) so we can release NodeOS 1.0.0 soon, and later decide if find a good pure javascript implementation using js-git that could be integrated in npm itself and keep improving and adding functionality later to have a full git client, or go directly with nodegit. After so much people working a lot more than me on this task, I feel I'm not in the position to take a decission on this point.

@luii

This comment has been minimized.

Show comment
Hide comment
@luii

luii May 13, 2017

Member

@piranna i have the minimum needed functionality for the git client. one little problem i have is that the prebuild images for nodegit arent compatible with Arch Linux but there is a fix, youll need to run the install process with BUILD_ONLY=1 environment variable.

You can find the client under the 'Next' Branch

Member

luii commented May 13, 2017

@piranna i have the minimum needed functionality for the git client. one little problem i have is that the prebuild images for nodegit arent compatible with Arch Linux but there is a fix, youll need to run the install process with BUILD_ONLY=1 environment variable.

You can find the client under the 'Next' Branch

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna May 13, 2017

Member

@luii are they compatible with Ubuntu? How they would work with a musl-based environment like NodeOS?

Member

piranna commented May 13, 2017

@luii are they compatible with Ubuntu? How they would work with a musl-based environment like NodeOS?

@luii

This comment has been minimized.

Show comment
Hide comment
@luii

luii Jun 11, 2017

Member

@piranna Ive tried to compile it with my usersfs fork and got this:

�[37mGenerating nodeos user folder�[0m
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
npm WARN deprecated fs-promise@0.5.0: Use mz or fs-extra^3.0 with Promise Support
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/cat -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/cat
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ln -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/ln
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/cp -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/cp
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/mkdir -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/mkdir
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ls -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/ls
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/mv -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/mv
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/rm -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/rm
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ifconfig -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/ifconfig.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ip -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/ip.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/man -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-man/man.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/nsh -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/server.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/pwd -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-pwd/pwd.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/sh -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-sh/sh.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/davius -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/server.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/loadtest -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/bin/loadtest.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/testserver-loadtest -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/bin/testserver.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/wget -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/node-wget/cli.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/nodeos-git -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/bin/nogit.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/npm -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/npm/bin/npm-cli.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/node-ntp-client -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/ntp-client/bin/node-ntp-client
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/performance -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/performance/bin/performance.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/pstree -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/pstree/server.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/slap -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/slap.js

> kexec@3.0.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/kexec
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/kexec/build“ wird betreten
  CXX(target) Release/obj.target/kexec/src/kexec.o
  SOLINK_MODULE(target) Release/obj.target/kexec.node
  COPY Release/kexec.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/kexec/build“ wird verlassen

> node-uname@1.0.1 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/node-uname
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/node-uname/build“ wird betreten
  CXX(target) Release/obj.target/uname/uname.o
  SOLINK_MODULE(target) Release/obj.target/uname.node
  COPY Release/uname.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/node-uname/build“ wird verlassen

> posix@4.1.1 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/posix
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/posix/build“ wird betreten
  CXX(target) Release/obj.target/posix/src/posix.o
  SOLINK_MODULE(target) Release/obj.target/posix.node
  COPY Release/posix.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/posix/build“ wird verlassen

> bufferutil@1.2.1 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/bufferutil
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/bufferutil/build“ wird betreten
  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
  SOLINK_MODULE(target) Release/obj.target/bufferutil.node
  COPY Release/bufferutil.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/bufferutil/build“ wird verlassen

> utf-8-validate@1.2.2 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/utf-8-validate
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/utf-8-validate/build“ wird betreten
  CXX(target) Release/obj.target/validation/src/validation.o
  SOLINK_MODULE(target) Release/obj.target/validation.node
  COPY Release/validation.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/utf-8-validate/build“ wird verlassen

> marker-index@4.0.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/marker-index
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/marker-index/build“ wird betreten
  CXX(target) Release/obj.target/marker_index/src/native/iterator.o
  CXX(target) Release/obj.target/marker_index/src/native/marker-index-wrapper.o
  CXX(target) Release/obj.target/marker_index/src/native/marker-index.o
  CXX(target) Release/obj.target/marker_index/src/native/node.o
  CXX(target) Release/obj.target/marker_index/src/native/point.o
../src/native/marker-index-wrapper.cc: In static member function 'static bool MarkerIndexWrapper::IsFinite(v8::Local<v8::Integer>)':
../src/native/marker-index-wrapper.cc:128:92: warning: 'v8::Local<v8::Value> v8::Object::CallAsFunction(v8::Local<v8::Value>, int, v8::Local<v8::Value>*)' is deprecated: Use maybe version [-Wdeprecated-declarations]
     Local<Value> result = Nan::New(is_finite_function)->CallAsFunction(Nan::Null(), 1, argv);
                                                                                            ^
In file included from /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/v8.h:25:0,
                 from /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/node.h:42,
                 from ../../nan/nan.h:49,
                 from ../src/native/marker-index-wrapper.cc:2:
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/v8.h:2984:30: note: declared here
                 Local<Value> CallAsFunction(Local<Value> recv, int argc,
                              ^
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/v8config.h:333:3: note: in definition of macro 'V8_DEPRECATED'
   declarator __attribute__((deprecated(message)))
   ^
  SOLINK_MODULE(target) Release/obj.target/marker_index.node
  COPY Release/marker_index.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/marker-index/build“ wird verlassen

> runas@3.1.1 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/runas
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/runas/build“ wird betreten
  CXX(target) Release/obj.target/runas/src/main.o
  CXX(target) Release/obj.target/runas/src/runas_posix.o
  CXX(target) Release/obj.target/runas/src/fork.o
  SOLINK_MODULE(target) Release/obj.target/runas.node
  COPY Release/runas.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/runas/build“ wird verlassen

> pathwatcher@6.6.2 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/pathwatcher
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/pathwatcher/build“ wird betreten
  CXX(target) Release/obj.target/pathwatcher/src/main.o
  CXX(target) Release/obj.target/pathwatcher/src/common.o
  CXX(target) Release/obj.target/pathwatcher/src/handle_map.o
  CXX(target) Release/obj.target/pathwatcher/src/pathwatcher_linux.o
  SOLINK_MODULE(target) Release/obj.target/pathwatcher.node
  COPY Release/pathwatcher.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/pathwatcher/build“ wird verlassen

> src-errno@0.2.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-errno
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-errno/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/errno.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-errno/build“ wird verlassen

> src-ifaddrs@0.0.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-ifaddrs
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-ifaddrs/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/ifaddrs.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-ifaddrs/build“ wird verlassen

> src-sockios@0.2.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-sockios
> node-gyp rebuild

(node:30908) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGINT listeners added. Use emitter.setMaxListeners() to increase limit
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-sockios/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/sockios.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-sockios/build“ wird verlassen

> src-sockios@0.2.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/node_modules/src-sockios
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/node_modules/src-sockios/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/sockios.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/node_modules/src-sockios/build“ wird verlassen

> mkfifo@1.2.5 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/mkfifo
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/mkfifo/build“ wird betreten
  CXX(target) Release/obj.target/mkfifo/src/mkfifo.o
  SOLINK_MODULE(target) Release/obj.target/mkfifo.node
  COPY Release/mkfifo.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/mkfifo/build“ wird verlassen

> websocket@1.0.24 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/node_modules/websocket
> (node-gyp rebuild 2> builderror.log) || (exit 0)

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/node_modules/websocket/build“ wird betreten
  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
  CXX(target) Release/obj.target/validation/src/validation.o
  SOLINK_MODULE(target) Release/obj.target/validation.node
  COPY Release/validation.node
  SOLINK_MODULE(target) Release/obj.target/bufferutil.node
  COPY Release/bufferutil.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/node_modules/websocket/build“ wird verlassen

> nodegit@0.18.3 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit
> node lifecycleScripts/preinstall && node lifecycleScripts/install

[nodegit] Running pre-install script
[nodegit] Configuring libssh2.

{ Error: Command failed: /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

    at ChildProcess.exithandler (child_process.js:205:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:194:7)
    at maybeClose (internal/child_process.js:899:16)
    at Socket.<anonymous> (internal/child_process.js:342:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at Pipe._handle.close [as _onclose] (net.js:511:12)
  killed: false,
  code: 1,
  signal: null,
  cmd: '/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl' }
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

[nodegit] ERROR - Could not finish preinstall
{ Error: Command failed: /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

    at ChildProcess.exithandler (child_process.js:205:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:194:7)
    at maybeClose (internal/child_process.js:899:16)
    at Socket.<anonymous> (internal/child_process.js:342:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at Pipe._handle.close [as _onclose] (net.js:511:12)
  killed: false,
  code: 1,
  signal: null,
  cmd: '/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl' }

/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib

├─┬ bin-fs@0.2.0 
│ └─┬ optimist@0.6.1 
│   ├── minimist@0.0.10 
│   └── wordwrap@0.0.3 

...


npm ERR! errno 1
npm ERR! nodegit@0.18.3 install: `node lifecycleScripts/preinstall && node lifecycleScripts/install`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the nodegit@0.18.3 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/philipp/.npm/_logs/2017-06-11T09_42_00_571Z-debug.log
�[31mError building '/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos'�[0m
npm ERR! code ELIFECYCLE
npm ERR! errno 22
npm ERR! nodeos-usersfs@1.0.0-RC3.2 build: `scripts/build`
npm ERR! Exit status 22
npm ERR! 
npm ERR! Failed at the nodeos-usersfs@1.0.0-RC3.2 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/philipp/.npm/_logs/2017-06-11T09_42_01_085Z-debug.log
NodeOS@1.0.0-RC3 /home/philipp/Dokumente/git/NodeOS
npm ERR! Linux 4.11.3-1-ARCH
npm ERR! argv "/home/philipp/.nvm/versions/node/v7.10.0/bin/node" "/home/philipp/.nvm/versions/node/v7.10.0/bin/npm" "i"
npm ERR! node v7.10.0
npm ERR! npm  v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 22

npm ERR! nodeos-usersfs@1.0.0-RC3.2 install: `BUILD_ONLY=1 buildDependencies && npm run build`
npm ERR! Exit status 22
npm ERR! 
npm ERR! Failed at the nodeos-usersfs@1.0.0-RC3.2 install script 'BUILD_ONLY=1 buildDependencies && npm run build'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the nodeos-usersfs package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     BUILD_ONLY=1 buildDependencies && npm run build
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs nodeos-usersfs
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls nodeos-usersfs
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/philipp/.npm/_logs/2017-06-11T09_42_26_602Z-debug.log

And this where the error occours:

https://github.com/luii/nodeos-usersfs/blob/master/scripts/build#L95-L96

And i also added nodeos-git to the package.json, if i just put it on the nodeosDependenciesNodeos it should compile the nodegit because it has its own install process but it doesn't.
And if i just put nodeos-git on the buildDependencies list it compiles just fine without error, maybe this occours when the arch flag is present on npm, what do you think?

Member

luii commented Jun 11, 2017

@piranna Ive tried to compile it with my usersfs fork and got this:

�[37mGenerating nodeos user folder�[0m
npm WARN deprecated node-uuid@1.4.8: Use uuid module instead
npm WARN deprecated fs-promise@0.5.0: Use mz or fs-extra^3.0 with Promise Support
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/cat -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/cat
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ln -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/ln
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/cp -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/cp
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/mkdir -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/mkdir
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ls -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/ls
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/mv -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/mv
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/rm -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-fs/bin/rm
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ifconfig -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/ifconfig.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/ip -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/ip.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/man -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-man/man.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/nsh -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/server.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/pwd -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-pwd/pwd.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/sh -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-sh/sh.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/davius -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/server.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/loadtest -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/bin/loadtest.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/testserver-loadtest -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/bin/testserver.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/wget -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/node-wget/cli.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/nodeos-git -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/bin/nogit.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/npm -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/npm/bin/npm-cli.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/node-ntp-client -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/ntp-client/bin/node-ntp-client
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/performance -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/performance/bin/performance.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/pstree -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/pstree/server.js
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/bin/slap -> /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/slap.js

> kexec@3.0.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/kexec
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/kexec/build“ wird betreten
  CXX(target) Release/obj.target/kexec/src/kexec.o
  SOLINK_MODULE(target) Release/obj.target/kexec.node
  COPY Release/kexec.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/kexec/build“ wird verlassen

> node-uname@1.0.1 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/node-uname
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/node-uname/build“ wird betreten
  CXX(target) Release/obj.target/uname/uname.o
  SOLINK_MODULE(target) Release/obj.target/uname.node
  COPY Release/uname.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/node-uname/build“ wird verlassen

> posix@4.1.1 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/posix
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/posix/build“ wird betreten
  CXX(target) Release/obj.target/posix/src/posix.o
  SOLINK_MODULE(target) Release/obj.target/posix.node
  COPY Release/posix.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/posix/build“ wird verlassen

> bufferutil@1.2.1 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/bufferutil
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/bufferutil/build“ wird betreten
  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
  SOLINK_MODULE(target) Release/obj.target/bufferutil.node
  COPY Release/bufferutil.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/bufferutil/build“ wird verlassen

> utf-8-validate@1.2.2 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/utf-8-validate
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/utf-8-validate/build“ wird betreten
  CXX(target) Release/obj.target/validation/src/validation.o
  SOLINK_MODULE(target) Release/obj.target/validation.node
  COPY Release/validation.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/davius/node_modules/utf-8-validate/build“ wird verlassen

> marker-index@4.0.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/marker-index
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/marker-index/build“ wird betreten
  CXX(target) Release/obj.target/marker_index/src/native/iterator.o
  CXX(target) Release/obj.target/marker_index/src/native/marker-index-wrapper.o
  CXX(target) Release/obj.target/marker_index/src/native/marker-index.o
  CXX(target) Release/obj.target/marker_index/src/native/node.o
  CXX(target) Release/obj.target/marker_index/src/native/point.o
../src/native/marker-index-wrapper.cc: In static member function 'static bool MarkerIndexWrapper::IsFinite(v8::Local<v8::Integer>)':
../src/native/marker-index-wrapper.cc:128:92: warning: 'v8::Local<v8::Value> v8::Object::CallAsFunction(v8::Local<v8::Value>, int, v8::Local<v8::Value>*)' is deprecated: Use maybe version [-Wdeprecated-declarations]
     Local<Value> result = Nan::New(is_finite_function)->CallAsFunction(Nan::Null(), 1, argv);
                                                                                            ^
In file included from /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/v8.h:25:0,
                 from /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/node.h:42,
                 from ../../nan/nan.h:49,
                 from ../src/native/marker-index-wrapper.cc:2:
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/v8.h:2984:30: note: declared here
                 Local<Value> CallAsFunction(Local<Value> recv, int argc,
                              ^
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/node_modules/nodeos-nodejs/include/node/v8config.h:333:3: note: in definition of macro 'V8_DEPRECATED'
   declarator __attribute__((deprecated(message)))
   ^
  SOLINK_MODULE(target) Release/obj.target/marker_index.node
  COPY Release/marker_index.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/marker-index/build“ wird verlassen

> runas@3.1.1 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/runas
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/runas/build“ wird betreten
  CXX(target) Release/obj.target/runas/src/main.o
  CXX(target) Release/obj.target/runas/src/runas_posix.o
  CXX(target) Release/obj.target/runas/src/fork.o
  SOLINK_MODULE(target) Release/obj.target/runas.node
  COPY Release/runas.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/runas/build“ wird verlassen

> pathwatcher@6.6.2 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/pathwatcher
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/pathwatcher/build“ wird betreten
  CXX(target) Release/obj.target/pathwatcher/src/main.o
  CXX(target) Release/obj.target/pathwatcher/src/common.o
  CXX(target) Release/obj.target/pathwatcher/src/handle_map.o
  CXX(target) Release/obj.target/pathwatcher/src/pathwatcher_linux.o
  SOLINK_MODULE(target) Release/obj.target/pathwatcher.node
  COPY Release/pathwatcher.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/slap/node_modules/pathwatcher/build“ wird verlassen

> src-errno@0.2.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-errno
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-errno/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/errno.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-errno/build“ wird verlassen

> src-ifaddrs@0.0.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-ifaddrs
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-ifaddrs/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/ifaddrs.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-ifaddrs/build“ wird verlassen

> src-sockios@0.2.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-sockios
> node-gyp rebuild

(node:30908) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGINT listeners added. Use emitter.setMaxListeners() to increase limit
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-sockios/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/sockios.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ifconfig/node_modules/src-sockios/build“ wird verlassen

> src-sockios@0.2.0 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/node_modules/src-sockios
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/node_modules/src-sockios/build“ wird betreten
  CXX(target) Release/obj.target/binding/src/sockios.o
  SOLINK_MODULE(target) Release/obj.target/binding.node
  COPY Release/binding.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-ip/node_modules/src-sockios/build“ wird verlassen

> mkfifo@1.2.5 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/mkfifo
> node-gyp rebuild

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/mkfifo/build“ wird betreten
  CXX(target) Release/obj.target/mkfifo/src/mkfifo.o
  SOLINK_MODULE(target) Release/obj.target/mkfifo.node
  COPY Release/mkfifo.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/bin-nsh/node_modules/mkfifo/build“ wird verlassen

> websocket@1.0.24 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/node_modules/websocket
> (node-gyp rebuild 2> builderror.log) || (exit 0)

make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/node_modules/websocket/build“ wird betreten
  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
  CXX(target) Release/obj.target/validation/src/validation.o
  SOLINK_MODULE(target) Release/obj.target/validation.node
  COPY Release/validation.node
  SOLINK_MODULE(target) Release/obj.target/bufferutil.node
  COPY Release/bufferutil.node
make: Verzeichnis „/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/loadtest/node_modules/websocket/build“ wird verlassen

> nodegit@0.18.3 install /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit
> node lifecycleScripts/preinstall && node lifecycleScripts/install

[nodegit] Running pre-install script
[nodegit] Configuring libssh2.

{ Error: Command failed: /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

    at ChildProcess.exithandler (child_process.js:205:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:194:7)
    at maybeClose (internal/child_process.js:899:16)
    at Socket.<anonymous> (internal/child_process.js:342:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at Pipe._handle.close [as _onclose] (net.js:511:12)
  killed: false,
  code: 1,
  signal: null,
  cmd: '/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl' }
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

[nodegit] ERROR - Could not finish preinstall
{ Error: Command failed: /home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl
/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing: Unknown `--is-lightweight' option
Try `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

    at ChildProcess.exithandler (child_process.js:205:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:194:7)
    at maybeClose (internal/child_process.js:899:16)
    at Socket.<anonymous> (internal/child_process.js:342:11)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at Pipe._handle.close [as _onclose] (net.js:511:12)
  killed: false,
  code: 1,
  signal: null,
  cmd: '/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib/node_modules/nodeos-git/node_modules/nodegit/vendor/openssl/openssl' }

/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos/lib

├─┬ bin-fs@0.2.0 
│ └─┬ optimist@0.6.1 
│   ├── minimist@0.0.10 
│   └── wordwrap@0.0.3 

...


npm ERR! errno 1
npm ERR! nodegit@0.18.3 install: `node lifecycleScripts/preinstall && node lifecycleScripts/install`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the nodegit@0.18.3 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/philipp/.npm/_logs/2017-06-11T09_42_00_571Z-debug.log
�[31mError building '/home/philipp/Dokumente/git/NodeOS/node_modules/nodeos-usersfs/build/nocona/nodeos'�[0m
npm ERR! code ELIFECYCLE
npm ERR! errno 22
npm ERR! nodeos-usersfs@1.0.0-RC3.2 build: `scripts/build`
npm ERR! Exit status 22
npm ERR! 
npm ERR! Failed at the nodeos-usersfs@1.0.0-RC3.2 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/philipp/.npm/_logs/2017-06-11T09_42_01_085Z-debug.log
NodeOS@1.0.0-RC3 /home/philipp/Dokumente/git/NodeOS
npm ERR! Linux 4.11.3-1-ARCH
npm ERR! argv "/home/philipp/.nvm/versions/node/v7.10.0/bin/node" "/home/philipp/.nvm/versions/node/v7.10.0/bin/npm" "i"
npm ERR! node v7.10.0
npm ERR! npm  v4.2.0
npm ERR! code ELIFECYCLE
npm ERR! errno 22

npm ERR! nodeos-usersfs@1.0.0-RC3.2 install: `BUILD_ONLY=1 buildDependencies && npm run build`
npm ERR! Exit status 22
npm ERR! 
npm ERR! Failed at the nodeos-usersfs@1.0.0-RC3.2 install script 'BUILD_ONLY=1 buildDependencies && npm run build'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the nodeos-usersfs package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     BUILD_ONLY=1 buildDependencies && npm run build
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs nodeos-usersfs
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls nodeos-usersfs
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/philipp/.npm/_logs/2017-06-11T09_42_26_602Z-debug.log

And this where the error occours:

https://github.com/luii/nodeos-usersfs/blob/master/scripts/build#L95-L96

And i also added nodeos-git to the package.json, if i just put it on the nodeosDependenciesNodeos it should compile the nodegit because it has its own install process but it doesn't.
And if i just put nodeos-git on the buildDependencies list it compiles just fine without error, maybe this occours when the arch flag is present on npm, what do you think?

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Jun 11, 2017

Member
Member

piranna commented Jun 11, 2017

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Aug 3, 2017

git config --get remote..url

This could be a simple API to read the config as an object?

repo.getConfig() -> obj

git rev-list -n1 master

This is just needing to be able to read local refs?

repo.getRef(ref) -> hash

git checkout [something]

Pretty self explanatory. I guess I could have an API to export a ref or hash to a folder. For backwards compat, should it continue to use git style working checkout format complete with index? Do we ever use the index? Because if not, a simple API to walk the git tree for a given commit and exporting to the FS is easy.

repo.export(ref, targetPath)

git clone [param] [param]

This is the hard one and the meat of the problem. But I have implemented it before in js-git for some protocols. How would ssh work? Am I able to shell out to ssh in a subprocess?

git.clone(url, targetPath)

git clone --template=[value] --mirror [param] [param]

I don't know this usage, what is it? I guess I should look up some git man pages...

git config --get remote..url

This could be a simple API to read the config as an object?

repo.getConfig() -> obj

git rev-list -n1 master

This is just needing to be able to read local refs?

repo.getRef(ref) -> hash

git checkout [something]

Pretty self explanatory. I guess I could have an API to export a ref or hash to a folder. For backwards compat, should it continue to use git style working checkout format complete with index? Do we ever use the index? Because if not, a simple API to walk the git tree for a given commit and exporting to the FS is easy.

repo.export(ref, targetPath)

git clone [param] [param]

This is the hard one and the meat of the problem. But I have implemented it before in js-git for some protocols. How would ssh work? Am I able to shell out to ssh in a subprocess?

git.clone(url, targetPath)

git clone --template=[value] --mirror [param] [param]

I don't know this usage, what is it? I guess I should look up some git man pages...

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Aug 3, 2017

Member

git config --get remote..url
This could be a simple API to read the config as an object?

repo.getConfig() -> obj

If fetching the config is an async operation, it's good for me. What are you thinking about, callbacks or promises?

git rev-list -n1 master
This is just needing to be able to read local refs?

repo.getRef(ref) -> hash

No idea, but maybe no, probably it's asking to the remote server what refs are available to check if it's requested for a valid one, but I'm nor sure and maybe saying dumb things here.

git checkout [something]
Pretty self explanatory. I guess I could have an API to export a ref or hash to a folder.

Take in account that something can be a commit-like string or the path to a file, so probably there should be two different checkout() functions to clarify things.

For backwards compat, should it continue to use git style working checkout format complete with index? Do we ever use the index? Because if not, a simple API to walk the git tree for a given commit and exporting to the FS is easy.

repo.export(ref, targetPath)

No idea, but probably not. So far, I think it's just only downloading the files, there no .git file anywhere after npm download a git dependency.

git clone [param] [param]
This is the hard one and the meat of the problem. But I have implemented it before in js-git for some protocols.

Maybe a standard API and use diferent connectors?

How would ssh work? Am I able to shell out to ssh in a subprocess?

git.clone(url, targetPath)

There's no ssh command on NodeOS, it's only available wssh (like ssh, but using websockets instead of raw TCP). Probably ssh2 module could be useful here instead.

git clone --template=[value] --mirror [param] [param]
I don't know this usage, what is it? I guess I should look up some git man pages...

It definitely would be a good idea ;-)

Member

piranna commented Aug 3, 2017

git config --get remote..url
This could be a simple API to read the config as an object?

repo.getConfig() -> obj

If fetching the config is an async operation, it's good for me. What are you thinking about, callbacks or promises?

git rev-list -n1 master
This is just needing to be able to read local refs?

repo.getRef(ref) -> hash

No idea, but maybe no, probably it's asking to the remote server what refs are available to check if it's requested for a valid one, but I'm nor sure and maybe saying dumb things here.

git checkout [something]
Pretty self explanatory. I guess I could have an API to export a ref or hash to a folder.

Take in account that something can be a commit-like string or the path to a file, so probably there should be two different checkout() functions to clarify things.

For backwards compat, should it continue to use git style working checkout format complete with index? Do we ever use the index? Because if not, a simple API to walk the git tree for a given commit and exporting to the FS is easy.

repo.export(ref, targetPath)

No idea, but probably not. So far, I think it's just only downloading the files, there no .git file anywhere after npm download a git dependency.

git clone [param] [param]
This is the hard one and the meat of the problem. But I have implemented it before in js-git for some protocols.

Maybe a standard API and use diferent connectors?

How would ssh work? Am I able to shell out to ssh in a subprocess?

git.clone(url, targetPath)

There's no ssh command on NodeOS, it's only available wssh (like ssh, but using websockets instead of raw TCP). Probably ssh2 module could be useful here instead.

git clone --template=[value] --mirror [param] [param]
I don't know this usage, what is it? I guess I should look up some git man pages...

It definitely would be a good idea ;-)

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Aug 3, 2017

What are you thinking about, callbacks or promises?

I like promises since they are native now (no library needed) and because then I can use await.

probably it's asking to the remote server what refs are available

The rev-list (as I understand) is the local history of hashes for a branch. Getting remote hashes is ls-remote. Which BTW, is the first half of clone, so we'll have that for free when we implement clone.

so probably there should be two different checkout() functions to clarify things.

Good point. The latter case assumes a working checkout and dirty state. It would be good to know if NPM needs this.

Maybe a standard API and use different connectors?

Yep, I tried to do this with JS-Git, I can try again.

Probably ssh2 module could be useful here instead.

Yes! That's the library I was thinking of. Hopefully it works well enough.

creationix commented Aug 3, 2017

What are you thinking about, callbacks or promises?

I like promises since they are native now (no library needed) and because then I can use await.

probably it's asking to the remote server what refs are available

The rev-list (as I understand) is the local history of hashes for a branch. Getting remote hashes is ls-remote. Which BTW, is the first half of clone, so we'll have that for free when we implement clone.

so probably there should be two different checkout() functions to clarify things.

Good point. The latter case assumes a working checkout and dirty state. It would be good to know if NPM needs this.

Maybe a standard API and use different connectors?

Yep, I tried to do this with JS-Git, I can try again.

Probably ssh2 module could be useful here instead.

Yes! That's the library I was thinking of. Hopefully it works well enough.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Aug 4, 2017

Member

What are you thinking about, callbacks or promises?
I like promises since they are native now (no library needed) and because then I can use await.

👍 :-)

so probably there should be two different checkout() functions to clarify things.
Good point. The latter case assumes a working checkout and dirty state. It would be good to know if NPM needs this.

So far, I think no, just only download the code as a tarball-ish.

Maybe a standard API and use different connectors?
Yep, I tried to do this with JS-Git, I can try again.

Cool :-)

Probably ssh2 module could be useful here instead.
Yes! That's the library I was thinking of. Hopefully it works well enough.

Seems we have a winner... :-)

Member

piranna commented Aug 4, 2017

What are you thinking about, callbacks or promises?
I like promises since they are native now (no library needed) and because then I can use await.

👍 :-)

so probably there should be two different checkout() functions to clarify things.
Good point. The latter case assumes a working checkout and dirty state. It would be good to know if NPM needs this.

So far, I think no, just only download the code as a tarball-ish.

Maybe a standard API and use different connectors?
Yep, I tried to do this with JS-Git, I can try again.

Cool :-)

Probably ssh2 module could be useful here instead.
Yes! That's the library I was thinking of. Hopefully it works well enough.

Seems we have a winner... :-)

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Aug 5, 2017

Now to just find time to glue this all together...

Now to just find time to glue this all together...

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Aug 5, 2017

Member

Now to just find time to glue this all together...

Take your time :-) Maybe it would be a good idea to commit each one independently so we can review them :-)

Member

piranna commented Aug 5, 2017

Now to just find time to glue this all together...

Take your time :-) Maybe it would be a good idea to commit each one independently so we can review them :-)

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Aug 6, 2017

I'm pretty busy for the next month with a deadline at my startup, feel free to ping me later if I forget about this.

I'm pretty busy for the next month with a deadline at my startup, feel free to ping me later if I forget about this.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Aug 6, 2017

Member
Member

piranna commented Aug 6, 2017

@creationix

This comment has been minimized.

Show comment
Hide comment
@creationix

creationix Aug 7, 2017

I'm Director of Engineering at https://daplie.com/. We're trying to decentralize the internet and put ownership of data and networks back in the hands of normal people.

I'm Director of Engineering at https://daplie.com/. We're trying to decentralize the internet and put ownership of data and networks back in the hands of normal people.

@piranna

This comment has been minimized.

Show comment
Hide comment
@piranna

piranna Aug 18, 2017

Member

I'm Director of Engineering at https://daplie.com/. We're trying to decentralize the internet and put ownership of data and networks back in the hands of normal people.

I've seen your webpage, the easy to use home server concept sounds cool! :-)

Member

piranna commented Aug 18, 2017

I'm Director of Engineering at https://daplie.com/. We're trying to decentralize the internet and put ownership of data and networks back in the hands of normal people.

I've seen your webpage, the easy to use home server concept sounds cool! :-)

@bogdanbiv

This comment has been minimized.

Show comment
Hide comment
@bogdanbiv

bogdanbiv Oct 19, 2017

@creationix: are there any smaller / junior jobs to be done for this remake of the JSgit project?

UPDATE: would it be relevant to create an https://github.com/kripken/emscripten port of https://libgit2.github.com/ (Git library implemented in pure C)?
LibGit2 already has NodeJS bindings, I wonder how hard would it be to replace the calls to the native C library with calls to the EmScripten compiled module.

bogdanbiv commented Oct 19, 2017

@creationix: are there any smaller / junior jobs to be done for this remake of the JSgit project?

UPDATE: would it be relevant to create an https://github.com/kripken/emscripten port of https://libgit2.github.com/ (Git library implemented in pure C)?
LibGit2 already has NodeJS bindings, I wonder how hard would it be to replace the calls to the native C library with calls to the EmScripten compiled module.

@luii

This comment has been minimized.

Show comment
Hide comment
@luii

luii Dec 22, 2017

Member

@piranna I've got nodeos-git to compile flawlessly but i get a weird error somehow.
Compilation is totally fine; Startup also; but right after the user init script is run i get
bin/getty bin/logon: "bin/getty" exited with error code 1 its something like this and i tried to find and trace the error but i've found nothing

Member

luii commented Dec 22, 2017

@piranna I've got nodeos-git to compile flawlessly but i get a weird error somehow.
Compilation is totally fine; Startup also; but right after the user init script is run i get
bin/getty bin/logon: "bin/getty" exited with error code 1 its something like this and i tried to find and trace the error but i've found nothing

@luii

This comment has been minimized.

Show comment
Hide comment
@luii

luii Jan 6, 2018

Member

I've cross compiled the nodeos-nodegit package and this resolves the error from above.
@piranna how do i can link nodeos-libcurl against nodegit
because it only says that it needs this but cant find it. I know that nodegit has a flag (-lcurl) in the bindings.gyp file, but can i just say: -lcurl /lib for the libcurl (libcurl.so*) to find it later inside nodeos lib folder?

Member

luii commented Jan 6, 2018

I've cross compiled the nodeos-nodegit package and this resolves the error from above.
@piranna how do i can link nodeos-libcurl against nodegit
because it only says that it needs this but cant find it. I know that nodegit has a flag (-lcurl) in the bindings.gyp file, but can i just say: -lcurl /lib for the libcurl (libcurl.so*) to find it later inside nodeos lib folder?

@bogdanbiv

This comment has been minimized.

Show comment
Hide comment
@bogdanbiv

bogdanbiv May 17, 2018

@luii, @piranna Stumbled upon this link on hacker news: https://isomorphic-git.github.io/ - A pure JavaScript implementation of git for node and browsers!
Is this good enough for milestone 1.0.0 - NodeOS/NodeOS/issues/37 ?

bogdanbiv commented May 17, 2018

@luii, @piranna Stumbled upon this link on hacker news: https://isomorphic-git.github.io/ - A pure JavaScript implementation of git for node and browsers!
Is this good enough for milestone 1.0.0 - NodeOS/NodeOS/issues/37 ?

@luii

This comment has been minimized.

Show comment
Hide comment
@luii

luii May 18, 2018

Member

@bogdanbiv it looks promising i see if i can use it in nodeos-git, because nodegit is somewhat a dead end for me

Member

luii commented May 18, 2018

@bogdanbiv it looks promising i see if i can use it in nodeos-git, because nodegit is somewhat a dead end for me

@bogdanbiv

This comment has been minimized.

Show comment
Hide comment
@bogdanbiv

bogdanbiv Jul 17, 2018

Would it help to set up a bounty to get this ready this issue ready?

Would it help to set up a bounty to get this ready this issue ready?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment