Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add: GLFW Builds of Ghostty, Changes to Main Specs For Compatibility #2788

Merged
merged 8 commits into from
Dec 31, 2024
8 changes: 8 additions & 0 deletions anda/devs/ghostty/nightly-glfw/anda.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
project pkg {
rpm {
spec = "ghostty-glfw-nightly.spec"
}
labels {
nightly = 1
}
}
88 changes: 88 additions & 0 deletions anda/devs/ghostty/nightly-glfw/ghostty-glfw-nightly.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
%global commit 478fe3917c2882a1c321f9d1eec808b71698974d
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global commit_date 20241231

Name: ghostty-glfw-nightly
Version: %{commit_date}.%{shortcommit}
Release: 1%{?dist}
Summary: A fast, native terminal emulator written in Zig; this is the Tip (nightly) build using the GLFW rendering library.
License: MIT
URL: https://ghostty.org/
Source0: https://github.com/ghostty-org/ghostty/archive/%{commit}/ghostty-%{commit}.tar.gz
Patch0: no-strip.diff
BuildRequires: glfw-devel
BuildRequires: ncurses
BuildRequires: ncurses-devel
BuildRequires: pandoc-cli
BuildRequires: zig
Requires: ghostty-nightly-terminfo = %{version}-%{release}
Requires: ghostty-nightly-shell-integration = %{version}-%{release}
Requires: fontconfig
Requires: freetype
Requires: glib2
Requires: glfw
Requires: harfbuzz
Requires: libpng
Requires: oniguruma
Requires: pixman
Requires: zlib-ng
Conflicts: ghostty
Conflicts: ghostty-nightly
Conflicts: ghostty-glfw
Provides: ghostty-tip-glfw = %{version}-%{release}
Provides: ghostty-glfw-tip = %{version}-%{release}
Packager: ShinyGil <rockgrub@protonmail.com>

%description
👻 Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.

Please note GLFW builds are intended for developer use, they may be buggy and lack features. Use at your own risk.

%prep
%autosetup -n ghostty-%{commit} -p1

%build

