Here is a list of frequently asked questions:

How to know what packages I can deploy into my workspace

Basically use the ìnfo command of the workspace.

  1. Search for available packages using the search argument.
  2. Get more detailed information about the package using the package argument.

For instance if you want to know if DLib is wrapped into PID:

pid info search="DLib"


[PID] INFO: packages matching expression "DLib":
- dlib: Wrapper for DLib project, a modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++ to solve real world problems.
   - categories: programming, programming/image, programming/log, programming/meta, programming/gui, programming/operating_system, programming/serialization, testing
   - project:
   - documentation:

You can use the web pages to grab more information.

Now use the package command to get more detailed information:

pid info package=dlib
DESCRIPTION: Wrapper for DLib project, a modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++ to solve real world problems.
OFFICIAL PROJECT AUTHORS: Davis King and DLib contributors

First you know that DLib is managed as an external project. You also have contact information to ask for question either about the external package wrapper (“PID PACKAGE CONTACT”) or original authors and license of the project. You also know what versions of DLib are available and if among those versions there are prebuilt binaries for them (here there is none).

What is the best way to create a new package

Anytime use the create command of the workspace. Follow these steps:

  1. create a repository online to host your package. Copy its SSH address.
  2. then into your local workspace launch the create command:
pid create package=my_super_package url=<SSH URL previously copied>
pid cd my_super_package

That’s it you can start working and your new package is properly initialized.

How to publish contributions to a contribution space I have no push rights to

This situation appear when you are the maintainer of a package that is published in an contribution space where you have no push rights. This is typically the case whenever you want to publish contributions into the official pid contribution space so we take it as example.

  • First you need to configure your workspace:
  1. Fork the contribution space repository you want to publish in, here the official pid contribution space: The fork is a repository you can push to.
  2. Copy the SSH address of the fork repository
  3. Configure the corresponding contribution space (here pid) in your local workspace:
pid cd
pid contributions cmd=churl space=pid publish=<SSH url>

This simply tells to use the fork instead of the officiel repository when you want to publish new/updated references.

That’s it, this step is done one time only : you do not have to perform this operation again in this workspace.

  • Second, publishing your references:
  1. Use the dedicated command to publish references into your fork:
pid contributions cmd=publish space=pid
  1. Propose a merge request to the official repository using your git environment (e.g. gitlab, github). Once the merge request is accepted you updates are published into the official contribution space.

How to remove obsolete versions of a package

Sometimes you may want to remove some old versions that you consider as obsolete. Thi sis tyically the situation after the first steps of developement of a package when a first stable release version has been publish (i.e. 1.0.0) where many interdemdiary development versions 0.X.Y still reside in the repository.

WARNING: remmeber that removing a version can impact third party code configuration. So use the following instructions carefully.

  1. Identify the list of version to deprecate. Let’s suppose you want to make obsolete all 0.X.Y versions.

  2. Call the deprecate command

pid cd
pid deprecate package=your-package major=0

That’s it all versions with major 0 are now untagged and find files no more memorize them.

Remark: if you want to deprecatea specific minor version 0.X then simply do:

pid cd
pid deprecate package=your-package minor=0.X

All patches for that minor version will be untagged and find file regenerated.

What should I do after my host environment has been updated

After a system update your host environment may contain numerous changfes that you probably want to use, like new version of compilers or standard libraries for your favorite languages. In PID the update is not automatic for any profile using the host environment, typically the default profile. So you need to ask PID to reload the corresponding profile for these changes to take effect.

For instance to do this for default profile (most common use case):

pid cd
pid profiles cmd=load #no need to spcify profile, default profile is used

And to do this for a profile (lets call it my_profile) also based on host environment:

pid cd
pid profiles cmd=load profile=my_profile

Also remember that profiles not based on host environment can also be impacted as some of their configuration may also have been updated. But it is more rare as those “non host” environments are typically used to set precise and static version of compilers and other build tools.