Giter VIP home page Giter VIP logo

deb-pkg's Introduction

Little Debian packaging helper

This is a little tool for making build pipelines for Debian packaging easier.

It automatically clones git repos (which are expected to hold already debianized trees), builds them along the dependency tree (using my dck-buildpackage tool) and puts them into installable apt repos.

Configuration is done via yaml. (see packages.yml for an example)

See FAQ

NOTE: documentation is still scarce. Feel free to ask if you have questions.

Contact: Enrico Weigelt, metux IT consult [email protected] License: AGPL v3

deb-pkg's People

Contributors

metux avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

deb-pkg's Issues

Put package name prefix into build output lines

Currently, the build run output (stdout, stderr) is just written through as-is (just passing through stdout/stderr to sub processes). But for longer build pipelines it would be very helpful to see which package is currently built.

Therefore: catch the subprocess output line per line and add a proper prefix before writing them out again.

Clone: history limit

What is the problem you're trying to solve

Cloning can take quite a while for pulling the complete history, which is unpleasant for build-only checkouts (eg. on CI). OTOH, when actively developing on a package, often full history is required.

Thus we need a (global ?) switch for doing just minimal shallow clones.

Describe the solution you'd like

  1. add a per-package flag for limiting history cloning (shallow clone)
  2. make it default to per-pool flag
  3. make the per-pool flag default to global flag
  4. make the global flag default to environment variable

Additional context

No response

Tool for creating just rootfs images

What is the problem you're trying to solve

  • create the rootfs images separately, so they can be created and cached in a separate step

Describe the solution you'd like

./create-rootfs-images

Additional context

No response

CI: use prebuilt images

What is the problem you're trying to solve

github CI runs currently need to recreate the builder base images afresh, which takes some time

Describe the solution you'd like

  • upload prebuilt images to dockerhub
  • let deb-pkg (or the ci script) pull them before calling up the actual builds

Additional context

No response

Example packages.yml

The readme mentions an example packages.yml that show how to configure/run the system, but this appears to be missing.
Are there more details on how to use this?

Generic builder script

What is the problem you're trying to solve

For now, there's no generic command line tool yet. For each individual project (or branch) we have a separate tiny script that calls the actual builder tool w/ appropriate config file name and the pool to build.

We should have a generic command line tool for that, so we don't need these individual scriptlets anymore.

Describe the solution you'd like

./build-pool

Additional context

History:

  • originally this tool was meant to be customized for each project
  • each project should have a number of scriptlets that can be executed w/o any extra parameters (eg. just hit on it in tools like MC ;-)).
  • historically, these scriptlets used to do some more project specific things, that now can be just configured in the target config file
  • that approach always had been a temporary step, and I've just been too lazy for writing a generic command :p

Support mixed arch repos

What is the problem you're trying to solve

Currently, apt repos are separated by target identifier (used by dck-buildpackage). That one is just a plain string w/o inherent structure. Since separate arch's of the same distro have separate target identifier, they're creating separate repos.

This is in contrast to classic apt repos that contain all supported archs in one repo.

Describe the solution you'd like

  1. Introduce target configs in deb-pkg (located in cf/target/...)
  2. These define several things like archs, repo identifier, arch to build and corresponding deb-buildpackage target identifiers
  3. the current target list entries refer to these, if found, otherwise compute the entries that mimic the current behaviour

Additional context

No response

build_pool: support default-pool setting

What is the problem you're trying to solve

Most configs only have one pool, usually "default". Some might use a different name for specific reasons.
In order to support building some config yaml, w/o extra boilerplate (eg. by CI), we need a method for finding out which pool to build.

Describe the solution you'd like

add global config "default-pool", which might be single value or a list.
cmd.build_pool checks for that value if no/empty pool name is given. this setting defaults to 'default'.

Additional context

No response

CI: public installable repos on github

What is the problem you're trying to solve

When CI build runs through, the resulting apt/yum repos should be directly available for installations (eg. just add sources.list entry/key to your machine and fire away).

Describe the solution you'd like

The requirements are not entirely trivial:

  1. Need a stable signing key: for now the keyring is generated on-demand and cached on gh (when the cache expires, a new one is generated). It's in no way meant to provide security, just to let the repo builder run through. (an actual repo maintainer would run the tool on his own machine, with his own keyring). Obviously that's painful, when repos should be built and hosted on gh.
  2. Need to separate branches: actual repo configs are usually done in separate branches, so these somehow need to be reflected in the repo hosting schema.
  3. Need to separate configs: there can be multiple target configs, usually using the same pool names, so these somehow need to be separated by the repo hosting schema.

Additional context

No response

document variables

What is the problem you're trying to solve

Variables need to be documented.

Describe the solution you'd like

.

Additional context

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.