Project

General

Profile

Actions

Bug #39556

closed

npm problem causes "make-dist" to fail when directory contains colon character

Added by Nathan Cutler almost 5 years ago. Updated almost 3 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
pacific, octopus, nautilus
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

Environment: openSUSE Leap 15.1, Tumbleweed, Python 2+3 and Python 3 only

tl;dr - when the directory path contains a colon (':') character, make-dist fails in the npm phase with the error messages shown below. When the directory does not contain a colon, the bug does not manifest and the npm phase succeeds.

When I run make-dist on tip of master branch, I get:

Collecting nodeenv
Installing collected packages: nodeenv
Successfully installed nodeenv-1.3.3
 * Install prebuilt node (10.13.0) ..... done.
 * Appending data to /tmp/tmp.PRGQz8NIRr/bin/activate
 * Appending data to /tmp/tmp.PRGQz8NIRr/bin/activate.fish

> fsevents@1.2.4 install /home/smithfarm/obs/filesystems:ceph:octopus:upstream/ceph/tmp.gs6pfXbgP2/src/pybind/mgr/dashboard/frontend/node_modules/fsevents
> node install

> node-sass@4.11.0 install /home/smithfarm/obs/filesystems:ceph:octopus:upstream/ceph/tmp.gs6pfXbgP2/src/pybind/mgr/dashboard/frontend/node_modules/node-sass
> node scripts/install.js

Cached binary found at /home/smithfarm/.npm/node-sass/4.11.0/linux-x64-64_binding.node

> node-sass@4.11.0 postinstall /home/smithfarm/obs/filesystems:ceph:octopus:upstream/ceph/tmp.gs6pfXbgP2/src/pybind/mgr/dashboard/frontend/node_modules/node-sass
> node scripts/build.js

Binary found at /home/smithfarm/obs/filesystems:ceph:octopus:upstream/ceph/tmp.gs6pfXbgP2/src/pybind/mgr/dashboard/frontend/node_modules/node-sass/vendor/linux-x64-64/binding.node
Testing binary
Binary is fine

> fsevents@1.2.7 install /home/smithfarm/obs/filesystems:ceph:octopus:upstream/ceph/tmp.gs6pfXbgP2/src/pybind/mgr/dashboard/frontend/node_modules/@compodoc/compodoc/node_modules/fsevents
> node install

> @compodoc/compodoc@1.1.9 postinstall /home/smithfarm/obs/filesystems:ceph:octopus:upstream/ceph/tmp.gs6pfXbgP2/src/pybind/mgr/dashboard/frontend/node_modules/@compodoc/compodoc
> opencollective postinstall

sh: opencollective: command not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! @compodoc/compodoc@1.1.9 postinstall: `opencollective postinstall`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the @compodoc/compodoc@1.1.9 postinstall 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/smithfarm/.npm/_logs/2019-05-01T11_31_10_328Z-debug.log

This only happens if the directory path contains a colon (':') character.


Related issues 3 (0 open3 closed)

Copied to Ceph - Backport #50356: nautilus: npm problem causes "make-dist" to fail when directory contains colon characterResolvedNathan CutlerActions
Copied to Ceph - Backport #50357: octopus: npm problem causes "make-dist" to fail when directory contains colon characterResolvedNathan CutlerActions
Copied to Ceph - Backport #50358: pacific: npm problem causes "make-dist" to fail when directory contains colon characterResolvedNathan CutlerActions
Actions #1

Updated by Nathan Cutler almost 5 years ago

  • Category set to 151
Actions #2

Updated by Nathan Cutler almost 5 years ago

  • Description updated (diff)
Actions #3

Updated by Nathan Cutler almost 5 years ago

  • Status changed from New to Can't reproduce
Actions #4

Updated by Nathan Cutler almost 5 years ago

  • Subject changed from mgr/dashboard: npm problem causes "make check" to fail to mgr/dashboard: npm problem causes "make-dist" to fail
  • Status changed from Can't reproduce to New
Actions #5

Updated by Nathan Cutler almost 5 years ago

  • Description updated (diff)