%install
zig build \
--summary all \
-Doptimize=ReleaseFast --release=fast \
--prefix %{buildroot}%{_prefix} --verbose \
-Dpie=true \
-Dapp-runtime=glfw \
-Demit-docs
rm -rf %{buildroot}%{bash_completions_dir}/ghostty.bash \
%{buildroot}%{fish_completions_dir}/ghostty.fish \
%{buildroot}%{zsh_completions_dir}/_ghostty \
%{buildroot}%{_datadir}/ghostty/shell-integration \
%{buildroot}%{_datadir}/terminfo/*

%files
%doc README.md
%license LICENSE
%_bindir/ghostty
%_datadir/applications/com.mitchellh.ghostty.desktop
%_datadir/bat/syntaxes/ghostty.sublime-syntax
%_datadir/ghostty/
%_datadir/kio/servicemenus/com.mitchellh.ghostty.desktop
%_datadir/nvim/site/ftdetect/ghostty.vim
%_datadir/nvim/site/ftplugin/ghostty.vim
%_datadir/nvim/site/syntax/ghostty.vim
%_datadir/vim/vimfiles/ftdetect/ghostty.vim
%_datadir/vim/vimfiles/ftplugin/ghostty.vim
%_datadir/vim/vimfiles/syntax/ghostty.vim
%_iconsdir/hicolor/16x16/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/16x16@2/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/32x32/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/32x32@2/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/128x128/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/128x128@2/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/256x256/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/256x256@2/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/512x512/apps/com.mitchellh.ghostty.png
%_mandir/man1/ghostty.1.gz
%_mandir/man5/ghostty.5.gz

%changelog
* Sun Dec 29 2024 ShinyGil <rockgrub@protonmail.com>
- Initial package
17 changes: 17 additions & 0 deletions anda/devs/ghostty/nightly-glfw/no-strip.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
diff --git a/build.zig b/build.zig
index c3f7302..a0ecf25 100644
--- a/build.zig
+++ b/build.zig
@@ -295,11 +295,7 @@ pub fn build(b: *std.Build) !void {
.root_source_file = b.path("src/main.zig"),
.target = target,
.optimize = optimize,
- .strip = switch (optimize) {
- .Debug => false,
- .ReleaseSafe => false,
- .ReleaseFast, .ReleaseSmall => true,
- },
+ .strip = false,
}) else null;

// Exe
5 changes: 5 additions & 0 deletions anda/devs/ghostty/nightly-glfw/update.rhai
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
rpm.global("commit", gh_commit("ghostty-org/ghostty"));
if rpm.changed() {
rpm.release();
rpm.global("commit_date", date());
}
45 changes: 19 additions & 26 deletions anda/devs/ghostty/nightly/ghostty-nightly.spec
Original file line number Diff line number Diff line change
@@ -1,31 +1,21 @@
%global commit 5293fc9c2f19b7e01472de8c2ef08bef603b754a
%global commit 478fe3917c2882a1c321f9d1eec808b71698974d
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%global commit_date 20241228
%global commit_date 20241231

Name: ghostty-nightly
Version: %commit_date.%shortcommit
Release: 1%?dist
Summary: A fast, native terminal emulator written in Zig; this is the Tip (nightly) build
Version: %{commit_date}.%{shortcommit}
Release: 1%{?dist}
Summary: A fast, native terminal emulator written in Zig; this is the Tip (nightly) build.
License: MIT
URL: https://ghostty.org/
Source0: https://github.com/ghostty-org/ghostty/archive/%{commit}/ghostty-%{commit}.tar.gz
#Patch0: pkgconfig-libadwaita-1.diff
#Patch1: use-pkg-config.diff
Patch2: no-strip.diff
BuildRequires: zig
BuildRequires: gtk4-devel libadwaita-devel
Patch0: no-strip.diff
BuildRequires: gtk4-devel
BuildRequires: libadwaita-devel
BuildRequires: ncurses
BuildRequires: ncurses-devel
BuildRequires: pandoc-cli
#BuildRequires: pkg-config
#BuildRequires: pkgconfig(harfbuzz)
#BuildRequires: pkgconfig(fontconfig)
#BuildRequires: pkgconfig(libpng)
#BuildRequires: pkgconfig(zlib)
#BuildRequires: pkgconfig(oniguruma)
#BuildRequires: pkgconfig(glslang)
# Not in Fedora
#BuildRequires: pkgconfig(spirv-cross)
#BuildRequires: pkgconfig(simdutf)
#BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: zig
Requires: %{name}-terminfo = %{version}-%{release}
Requires: %{name}-shell-integration = %{version}-%{release}
Requires: fontconfig
Expand All @@ -39,6 +29,8 @@ Requires: pixman
Requires: zlib-ng
Suggests: libadwaita
Conflicts: ghostty
Conflicts: ghostty-glfw
Conflicts: ghostty-glfw-nightly
Provides: ghostty-tip = %{version}-%{release}
Packager: ShinyGil <rockgrub@protonmail.com>

Expand All @@ -47,43 +39,43 @@ Packager: ShinyGil <rockgrub@protonmail.com>

%package bash-completion
Summary: Ghostty Bash completion
Requires: %{name}
Requires: bash-completion
Supplements: (%{name} and bash-completion)
Supplements: (ghostty-glfw-nightly and bash-completion)

%description bash-completion
%summary.

%package fish-completion
Summary: Ghostty Fish completion
Requires: %{name}
Requires: fish
Supplements: (%{name} and fish)
Supplements: (ghostty-glfw-nightly and fish)

%description fish-completion
%summary.

%package zsh-completion
Summary: Ghostty Zsh completion
Requires: %{name}
Requires: zsh
Supplements: (%{name} and zsh)
Supplements: (ghostty-glfw-nightly and zsh)

%description zsh-completion
%summary.

%package shell-integration
Summary: Ghostty shell integration
Requires: %{name}
Supplements: %{name}
Supplements: ghostty-glfw-nightly

%description shell-integration
%summary.

%package terminfo
Summary: Ghostty terminfo
Requires: %{name}
Supplements: %{name}
Supplements: ghostty-glfw-nightly

%description terminfo
%summary.
Expand Down Expand Up @@ -124,6 +116,7 @@ zig build \
%_iconsdir/hicolor/256x256/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/256x256@2/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/512x512/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/1024x1024/apps/com.mitchellh.ghostty.png
%_mandir/man1/ghostty.1.gz
%_mandir/man5/ghostty.5.gz

Expand Down
13 changes: 0 additions & 13 deletions anda/devs/ghostty/nightly/pkgconfig-libadwaita-1.diff

This file was deleted.

12 changes: 0 additions & 12 deletions anda/devs/ghostty/nightly/use-pkg-config.diff

This file was deleted.

5 changes: 5 additions & 0 deletions anda/devs/ghostty/stable-glfw/anda.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
project pkg {
rpm {
spec = "ghostty-glfw.spec"
}
}
82 changes: 82 additions & 0 deletions anda/devs/ghostty/stable-glfw/ghostty-glfw.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
Name: ghostty-glfw
Version: 1.0.0
Release: 1%{?dist}
Summary: A fast, native terminal emulator written in Zig; this version uses the GLFW rendering library.
License: MIT
URL: https://ghostty.org/
Source0: https://release.files.ghostty.org/%{version}/ghostty-source.tar.gz
Patch0: no-strip.diff
BuildRequires: glfw-devel
BuildRequires: ncurses
BuildRequires: ncurses-devel
BuildRequires: pandoc-cli
BuildRequires: zig
Requires: ghostty-terminfo = %{version}-%{release}
Requires: ghostty-shell-integration = %{version}-%{release}
Requires: fontconfig
Requires: freetype
Requires: glib2
Requires: glfw
Requires: harfbuzz
Requires: libpng
Requires: oniguruma
Requires: pixman
Requires: zlib-ng
Conflicts: ghostty
Conflicts: ghostty-nightly
Conflicts: ghostty-glfw-nightly
Packager: ShinyGil <rockgrub@protonmail.com>

%description
👻 Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.

Please note GLFW builds are intended for developer use, they may be buggy and lack features. Use at your own risk.

%prep
%autosetup -n ghostty-source -p1

%build

%install
zig build \
--summary all \
-Doptimize=ReleaseFast --release=fast \
--prefix %{buildroot}%{_prefix} --verbose \
-Dpie=true \
-Dapp-runtime=glfw \
-Demit-docs
rm -rf %{buildroot}%{bash_completions_dir}/ghostty.bash \
%{buildroot}%{fish_completions_dir}/ghostty.fish \
%{buildroot}%{zsh_completions_dir}/_ghostty \
%{buildroot}%{_datadir}/ghostty/shell-integration \
%{buildroot}%{_datadir}/terminfo/*

%files
%doc README.md
%license LICENSE
%_bindir/ghostty
%_datadir/applications/com.mitchellh.ghostty.desktop
%_datadir/bat/syntaxes/ghostty.sublime-syntax
%_datadir/ghostty/
%_datadir/kio/servicemenus/com.mitchellh.ghostty.desktop
%_datadir/nvim/site/ftdetect/ghostty.vim
%_datadir/nvim/site/ftplugin/ghostty.vim
%_datadir/nvim/site/syntax/ghostty.vim
%_datadir/vim/vimfiles/ftdetect/ghostty.vim
%_datadir/vim/vimfiles/ftplugin/ghostty.vim
%_datadir/vim/vimfiles/syntax/ghostty.vim
%_iconsdir/hicolor/16x16/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/16x16@2/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/32x32/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/32x32@2/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/128x128/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/128x128@2/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/256x256/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/256x256@2/apps/com.mitchellh.ghostty.png
%_iconsdir/hicolor/512x512/apps/com.mitchellh.ghostty.png
%_mandir/man1/ghostty.1.gz
%_mandir/man5/ghostty.5.gz

%changelog
* Sun Dec 29 2024 ShinyGil <rockgrub@protonmail.com>
- Initial package
17 changes: 17 additions & 0 deletions anda/devs/ghostty/stable-glfw/no-strip.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
diff --git a/build.zig b/build.zig
index c3f7302..a0ecf25 100644
--- a/build.zig
+++ b/build.zig
@@ -295,11 +295,7 @@ pub fn build(b: *std.Build) !void {
.root_source_file = b.path("src/main.zig"),
.target = target,
.optimize = optimize,
- .strip = switch (optimize) {
- .Debug => false,
- .ReleaseSafe => false,
- .ReleaseFast, .ReleaseSmall => true,
- },
+ .strip = false,
}) else null;

// Exe
1 change: 1 addition & 0 deletions anda/devs/ghostty/stable-glfw/update.rhai
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rpm.version(gh_tag("ghostty-org/ghostty"));
Loading
Loading