https://github.com/cpiber/hyprland-ppa
Source for hyprland PPA. Includes suplemental packages that aren't available on Ubuntu or outdated.
https://github.com/cpiber/hyprland-ppa
debian hypr hyprland hyprland-arch ppa ubuntu
Last synced: about 1 year ago
JSON representation
Source for hyprland PPA. Includes suplemental packages that aren't available on Ubuntu or outdated.
- Host: GitHub
- URL: https://github.com/cpiber/hyprland-ppa
- Owner: cpiber
- Created: 2024-05-31T12:37:21.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-04-11T19:39:26.000Z (about 1 year ago)
- Last Synced: 2025-04-11T20:35:40.771Z (about 1 year ago)
- Topics: debian, hypr, hyprland, hyprland-arch, ppa, ubuntu
- Language: Makefile
- Homepage: https://launchpad.net/~cppiber/+archive/ubuntu/hyprland
- Size: 1.32 MB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# hyprland-ppa
This repository contains the `debian/` files for my PPA.
These files detail the recipe for building a .deb package.
Currently these work for Ubuntu 24.04 Noble and 24.10 Oracular.
Published packages are available here: https://launchpad.net/~cppiber/+archive/ubuntu/hyprland
## Packages
Packages are organized into subfolders.
Each package contains two folders: `debian/` and `source/`.
The source code of the packages is not stored here and instead embedded as a git submodule.
Hence, the debian subdirectory instead does not live in the source code.
This repository contains some scripts to deal with this.
To initialize all packages:
```console
$ git clone https://github.com/cpiber/hyprland-ppa.git # Clone this repository
$ git submodule update --init --recursive # Fetch all package sources
```
## Scripts
### Updating a package
```console
$ ./scripts/update.sh
```
This script will fetch the latest changes for the specified package.
All packages except `hyprland` and `waybar-unstable` will check out the lastest tag.
The two mentioned exceptions will check out the lastest commit on main/master.
The script additionally generates the appropriate changelog from the commit names.
If the version did not change, the script exists with code 1 and does not apply any changes.
### Building a package
```console
$ ./scripts/open-build.sh []
```
This script prepares a build area in `/tmp/hyprland-ppa/` and opens a shell there for building.
It copies both the `source/` and `debian/` folders together into the expected structure.
Some packages additionally contain a `prepare.sh` file, which is executed in the resulting build environment.
This may be used to exclude files from the final archive.
As the last step, the script generates the `_.orig.tar.xz` file necessary for building the package.
The actual build is left to the user.
The optional `` argument may be used to build a separate version for a different distribution than specified in the `debian/` folder.
This option generates a new entry in the changelog and appends `~11` to the version field, allowing a rebuild with no changes for this distribution.
Make sure to use the same orig file, as launchpad refuses to accept one with a different checksum.
Information about my build setup: https://github.com/cpiber/ppa/blob/main/build.md
### No-change rebuild
```console
$ ./scripts/rebuild.sh
$ ./scripts/rebuild-depends.sh
```
The first script simply increments the patch part of the version number (new changelog entry).
This allows a rebuild of the package when no source changes were found, as necessary when a dependency changes (with ABI changes) or a new patch is introduced.
The second script instead takes a package name (or multiple) and asks `apt-cache` for dependents.
It then calls the former script to rebuild all reverse dependencies.
Use this when a breaking change is introduced and a new build needs to be kicked off for depending packages.
See [Building a package](#building-a-package) for actually starting the build.
### Working with patches
The unconventional location of the `debian/` folder means existing tooling will not automatically pick it up.
When working with `quilt`, I recommend the following setting:
```console
$ export QUILT_PATCHES=../debian/patches
```
With this, `quilt` will pick up the patches and patches can be applied as usual, see [the manual](https://www.debian.org/doc/manuals/maint-guide/modify.en.html).