Actions #6

Updated by Nathan Cutler almost 5 years ago

  • Description updated (diff)
Actions #7

Updated by Nathan Cutler almost 5 years ago

Actions #8

Updated by Nathan Cutler almost 5 years ago

When I revert the compodoc commit, "make-dist" throws a different error:

Collecting nodeenv
Installing collected packages: nodeenv
Successfully installed nodeenv-1.3.3
 * Install prebuilt node (10.13.0) ..... done.
 * Appending data to /tmp/tmp.Q9zQYPkTHK/bin/activate
 * Appending data to /tmp/tmp.Q9zQYPkTHK/bin/activate.fish

> fsevents@1.2.4 install /home/smithfarm/filesystems:ceph:octopus:upstream/ceph/tmp.tMwmwqMkNd/src/pybind/mgr/dashboard/frontend/node_modules/fsevents
> node install

> node-sass@4.11.0 install /home/smithfarm/filesystems:ceph:octopus:upstream/ceph/tmp.tMwmwqMkNd/src/pybind/mgr/dashboard/frontend/node_modules/node-sass
> node scripts/install.js

Cached binary found at /home/smithfarm/.npm/node-sass/4.11.0/linux-x64-64_binding.node

> node-sass@4.11.0 postinstall /home/smithfarm/filesystems:ceph:octopus:upstream/ceph/tmp.tMwmwqMkNd/src/pybind/mgr/dashboard/frontend/node_modules/node-sass
> node scripts/build.js

Binary found at /home/smithfarm/filesystems:ceph:octopus:upstream/ceph/tmp.tMwmwqMkNd/src/pybind/mgr/dashboard/frontend/node_modules/node-sass/vendor/linux-x64-64/binding.node
Testing binary
Binary is fine

> fsevents@1.2.7 install /home/smithfarm/filesystems:ceph:octopus:upstream/ceph/tmp.tMwmwqMkNd/src/pybind/mgr/dashboard/frontend/node_modules/@angular/compiler-cli/node_modules/fsevents
> node install

added 1556 packages in 14.823s

> ceph-dashboard@0.0.0 build /home/smithfarm/filesystems:ceph:octopus:upstream/ceph/tmp.tMwmwqMkNd/src/pybind/mgr/dashboard/frontend
> npm run env_build && ng build "--prod" "--progress=false" 

> ceph-dashboard@0.0.0 env_build /home/smithfarm/filesystems:ceph:octopus:upstream/ceph/tmp.tMwmwqMkNd/src/pybind/mgr/dashboard/frontend
> cp src/environments/environment.tpl.ts src/environments/environment.prod.ts && cp src/environments/environment.tpl.ts src/environments/environment.ts  && node ./environment.build.js

Environment variables have been set
sh: ng: command not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! ceph-dashboard@0.0.0 build: `npm run env_build && ng build "--prod" "--progress=false"`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the ceph-dashboard@0.0.0 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/smithfarm/.npm/_logs/2019-05-01T15_14_42_038Z-debug.log
Actions #9

Updated by Tiago Melo almost 5 years ago

I just created a new docker container using openSUSE Leap 15.1 and ceph master, and was not able to reproduce the problem.
I think similar problems have happened before and was related to cached files.

Before I compiled ceph I remove the following folders:

rm -rf /ceph/build/
rm -rf /ceph/src/pybind/mgr/dashboard/frontend/node_modules/
rm -rf /ceph/src/pybind/mgr/dashboard/frontend/dist/

I used this dockerfile: https://github.com/ricardoasmarques/ceph-dev-docker/blob/master/Dockerfile
and only changed the distro and installed bzip2 and python-setuptools.

Actions #10

Updated by Nathan Cutler almost 5 years ago

  • Status changed from New to Can't reproduce

Thanks, @Tiago - I also tried with a fresh VM and could not reproduce, sigh.

(BTW I always run "make-dist" in a fresh clone, so in my case the issue is being caused by something out-of-tree. Probably some interaction between python modules installed system-wide via pip and others installed via RPM.)

Actions #11

