CPIP Packages

Send email with questions/requests for this page
×

Overview

module url N/A
git repository https://bitbucket.org/arrizza-public/cpip-common
git command git clone git@bitbucket.org:arrizza-public/cpip-common.git
verification report https://arrizza.com/web-ver/cpip-common-report.html
version info
OS Language #Runs Last Run Cov%
macOS 14.5 Python 3.12 6 2025-06-23 100.0%
macOS 15.5 Python 3.12 9 2025-08-06 98.8%
macOS 15.6 Python 3.12 30 2026-07-14 98.8%
macOS 26.6 Python 3.12 5 2026-08-06 98.8%
win32 Windows 11 Python 3.12 72 2026-08-07 98.8%
Ubuntu 20.04 focal Python 3.10 - - -
Ubuntu 22.04 jammy Python 3.10 - - -
Ubuntu 24.04 noble Python 3.10 13 2025-05-27 100.0%
Ubuntu 24.04 noble Python 3.12 61 2026-08-05 98.8%

Summary

This project generates C/C++ packages that can be used by other projects.

See CPIP Packages for the latest CPIP components. That page has links to other projects that provide the components e.g.:

Future

If possible, this mechanism can be used to share FPGA components, Arduino source or objects, etc.

Scenarios

There are 3 components in the tests:

1) src-proj

a project that creates a shared package e.g. this one. These have source files that are compiled and unit tested independently of other projects.

2) user-proj

a project that uses a shared package e.g. devcpp-app-template. These name the packages in their local xplat.cfg file and then use:

zpm mk-gen
zpm mk-build

to generate and build the package.

3) server: my web server arrizza.com

Note: the local shared directory can be anywhere in your system. It is named in the xplat.cfg file:

[cpip]
root_dir = ~/projects/cpip   <===  this is the local shared directory
packages = logger

In the scenarios below, I use "~/projects/cpip"

Scenario: Refresh from Server

  • Go to a user-proj or src-proj
  • zpm cpip-pull: copies from remote to ~/projects/cpip
  • follow instructions in "Use a package" below

Scenario: Use a package

  • go to a user-proj
  • update xplat.cfg to indicate the package(s) to use
[cpip]
root_dir = ~/projects/cpip
packages = logger    # an example package
  • update gen.py as necessary for the new package
  • zpm mk-gen: generates the Makefile.xx file. This contains all the definitions and commands needed to build
  • zpm mk-build: runs make to build the package
  • run to verify the new package is used correctly

Scenario: Create a package

  • in the src-proj:
    • set up the source files and unit tests.
    • build and run UTs to verify the package is correct
  • publish the package:
    • update lib/packages.json with the new target info
    • zpm cpip-publish:
      • merges lib/packages.json into ~/projects/cpip
      • copies all source/exes etc. named for that target from this project to ~/projects/cpip
  • Use the package:
    • go to a user-proj
    • follow instructions in "Use a package" above
    • verify package works correctly

Notes:

  • assumes two src-projs don't use the same pkg name

Scenario: Publish to server

Not available for public use since it uses private components and knowledge of my website.

In short, it does this:

  • goes through the ~/projects/cpip/cpip.json file and generates an HTML page with all the known packages
  • For each source or other type of file, it creates link to the package file that resides on the server
  • Then the HTML page and all the packages files are copied to the web server

- John Arrizza