Skip to content
This repository has been archived by the owner on Mar 4, 2022. It is now read-only.

BUG: isBuilderTask does not do correct inference on Windows. #138

Closed
GEMI opened this issue Mar 29, 2017 · 9 comments · Fixed by #140
Closed

BUG: isBuilderTask does not do correct inference on Windows. #138

GEMI opened this issue Mar 29, 2017 · 9 comments · Fixed by #140
Labels

Comments

@GEMI
Copy link

GEMI commented Mar 29, 2017

Hi, it seems that builder spawns many processes and fails on Windows 10.
C:\Projects\sdmp-ui>builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:13292] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:9136] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:14356] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:8972] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:16160] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:10168] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:8224] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:1900] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:7816] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:10072] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:2572] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:4856] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:15528] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:8392] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:10048] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:10132] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:10224] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:15600] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:2056] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:11964] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:5212] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:15328] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:5088] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:7100] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:16300] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:7376] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:3984] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:2532] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:7316] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:928] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:14256] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:8756] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
[builder:config:environment] {"cwd":"C:\Projects\sdmp-ui","dir":"C:\Projects\sdmp-ui\node_modules\builder\lib"}
[builder:builder-core:start:15728] Started: run build
[builder:run] build - builder run build
[builder:proc:start] Command: builder run build
'builder' is not recognized as an internal or external command,
operable program or batch file.
[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:15728] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:8756] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:14256] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:928] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:7316] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:2532] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:3984] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:7376] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:16300] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:7100] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:5088] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:15328] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:5212] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:11964] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:2056] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:15600] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:10224] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:10132] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:10048] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:8392] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:15528] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:4856] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:2572] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:10072] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:7816] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:1900] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:8224] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:10168] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:16160] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:8972] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:14356] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:9136] Task: run build, Error: Command failed: cmd /d /s /c builder run build

[builder:proc:end:1] Command: builder run build
[builder:builder-core:end:13292] Task: run build, Error: Command failed: cmd /d /s /c builder run build

Node: v6.2.2
Npm: 4.4.4

@ryan-roemer
Copy link
Member

If the project / archetypes are open source, can I get a link to them?

If they're closed source, can you paste in the JSON of the package.json:scripts for the project and any archetypes at issue for me to examine further?

Also, does builder run build work normally on other OS's than Windows?

@GEMI
Copy link
Author

GEMI commented Mar 30, 2017

Hi, this happens even with an empty project. If I do install this package and run npm run dev it simply spawns many processes and fails.
{ "name": "web-common", "version": "1.0.0", "private": true, "scripts": { "builder": "builder", "build": "builder run build", "dev": "builder run dev", "test": "builder run test-all", "test-watch": "builder run test-watch", "lint": "builder run lint" }, "dependencies": { "builder": "^3.2.1", "builder-react-component": "^0.3.5" }, "devDependencies": { "builder-react-component-dev": "^0.3.5" } }

@ryan-roemer
Copy link
Member

What is the contents of your .builderrc file in the same project?

@GEMI
Copy link
Author

GEMI commented Mar 30, 2017

There is no .builderrc file there.

@GEMI
Copy link
Author

GEMI commented Mar 30, 2017

Btw, the actual project where I encountered the problem actually works fine for my colleagues with mac's.

@ryan-roemer
Copy link
Member

You need a .builderrc hooking to the archetype you're using, which here is builder-react-component which has: builder-react-component/package.json:scripts:build command. Otherwise, what you get is essentially a recursive call of:

"build": "builder run build"

Which without an archetype means:

  • Run builder run build
  • ... which then runs builder run build
  • ... which then runs builder run build
  • ... you get the picture from here 😉

What the archetype linking in .builderrc does is allow builder to say:

// package.json:scripts
// Hmm... a root package.json task
// I would normally run this, but since it is builder running the *same* task as it
// is named (aka `build`), I will instead look to the archetype.
"build": "builder run build"

// node_modules/builder-react-component/package.json:scripts
// Aha! I found it in the archetype, so use this instead!
"build": "webpack go-do-stuff"

Builder task resolution is explained in more detail here: https://github.com/FormidableLabs/builder#task-resolution

@GEMI
Copy link
Author

GEMI commented Apr 4, 2017

Hey, I can reproduce the behavior on this repo https://github.com/GEMI/builder-test
I do npm install, then npm run build and the same happens.
As I have mentioned our project works fine for people with Mac and Linux so I am assuming it's something related to PATH or something.

@GEMI
Copy link
Author

GEMI commented Apr 4, 2017

Ok so I have found the issue. The problem is in the method isBuilderTask.

Task.prototype.isBuilderTask = function (task) {
  var builder = path.basename(this._script, '.js');
  var taskParts = task.split(/\s+/);
  var taskBin = taskParts[0];

  // Note: Assumes a binary script match without `.js` extension.
  return builder === taskBin;
};

path.basename always returns 'builder.js' so it is never equal to value inside the taskBin variable. Adding the second argument '.js' to path.basename method fixes the issue. I am not sure why this works on Macs but does not work on windows.

@ryan-roemer ryan-roemer added the bug label Apr 6, 2017
@ryan-roemer ryan-roemer changed the title Multiple processes BUG: isBuilderTask does not do correct inference on Windows. Apr 6, 2017
@ryan-roemer
Copy link
Member

Reproduced issue on Windows VM. Variable comparison on OS'es:

Mac:

{ builder: 'builder',
  script: '/Users/rye/scm/fmd/builder-test/node_modules/.bin/builder',
  taskParts: [ 'builder', 'run', 'build' ],
  taskBin: 'builder' }

Windows:

{ builder: 'builder.js',
 script: 'X:\\scm\\fmd\\builder-test\\node_modules\\builder\\bin\\builder.js',
 taskParts: [ 'builder', 'run', 'build' ],
 taskBin: 'builder' }

ryan-roemer added a commit that referenced this issue Apr 10, 2017
- **Actual issue**: Fix builder passthrough determination on Windows. This is just @GEMI 's fix from #139 that I've copied with lots of other stuff going on. Fixes #138 
- Travis CI fails weirdly from an istanbul / node-mkdirp issue on Node 6's somewhere by `6.10.2`. I've captured the issue in a ticket and just pinned `6.9.2`
- I've honed down the `.npmignore` to make the package smaller.
- Removed npm@2 from testing on Node 5 and 6.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants