Skip to content

Building a Puppy on GitHub

PB edited this page Jul 27, 2024 · 52 revisions

(It's recommend to have some basic understanding of woof-CE before you attempt this: see README.md.)

  1. Go to the Actions tab of your fork of https://github.com/puppylinux-woof-CE/woof-CE:

  1. Select the "release" workflow:

Then, specify a version number, specify a release name suffix, etc' and click "Run workflow":

Not all parameter combinations will work:

To check if the architecture, distro and distro version is supported, follow these steps-

  • Go to this webpage (The link takes you to woof-distro directory of woof-CE. Please check README.md to understand what woof-distro does).
  • The webpage opened will contain all architectures supported. You can fill either of these in Architecture parameter while running the github action.
  • Click the desired architecture in the webpage. This will open up another webpage, which contains all the supported distros for that specific architecture. You can fill either of these in Compatible distro parameter while running the github action.
  • Click the desired distro in the webpage. This will open up another webpage, which contains all the supported distro versions for that specific distro for that specific architecture. You can fill either of these in Compatible distro version parameter while running the github action.

For example, specify focal64 and not 20.04 in an x86_64 build, to use build puppy based on Ubuntu 20.04 packages.

For example, if you want an Ubuntu 20.04 based build for ARM and there's no ubuntu directory under arm/, or no focal subdirectory under arm/ubuntu, this means this combination is not implemented and won't work (the configuration files are missing).

If you wish to build an updated version of a previous Puppy release using the latest woof-CE, without guarantee of 100% faithful reproduction, use these configurations:

Generally, the combinations built by scheduled runs of woof-CE are the ones most likely to work.

The release name suffix can be empty, but otherwise must start with "-" (i.e. -alpha, -alpha1, -beta2, -rc1).

If you don't intend to publish a publicly-available release that can be later downloaded by others including people without a GitHub account, leave "Upload release draft" unchecked. But in case you're planning to publish the build output in a release, select "Upload Release draft" option (read #3760 for reason). If you don't want to keep the build and still select "Upload Release draft" option, you are wasting storage space: if you abuse GitHub Actions resource limits, build will start to fail and can cost you money. In case your builds start to fail for such a reason, you can try deleting a few of your draft releases. Release draft upload is disabled for puppylinux-woof-CE/woof-CE, so available storage space can be used for shared resources like kernels: publish releases only in forks of woof-CE, under your personal account.

  1. Wait for the build to start (refresh the page if needed), then click it:

  1. Select the build job (only needed if you want to monitor the build logs - logs can be downloaded after the job has completed):

  1. Get a healthy snack and monitor the logs (can take some time before the logs appear):

  1. If the build has passed, your shiny new Puppy should be available under Artifacts for one day:

artifacts artifacts2

In addition, if you checked the "Upload release draft" checkbox, it should be available under the Releases page.

Click Releases as shown here to visit your woof-CE fork's Release page, or directly visit https://github.com/your-github-username/woof-CE/releases.

This new release is release draft: it's visible only to woof-CE members (or you, if it's a fork of woof-CE):

You can discard it (for example, if you tested it and found it to be buggy):

Make sure you delete all unwanted draft releases, to free storage space for other builds.

Or, you can publish it so users can see and download it:

  1. Get more healthy snacks, call your friends and throw a Puppy testing party.
Clone this wiki locally