Skip to content
This repository was archived by the owner on Mar 20, 2026. It is now read-only.

Commit c663de4

Browse files
committed
ci: add multi-distro package building and automated releases
Added comprehensive packaging and CI/CD infrastructure: Packaging Files: - PKGBUILD for Arch Linux package builds - RPM spec file for Fedora/RHEL - debian/ directory for DEB package builds - Complete metadata, dependencies, and changelogs GitHub Actions: - Automated builds on push/PR to main - Multi-distro package creation (Arch, Fedora, Ubuntu) - Artifact uploads for each package format - Automatic GitHub Releases on version tags - Release includes .pkg.tar.zst, .rpm, and .deb
1 parent 6029e79 commit c663de4

9 files changed

Lines changed: 223 additions & 34 deletions

File tree

.github/workflows/build.yml

Lines changed: 59 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -28,24 +28,21 @@ jobs:
2828
run: |
2929
pacman -S --noconfirm gtk4 libadwaita vte4 vala meson ninja
3030
31-
- name: Build project
31+
- name: Build package with makepkg
3232
run: |
33-
meson setup builddir
34-
ninja -C builddir
35-
36-
- name: Install to destdir
37-
run: |
38-
DESTDIR="${PWD}/pkg" ninja -C builddir install
39-
40-
- name: Create tarball
41-
run: |
42-
tar -czf aether-command-arch.tar.gz -C pkg .
33+
cd packaging
34+
# Create non-root user for makepkg
35+
useradd -m builder
36+
chown -R builder:builder ..
37+
# Build package as builder user
38+
su builder -c "makepkg -s --noconfirm"
39+
mv *.pkg.tar.zst ../
4340
4441
- name: Upload artifact
4542
uses: actions/upload-artifact@v4
4643
with:
4744
name: aether-command-arch
48-
path: aether-command-arch.tar.gz
45+
path: "*.pkg.tar.zst"
4946

