Giter Club home page Giter Club logo

pulp's Introduction

Travis CI status AppVeyor CI status Pulp

Join the chat at https://gitter.im/bodil/pulp

A build tool for PureScript.

Jarvis Cocker dancing

Installation

Assuming you already have Node set up (and we recommend you also set up NPM to keep your global packages in your home directory), all you need to do to get a working PureScript environment is:

$ npm install -g purescript pulp bower

This installs the PureScript compiler, the Pulp build tool, and the Bower package manager.

Aside: if you're familiar with the JavaScript ecosystem and you're wondering why PureScript uses Bower and not npm, you might be interested to read Why the PureScript community uses Bower. Otherwise, please ignore this and read on.

Getting Started with a Pulp Project

The short version:

$ mkdir purescript-hello
$ cd purescript-hello
$ pulp init
$ pulp run

The structure of your project folder, after running pulp init, will look like this:

  purescript-hello
  - bower.json
  - src/
  - test/

pulp works by convention. It expects all projects to contain a manifest file for package management (usually bower.json, since package management in PureScript is usually handled by Bower).

Your project source files go in the src folder. Your test files go in the test folder. Project dependencies will be installed under the Bower standard bower_components folder, and are expected to have the same basic src/test structure. That's all there is to a pulp project.

We employ the purescript- prefix as a convention to identify PureScript projects when they're used as dependencies. You're welcome to call your project anything you like, but without the purescript- prefix it won't be picked up by pulp as a dependency.

What if I need something a bit more complicated?

If you want to change any of these defaults, you can—pulp offers a number of command line flags to alter its behaviour—but try to avoid using them unless you have a good reason to.

If you get fed up with having to remember long pulp invocations, try using npm as your build tool. pulp's numerous command line flags make it well suited for this.

If that's still not enough, you might try using a more generic build tool, such as webpack with purs-loader, or gulp with gulp-purescript.

Pulp Commands

To get a quick overview of the things pulp can do, you can ask it to give you a list of its available commands:

$ pulp --help

This will print a list of pulp's global command line options, and a list of commands it will accept.

To see the available options for a specific command, you can invoke the command with the --help flag, like this:

$ pulp build --help

This will give you an exhaustive list of ways you can modify the basic behaviour of the command.

Global, Command Specific and Pass-Through Options

Notice that there's a distinction between global command line options and command specific options. Global options must appear before the name of the command, and command specific options must appear after it.

Thus, if you want to run the build command in watch mode (where it will run the command once, then wait and re-run the command whenever you change a source file) you need to put the --watch flag before the command itself, like so:

$ pulp --watch build

On the other hand, if you want to tell the build command to produce optimised code (performing dead code elimination), using the command specific option --optimise, the flag needs to come after the command name:

$ pulp build --optimise

Pass-Through Options

Finally, pulp commands sometimes allows you to pass flags through to the purs compiler. Any options appearing after -- will be passed through to the compiler, or whichever process a pulp command spawns. For instance, if you want to tell purs to skip applying tail call optimisations, you would invoke pulp build like this:

$ pulp build -- --no-tco

Building Projects

At heart, pulp is just a frontend for the PureScript compiler, purs. Its basic function is to compile your project, which you can do by running pulp build. This will simply run purs compile with all your source files, leaving the compiled JavaScript files in the output folder. These files will all be CommonJS modules, which you can require() using anything which supports CommonJS, such as node.

However, you will usually want to do more with your project than just compile your PureScript code into a jumble of CommonJS modules. pulp provides a number of commands and options for the most common use cases.

Making a JavaScript Bundle

pulp build can also call purs bundle for you, which is a compiler tool whose job it is to take the output from purs compile, remove the code which isn't actually being used by your program, and bundle it all up into a single compact JavaScript file.

There are two command line options you can give pulp build to accomplish this, depending on where you want the resulting code. You can use the --optimise flag (or its shorthand alias, -O), which will send the bundled result to standard output, or you can use the --to (or -t) option, passing it a file name, and pulp will store the bundle in a file of that name.

So, you can use either of these methods, which in this example will both have the same effect:

$ pulp build --optimise > hello.js
$ pulp build --to hello.js

Note that using both options (pulp build --optimise --to hello.js) is superfluous. The presence of --to implies the presence of --optimise.

Running Your PureScript Project

If you're developing a Node project using PureScript, you can tell pulp to run it after compiling using the pulp run command. This command will first run pulp build for you, if necessary, then launch your compiled code using node. If you have used any pass-through command line options, these will be passed to the node process.

So, to run the hello world project you get from pulp init, you would simply:

$ pulp run

If you want to pass command line arguments to your application, pulp lets you do that too:

$ pulp run -- file1.txt file2.txt file3.txt

If you want to run your application using something other than node, pulp lets you do that too, with the --runtime option. For instance, if you've written an application which runs on PhantomJS, you might launch it like this:

$ pulp run --runtime phantomjs

Running Test Suites

pulp has a command pulp test, which works much like pulp run, except it will also compile the code you've placed in your test folder, and instead of running the main function in your Main module, it will use Test.Main. This module should be located in your test folder.

pulp doesn't care what test framework you've chosen, as long as there's a main function in your Test.Main module to be run. If the process exits with a non-zero return code, that means your test suite failed, as far as pulp is concerned, and it will itself exit with an error.

In short, to run your tests:

$ pulp test

To continuously run your tests when you change the source code:

$ pulp --watch test

Running Commands Before and After an Action

It's sometimes useful to kick off a command before or after an action, particularly in combination with the --watch option above. To do this, you can use --before, or --then and --else for successful or failing actions respectively:

$ pulp --watch --before clear build       # Clears the screen before builds.
$ pulp --watch --then 'say Done' build    # On OS X, announces 'Done' after a successful build.
$ pulp --watch --else 'say Failed' build  # Announces 'Failed' if a build failed.

# A more long-winded example combining the three:
$ pulp --watch --before clear --then "say $(basename `pwd`) succeeded." --else 'say $(basename `pwd`) failed.' build

CommonJS Aware Builds

Often, you'll want to go outside PureScript and leverage some of the enormous body of JavaScript code available on NPM. This is such a common use case that pulp provides a command for it: pulp browserify. As the name suggests, this uses Browserify to bundle up your PureScript code with Node style CommonJS dependencies.

For instance, the majority of web UI libraries for PureScript these days depend on either virtual-dom or React as a CommonJS dependency. Here is how you would add React to your project and build a JS bundle with React included (assuming your PureScript code requires it):

$ npm install react
$ pulp browserify --to hello.js

Essentially, pulp browserify --to works exactly like pulp build --to, except it also resolves CommonJS dependencies and includes them in the bundle. The resulting JS file can now be loaded directly into the browser, and everything you need to run your application should be included.

If you omit the --to option, the bundle is piped to standard output. This would thus have the same effect as the example above:

$ pulp browserify > hello.js

Optimising Code Size

pulp browserify will pull code in at the module level by default, so every file required from your entry point will appear in the bundle. The PureScript compiler, as we know, is able to perform dead code elimination on your compiled PureScript code, and we can leverage this in pulp browserify using the --optimise flag.

$ pulp browserify --optimise --to hello.js

Note that, unlike pulp build, --to doesn't automatically imply --optimise. In fact, if you omit --optimise, pulp browserify will not only omit the dead code elimination step, it will also run Browserify as an incremental build, which means it will run considerably faster. You should use --optimise only when you're building production code—when you're developing, you'll probably prefer the much faster compile times provided by Browserify's incremental mode.

Reimporting Browserified Bundles

While browserified bundles are intended to be consumed directly by browsers, you may sometimes prefer to access the bundle from some external code. While it's generally preferable to consume CommonJS modules directly, there are use cases where you might want to provide a single JS file ready to be required by a consumer without needing to deal with installing and resolving dependencies. Browserify provides the --standalone mechanism for that, and pulp browserify supports it:

$ pulp browserify --standalone myBundle --to myBundle.js

This makes a bundle which comes wrapped in a UMD header (meaning it supports both CommonJS and AMD, and will install itself in the global namespace under the name you provided if neither is present), and the exports it provides will be the same as those you export in your Main module.

So, given the example above produces a bundle where a PureScript function Main.main exists, you can access it from JavaScript via CommonJS like this:

var myBundle = require("./myBundle");
myBundle.main();

Building Documentation

PureScript has an inline syntax for documentation, which can be extracted into Markdown or HTML files using the purs docs command. pulp provides the pulp docs command to make this process easy:

$ pulp docs [--with-dependencies]

This extracts the documentation from your source files, and places it in the generated-docs folder under your project's root folder. By default, dependencies are not included, but this can be enabled with the --with-dependencies flag.

You can also extract documentation from your tests, if you like:

$ pulp docs --with-tests

The purs docs command itself also accepts some options to modify its behaviour, which can be specified by using pass-through options. The --format option is particularly useful, as it allows you to specify the desired output format. In particular, you can generate nice hyperlinked Pursuit-style HTML docs with the following command:

$ pulp docs -- --format html

It is a good idea to run this command and browse the generated HTML documentation before publishing a library to Pursuit, as doing so will allow you to spot any formatting issues or any declarations which are missing documentation.

Launching a REPL

The purs repl interactive shell for PureScript is fantastically useful, but setting it up can be a bit of a chore, especially with a large number of dependencies. That's where pulp repl comes in.

pulp repl will generate a .purs-repl file for your project automatically whenever you invoke it, and launch purs repl for you directly. It's as simple as:

$ pulp repl

Launching a Development Server

A common need when developing client side web apps is a tightly integrated development web server, which takes care of compilation for you on the fly. This is what pulp server is for: whenever you make a change to your source files, you just switch to your browser and hit the refresh button, and the server will compile and deliver your assets on the fly. No need to wait for the PureScript compiler to finish before switching to the browser.

pulp server only provides the most basic functionality: it will serve static assets from your project root, and it will serve your compiled JS bundle from /app.js.

A Quick Example

To see how this works, let's set up a project for serving the default hello world app through pulp server.

$ mkdir hello-server
$ cd hello-server
$ pulp init

We need an index.html file to load our compiled PureScript code. Place this in your new hello-server folder:

<!doctype html>
<html>
  <body>
    <h1>Hello sailor!</h1>
    <script src="/app.js"></script>
  </body>
</html>

Now, start the server:

$ pulp server

It will tell you that it's launched a web server at http://localhost:1337/, and after a little while it will tell you that it's finished compiling:

* Server listening on http://localhost:1337/
* Building project in /home/harry/code/hello-serve
Compiling Data.Symbol
Compiling Type.Data.RowList
Compiling Record.Unsafe
<snip>
* Build successful.
* Bundling JavaScript...
* Bundled.

If you browse to http://localhost:1337/, you should, in addition to the "Hello sailor!" header on the webpage, see that your PureScript code has printed the text "Hello sailor!" to the console.

I Need More

As mentioned, this is a very bare bones development server, since pulp server is intended as a starting point only. You're likely to quickly need more features if you plan on doing any kind of serious web development. At this point, you'll need to look further afield; one option is to use Webpack together with purs-loader.

Dependency Management