Updated by Nathan Cutler almost 5 years ago

  • Status changed from Can't reproduce to New

Reopening. I can reproduce this in an openSUSE 15.1 docker container. The procedure for doing so is:

git clone https://github.com/smithfarm/heebeejeebee.git
cd heebeejeebee
./build.sh --rebuild-base
./build.sh

@Tiago - I noticed your docker container uses Tumbleweed. Could you try it with 15.1 instead?

Actions #12

Updated by Nathan Cutler almost 5 years ago

  • Subject changed from mgr/dashboard: npm problem causes "make-dist" to fail to mgr/dashboard: npm problem causes "make-dist" to fail on openSUSE Leap 15.1
Actions #13

Updated by Nathan Cutler almost 5 years ago

@Tiago: I see now you wrote you changed the distro in your Dockerfile. There must be a new dependency that your Dockerfile is installing but mine is not. I will try to figure out which one it is.

Actions #14

Updated by Nathan Cutler almost 5 years ago

  • Subject changed from mgr/dashboard: npm problem causes "make-dist" to fail on openSUSE Leap 15.1 to mgr/dashboard: npm problem causes "make-dist" to fail when directory contains colon character
  • Description updated (diff)
  • Status changed from New to 12

Updated title and description to reflect Tiago's analysis - i.e., the problem only happens when the directory contains a colon (':') character.

Actions #15

Updated by Lenz Grimmer almost 5 years ago

Is this something worthwhile reporting to the npm maintainers? Or maybe it's a known limitation?

Actions #16

Updated by Patrick Donnelly over 4 years ago

  • Status changed from 12 to New
Actions #17

Updated by Tiago Melo over 3 years ago

  • Category changed from 151 to 160
Actions #18

Updated by Ernesto Puerta about 3 years ago

  • Status changed from New to Rejected

Closing as, per discussion in the corresponding NPM CLI issue, it seems that the <colon> is not a valid char in POSIX paths (in fact it's used for separating paths, like in the PATH environment variable).

Actions #19

Updated by Nathan Cutler about 3 years ago

  • Project changed from mgr to Ceph
  • Category deleted (160)
  • Status changed from Rejected to In Progress
  • Assignee set to Nathan Cutler

Ernesto Puerta wrote:

Closing as, per discussion in the corresponding NPM CLI issue, it seems that the <colon> is not a valid char in POSIX paths (in fact it's used for separating paths, like in the PATH environment variable).

Thanks. The "fix", then, is to ensure that the full path to the directory where make-dist is run does not contain any ':' characters. I will open a PR to add a sanity check for this to the script.

Actions #20

Updated by Nathan Cutler about 3 years ago

  • Subject changed from mgr/dashboard: npm problem causes "make-dist" to fail when directory contains colon character to npm problem causes "make-dist" to fail when directory contains colon character
Actions #21

Updated by Nathan Cutler about 3 years ago

  • Status changed from In Progress to Fix Under Review
  • Pull request ID set to 40614
Actions #22

Updated by Nathan Cutler about 3 years ago

  • Backport set to pacific, octopus, nautilus
Actions #23

Updated by Nathan Cutler about 3 years ago

Actions #24

Updated by Kefu Chai about 3 years ago

  • Status changed from Fix Under Review to Pending Backport
Actions #25

Updated by Backport Bot about 3 years ago

  • Copied to Backport #50356: nautilus: npm problem causes "make-dist" to fail when directory contains colon character added
Actions #26

Updated by Backport Bot about 3 years ago

  • Copied to Backport #50357: octopus: npm problem causes "make-dist" to fail when directory contains colon character added
Actions #27

Updated by Backport Bot about 3 years ago

  • Copied to Backport #50358: pacific: npm problem causes "make-dist" to fail when directory contains colon character added
Actions #28

Updated by Loïc Dachary almost 3 years ago

  • Status changed from Pending Backport to Resolved

While running with --resolve-parent, the script "backport-create-issue" noticed that all backports of this issue are in status "Resolved" or "Rejected".

Actions

Also available in: Atom PDF