You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Michał Góral 5b5c1c4f4b Perform build, lint and send only for selected packages 1 month ago
devtools Generate gpak 1 month ago
docker Join all Dockerfiles in one Dockerfile.in and add --docker-context 1 month ago
gpaklib Perform build, lint and send only for selected packages 1 month ago
.gitignore Generate gpak 1 month ago
CHANGELOG Perform build, lint and send only for selected packages 1 month ago
LICENSE License 1 month ago
Makefile Added build target 1 month ago
README.md Implement gpak --cache 1 month ago
gpak.in Perform build, lint and send only for selected packages 1 month ago

README.md

gpak

Script to manage packages infrastructure. It automates building Debian Docker images and builds PKGBUILD-like packages inside these containers. This way it is ensured that packages don't have any unresolved dependencies.

Once built, packages can be sent to the remote ssh server via rsync.

Dependencies

  • Debian (duh)
  • docker for building
  • makedeb for local building (docker images automatically download it)
  • rync for sending files

FAQ

Builds are slow

Building with Docker is useful because you get a clean fresh container for each build, so you can be sure that your packages have all necessary dependencies and that your build steps are correct and reproducible. This means however that all steps must be repeated over and over again, which is especially painful if you must download a lot of dependencies and you incrementally fix your PKGBUILD files.

To overcome this issue, gpak has --cache option, which allows re-using containers on package- and distro- basis. Note however that to keep things secure, gpak disallows sending packages built in such manner (although you can --force it to do so).

Proxy

When you're behind proxy, you might get trouble to download dependencies inside Docker. To overcome this, add this to ~/.docker/config.json:

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://<address>:<port>",
     "httpsProxy": "http://<address>:<port>"
   }
 }
}