Giter Site home page Giter Site logo

lirmm / pid-workspace Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 7.0 17.53 MB

a build / publishing / deployment / packaging system for C/C++ based on CMake and git

License: Other

CMake 95.68% Shell 1.89% HTML 0.71% CSS 0.35% Makefile 0.19% Python 0.73% Cuda 0.02% Batchfile 0.07% C++ 0.15% SCSS 0.21%
cmake gitlab build-automation build-system package-management packaging c-plus-plus c fortran cuda git

pid-workspace's Introduction

Introduction

PID stands for Packages Integral Development. It is a development methodology used to standardize and automate the development process of C/C++ projects. The present repository contains the base implementation of PID, based on CMake APIs and commands.

This project defines a workspace where users put their C/C++ projects but also contains implemntation of commands and CMake APIs used to define projects. For a deeper understanding and start learning PID, you can refer to this website.

What is it useful for ?

The term "methodology" is supposed to cover all phases of code development process. The goal is to provide a packaging system where people can easily share and reuse the projects they work(ed) on, either under source or binary format. Indeed, in the context of my laboratory (LIRMM, Montpellier, France), and more precisely for robotic teams, we had no frame to develop and share our projects which lead to tremendously complex reuse of code.

The basic idea is to use a CMake API to describe all aspects of the project in the most precise and formal way: software they generate ; projects then depends on ; git branches they define; available versions released ; prebuild binaries already available online ; documentation or licensing aspects and so on. This way PID automates everything related to software project development in a kind of standard "way of doing".

PID is designed for solving most common (and sometimes difficult) problems we can face during C/C++ project development.

Key Features

  • Standardization of C/C++ projects
    • same basic structure, concepts, commands and options to manage the life cycle of projects.
    • CMake APIs for a clean description of projects.
    • based on git and Gitlab tools for lifecycle management and continuous integration.
  • Languages supported
    • C/C++, CUDA, Fortran and ASSEMBLER
    • Python (support of python bindings and python scripts).
  • Automation of package life cycle management: CMake generated commands to configure, build/test, release versions, publish online documentation, upload binary archives in repositories, deliver and deploy package on a computer.
  • Automatic resolution of dependencies and constraints
    • resolution of eligible versions of dependencies
    • check for target platform binary compatiblity
    • automatic deployment of required dependencies versions (from source repositories or binary archives).
  • Automation of Continuous Integration / Delivery process
    • generation of online documentation (static site, API, check tools reports)
    • management of online repositories for generated binary archives of package versions.
    • CI/CD process managed for concurrent platforms (only gitlab-CI for now).
  • Support for customization
    • change build environements and target binary platforms in use, manage cross-compilation (based on CMake features).
    • add new support for new development tools : specific support of an IDE ; dependencies management tools like pkg-config ; code generators like f2c, etc.
  • Cross platform implementation
    • PID should work on most of UNIX platforms. It has been tested on Ubuntu, Debian, Fedora, Arch Linux, FreeBSD, MACOS and Raspbian. Many UNIX systems have never or rarely been tested like SolarisOS, iOS as well as many Linux distributions (RedHat, Gentoo) and derivatives (Android). But these OS can be supported with little effort (PID being mostly cross-platform).
    • Support for Windows is still experimental.

Install

Please refer to PID framework website to get the complete install procedure.

Essential Dependencies

Installing the PID framework is a simple task, as soon as adequate dependencies are installed on your workstation:

  • CMake, version 3.8.2 or greater
  • git, version 1.7.6 or greater
  • git-lfs, version 2.6 or greater

Other dependencies may be required, but their need is not mandatory by default.

Basic install procedure

This procedure is the standard one and should be the preferred one for most of the users.

  • clone this repository somewhiere in your filesystem
cd /path/to/somewhere
git clone <pid-workspace repository>

Change <pid-workspace repository> by the address of this project in the hosting service (github, gitlab) you are currenlty using.

  • configure your local repository
cd pid-workspace
./pid configure

This step initializes the PID system, more precisely:

  • the current host platform you are using is automatically identified
  • official contributions are automatically configured so that you can use some default material already provided by pid.
  • configure the workspace repository to make it capable of upgrading CMake APIs.

Furthermore the pid script alert you to source a script so that you can easily use the pid command. You can now start using PID methdology. To test if everything works you can do:

pid deploy package=pid-rpath

This should end in the deployment of the last released version of a package named pid-rpath.

To get a manual of available commands:

pid man

Final steps

Now read the documentation of PID. You will find many resources explaining how to start using PID.

About the license

pid-workspace and PID base packages are licensed with the CeCILL-C open source license. A copy of the license is available in the file license.txt.

CeCILL-C is an open source software license equivalent to and compatible with GNU LGPL. The difference is that it is governed by French law and disagreements or disputes shall be referred to the Paris Courts having jurisdiction.

Contact

For any question, remark, proposal about PID, please contact authors using the issues of the project.

pid-workspace's People

Contributors

benjaminnavarro avatar defalur avatar gergondet avatar passama avatar prajval10 avatar robinpassama avatar silvanosky avatar yb27 avatar

Stargazers

 avatar  avatar  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.