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 7 2026-08-11 0.0%
macOS 26.6.1 Python 3.12 1 2026-08-11 0%
win32 Windows 11 Python 3.12 79 2026-08-13 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 65 2026-08-11 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.:

Also see User Guide CPIP for an explanation of how to use CPIP

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