Giter Club home page Giter Club logo

esy's Introduction

esy

Easy Sandboxes For Compiled Languages

Rough sketch start of implementation for PackageJsonForCompilers concept. (Here, the name is esy instead of pjc).

esy seeks to support an "eject" feature, which makes PackageJsonForCompilers easy to deploy/build on hosts that don't even have node installed - they would only need make. Just copy the entire sandbox over to the host and run the makefile.

The esy command (without anything following the esy word), prints the environment for one package, taking into account variables exported by dependencies. The final goal of the esy build command is to walk the entire dependency graph, running their build commands, and running each dependency's build command in an environment computed from the esy command, for that one package.

The environments computed by esy are with respect to (sandbox root, cur package), where the sandbox root is the top level package we're building everything for, and cur package is one of the transitive dependencies. Running esy in a directory is like printing the environment as if pwd was both the sandbox root and the "currently building package".

The esy build command would walk the tree with sandbox root = topmost package, and at each node set cur package = <THIS_DEPENDENCY>, and run the build command in an environment computed based on that combination.

We'd want to generate a makefile that encodes the graph of packages, and can build everything with maximum parallelism.

Test

Built In Commands

Command Meaning Implemented
esy Print the environment variables for current directory as sandbox root and cur root. Started
esy build Implements pjc build command from PackageJsonForCompilers proposal. Should generate Makefile No
esy any command here Executes any command here but in the sandbox that would be printed via esy No

Test

Run the test. The output shows the environment computed for a single package PackageA. Some errors are logged into the comments of the output.

cd tests/TestOne/PackageA
./test.sh

The output isn't actually verified yet. We should create many more similar tests, even if they don't work correctly yet.

Next

  • Populate all of the variables in pjc proposal.
  • Should generate a build for all packages in makefile form.
  • Implement "scope" concept as described in esy.js comments.
  • Take buildTimeOnlyDependencies in order to "cut off" scope of environment variables.
  • Automatically set up _build and _install directories, populate variables accordingly.

Origins

This is a fork of dependency-env which is more stable.

esy's People

Contributors

jordwalke avatar

Watchers

 avatar  avatar

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.