FAQ
Here is a list of frequently asked questions:
- How to know what packages I can deploy into my workspace ?
- What is the best way to create a new package ?
- How to publish contributions to a contribution space I have no push rights to ?
- How to remove obsolete versions of a package ?
- What should I do after my host environment has been updated ?
How to know what packages I can deploy into my workspace
Basically use the ìnfo
command of the workspace.
- Search for available packages using the
search
argument. - 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"
Result:
[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: https://gite.lirmm.fr/pid/wrappers/dlib
- documentation: https://pid.lirmm.net/pid-framework/external/dlib/index.html
You can use the web pages to grab more information.
Now use the package
command to get more detailed information:
pid info package=dlib
EXTERNAL 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 LICENSES: Boost;v1;license
PID PACKAGE CONTACT: Robin Passama (passama@lirmm.fr) - CNRS/LIRMM
OFFICIAL PROJECT AUTHORS: Davis King and DLib contributors
CATEGORIES:
programming
programming/image
programming/log
programming/meta
programming/gui
programming/operating_system
programming/serialization
testing
AVAILABLE VERSIONS: 19.17.0
BINARY VERSIONS: NONE
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:
- create a repository online to host your package. Copy its SSH address.
- 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:
- Fork the contribution space repository you want to publish in, here the official pid contribution space: https://gite.lirmm.fr/pid/pid-contributions. The fork is a repository you can push to.
- Copy the SSH address of the fork repository
- 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:
- Use the dedicated command to publish references into your fork:
pid contributions cmd=publish space=pid
- 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.
-
Identify the list of version to deprecate. Let’s suppose you want to make obsolete all
0.X.Y
versions. -
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.