5047
build-fedora:
5148
name: Build Fedora RPM
@@ -61,24 +58,28 @@ jobs:
6158
run: |
6259
dnf install -y gtk4-devel libadwaita-devel vte291-gtk4-devel vala meson ninja-build gcc git rpm-build rpmdevtools
6360
64-
- name: Build project
61+
- name: Setup RPM build tree
6562
run: |
66-
meson setup builddir
67-
ninja -C builddir
63+
rpmdev-setuptree
64+
cp packaging/aether-command.spec ~/rpmbuild/SPECS/
6865
69-
- name: Install to destdir
66+
- name: Create source tarball
7067
run: |
71-
DESTDIR="${PWD}/pkg" ninja -C builddir install
68+
git archive --format=tar.gz --prefix=command-0.1.0-alpha/ HEAD > ~/rpmbuild/SOURCES/v0.1.0-alpha.tar.gz
7269
73-
- name: Create tarball
70+
- name: Build RPM
7471
run: |
75-
tar -czf aether-command-fedora.tar.gz -C pkg .
72+
rpmbuild -ba ~/rpmbuild/SPECS/aether-command.spec
73+
74+
- name: Copy RPM to workspace
75+
run: |
76+
cp ~/rpmbuild/RPMS/*/*.rpm .
7677
7778
- name: Upload artifact
7879
uses: actions/upload-artifact@v4
7980
with:
8081
name: aether-command-fedora
81-
path: aether-command-fedora.tar.gz
82+
path: "*.rpm"
8283

8384
build-ubuntu:
8485
name: Build Ubuntu DEB
@@ -91,26 +92,21 @@ jobs:
9192
- name: Install dependencies
9293
run: |
9394
sudo apt-get update
94-
sudo apt-get install -y libgtk-4-dev libadwaita-1-dev libvte-2.91-gtk4-dev valac meson ninja-build
95-
96-
- name: Build project
97-
run: |
98-
meson setup builddir
99-
ninja -C builddir
95+
sudo apt-get install -y libgtk-4-dev libadwaita-1-dev libvte-2.91-gtk4-dev valac meson ninja-build debhelper devscripts
10096
101-
- name: Install to destdir
97+
- name: Build DEB package
10298
run: |
103-
DESTDIR="${PWD}/pkg" ninja -C builddir install
99+
dpkg-buildpackage -us -uc -b
104100
105-
- name: Create tarball
101+
- name: Move DEB to workspace
106102
run: |
107-
tar -czf aether-command-ubuntu.tar.gz -C pkg .
103+
mv ../*.deb .
108104
109105
- name: Upload artifact
110106
uses: actions/upload-artifact@v4
111107
with:
112108
name: aether-command-ubuntu
113-
path: aether-command-ubuntu.tar.gz
109+
path: "*.deb"
114110

115111
release:
116112
name: Create Release
@@ -126,10 +122,39 @@ jobs:
126122
uses: softprops/action-gh-release@v1
127123
with:
128124
files: |
129-
aether-command-arch/aether-command-arch.tar.gz
130-
aether-command-fedora/aether-command-fedora.tar.gz
131-
aether-command-ubuntu/aether-command-ubuntu.tar.gz
125+
aether-command-arch/*.pkg.tar.zst
126+
aether-command-fedora/*.rpm
127+
aether-command-ubuntu/*.deb
132128
draft: false
133129
prerelease: true
130+
body: |
131+
## Aether Command v0.1.0-alpha
132+
133+
Initial alpha release of Aether Command terminal emulator.
134+
135+
### Features
136+
- Dynamic window title tracking
137+
- Tab support for multiple terminals
138+
- Copy/paste keyboard shortcuts (Ctrl+Shift+C/V)
139+
- Right-click context menu
140+
- GTK4 and LibAdwaita integration
141+
- Full VTE terminal emulation
142+
143+
### Installation
144+
145+
**Arch Linux:**
146+
```bash
147+
sudo pacman -U aether-command-*.pkg.tar.zst
148+
```
149+
150+
**Fedora:**
151+
```bash
152+
sudo dnf install aether-command-*.rpm
153+
```
154+
155+
**Ubuntu/Debian:**
156+
```bash
157+
sudo apt install ./aether-command_*.deb
158+
```
134159
env:
135160
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

debian/changelog

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
aether-command (0.1.0~alpha-1) unstable; urgency=low
2+
3+
* Initial alpha release
4+
* Dynamic window title tracking
5+
* Tab support for multiple terminals
6+
* Copy/paste keyboard shortcuts (Ctrl+Shift+C/V)
7+
* Right-click context menu
8+
* GTK4 and LibAdwaita integration
9+
* Full VTE terminal emulation
10+
11+
-- AnmiTaliDev <anmitali198@gmail.com> Sat, 01 Feb 2026 00:00:00 +0000

debian/compat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
13

debian/control

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
Source: aether-command
2+
Section: utils
3+
Priority: optional
4+
Maintainer: AnmiTaliDev <anmitali198@gmail.com>
5+
Build-Depends: debhelper-compat (= 13),
6+
meson,
7+
ninja-build,
8+
valac,
9+
libgtk-4-dev,
10+
libadwaita-1-dev,
11+
libvte-2.91-gtk4-dev
12+
Standards-Version: 4.6.0
13+
Homepage: https://github.com/NurOS-Linux/command
14+
Vcs-Git: https://github.com/NurOS-Linux/command.git
15+
Vcs-Browser: https://github.com/NurOS-Linux/command
16+
17+
Package: aether-command
18+
Architecture: any
19+
Depends: ${shlibs:Depends}, ${misc:Depends}
20+
Description: Modern terminal emulator for AetherDE desktop environment
21+
Aether Command is a modern terminal emulator designed for the AetherDE desktop
22+
environment. Built with GTK4 and LibAdwaita, it provides a clean and intuitive
23+
interface that seamlessly integrates with GNOME-based desktops while working
24+
on any Linux distribution with GTK4 support.
25+
.
26+
Features:
27+
* Dynamic window title showing current command or shell prompt
28+
* Multiple terminal tabs support
29+
* Copy/paste with keyboard shortcuts (Ctrl+Shift+C/V)
30+
* Full VTE terminal emulation
31+
* Native LibAdwaita design

debian/copyright

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
2+
Upstream-Name: aether-command
3+
Upstream-Contact: AnmiTaliDev <anmitali198@gmail.com>
4+
Source: https://github.com/NurOS-Linux/command
5+
6+
Files: *
7+
Copyright: 2026 NurOS
8+
License: GPL-3.0-or-later
9+
10+
License: GPL-3.0-or-later
11+
This program is free software: you can redistribute it and/or modify
12+
it under the terms of the GNU General Public License as published by
13+
the Free Software Foundation, either version 3 of the License, or
14+
(at your option) any later version.
15+
.
16+
This program is distributed in the hope that it will be useful,
17+
but WITHOUT ANY WARRANTY; without even the implied warranty of
18+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19+
GNU General Public License for more details.
20+
.
21+
You should have received a copy of the GNU General Public License
22+
along with this program. If not, see <https://www.gnu.org/licenses/>.
23+
.
24+
On Debian systems, the complete text of the GNU General Public License
25+
version 3 can be found in "/usr/share/common-licenses/GPL-3".

debian/rules

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/usr/bin/make -f
2+
3+
%:
4+
dh $@ --buildsystem=meson

debian/source/format

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3.0 (native)

packaging/PKGBUILD

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Maintainer: AnmiTaliDev <anmitali198@gmail.com>
2+
3+
pkgname=aether-command
4+
pkgver=0.1.0_alpha
5+
pkgrel=1
6+
pkgdesc="Modern terminal emulator for AetherDE desktop environment"
7+
arch=('x86_64' 'aarch64')
8+
url="https://github.com/NurOS-Linux/command"
9+
license=('GPL-3.0-or-later')
10+
depends=('gtk4' 'libadwaita' 'vte4')
11+
makedepends=('meson' 'ninja' 'vala' 'git')
12+
source=("git+https://github.com/NurOS-Linux/command.git#tag=v${pkgver/_/-}")
13+
sha256sums=('SKIP')
14+
15+
build() {
16+
cd "$srcdir/command"
17+
meson setup builddir --prefix=/usr --buildtype=release
18+
ninja -C builddir
19+
}
20+
21+
check() {
22+
cd "$srcdir/command"
23+
ninja -C builddir test || true
24+
}
25+
26+
package() {
27+
cd "$srcdir/command"
28+
DESTDIR="$pkgdir" ninja -C builddir install
29+
}

packaging/aether-command.spec

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
Name: aether-command
2+
Version: 0.1.0~alpha
3+
Release: 1%{?dist}
4+
Summary: Modern terminal emulator for AetherDE desktop environment
5+
6+
License: GPL-3.0-or-later
7+
URL: https://github.com/NurOS-Linux/command
8+
Source0: https://github.com/NurOS-Linux/command/archive/v%{version}.tar.gz
9+
10+
BuildRequires: meson
11+
BuildRequires: ninja-build
12+
BuildRequires: vala
13+
BuildRequires: gcc
14+
BuildRequires: pkgconfig(gtk4)
15+
BuildRequires: pkgconfig(libadwaita-1)
16+
BuildRequires: pkgconfig(vte-2.91-gtk4)
17+
18+
Requires: gtk4
19+
Requires: libadwaita
20+
Requires: vte291-gtk4
21+
22+
%description
23+
Aether Command is a modern terminal emulator designed for the AetherDE desktop
24+
environment. Built with GTK4 and LibAdwaita, it provides a clean and intuitive
25+
interface that seamlessly integrates with GNOME-based desktops while working
26+
on any Linux distribution with GTK4 support.
27+
28+
Features:
29+
- Dynamic window title showing current command or shell prompt
30+
- Multiple terminal tabs support
31+
- Copy/paste with keyboard shortcuts (Ctrl+Shift+C/V)
32+
- Full VTE terminal emulation
33+
- Native LibAdwaita design
34+
35+
%prep
36+
%autosetup -n command-%{version}
37+
38+
%build
39+
%meson
40+
%meson_build
41+
42+
%install
43+
%meson_install
44+
45+
%check
46+
%meson_test || true
47+
48+
%files
49+
%license LICENSE
50+
%doc README.md
51+
%{_bindir}/aether-command
52+
%{_datadir}/applications/org.aether.command.desktop
53+
%{_datadir}/metainfo/org.aether.command.metainfo.xml
54+
55+
%changelog
56+
* Sat Feb 01 2026 AnmiTaliDev <anmitali198@gmail.com> - 0.1.0~alpha-1
57+
- Initial alpha release
58+
- Dynamic window title tracking
59+
- Tab support for multiple terminals
60+
- Copy/paste keyboard shortcuts
61+
- Right-click context menu
62+
- GTK4 and LibAdwaita integration

0 commit comments

Comments
 (0)