Giter Site home page Giter Site logo

xpkg's Introduction

Xpkg

Authors:Joseph Lisee <[email protected]>
License:BSD (3-Clause)

A cross platform package manager for C & C++ development.

Example usage (still a work in progress):

> xpkg init ~/projects/my-project/env my-project

> xpkg jump my-project

> xpkg install yaml-cpp

> xpkg list
  yaml-cpp - 1.2.0

> xpkg info yaml-cpp
   name: yaml-cpp
   version: 1.2.0
   description: YAML parser for C++
   files:
     - lib/yaml-cpp.so
     - include/yaml-cpp/yaml.hpp

> xpkg remove yaml-cpp

> xpkg list

When you jump into an environment you paths are modified so that you can access the binaries and libraries installed there. All installed packages are contained within that environment.

Design

Concepts:

  • Environment: directory which supports your application
    • Properties of an environment: - name - packages - toolset - tree/repo?
    • contains a set of installed packages (managed by the install database)
    • structured like a linux/unix tree
    • you "jump" into the environment
    • tool can pick up on this with an environment variable
  • Install database:
    • Manages information about the packages in an environment
  • Package tree:
    • database of package descriptions
    • can contain multiple version of each description
    • initially will just be file tree
  • Package description:
    • lists files needed
    • instructions for building and configuring
    • later:
      • instructions for packaging
      • customization of build (ie: with or without python, )
      • patching instructions
  • Package repository: Pile of binary packages
  • Binary Package: bundle of files with metadata
    • either a zip or tar ball
    • metadata:
      • manifest of files
      • info on platform & toolset
      • raw package file
    • try to hold off on pre-post install scripts
  • Toolset: compiler, standard libraries, language revision
    • Will need a way to specify compatibility between toolsets
  • Platform: for us this is the binary format and expected kernel

xpkg's People

Contributors

jlisee avatar

Stargazers

Joel Van Eenwyk avatar Michael Schuett avatar Polikashin Denis avatar

Watchers

Luka Vandervelden avatar  avatar James Cloos avatar  avatar

Forkers

pombredanne

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.