Git Product home page Git Product logo

subgine-pkg's Introduction

subgine-pkg

Join the chat at https://gitter.im/gracicot/subgine-pkg

The subgine package manager. A proof of concept package manager we used in our game engine named subgine.

Can resolve dependencies recursively. Does not attempt to solve the diamond problem for the moment.

Explanation of implementation in this blog post: I made a package manager using CMake

Here's an example sbg-manifest.json file:

{
  "installation-path": "subgine-pkg-modules",
  "dependencies": [
    {
      "name": "kangaru",
      "repository": "https://github.com/gracicot/kangaru.git",
      "options": "-DKANGARU_REVERSE_DESTRUCTION=On",
      "tag": "v4.2.0"
    },
    {
      "name": "cpplocate",
      "repository": "https://github.com/cginternals/cpplocate.git",
      "tag": "v2.1.0",
      "options": "-DOPTION_BUILD_TESTS=Off -DBUILD_SHARED_LIBS=Off",
      "ignore-version": true
    },
    {
      "name": "Catch2",
      "repository": "https://github.com/catchorg/Catch2.git",
      "branch": "master",
      "options": "-DCATCH_BUILD_TESTING=Off -DCATCH_INSTALL_DOCS=Off",
      "version": "v2.9.1"
    }
  ]
}

Try it using the user test sample.

subgine-pkg's People

Contributors

gracicot avatar gitter-badger avatar

Stargazers

Ben Vining avatar Paweł Bylica avatar  avatar Stanislav Ershov avatar

Watchers

James Cloos avatar  avatar  avatar

Forkers

gitter-badger

subgine-pkg's Issues

Forward more parameters to user and dependencies

In the package manager code, CMAKE_PREFIX_PATH and CMAKE_MODULE_PATH have a special treatment. They are forwarded to the project and are forwarded to users too.

However, there's also CMAKE_FRAMEWORK_PATH and CMAKE_APPBUNDLE_PATH that are useful on mac.

Then, we have <PackageName>_DIR that could also be forwarded, which is useful when we want to force a path for a dependency.

Truely support relative path in profile arguments

You can specify custom CMake arguments when building dependency using profiles, but relative path are not forwarded correctly as of right now.

There should be a whitelist of arguments that should be transformed into absolute path when passing down to dependencies.

Profile files are not updated when running install or update

Commands such as install or update should regenerate the generated profile code if the manifest has changed since last invocation.

The generated profile need some code to find files in each dependencies. Those dependencies are listed, hard coded in the generated file. If a user is adding a new dependency, that list is not updated.

We could regenerate the profile file, or generate a new file with only the set of dependency since last invokation. The latter is my preferred solution.

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.