pulp is not a package manager, only a build tool. The PureScript community has standardised on Bower as the default package manager, but there are alternatives such as psc-package. Currently, pulp supports both Bower and psc-package.

Pulp expects the presence of a project manifest file in your project root, in which your project’s dependencies and other metadata are recorded. If you're using Bower, that file will be bower.json; if you're using psc-package, it will be psc-package.json.

When you run commands like pulp build, Pulp will locate PureScript source files from installed dependencies based on which of these two files it finds in your project, and pass these files on to the relevant program (e.g. purs compile). If your project has both bower.json and psc-package.json files, Pulp uses the dependencies installed via Bower by default; if you want to use dependencies installed via psc-package, you can use the --psc-package flag, e.g.

$ pulp --psc-package build

You can also run pulp --psc-package init to initialize a project with a psc-package.json file instead of a bower.json file.

Dependency Management Cheat Sheet

This document isn't going to explain how Bower works, or go into details about PureScript dependency management. However, a tl;dr is often enough to get you started and productive without having to dive into yet another package management system. It's going to be especially easy if you're already used to npm. So, here we go.

Installing Dependencies

To install the purescript-profunctor package into your project:

$ bower install purescript-profunctor

To also record this as a dependency in the bower.json file:

$ bower install --save purescript-profunctor

To install every dependency which has been recorded in bower.json as needed by your project:

$ bower install

Housekeeping

To remove an installed package:

$ bower uninstall purescript-profunctor

To remove it from bower.json as well:

$ bower uninstall --save purescript-profunctor

To list all packages installed in your project:

$ bower ls

To update all installed packages to the most recent version allowed by bower.json:

$ bower update

Releasing Packages

Imagine you've created a new PureScript library for working with zygohistomorphic prepromorphisms (because who doesn't need zygohistomorphic prepromorphisms), called purescript-zygo.

pulp init will have installed a basic bower.json file for you along with the project skeleton, but before you continue, you should read the Bower documentation on the file format and make sure you’ve configured it to your satisfaction before you publish your package. In particular, mind that you’ve added a license field.

Note that there is a convention of prefixing PureScript package names with purescript-. Please stick with that unless you have an especially good reason not to, as pulp and many other tools expect installed dependencies to follow this convention.

You would start by tagging an initial version:

$ cd /path/to/purescript-zygo
$ pulp version 0.1.0

This runs a few checks to ensure that your package is properly set up for publishing, and if they pass, creates a Git tag v0.1.0.

Publishing Packages

Bower packages are installed directly from Git repositories, and versioning follows Git tags. This means that once you've tagged a version, all you need to do to make a new release is push that tag to GitHub, register your package and upload your package's documentation to Pursuit.

Originally, pulp was designed to work exclusively with the Bower registry but things became complicated after it no longer accepted new PureScript package submissions. Older packages are still registered in Bower but new packages need to be registered in the PureScript Registry. The upshot is that you will usually use a spago workflow to prepare the ground for publication and then use pulp for the actual publication step itself. For this reason you should read spago: Publish my library before proceding. You may also find it useful to read the notes on How to submit packages in the Pursuit package authors guide.

The pulp publication commands are:

$ pulp login

followed by

$ pulp publish

For subsequent releases, the process is the same: pulp version <newversion> followed by pulp publish. When tagging a new version, pulp version also allows you to supply an argument of the form patch, minor, or major, in addition to specific versions. If you run pulp version patch, for example, Pulp will look through your Git tags to find the version number for the latest release, and then generate the new verision number by bumping the patch component. The minor and major arguments respectively perform minor and major version bumps in the same way.

Pulp does not currently support publishing packages which use psc-package exclusively, because without having submitted your package to a registry such as the Bower registry, there is no way of making sure that people agree which package a given package name refers to. This may change in the future.

Development

To work on pulp, after cloning the repository, run:

$ npm install
$ bower install

to install dependencies. Then, you can run

$ npm run -s build

to compile pulp, and

$ npm test

to run the tests.

Licence

Copyright 2014-2017 Bodil Stokke, Harry Garrood

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

See the LICENSE file for further details.

pulp's People

Contributors

alidd avatar anttih avatar bodil avatar damncabbage avatar ethul avatar garyb avatar gitter-badger avatar hdgarrood avatar jonfk avatar jordanmartinez avatar kika avatar matthewpflueger avatar mcoffin avatar mkaemmerer avatar natefaubion avatar nicolashery avatar nwolverson avatar paf31 avatar plippe avatar profpatsch avatar queckezz avatar risto-stevcev avatar rnons avatar simonrichardson avatar stkb avatar tfausak avatar thoradam avatar ttbodil avatar werehamster avatar zereraz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pulp's Issues

pulp init silently overwrites existing files

To reproduce just do pulp init in any existing repo. Your bower.json and src/Main.purs would be overwritten.

This might end up very sad for someone. It's not just about being fool-proof, first writing something in src/Main.purs and only then initiating the project is quite a common scenario (at least for me).

Use webpack instead of browserify

I started using pulp and browserify recently and have noticed that browserify is kind of slow. At least, I'm pretty sure it could be faster at what it does by doing incremental builds.

I saw online that webpack did incremental builds and does the same thing browserify does.

Thoughts on using webpack? I'm new to frontend stuff, so I'm not sure if there's a hidden advantage to browserify.

Thanks

Upgrade bower

pulp install fails with my setup but bower install with the latest version of bower works fine. I tried downgrading my bower to 1.3.4 (pulp version) and it failed as well.

Check dependency status before invoking psc?

I often forget to bower i before I pulp build. It might be nice if pulp checked that the dependencies listed in bower.json were coherent with what is installed in bower_components before it invoked any of the compiler programs (psc, psc-bundle, etc).

documentation for pulp dep update (and perhaps other commands passed to bower) should be clearer

I was working through

purescript-book/chapter2

from github and I couldn't figure out the moral equivalent of cabal install. Eventually I figured out (by reading the purescript book) I need to run

pulp dep update

as a first step.

Neither

pulp dep --help 

nor the pulp home page (https://github.com/bodil/pulp) gives any indication that there is a

pulp dep update

action.

The home page does say

Thus, pulp dep install foo --save is the equivalent of bower install foo --save except you don't need to install Bower globally.

I would add to this

See pulp dep help for a listing of bower commands that can be passed to pulp.  
(Note this is pulp dep help, not pulp dep --help, which displays current text.)

assuming the above is true. Maybe also some additional breadcrumbs for common usage might also be helpful such as adding that pulp dep update is a good idea, but I'm not sure where to draw the line here.

But I think at least we need a pointer that pulp bower help.

make pulp init interactive?

Currently the bower.json generated is less than ideal as it's missing a few fields that probably should be there: license, and more importantly, repository. Without the repository field purescript libraries cannot be published to pursuit, and it's an easy thing to forget.

Perhaps we should use an interactive init like npm and bower so these fields along with other common things like description, homepage, etc. can be set?

Include test-src directories during test build

I'm going to start adding things like Arbitrary instances for core libraries, under test-src in each package. Using the command line, or gulp or whatever, it's possible to include files under test-src in the build script, but in pulp, everything works by convention.

I suggest the convention be extended so that the test build includes files under bower_components/**/test-src/.

This shouldn't affect any existing libraries.

multiple project support

A place for me to track thoughts on supporting multiple projects.

Simple project:

src/
test/
bower.json

Multiple projects:

project1/
project1/src/
project1/test/
project1/bower.json

project2/
project2/src/
project2/test/
project2/bower.json

A subproject A depends on a subproject B by referencing "B": "../B" in its bower file (need to test to make sure this works, seems like it's supported).

Outstanding issues:

  1. How to handle the fact that each subproject has its own main function? Define pulp.json or something else?
  2. Do all the core commands scale to multiple projects?

Probably other stuff.

Using non-Purescript Bower dependencies?

When including Javascript dependencies (e.g. "dependencies": { "zm-event-kit": "^1.0.0" }), they are not exposed to the build or test execution environments (e.g. you cannot require the module).

What is the correct way to depend on Javascript dependencies via Bower?

Maintaining Pulp

Hello!
Which is the best way to help maintain Pulp?
I see Pulp is currently written in Javascript, but is also being re-written in PureScript.
Is there still a need to actively refactor/test/support the Javascript portions?
Or should I focus on helping out the PureScript re-write?

Remove -O option for browserify?

I think that since psc 0.7.0, the psc tool has nothing to do with dead code elimination; it just writes CommonJS modules into the output directory. Additionally, psc no longer recognises --module or --main options; it exits immediately with an error if they are supplied.

pulp browserify -O calls psc with both --module and --main, and so I am pretty sure that with psc 0.7.x, this will always result in an immediate error from psc because of these unrecognised options. So perhaps we should remove the -O option from pulp browserify. If people want DCE they can use uglifyify or just pulp build -O.

/cc @paf31 @garyb because I am not 100% sure that the above is correct.

/usr/bin/pulp has DOS style line endings

I installed pulp from npm in Ubuntu 14 and /usr/bin/pulp refused to run with some "file not found" nonsense.

Turns out that the file has CR-LF line endings and those manage to confuse the shebang at the top into trying to run the inexistent "node^M" interpreter.

`pulp server` needs a signal handler for Ctrl-C (SIGINT)

When running pulp server inside a docker container, it doesn't exit when pressing Ctrl-C. According to this docker issue (moby/moby#12228), it is caused by applications not exiting by default when they are PID 1 and receive a SIGINT.

It would be nice if pulp exited even when PID 1 and received a SIGINT.

Browserify optimisation fails

pulp browserify works fine.

pulp browserify --optimise results in psc: Main: openFile: does not exist (No such file or directory)

pulp browserify --optimise -m "src/Main.purs" results in
Module 'Main' has been defined more than once after trying to exec psc with an argument list like

[ '--module',
  'src/Main.purs',
  '--main',
  'src/Main.purs',
  ...
  'src/Main.purs',
  ...

pulp can't be run as root

I'm not able to run pulp as root because bower gives an error:

$ id
uid=0(root) gid=0(root) groups=0(root)
$ pulp init --force --allow-root        
* Generating project skeleton in /opt/what
bower ESUDO         Cannot be run with sudo

Additional error details:
Since bower is a user command, there is no need to execute it with superuser permissions.
If you're having permission errors when using bower without sudo, please spend a few minutes learning more about how your system should work and make any necessary repairs.

http://www.joyent.com/blog/installing-node-and-npm
https://gist.github.com/isaacs/579814

You can however run a command with sudo using --allow-root option
* ERROR: Subcommand terminated with error code 1

It looks like bower has a flag --allow-root. pulp should support this flag as well.

Pulp psci clobbers .psci command order

If you tack on some import ... commands at the end of your .psci file, the next time you run pulp psci it will redo your :m commands and tack them on at the end. This results in imports being first, breaking your session.

pulp build --to output.js randomly stopped building output

Earlier I was using pulp build --to output.js and it was giving me an output.js file. Now it doesn't seem to be... so I'm confused. Here is a shell session demonstrating it:

cody@cody-G46VW:~$ cd /tmp
cody@cody-G46VW:/tmp$ mkdir hello-sailor
cody@cody-G46VW:/tmp$ cd hello-sailor/
cody@cody-G46VW:/tmp/hello-sailor$ pulp init
* Generating project skeleton in /tmp/hello-sailor
cody@cody-G46VW:/tmp/hello-sailor$ pulp run
* Building project in /tmp/hello-sailor
* Build successful.
Hello sailor!
cody@cody-G46VW:/tmp/hello-sailor$ pulp build
* Building project in /tmp/hello-sailor
* Build successful.
cody@cody-G46VW:/tmp/hello-sailor$ pulp build --to output.js
* Building project in /tmp/hello-sailor
* Build successful.
cody@cody-G46VW:/tmp/hello-sailor$ ls
bower.json  output  src  test
cody@cody-G46VW:/tmp/hello-sailor$ # ????
cody@cody-G46VW:/tmp/hello-sailor$ pulp build -t output.js
* Building project in /tmp/hello-sailor
* Build successful.
cody@cody-G46VW:/tmp/hello-sailor$ ls
bower.json  output  src  test

Maybe this strace will be helpful:

cody@cody-G46VW:/tmp/hello-sailor$ strace pulp build -t output.js
execve("/home/cody/.nvm/versions/node/v0.12.5/bin/pulp", ["pulp", "build", "-t", "output.js"], [/* 59 vars */]) = 0
brk(0)                                  = 0x1495000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f80418b8000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=189451, ...}) = 0
mmap(NULL, 189451, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8041889000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\v\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1869392, ...}) = 0
mmap(NULL, 3972864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f80412cd000
mprotect(0x7f804148d000, 2097152, PROT_NONE) = 0
mmap(0x7f804168d000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c0000) = 0x7f804168d000
mmap(0x7f8041693000, 16128, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f8041693000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8041888000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8041887000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8041886000
arch_prctl(ARCH_SET_FS, 0x7f8041887700) = 0
mprotect(0x7f804168d000, 16384, PROT_READ) = 0
mprotect(0x606000, 4096, PROT_READ)     = 0
mprotect(0x7f80418ba000, 4096, PROT_READ) = 0
munmap(0x7f8041889000, 189451)          = 0
brk(0)                                  = 0x1495000
brk(0x14b6000)                          = 0x14b6000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2919792, ...}) = 0
mmap(NULL, 2919792, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8041004000
close(3)                                = 0
execve("/home/cody/.nvm/versions/node/v0.12.5/bin/node", ["node", "/home/cody/.nvm/versions/node/v0"..., "build", "-t", "output.js"], [/* 59 vars */]) = 0
brk(0)                                  = 0x197c000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cde1000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=189451, ...}) = 0
mmap(NULL, 189451, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f527cdb2000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220!\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=31680, ...}) = 0
mmap(NULL, 2128864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f527c9b8000
mprotect(0x7f527c9bf000, 2093056, PROT_NONE) = 0
mmap(0x7f527cbbe000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f527cbbe000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14592, ...}) = 0
mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f527c7b4000
mprotect(0x7f527c7b7000, 2093056, PROT_NONE) = 0
mmap(0x7f527c9b6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f527c9b6000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\271\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1024504, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cdb1000
mmap(NULL, 3204768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f527c4a5000
mprotect(0x7f527c595000, 2097152, PROT_NONE) = 0
mmap(0x7f527c795000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf0000) = 0x7f527c795000
mmap(0x7f527c79f000, 83616, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f527c79f000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240U\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1084840, ...}) = 0
mmap(NULL, 3174760, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f527c19d000
mprotect(0x7f527c2a4000, 2093056, PROT_NONE) = 0
mmap(0x7f527c4a3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x106000) = 0x7f527c4a3000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260*\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=89616, ...}) = 0
mmap(NULL, 2185440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f527bf87000
mprotect(0x7f527bf9d000, 2093056, PROT_NONE) = 0
mmap(0x7f527c19c000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7f527c19c000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340`\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=142080, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cdb0000
mmap(NULL, 2217232, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f527bd69000
mprotect(0x7f527bd81000, 2097152, PROT_NONE) = 0
mmap(0x7f527bf81000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x7f527bf81000
mmap(0x7f527bf83000, 13584, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f527bf83000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\v\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1869392, ...}) = 0
mmap(NULL, 3972864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f527b99f000
mprotect(0x7f527bb5f000, 2097152, PROT_NONE) = 0
mmap(0x7f527bd5f000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c0000) = 0x7f527bd5f000
mmap(0x7f527bd65000, 16128, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f527bd65000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cdaf000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cdad000
arch_prctl(ARCH_SET_FS, 0x7f527cdad740) = 0
mprotect(0x7f527bd5f000, 16384, PROT_READ) = 0
mprotect(0x7f527bf81000, 4096, PROT_READ) = 0
mprotect(0x7f527c4a3000, 4096, PROT_READ) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cdac000
mprotect(0x7f527c795000, 32768, PROT_READ) = 0
mprotect(0x7f527c9b6000, 4096, PROT_READ) = 0
mprotect(0x7f527cbbe000, 4096, PROT_READ) = 0
mprotect(0x7f527cde3000, 4096, PROT_READ) = 0
munmap(0x7f527cdb2000, 189451)          = 0
set_tid_address(0x7f527cdada10)         = 27894
set_robust_list(0x7f527cdada20, 24)     = 0
rt_sigaction(SIGRTMIN, {0x7f527bd6ebb0, [], SA_RESTORER|SA_SIGINFO, 0x7f527bd79d10}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x7f527bd6ec40, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7f527bd79d10}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8720000, rlim_max=RLIM64_INFINITY}) = 0
rt_sigaction(SIGUSR1, {0xc93d20, [], SA_RESTORER, 0x7f527bd79d10}, NULL, 8) = 0
brk(0)                                  = 0x197c000
brk(0x199d000)                          = 0x199d000
pipe2([3, 4], O_CLOEXEC)                = 0
write(4, "*", 1)                        = 1
futex(0x15ed5b0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
clock_getres(CLOCK_MONOTONIC_COARSE, {0, 4000000}) = 0
epoll_create1(EPOLL_CLOEXEC)            = 5
pipe2([6, 7], O_NONBLOCK|O_CLOEXEC)     = 0
eventfd2(0, O_NONBLOCK|O_CLOEXEC)       = 8
ioctl(0, FIOCLEX)                       = 0
ioctl(1, FIOCLEX)                       = 0
ioctl(2, FIOCLEX)                       = 0
ioctl(3, FIOCLEX)                       = 0
ioctl(4, FIOCLEX)                       = 0
ioctl(5, FIOCLEX)                       = 0
ioctl(6, FIOCLEX)                       = 0
ioctl(7, FIOCLEX)                       = 0
ioctl(8, FIOCLEX)                       = 0
ioctl(9, FIOCLEX)                       = -1 EBADF (Bad file descriptor)
ioctl(10, FIOCLEX)                      = -1 EBADF (Bad file descriptor)
ioctl(11, FIOCLEX)                      = -1 EBADF (Bad file descriptor)
ioctl(12, FIOCLEX)                      = -1 EBADF (Bad file descriptor)
ioctl(13, FIOCLEX)                      = -1 EBADF (Bad file descriptor)
ioctl(14, FIOCLEX)                      = -1 EBADF (Bad file descriptor)
ioctl(15, FIOCLEX)                      = -1 EBADF (Bad file descriptor)
ioctl(16, FIOCLEX)                      = -1 EBADF (Bad file descriptor)
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=64*1024}) = 0
setrlimit(RLIMIT_NOFILE, {rlim_cur=64*1024, rlim_max=64*1024}) = 0
rt_sigaction(SIGPIPE, {SIG_IGN, ~[RTMIN RT_1], SA_RESTORER, 0x7f527bd79d10}, NULL, 8) = 0
rt_sigaction(SIGINT, {0xc940b0, ~[RTMIN RT_1], SA_RESTORER|SA_RESETHAND, 0x7f527bd79d10}, NULL, 8) = 0
rt_sigaction(SIGTERM, {0xc940b0, ~[RTMIN RT_1], SA_RESTORER|SA_RESETHAND, 0x7f527bd79d10}, NULL, 8) = 0
rt_sigaction(SIGUSR1, {0xc94070, ~[RTMIN RT_1], SA_RESTORER, 0x7f527bd79d10}, NULL, 8) = 0
open("/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 9
fstat(9, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 9), ...}) = 0
poll([{fd=9, events=POLLIN}], 1, 10)    = 1 ([{fd=9, revents=POLLIN}])
read(9, "3\252>5\356\312\300\20\211\253\2255\350\217\302nb\233\252a\325\241q\31}A\373\4k\34?\2", 32) = 32
close(9)                                = 0
getuid()                                = 1000
mmap(0x197815931000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x197815931000
mprotect(0x197815931000, 4096, PROT_READ|PROT_EXEC) = 0
brk(0x19c7000)                          = 0x19c7000
mmap(0x2505b8e91000, 67108864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2505b8e91000
munmap(0x2505b8e91000, 18280448)        = 0
munmap(0x2505bc000000, 15273984)        = 0
mmap(0x2505ba000000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2505ba000000
mmap(0x1d806e5c1000, 536870912, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x1d806e5c1000
mmap(0x239f48a94000, 393216, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x239f48a94000
mmap(0x331dba5db000, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x331dba5db000
mmap(0x331dba5db000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x331dba5db000
mmap(0x239f48ac0000, 131072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x239f48ac0000
mmap(0x1d806e600000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1d806e600000
mprotect(0x1d806e605000, 4096, PROT_NONE) = 0
mmap(0x1d806e606000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1d806e606000
mprotect(0x1d806e6ff000, 4096, PROT_NONE) = 0
mmap(0x1d806e700000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1d806e700000
mprotect(0x1d806e705000, 4096, PROT_NONE) = 0
mmap(0x1d806e706000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1d806e706000
mprotect(0x1d806e7ff000, 4096, PROT_NONE) = 0
mmap(0x1d806e800000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1d806e800000
mprotect(0x1d806e805000, 4096, PROT_NONE) = 0
mmap(0x1d806e806000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1d806e806000
mprotect(0x1d806e8ff000, 4096, PROT_NONE) = 0
mmap(0x394dab7c9000, 1200128, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x394dab7c9000
munmap(0x394dab7c9000, 225280)          = 0
munmap(0x394dab825000, 823296)          = 0
mmap(0x394dab800000, 151552, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x394dab800000
mmap(0x2470d7f71000, 1265664, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x2470d7f71000
munmap(0x2470d7f71000, 585728)          = 0
munmap(0x2470d8035000, 462848)          = 0
mmap(0x2470d8000000, 217088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2470d8000000
mmap(0x1e100f3e3000, 1986560, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x1e100f3e3000
munmap(0x1e100f3e3000, 118784)          = 0
munmap(0x1e100f4e5000, 929792)          = 0
mmap(0x1e100f400000, 937984, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1e100f400000
mmap(0x1d806e900000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1d806e900000
mprotect(0x1d806e905000, 4096, PROT_NONE) = 0
mmap(0x1d806e906000, 1019904, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1d806e906000
mprotect(0x1d806e9ff000, 4096, PROT_NONE) = 0
brk(0x19ea000)                          = 0x19ea000
brk(0x19e4000)                          = 0x19e4000
mmap(0x13a4567bb000, 1200128, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x13a4567bb000
munmap(0x13a4567bb000, 282624)          = 0
munmap(0x13a456825000, 765952)          = 0
mmap(0x13a456800000, 151552, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x13a456800000
open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 9
read(9, "0-3\n", 8192)                  = 4
close(9)                                = 0
mmap(NULL, 8720384, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f527b14e000
mprotect(0x7f527b14e000, 4096, PROT_NONE) = 0
clone(child_stack=0x7f527b99dfb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f527b99e9d0, tls=0x7f527b99e700, child_tidptr=0x7f527b99e9d0) = 27895
futex(0x19c3588, FUTEX_WAKE_PRIVATE, 1) = 1
mmap(NULL, 69632, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f527cdd0000
mprotect(0x7f527cdd0000, 4096, PROT_NONE) = 0
clone(child_stack=0x7f527cddffb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f527cde09d0, tls=0x7f527cde0700, child_tidptr=0x7f527cde09d0) = 27896
futex(0x19c3768, FUTEX_WAKE_PRIVATE, 1) = 1
mmap(NULL, 69632, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f527cdbf000
mprotect(0x7f527cdbf000, 4096, PROT_NONE) = 0
clone(child_stack=0x7f527cdcefb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f527cdcf9d0, tls=0x7f527cdcf700, child_tidptr=0x7f527cdcf9d0) = 27897
futex(0x19c37a8, FUTEX_WAKE_PRIVATE, 1) = 1
mmap(NULL, 69632, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f527cd9b000
mprotect(0x7f527cd9b000, 4096, PROT_NONE) = 0
clone(child_stack=0x7f527cdaafb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f527cdab9d0, tls=0x7f527cdab700, child_tidptr=0x7f527cdab9d0) = 27898
mmap(0x1cdec5cb000, 1134592, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x1cdec5cb000
munmap(0x1cdec5cb000, 217088)           = 0
munmap(0x1cdec615000, 831488)           = 0
mmap(0x1cdec600000, 86016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1cdec600000
brk(0x1a09000)                          = 0x1a09000
mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cd7a000
mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cd39000
munmap(0x7f527cd39000, 266240)          = 0
munmap(0x7f527cd7a000, 135168)          = 0
brk(0x1a2d000)                          = 0x1a2d000
mmap(NULL, 270336, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cd59000
mmap(NULL, 536576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527ccd6000
munmap(0x7f527ccd6000, 536576)          = 0
munmap(0x7f527cd59000, 270336)          = 0
brk(0x1a6e000)                          = 0x1a6e000
brk(0x1af3000)                          = 0x1af3000
brk(0x19ef000)                          = 0x19ef000
brk(0x1a11000)                          = 0x1a11000
brk(0x1a70000)                          = 0x1a70000
brk(0x1afd000)                          = 0x1afd000
brk(0x19ef000)                          = 0x19ef000
brk(0x1a2e000)                          = 0x1a2e000
brk(0x1a6f000)                          = 0x1a6f000
brk(0x1af3000)                          = 0x1af3000
mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cc9a000
munmap(0x7f527cc9a000, 1052672)         = 0
readlink("/proc/self/exe", "/home/cody/.nvm/versions/node/v0"..., 8191) = 46
mmap(0x2505bb000000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2505bb000000
mmap(0x331dba5dc000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x331dba5dc000
mmap(0x331dba5dd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x331dba5dd000
mmap(0x331dba5df000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x331dba5df000
mmap(0x35f02148d000, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x35f02148d000
munmap(0x35f02148d000, 471040)          = 0
munmap(0x35f021600000, 577536)          = 0
mmap(0x35f021500000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x35f021500000
getcwd("/tmp/hello-sailor", 4096)       = 18
brk(0x1b33000)                          = 0x1b33000
mmap(0x9128531e000, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x9128531e000
munmap(0x9128531e000, 925696)           = 0
munmap(0x91285500000, 122880)           = 0
mmap(0x91285400000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x91285400000
brk(0x1bb4000)                          = 0x1bb4000
brk(0x1cb5000)                          = 0x1cb5000
mmap(0x2505ba100000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2505ba100000
mmap(0x2505bb100000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2505bb100000
stat("/home/cody/.nvm/versions/node/v0.12.5/bin/pulp", {st_mode=S_IFREG|0775, st_size=4701, ...}) = 0
lstat("/home", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/cody", {st_mode=S_IFDIR|0700, st_size=20480, ...}) = 0
lstat("/home/cody/.nvm", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/bin", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/bin/pulp", {st_mode=S_IFLNK|0777, st_size=33, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/bin/pulp", {st_mode=S_IFREG|0775, st_size=4701, ...}) = 0
readlink("/home/cody/.nvm/versions/node/v0.12.5/bin/pulp", "../lib/node_modules/pulp/index.j"..., 4096) = 33
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/index.js", {st_mode=S_IFREG|0775, st_size=4701, ...}) = 0
mmap(0x1ee16ed3c000, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x1ee16ed3c000
munmap(0x1ee16ed3c000, 802816)          = 0
munmap(0x1ee16ef00000, 245760)          = 0
mmap(0x1ee16ee00000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1ee16ee00000
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/index.js", O_RDONLY) = 9
ioctl(9, FIOCLEX)                       = 0
fstat(9, {st_mode=S_IFREG|0775, st_size=4701, ...}) = 0
read(9, "#!/usr/bin/env node\n\nvar args = "..., 4701) = 4701
close(9)                                = 0
getcwd("/tmp/hello-sailor", 4096)       = 18
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/args", 0x7ffcd87adee0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/args.js", {st_mode=S_IFREG|0664, st_size=6242, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/args.js", {st_mode=S_IFREG|0664, st_size=6242, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/args.js", O_RDONLY) = 9
ioctl(9, FIOCLEX)                       = 0
fstat(9, {st_mode=S_IFREG|0664, st_size=6242, ...}) = 0
read(9, "var merge = require(\"merge\");\n\nf"..., 6242) = 6242
close(9)                                = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/merge", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/merge.js", 0x7ffcd87adb80) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/merge.json", 0x7ffcd87adb80) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/merge.node", 0x7ffcd87adb80) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/merge/package.json", O_RDONLY) = 9
ioctl(9, FIOCLEX)                       = 0
fstat(9, {st_mode=S_IFREG|0664, st_size=1369, ...}) = 0
read(9, "{\n  \"name\": \"merge\",\n  \"version\""..., 1369) = 1369
close(9)                                = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/merge/merge.js", {st_mode=S_IFREG|0664, st_size=2872, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/merge", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/merge/merge.js", {st_mode=S_IFREG|0664, st_size=2872, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/merge/merge.js", O_RDONLY) = 9
ioctl(9, FIOCLEX)                       = 0
fstat(9, {st_mode=S_IFREG|0664, st_size=2872, ...}) = 0
read(9, "/*!\r\n * @name JavaScript/NodeJS "..., 2872) = 2872
close(9)                                = 0
getcwd("/tmp/hello-sailor", 4096)       = 18
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/log", 0x7ffcd87adee0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/log.js", {st_mode=S_IFREG|0664, st_size=454, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/log.js", {st_mode=S_IFREG|0664, st_size=454, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/log.js", O_RDONLY) = 9
ioctl(9, FIOCLEX)                       = 0
fstat(9, {st_mode=S_IFREG|0664, st_size=454, ...}) = 0
read(9, "var c = require(\"ansi\")(process."..., 454) = 454
close(9)                                = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi.js", 0x7ffcd87adb80) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi.json", 0x7ffcd87adb80) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi.node", 0x7ffcd87adb80) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi/package.json", O_RDONLY) = 9
ioctl(9, FIOCLEX)                       = 0
fstat(9, {st_mode=S_IFREG|0664, st_size=1298, ...}) = 0
read(9, "{\n  \"name\": \"ansi\",\n  \"descripti"..., 1298) = 1298
close(9)                                = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi/lib/ansi.js", {st_mode=S_IFREG|0664, st_size=7964, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi/lib", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi/lib/ansi.js", {st_mode=S_IFREG|0664, st_size=7964, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi/lib/ansi.js", O_RDONLY) = 9
ioctl(9, FIOCLEX)                       = 0
fstat(9, {st_mode=S_IFREG|0664, st_size=7964, ...}) = 0
read(9, "\n/**\n * References:\n *\n *   - ht"..., 7964) = 7964
close(9)                                = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi/lib/newlines", 0x7ffcd87ad8e0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi/lib/newlines.js", {st_mode=S_IFREG|0664, st_size=1528, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi/lib/newlines.js", {st_mode=S_IFREG|0664, st_size=1528, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/ansi/lib/newlines.js", O_RDONLY) = 9
ioctl(9, FIOCLEX)                       = 0
fstat(9, {st_mode=S_IFREG|0664, st_size=1528, ...}) = 0
read(9, "\n/**\n * Accepts any node Stream "..., 1528) = 1528
close(9)                                = 0
ioctl(2, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon -echo ...}) = 0
open("/etc/resolv.conf", O_RDONLY)      = 9
fstat(9, {st_mode=S_IFREG|0644, st_size=184, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cdbe000
read(9, "# Dynamic resolv.conf(5) file fo"..., 4096) = 184
read(9, "", 4096)                       = 0
close(9)                                = 0
munmap(0x7f527cdbe000, 4096)            = 0
open("/etc/nsswitch.conf", O_RDONLY)    = 9
fstat(9, {st_mode=S_IFREG|0644, st_size=513, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cdbe000
read(9, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 513
read(9, "", 4096)                       = 0
close(9)                                = 0
munmap(0x7f527cdbe000, 4096)            = 0
open("/dev/urandom", O_RDONLY)          = 9
fstat(9, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 9), ...}) = 0
ioctl(9, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0x7ffcd87ace60) = -1 EINVAL (Invalid argument)
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f527cdbe000
read(9, "'\2347\33Y\373\222?EB\241\214S\350\246\206\247\260\342\255f\204\257WY\326\360\344\333\331P\f"..., 4096) = 4096
close(9)                                = 0
munmap(0x7f527cdbe000, 4096)            = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
ioctl(2, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon -echo ...}) = 0
open("/dev/null", O_RDONLY|O_CLOEXEC)   = 9
open("/dev/tty", O_RDWR|O_CLOEXEC)      = 10
dup3(10, 2, O_CLOEXEC)                  = 2
ioctl(10, FIONBIO, [1])                 = 0
ioctl(10, TIOCGWINSZ, {ws_row=0, ws_col=0, ws_xpixel=0, ws_ypixel=0}) = 0
getcwd("/tmp/hello-sailor", 4096)       = 18
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/project", 0x7ffcd87adee0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/project.js", {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/project.js", {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/project.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1036, ...}) = 0
read(11, "var fs = require(\"fs\");\nvar p = "..., 1036) = 1036
close(11)                               = 0
getcwd("/tmp/hello-sailor", 4096)       = 18
mmap(NULL, 8720384, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f527a8fd000
mprotect(0x7f527a8fd000, 4096, PROT_NONE) = 0
clone(child_stack=0x7f527b14cfb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f527b14d9d0, tls=0x7f527b14d700, child_tidptr=0x7f527b14d9d0) = 27899
mmap(NULL, 8720384, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f527a0ac000
mprotect(0x7f527a0ac000, 4096, PROT_NONE) = 0
clone(child_stack=0x7f527a8fbfb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f527a8fc9d0, tls=0x7f527a8fc700, child_tidptr=0x7f527a8fc9d0) = 27900
mmap(NULL, 8720384, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f527985b000
mprotect(0x7f527985b000, 4096, PROT_NONE) = 0
clone(child_stack=0x7f527a0aafb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f527a0ab9d0, tls=0x7f527a0ab700, child_tidptr=0x7f527a0ab9d0) = 27901
mmap(NULL, 8720384, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f527900a000
mprotect(0x7f527900a000, 4096, PROT_NONE) = 0
clone(child_stack=0x7f5279859fb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f527985a9d0, tls=0x7f527985a700, child_tidptr=0x7f527985a9d0) = 27902
futex(0x15ed120, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x15ed144, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x15ed140, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x15ed180, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_ctl(5, EPOLL_CTL_ADD, 6, {EPOLLIN, {u32=6, u64=6}}) = 0
epoll_ctl(5, EPOLL_CTL_ADD, 8, {EPOLLIN, {u32=8, u64=8}}) = 0
epoll_wait(5, {{EPOLLIN, {u32=8, u64=8}}}, 1024, -1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x15ed144, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x15ed140, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x15ed180, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_wait(5, {{EPOLLIN, {u32=8, u64=8}}}, 1024, -1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x15ed144, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x15ed140, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x15ed180, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_wait(5, {{EPOLLIN, {u32=8, u64=8}}}, 1024, -1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x15ed144, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x15ed140, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x15ed180, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_wait(5, {{EPOLLIN, {u32=8, u64=8}}}, 1024, -1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x15ed144, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x15ed140, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x15ed180, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_wait(5, {{EPOLLIN, {u32=8, u64=8}}}, 1024, -1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
chdir("/tmp/hello-sailor")              = 0
getcwd("/tmp/hello-sailor", 4096)       = 18
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/build", 0x7ffcd87aa9c0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/build.js", {st_mode=S_IFREG|0664, st_size=912, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/build.js", {st_mode=S_IFREG|0664, st_size=912, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/build.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=912, ...}) = 0
read(11, "var exec = require(\"./exec\");\nva"..., 912) = 912
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/exec", 0x7ffcd87aa6d0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/exec.js", {st_mode=S_IFREG|0664, st_size=1592, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/exec.js", {st_mode=S_IFREG|0664, st_size=1592, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/exec.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1592, ...}) = 0
read(11, "var files = require(\"./files\");\n"..., 1592) = 1592
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/files", 0x7ffcd87aa3d0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/files.js", {st_mode=S_IFREG|0664, st_size=708, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/files.js", {st_mode=S_IFREG|0664, st_size=708, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/files.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=708, ...}) = 0
read(11, "var glob = require(\"glob\");\n\nfun"..., 708) = 708
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob.js", 0x7ffcd87aa070) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob.json", 0x7ffcd87aa070) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob.node", 0x7ffcd87aa070) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/package.json", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1784, ...}) = 0
read(11, "{\n  \"author\": {\n    \"name\": \"Isa"..., 1784) = 1784
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/glob.js", {st_mode=S_IFREG|0664, st_size=18343, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/glob.js", {st_mode=S_IFREG|0664, st_size=18343, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/glob.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=18343, ...}) = 0
read(11, "// Approach:\n//\n// 1. Get the mi"..., 18343) = 18343
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch.js", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch.json", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch.node", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/package.json", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1578, ...}) = 0
read(11, "{\n  \"author\": {\n    \"name\": \"Isa"..., 1578) = 1578
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/minimatch.js", {st_mode=S_IFREG|0664, st_size=23562, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/minimatch.js", {st_mode=S_IFREG|0664, st_size=23562, ...}) = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/minimatch.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
fstat(11, {st_mode=S_IFREG|0664, st_size=23562, ...}) = 0
read(11, "module.exports = minimatch\nminim"..., 23562) = 23562
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion.js", 0x7ffcd87a9a20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion.json", 0x7ffcd87a9a20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion.node", 0x7ffcd87a9a20) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1962, ...}) = 0
read(11, "{\n  \"name\": \"brace-expansion\",\n "..., 1962) = 1962
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js", {st_mode=S_IFREG|0664, st_size=4335, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js", {st_mode=S_IFREG|0664, st_size=4335, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=4335, ...}) = 0
read(11, "var concatMap = require('concat-"..., 4335) = 4335
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map.js", 0x7ffcd87a9720) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map.json", 0x7ffcd87a9720) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map.node", 0x7ffcd87a9720) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1677, ...}) = 0
read(11, "{\n  \"name\": \"concat-map\",\n  \"des"..., 1677) = 1677
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js", {st_mode=S_IFREG|0664, st_size=345, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js", {st_mode=S_IFREG|0664, st_size=345, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=345, ...}) = 0
read(11, "module.exports = function (xs, f"..., 345) = 345
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match.js", 0x7ffcd87a9720) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match.json", 0x7ffcd87a9720) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match.node", 0x7ffcd87a9720) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1859, ...}) = 0
read(11, "{\n  \"name\": \"balanced-match\",\n  "..., 1859) = 1859
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js", {st_mode=S_IFREG|0664, st_size=902, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js", {st_mode=S_IFREG|0664, st_size=902, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=902, ...}) = 0
read(11, "module.exports = balanced;\nfunct"..., 902) = 902
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inherits", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inherits.js", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inherits.json", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inherits.node", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inherits/package.json", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1235, ...}) = 0
read(11, "{\n  \"name\": \"inherits\",\n  \"descr"..., 1235) = 1235
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inherits/inherits.js", {st_mode=S_IFREG|0664, st_size=42, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inherits", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inherits/inherits.js", {st_mode=S_IFREG|0664, st_size=42, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inherits/inherits.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=42, ...}) = 0
read(11, "module.exports = require('util')"..., 42) = 42
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/sync.js", {st_mode=S_IFREG|0664, st_size=11365, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/sync.js", {st_mode=S_IFREG|0664, st_size=11365, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/sync.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=11365, ...}) = 0
read(11, "module.exports = globSync\nglobSy"..., 11365) = 11365
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/glob.js", {st_mode=S_IFREG|0664, st_size=18343, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/common.js", {st_mode=S_IFREG|0664, st_size=5901, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/common.js", {st_mode=S_IFREG|0664, st_size=5901, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/common.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=5901, ...}) = 0
read(11, "exports.alphasort = alphasort\nex"..., 5901) = 5901
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight.js", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight.json", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight.node", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/package.json", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1493, ...}) = 0
read(11, "{\n  \"name\": \"inflight\",\n  \"versi"..., 1493) = 1493
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/inflight.js", {st_mode=S_IFREG|0664, st_size=897, ...}) = 0
mmap(0x331dba5e3000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x331dba5e3000
mmap(0x3314ed622000, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x3314ed622000
munmap(0x3314ed622000, 909312)          = 0
munmap(0x3314ed800000, 139264)          = 0
mmap(0x3314ed700000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3314ed700000
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/inflight.js", {st_mode=S_IFREG|0664, st_size=897, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/inflight.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=897, ...}) = 0
read(11, "var wrappy = require('wrappy')\nv"..., 897) = 897
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/wrappy", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/wrappy.js", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/wrappy.json", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/wrappy.node", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x1981390, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x1981390, FUTEX_WAKE_PRIVATE, 1) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1256, ...}) = 0
read(11, "{\n  \"name\": \"wrappy\",\n  \"version"..., 1256) = 1256
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js", {st_mode=S_IFREG|0664, st_size=905, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/wrappy", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js", {st_mode=S_IFREG|0664, st_size=905, ...}) = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=905, ...}) = 0
read(11, "// Returns a wrapper function th"..., 905) = 905
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/once", 0x7ffcd87a9aa0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/once.js", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/once.json", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/once.node", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/once/package.json", O_RDONLY) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/once/index.js", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/once/index.json", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/inflight/node_modules/once/index.node", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once.js", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once.json", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once.node", 0x7ffcd87a9a50) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/package.json", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1349, ...}) = 0
read(11, "{\n  \"name\": \"once\",\n  \"version\":"..., 1349) = 1349
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/once.js", {st_mode=S_IFREG|0664, st_size=417, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/once.js", {st_mode=S_IFREG|0664, st_size=417, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/once.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=417, ...}) = 0
read(11, "var wrappy = require('wrappy')\nm"..., 417) = 417
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/node_modules/wrappy", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/node_modules/wrappy.js", 0x7ffcd87a9750) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/node_modules/wrappy.json", 0x7ffcd87a9750) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/node_modules/wrappy.node", 0x7ffcd87a9750) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/node_modules/wrappy/package.json", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=1256, ...}) = 0
read(11, "{\n  \"name\": \"wrappy\",\n  \"version"..., 1256) = 1256
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js", {st_mode=S_IFREG|0664, st_size=905, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/node_modules", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/node_modules/wrappy", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js", {st_mode=S_IFREG|0664, st_size=905, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=905, ...}) = 0
read(11, "// Returns a wrapper function th"..., 905) = 905
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once.js", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once.json", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once.node", 0x7ffcd87a9d50) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/glob/node_modules/once/once.js", {st_mode=S_IFREG|0664, st_size=417, ...}) = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/q", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/q.js", 0x7ffcd87aa380) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/q.json", 0x7ffcd87aa380) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/q.node", 0x7ffcd87aa380) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/q/package.json", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=2784, ...}) = 0
read(11, "{\n  \"name\": \"q\",\n  \"version\": \"1"..., 2784) = 2784
close(11)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/q/q.js", {st_mode=S_IFREG|0664, st_size=62792, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/q", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/q/q.js", {st_mode=S_IFREG|0664, st_size=62792, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/q/q.js", O_RDONLY) = 11
ioctl(11, FIOCLEX)                      = 0
fstat(11, {st_mode=S_IFREG|0664, st_size=62792, ...}) = 0
read(11, "// vim:ts=4:sts=4:sw=4:\n/*!\n *\n "..., 62792) = 62792
close(11)                               = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
getcwd("/tmp/hello-sailor", 4096)       = 18
write(10, "\33[32m", 5)                 = 5
mmap(0x1d806ea00000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1d806ea00000
mprotect(0x1d806ea05000, 4096, PROT_NONE) = 0
mmap(0x1d806ea06000, 1019904, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1d806ea06000
mprotect(0x1d806eaff000, 4096, PROT_NONE) = 0
write(10, "\33[1m", 4)                  = 4
write(10, "*", 1*)                       = 1
write(10, "\33[0m", 4)                  = 4
write(10, " ", 1 )                       = 1
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon -echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon -echo ...}) = 0
open("/dev/tty", O_RDWR|O_CLOEXEC)      = 11
dup3(11, 1, O_CLOEXEC)                  = 1
ioctl(11, FIONBIO, [1])                 = 0
ioctl(11, TIOCGWINSZ, {ws_row=0, ws_col=0, ws_xpixel=0, ws_ypixel=0}) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
read(3, "*", 1)                         = 1
rt_sigaction(SIGWINCH, {0xe12810, ~[RTMIN RT_1], SA_RESTORER, 0x7f527bd79d10}, NULL, 8) = 0
write(4, "*", 1)                        = 1
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
write(10, "Building project in /tmp/hello-s"..., 38Building project in /tmp/hello-sailor
) = 38
getcwd("/tmp/hello-sailor", 4096)       = 18
futex(0x15ed144, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x15ed140, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x15ed180, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_wait(5, {{EPOLLIN, {u32=8, u64=8}}}, 1024, 0) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
futex(0x15ed144, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x15ed140, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x15ed180, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_wait(5, {{EPOLLIN, {u32=8, u64=8}}}, 1024, -1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
getcwd("/tmp/hello-sailor", 4096)       = 18
futex(0x15ed144, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x15ed140, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x15ed180, FUTEX_WAKE_PRIVATE, 1) = 1
epoll_wait(5, {{EPOLLIN, {u32=8, u64=8}}}, 1024, -1) = 1
read(8, "\1\0\0\0\0\0\0\0", 1024)       = 8
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon -echo ...}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon -echo ...}) = 0
open("/dev/tty", O_RDWR|O_CLOEXEC)      = 12
dup3(12, 0, O_CLOEXEC)                  = 0
ioctl(12, FIONBIO, [1])                 = 0
socketpair(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0, [13, 14]) = 0
pipe2([15, 16], O_CLOEXEC)              = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
read(3, "*", 1)                         = 1
rt_sigaction(SIGCHLD, {0xe12810, ~[RTMIN RT_1], SA_RESTORER, 0x7f527bd79d10}, NULL, 8) = 0
write(4, "*", 1)                        = 1
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f527cdada10) = 27903
close(16)                               = 0
read(15, "", 4)                         = 0
close(15)                               = 0
close(14)                               = 0
ioctl(13, FIONBIO, [1])                 = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream.js", 0x7ffcd87aa430) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream.json", 0x7ffcd87aa430) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream.node", 0x7ffcd87aa430) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/package.json", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=1986, ...}) = 0
read(14, "{\n  \"name\": \"concat-stream\",\n  \""..., 1986) = 1986
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/index.js", {st_mode=S_IFREG|0664, st_size=3580, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/index.js", {st_mode=S_IFREG|0664, st_size=3580, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/index.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=3580, ...}) = 0
read(14, "var Writable = require('readable"..., 3580) = 3580
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream.js", 0x7ffcd87aa130) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream.json", 0x7ffcd87aa130) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream.node", 0x7ffcd87aa130) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/package.json", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=1954, ...}) = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
read(14, "{\n  \"name\": \"readable-stream\",\n "..., 1954) = 1954
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/readable.js", {st_mode=S_IFREG|0664, st_size=521, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/readable.js", {st_mode=S_IFREG|0664, st_size=521, ...}) = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/readable.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=521, ...}) = 0
read(14, "var Stream = (function (){\n  try"..., 521) = 521
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js", {st_mode=S_IFREG|0664, st_size=25350, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js", {st_mode=S_IFREG|0664, st_size=25350, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=25350, ...}) = 0
read(14, "'use strict';\n\nmodule.exports = "..., 25350) = 25350
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/process-nextick-args", 0x7ffcd87a9b90) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/process-nextick-args.js", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/process-nextick-args.json", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/process-nextick-args.node", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/process-nextick-args/package.json", O_RDONLY) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/process-nextick-args/index.js", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/process-nextick-args/index.json", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/process-nextick-args/index.node", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args.js", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args.json", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args.node", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/package.json", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=1297, ...}) = 0
read(14, "{\n  \"name\": \"process-nextick-arg"..., 1297) = 1297
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/index.js", {st_mode=S_IFREG|0664, st_size=268, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/index.js", {st_mode=S_IFREG|0664, st_size=268, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/process-nextick-args/index.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=268, ...}) = 0
read(14, "'use strict';\nmodule.exports = n"..., 268) = 268
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/isarray", 0x7ffcd87a9b90) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/isarray.js", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/isarray.json", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/isarray.node", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
mmap(0x331dba5eb000, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x331dba5eb000
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/isarray/package.json", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/isarray/index.js", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/isarray/index.json", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/isarray/index.node", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray.js", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray.json", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray.node", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/package.json", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=1288, ...}) = 0
read(14, "{\n  \"name\": \"isarray\",\n  \"descri"..., 1288) = 1288
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/index.js", {st_mode=S_IFREG|0664, st_size=120, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/index.js", {st_mode=S_IFREG|0664, st_size=120, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/isarray/index.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=120, ...}) = 0
read(14, "module.exports = Array.isArray |"..., 120) = 120
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/core-util-is", 0x7ffcd87a9b90) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/core-util-is.js", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/core-util-is.json", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/core-util-is.node", 0x7ffcd87a9b40) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/core-util-is/package.json", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/core-util-is/index.js", 0x7ffcd87a9b30) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/core-util-is/index.json", 0x7ffcd87a9b30) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/core-util-is/index.node", 0x7ffcd87a9b30) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is.js", 0x7ffcd87a9b30) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is.json", 0x7ffcd87a9b30) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is.node", 0x7ffcd87a9b30) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/package.json", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=1350, ...}) = 0
read(14, "{\n  \"name\": \"core-util-is\",\n  \"v"..., 1350) = 1350
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/lib/util.js", {st_mode=S_IFREG|0664, st_size=3040, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/lib", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/lib/util.js", {st_mode=S_IFREG|0664, st_size=3040, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/core-util-is/lib/util.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=3040, ...}) = 0
read(14, "// Copyright Joyent, Inc. and ot"..., 3040) = 3040
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/inherits", 0x7ffcd87a9b80) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/inherits.js", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/inherits.json", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/inherits.node", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/inherits/package.json", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/inherits/index.js", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/inherits/index.json", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/inherits/index.node", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/inherits", 0x7ffcd87a9b80) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/inherits.js", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/inherits.json", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/inherits.node", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/inherits/package.json", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/inherits/index.js", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/inherits/index.json", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/inherits/index.node", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits.js", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits.json", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits.node", 0x7ffcd87a9b20) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits/package.json", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=1235, ...}) = 0
read(14, "{\n  \"name\": \"inherits\",\n  \"descr"..., 1235) = 1235
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits/inherits.js", {st_mode=S_IFREG|0664, st_size=42, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits/inherits.js", {st_mode=S_IFREG|0664, st_size=42, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits/inherits.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=42, ...}) = 0
read(14, "module.exports = require('util')"..., 42) = 42
close(14)                               = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js", {st_mode=S_IFREG|0664, st_size=13566, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js", {st_mode=S_IFREG|0664, st_size=13566, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=13566, ...}) = 0
read(14, "// A bit simpler than readable s"..., 13566) = 13566
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/util-deprecate", 0x7ffcd87a9b00) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/util-deprecate.js", 0x7ffcd87a9ab0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/util-deprecate.json", 0x7ffcd87a9ab0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/util-deprecate.node", 0x7ffcd87a9ab0) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/util-deprecate/package.json", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/util-deprecate/index.js", 0x7ffcd87a9ab0) = -1 ENOENT (No such file or directory)
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/util-deprecate/index.json", 0x7ffcd87a9ab0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/node_modules/util-deprecate/index.node", 0x7ffcd87a9ab0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate.js", 0x7ffcd87a9ab0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate.json", 0x7ffcd87a9ab0) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate.node", 0x7ffcd87a9ab0) = -1 ENOENT (No such file or directory)
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate/package.json", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=1459, ...}) = 0
read(14, "{\n  \"name\": \"util-deprecate\",\n  "..., 1459) = 1459
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate/node.js", {st_mode=S_IFREG|0664, st_size=123, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate/node.js", {st_mode=S_IFREG|0664, st_size=123, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/node_modules/util-deprecate/node.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=123, ...}) = 0
read(14, "\n/**\n * For Node.js, simply re-e"..., 123) = 123
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js", {st_mode=S_IFREG|0664, st_size=1868, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js", {st_mode=S_IFREG|0664, st_size=1868, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=1868, ...}) = 0
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
read(14, "// a duplex stream is just a str"..., 1868) = 1868
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable", 0x7ffcd87a9b60) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_readable.js", {st_mode=S_IFREG|0664, st_size=25350, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable", 0x7ffcd87a9b60) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_writable.js", {st_mode=S_IFREG|0664, st_size=13566, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js", {st_mode=S_IFREG|0664, st_size=6413, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js", {st_mode=S_IFREG|0664, st_size=6413, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=6413, ...}) = 0
read(14, "// a transform stream is a reada"..., 6413) = 6413
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex", 0x7ffcd87a9b80) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_duplex.js", {st_mode=S_IFREG|0664, st_size=1868, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js", {st_mode=S_IFREG|0664, st_size=608, ...}) = 0
lstat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js", {st_mode=S_IFREG|0664, st_size=608, ...}) = 0
open("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_passthrough.js", O_RDONLY) = 14
ioctl(14, FIOCLEX)                      = 0
fstat(14, {st_mode=S_IFREG|0664, st_size=608, ...}) = 0
read(14, "// a passthrough stream.\n// basi"..., 608) = 608
close(14)                               = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform", 0x7ffcd87a9b80) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/readable-stream/lib/_stream_transform.js", {st_mode=S_IFREG|0664, st_size=6413, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits.js", 0x7ffcd87aa120) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits.json", 0x7ffcd87aa120) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits.node", 0x7ffcd87aa120) = -1 ENOENT (No such file or directory)
stat("/home/cody/.nvm/versions/node/v0.12.5/lib/node_modules/pulp/node_modules/concat-stream/node_modules/inherits/inherits.js", {st_mode=S_IFREG|0664, st_size=42, ...}) = 0
epoll_ctl(5, EPOLL_CTL_ADD, 13, {EPOLLIN, {u32=13, u64=13}}) = 0
epoll_wait(5, {{EPOLLIN, {u32=13, u64=13}}}, 1024, -1) = 1
read(13, "Reading ./output/Prelude/externs"..., 65536) = 354
futex(0x19c34c8, FUTEX_WAKE_PRIVATE, 1) = 1
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=27903, si_status=0, si_utime=14, si_stime=0} ---
read(3, "*", 1)                         = 1
write(7, "\210\324^\1\0\0\0\0\21\0\0\0\0\0\0\0", 16) = 16
write(4, "*", 1)                        = 1
rt_sigreturn()                          = 0
epoll_wait(5, {{EPOLLIN|EPOLLHUP, {u32=13, u64=13}}, {EPOLLIN, {u32=6, u64=6}}}, 1024, -1) = 2
read(13, "", 65536)                     = 0
epoll_ctl(5, EPOLL_CTL_DEL, 13, {0, {u32=0, u64=0}}) = 0
close(13)                               = 0
read(6, "\210\324^\1\0\0\0\0\21\0\0\0\0\0\0\0", 512) = 16
wait4(27903, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG, NULL) = 27903
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
read(3, "*", 1)                         = 1
rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTORER, 0x7f527bd79d10}, NULL, 8) = 0
write(4, "*", 1)                        = 1
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
write(10, "\33[32m", 5)                 = 5
write(10, "\33[1m", 4)                  = 4
write(10, "*", 1*)                       = 1
write(10, "\33[0m", 4)                  = 4
write(10, " ", 1 )                       = 1
write(10, "Build successful.\n", 18Build successful.
)    = 18
futex(0x15ed144, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x15ed140, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0x15ed180, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7f527985a9d0, FUTEX_WAIT, 27902, NULL) = -1 EAGAIN (Resource temporarily unavailable)
exit_group(0)                           = ?
+++ exited with 0 +++

I see a few ENOENT's, do you know if these are problems?

Warning on build: No files found using pattern: src/**/*.js

Just created my first pulp project and ran pulp build

~/repos/purescript-projs/tryit 
10:58 $ pulp build
* Building project in /Users/kristianmandrup/repos/purescript-projs/tryit
psc: No files found using pattern: src/**/*.js
* Build successful.

Same issue running test:

$ pulp test
* Building project in /Users/kristianmandrup/repos/purescript-projs/tryit
psc: No files found using pattern: src/**/*.js
psc: No files found using pattern: test/**/*.js
* Build successful. Running tests...
You should add some tests.
* Tests OK.

It works just fine, just curious about the message: No files found using pattern: src/**/*.js
Feels like a warning to me?

PS: How do I use the psc-ide? It contains a server as well? https://github.com/kRITZCREEK/psc-ide
I need stack, cabal, ... Don't know the Haskell environment.

For now I'm using the Atom plugin.

Thanks :)

Killed `psc` results in "Build successful"

If psc is killed (for example with pkill -9 psc) while pulp build runs, pulp happily reports "Build successful".

I didn't check what happens in case of OOM, but you might want to make sure that it fails pulp. It would be very confusing and hard to debug if you get "Build successful" when the compiler runs out of memory.

Module to install psc binaries

Regarding issue purescript/purescript#749, in your comment where you mention:

basically, npm install purescript needs to be possible

I am wondering if you might entertain a PR for pulp that pulls the binary releases of purescript and installs them locally. This could potentially provide an alternative for npm install purescript.

I whipped up psc-release (albeit rough at the moment) that will install the psc binaries to node_modules/.bin for a project. Do you think this could be useful to leverage in pupl's install command?

Perhaps pulp could detect if psc was installed globally, and if not, use the psc-release library to fetch the bins. Or it could maintain a local version of psc even if there is a global one installed.

I admit I've just started thinking about this, so perhaps psc-release is not a good fit or worth taking further, but I thought I would open a dialog.

Cheers.

--verbose option?

It might be nice to allow a --verbose option to the 'build' command, and potentially some others too, which prints all the commands executed.

Cannot build projects with bower dependencies an example Main

Just ran into this - the issue is that purescript-events has an examples/ subdirectory which contains a Main module. So the pulp build command ends up pulling in two Mains, causing the failure.

 cschneid  ⋯  Projects  Purescript  pulptest  pulp build
* Building project in /Users/cschneid/Dropbox/Projects/Purescript/pulptest
* Build successful.

 cschneid  ⋯  Projects  Purescript  pulptest  bower install purescript-events
bower purescript-events#*       cached git://github.com/CapillarySoftware/purescript-events.git#0.0.3
bower purescript-events#*     validate 0.0.3 against git://github.com/CapillarySoftware/purescript-events.git#*
bower purescript-events#*       cached git://github.com/CapillarySoftware/purescript-events.git#0.0.3
bower purescript-events#*     validate 0.0.3 against git://github.com/CapillarySoftware/purescript-events.git#*
bower purescript-reactive#* not-cached git://github.com/purescript/purescript-reactive.git#*
bower purescript-reactive#*    resolve git://github.com/purescript/purescript-reactive.git#*
bower purescript-reactive#*   checkout master
bower purescript-reactive#*     invalid-meta purescript-reactive is missing "main" entry in bower.json
bower purescript-reactive#*         resolved git://github.com/purescript/purescript-reactive.git#de96537c89
bower purescript-events#*            install purescript-events#0.0.3
bower purescript-reactive#*          install purescript-reactive#de96537c89

purescript-events#0.0.3 bower_components/purescript-events
├── purescript-easy-ffi#1.0.1
└── purescript-reactive#de96537c89

purescript-reactive#de96537c89 bower_components/purescript-reactive
├── purescript-monoid#0.1.4
└── purescript-refs#0.1.1

 cschneid  ⋯  Projects  Purescript  pulptest  pulp build
* Building project in /Users/cschneid/Dropbox/Projects/Purescript/pulptest
Reading ./output/Prelude/externs.purs
Reading ./output/Prelude.Unsafe/externs.purs
Reading ./output/Data.Function/externs.purs
Reading ./output/Data.Foreign.EasyFFI/externs.purs
Reading ./output/Data.Eq/externs.purs
Reading ./output/Control.Monad.Eff/externs.purs
Reading ./output/Control.Monad.Eff.Ref/externs.purs
Reading ./output/Control.Monad.Eff.Ref.Unsafe/externs.purs
Reading ./output/Control.Monad.Eff.Unsafe/externs.purs
Reading ./output/Control.Monad.ST/externs.purs
Reading ./output/Debug.Trace/externs.purs
Reading ./output/Main/externs.purs
Reading ./output/Control.Monad/externs.purs
Reading ./output/Control.Lazy/externs.purs
Reading ./output/Control.Extend/externs.purs
Reading ./output/Control.Comonad/externs.purs
Reading ./output/Control.Bind/externs.purs
Reading ./output/Control.Apply/externs.purs
Reading ./output/Control.Alt/externs.purs
Reading ./output/Control.Plus/externs.purs
Reading ./output/Control.Alternative/externs.purs
Reading ./output/Control.MonadPlus/externs.purs
Reading ./output/Data.Maybe/externs.purs
Reading ./output/Data.Array/externs.purs
Reading ./output/Data.Maybe.Unsafe/externs.purs
Reading ./output/Data.Array.Unsafe/externs.purs
Reading ./output/Data.Monoid/externs.purs
Reading ./output/Data.Monoid.All/externs.purs
Reading ./output/Data.Monoid.Any/externs.purs
Reading ./output/Data.Monoid.Dual/externs.purs
Reading ./output/Data.Monoid.Endo/externs.purs
Reading ./output/Data.Monoid.Product/externs.purs
Reading ./output/Data.Monoid.Sum/externs.purs
Reading ./output/Data.Monoid.First/externs.purs
Reading ./output/Data.Monoid.Last/externs.purs
Module 'Main' has been defined more than once
* ERROR: Subcommand terminated with error code 1

 cschneid  ⋯  Projects  Purescript  pulptest  grep -ri "Main" bower_components                                 1 
bower_components/purescript-easy-ffi/.bower.json:  "main": "src/EasyFFI.purs",
bower_components/purescript-easy-ffi/bower.json:  "main": "src/EasyFFI.purs",
bower_components/purescript-events/.bower.json:  "main": "src/Control/Reactive/Event.purs",
bower_components/purescript-events/bower.json:  "main": "src/Control/Reactive/Event.purs",
bower_components/purescript-reactive/examples/Test.purs:module Main where
bower_components/purescript-reactive/examples/Test.purs:main = do
bower_components/purescript-reactive/Makefile:    --main --module Main --tco --magic-do

pulp psci hangs on Windows

Running pulp psci on windows, in the Git Bash shell, causes pulp to hang indefinitely, never starting psci:

$ pulp psci

psci is in my path at /c/ProgramData/chocolatey/bin/psci, and running psci works fine.

Bower not found, maybe because i already installed it locally?

 purescript $ pulp init
* Generating project skeleton in /Users/francesco/experiments/purescript
* ERROR: `/Users/francesco/node_modules/pulp/node_modules/.bin/bower` executable not found.

I experience the error above. Could it be that bower was not installed under pulp because i already have it installed globally?

Stop expanding globs

As of 0.7.0, psc (and the rest of the command line tools) will now interpret file globs for files which get passed on the command line. See purescript/purescript#1152

This was added because there is a limit on command line length on windows, and if you try to compile slamdata on windows, you reach that limit. Presumably pulp will now fail to compile projects on Windows with enough files in them, too (although I haven't tested this). So perhaps pulp should stop expanding globs?

/cc @garyb

pulp build much slower than psc

psc "bower_components/purescript-/src/__/.purs" "src//*.purs" --ffi "src//.js" --ffi "bower_components/purescript-/src/*/.js"
~2 second
pulp build
~10 seconds
I noticed the difference when I added bunch of dependencies
"purescript-functions": "~0.1.0",
"purescript-control": "~0.3.0",
"purescript-foldable-traversable": "~0.4.0",
"purescript-exceptions": "~0.3.0",
"purescript-transformers": "~0.6.1"

0.7 FFI interaction with non-purescript bower dependencies

Maybe I am just being paranoid, but it seems like 65c3c6b#diff-f9ab28ae135f8c6a15981c24670cc941R9 might be too ambiguous of a convention. I can imagine that other bower dependencies that rely on other compilers might have components that match that pattern, and those files would inadvertently get copied/baked into psc output with strange hard to debug results.

Supposing that it actually is a problem, I propose that the convention needs to change to something like bower_components/*/src/**/*.purs.js

Broswerify optimization doesn't work

The browserify command works for me, using either the defaults or the --to option. However, if I include the -O or --optimise option, I get the following error:

* Browserifying project in /home/dan/Code/purescript-puzzler
* Compiling...
psc: Main: openBinaryFile: does not exist (No such file or directory)
* ERROR: Subcommand terminated with error code 1

I am using pulp 2.0.0.

building libraries with pulp

I wrote some purescript that I'd like to compile into a javascript library. However, I believe pulp build -O currently requires Main.main to be defined.

I suggest we write up docs for the -O option (I had to ask about this in #purescript) and extend its functionality to include "library builds" and maybe something similar to the .cabal file exposed-modules field. Is there a clean way to selectively expose modules currently? I'm thinking no, given the current .js output format. Thoughts?

Question: Browserify and library

Hi,

I've been using the pulp browserify to build my project. I've been using dummy data for a main, but in reality, my project's entry point is a single function that takes a configuration. Is there any way to get the DCE and bundling functionality of browserify here with the ability to specify a your library entry points rather than just main? It makes sense that I should need to specify the API surface area or DCE can't do its job, but I need the user in jsland to build a config and pass it in rather than the code running as soon as it is loaded with no input. Any suggestions?

Warnings are hidden

Pulp currently does not display any warnings that psc raises. This is probably because psc used to be rather verbose in its output, so the output was hidden except in the case of errors. I think it should be fine to pipe the output regardless now, as unless the -v flag is used psc doesn't print messages about reading/writing files, etc.

Running browser tests

I'm wondering if there's a best practice we could build into pulp test that runs tests in a browser environment instead of just injecting it into node. I've got some DOM manipulation code I want to test and of course that stuff isn't available in node out of the box.

One way could be to still do it in node and use something like:

https://github.com/tmpvar/jsdom

You'd probably need your main function to specify any dependencies as you can see in the examples, and then it could execute the test suite inside of a jsdom.env. The other approach is to write a test runner and actually open a headless webkit with phantomjs or something and get your tests that way.

Would love to know your thoughts on this.

test + browserify

I'm working on support for running tests in the browser using https://github.com/owickstrom/purescript-spec, first off will be Karma I think. I'll just call mocha's describe, it, etc and let Karma do the heavy lifting, so nothing fancy.

It would be very nice if pulp could do what it does in pulp browserify but for the tests/Main.purs file, i.e. create a browserify bundle for the test suite. Should I create a pull request (when I get the time)? I'm thinking something like pulp browserify --test.

By the way, I think pulp is a great tool for purescript, keep up the good work!

bower not located in Windows

Binaries generated for Node on windows have the cmd extension, but pulp only searches for the binaries with no extension. A solution could be to use the programmatic API instead of the binary.

Cannot install for python version

I went to try and install this but ran into a python version error:

➜  ~  _ npm i -g pulp
[sudo] password for joneshf: 

> [email protected] install /usr/lib/node_modules/pulp/node_modules/gaze
> node-gyp rebuild

gyp ERR! configure error 
gyp ERR! stack Error: Python executable "python" is v3.4.1, which is not supported by gyp.
gyp ERR! stack You can pass the --python switch to point to Python >= v2.5.0 & < 3.0.0.
gyp ERR! stack     at failPythonVersion (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:108:14)
gyp ERR! stack     at /usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:97:9
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:646:7)
gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
gyp ERR! stack     at maybeClose (child_process.js:756:16)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:823:5)
gyp ERR! System Linux 3.16.3-1-ARCH
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/lib/node_modules/pulp/node_modules/gaze
gyp ERR! node -v v0.10.32
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok 
npm ERR! Linux 3.16.3-1-ARCH
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "i" "-g" "pulp"
npm ERR! node v0.10.32
npm ERR! npm  v2.1.0
npm ERR! code ELIFECYCLE

npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the gaze package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls gaze
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/joneshf/npm-debug.log

Looks like this is known: shama/gaze#102 and apparently versions before 0.6.x don't have this problem.

Can the version go down a minor? Or can a different watch tool be used?

"pulp release"

It would be nice to be able to release a new version of a package with minimum fuss.

After our IRC discussion (http://ircbrowse.net/browse/purescript?events_page=3976 and the following two pages) I think the design currently looks a bit like:

  • Run psc-publish --dry-run, and exit 1 if it fails (the --dry-run option is not implemented yet, but will be soon)
  • Run bower version to bump the version in bower.json, commit, and tag. I think we can just pass all command line arguments supplied to pulp after the "release" argument straight through to bower version? so for example, pulp release patch -m "Release v%s"
  • git push && git push --tags
  • Run psc-publish for real to create data for Pursuit
  • Upload this data to Pursuit

One unresolved problem is how we authenticate to Pursuit. We could prompt for a GitHub username and password, use these to create a GitHub token using GitHub's HTTP API, and then save that into ~/.pulp/github-api-token or something, with mode 0600. We could also provide a way of supplying a token directly for people who don't want to enter their password.

Bower not able to fetch a branch dependency

I'm using purescript to build a UI for an app. I've been using pulp as a build tool as it really simplifies things nicely, but today when I tried to switch my purescript-react dependency to joneshf/purescript-react#simplify, running pulp install failed

* Installing dependencies...
bower not-cached    git://github.com/joneshf/purescript-react.git#simplify
bower resolve       git://github.com/joneshf/purescript-react.git#simplify
bower checkout      purescript-react#simplify
bower not-cached    git://github.com/purescript/purescript-either.git#~0.1.4
bower resolve       git://github.com/purescript/purescript-either.git#~0.1.4
bower not-cached    git://github.com/facebook/react-bower.git#~0.11.2
bower resolve       git://github.com/facebook/react-bower.git#~0.11.2
bower not-cached    git://github.com/purescript-contrib/purescript-react.git#*
bower resolve       git://github.com/purescript-contrib/purescript-react.git#*
bower not-cached    git://github.com/purescript/purescript-either.git#*
bower resolve       git://github.com/purescript/purescript-either.git#*
bower not-cached    git://github.com/facebook/react-bower.git#*
bower resolve       git://github.com/facebook/react-bower.git#*
bower download      https://github.com/purescript/purescript-either/archive/v0.1.4.tar.gz
bower download      https://github.com/purescript/purescript-either/archive/v0.1.4.tar.gz
bower download      https://github.com/purescript-contrib/purescript-react/archive/v0.0.5.tar.gz
bower download      https://github.com/facebook/react-bower/archive/v0.11.2.tar.gz
bower download      https://github.com/facebook/react-bower/archive/v0.12.1.tar.gz
bower invalid-meta  purescript-react is missing "main" entry in bower.json
bower resolved      git://github.com/joneshf/purescript-react.git#41f09d44b6
bower not-cached    git://github.com/joneshf/purescript-dom.git#~0.1.0
bower resolve       git://github.com/joneshf/purescript-dom.git#~0.1.0
bower extract       purescript-either#~0.1.4 archive.tar.gz
bower extract       purescript-either#* archive.tar.gz
bower invalid-meta  purescript-either is missing "main" entry in bower.json
bower invalid-meta  purescript-either is missing "main" entry in bower.json
bower resolved      git://github.com/purescript/purescript-either.git#0.1.4
bower download      https://github.com/joneshf/purescript-dom/archive/v0.1.1.tar.gz
bower resolved      git://github.com/purescript/purescript-either.git#0.1.4
bower extract       purescript-react#* archive.tar.gz
bower invalid-meta  purescript-react is missing "main" entry in bower.json
bower resolved      git://github.com/purescript-contrib/purescript-react.git#0.0.5
bower not-cached    git://github.com/purescript/purescript-control.git#~0.2.0
bower resolve       git://github.com/purescript/purescript-control.git#~0.2.0
bower download      https://github.com/purescript/purescript-control/archive/v0.2.1.tar.gz
bower extract       purescript-dom#~0.1.0 archive.tar.gz
bower mismatch      Version declared in the json (0.1.0) is different than the resolved one (0.1.1)
bower invalid-meta  purescript-dom is missing "main" entry in bower.json
bower invalid-meta  purescript-dom is missing "ignore" entry in bower.json
bower resolved      git://github.com/joneshf/purescript-dom.git#0.1.1
bower extract       purescript-control#~0.2.0 archive.tar.gz
bower invalid-meta  purescript-control is missing "main" entry in bower.json
bower resolved      git://github.com/purescript/purescript-control.git#0.2.1
bower extract       react#~0.11.2 archive.tar.gz
bower resolved      git://github.com/facebook/react-bower.git#0.11.2
bower extract       react#* archive.tar.gz
bower resolved      git://github.com/facebook/react-bower.git#0.12.1
* ERROR: Unable to find suitable version for purescript-react

Not sure why it is still getting purescript-react 0.0.5. I've cleared the bower cache and removed bower_components, to no avail. But, if I use bower directly, ./node_modules/pulp/node_modules/bower/bin/bower install, then everything gets installed properly.

Here's my full bower.json file.

{ "name": "hiberico"
, "version": "1.0.0"
, "private": true
, "ignore": 
    [ "**/.*"
    , "node_modules"
    , "bower_components"
    , "output"
    ]
, "dependencies": 
    { "purescript-either": "~0.1.4"
    , "purescript-react": "joneshf/purescript-react#simplify"
    , "react": "~0.11.2"
    }
}

Any help you can provide would be very appreciated.

Available commands are don't line up nicely

Available commands don't line up nicely:

  init  - Generate an example PureScript project
  dep   - Invoke Bower for package management
  build     - Build the project
  test  - Run project tests
  browserify    - Produce a deployable bundle using Browserify
  run   - Compile and run the project
  docs  - Generate project documentation
  psci  - Launch a PureScript REPL configured for the project

It seems that using \t for this wasn't a good choice.

Deleted/renamed modules are retained in output/ causing false positives

Output from pulp build/pulp run appears to be being inappropriately retained; changing module names (or removing modules entirely) and then pulp run-ing or build-ing the project still produces the same result, as if the rename/delete had never happened, until the module's output/ModuleNameHere/ cache files are manually removed.

To reproduce:

$ pulp init
$ pulp run
...
Hello sailor!

## Rename the module file and definition. Just running "rm src/Main.purs"
## produces the same result below.
$ mv src/Main.purs src/NotMain.purs
$ sed -i ''  -e 's/module Main/module NotMain/g' src/NotMain.purs

$ pulp run
...
Hello sailor!

$ rm -rf output/Main
$ pulp run
* Building project in /Users/damncabbage/example
* Build successful.
module.js:338
    throw err;
          ^
Error: Cannot find module 'Main'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/private/var/folders/dv/x_g...gn/T/pulp-run115...vo.js:1:63)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
* ERROR: Subcommand terminated with error code 1

(Pulp version 4.0.2, just installed from npm.)

`ver` is undefined in `pulp init`

$ pulp init
blah\npm\node_modules\pulp\validate.js:7
    ver = ver.trim();
             ^
TypeError: Cannot read property 'trim' of undefined
    at blah\npm\node_modules\pulp\validate.js:7:14
    at ChildProcess.<anonymous> (blah\npm\node_modules
\pulp\exec.js:31:7)
    at ChildProcess.emit (events.js:107:17)
    at Process.ChildProcess._handle.onexit (child_process.js:1072:12)
    at child_process.js:1144:20
    at process._tickCallback (node.js:355:11)
    at Function.Module.runMain (module.js:503:11)
    at startup (node.js:129:16)
    at node.js:814:3

$ psc --version
0.7.0.0

$ pulp --version
4.0.2

Enhanced color customization options

Thanks for making this great tool! It really makes the PS setup process painless. I'm a relatively new user, but I don't think I'm ever going back to grunt...

One thing I'd like to see is greater customization in color options beyond the --monochrome flag. I'm using the solarized shell color scheme, and the "green" asterisks for status messages show up as a gray slightly darker than the message text color, so the difference is minimal. I'd like to be able to customize the colors to work around this.

I think a reasonable solution to this would be one or more additional command line flags to define:

  1. The color of the asterisks used for normal log messages.
  2. The color of the asterisks used for error log messages.
  3. An option to enable forcing the text of the message to match the color of the leading asterisk. This would make the whole status message colored instead of just the leading asterisk.

I don't think it's necessary to have fine-grained control over what shade is used; being able to select from among a set of supported colors would be fine for me. I would just choose the ones that worked best for my environment.

A nice-to-have on top of those is to capture and colorize messages from underlying tasks, so build error and runtime error text is shown in e.g. red and not just * ERROR: Subcommand terminated with error code 8.

Essentially, when I see a long list of build tasks printing to the screen, followed by program/test output, followed by errors, liberal use of color helps me to more easily identify the messages that are most important to me. Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.