#1 Use orderable versions for git-commit dependencies and add metadata as zig packages
Closed 3 months ago by sentry. Opened 3 months ago by a-zhn.
a-zhn/ghostty-rpm master  into  master

file modified
+33 -33
@@ -144,33 +144,34 @@ 

      end \

  }

  

+ Provides:       bundled(SPIRV-Cross) = 1.3.283^git%{spirv_cross_commit}

+ Provides:       bundled(breakpad) = 0+get-sentry~git%{breakpad_commit}

  Provides:       bundled(fontconfig) = %{fontconfig_version}

- Provides:       bundled(harfbuzz) = %{harfbuzz_version}

- Provides:       bundled(utfcpp) = %{utfcpp_version}

- Provides:       bundled(z2d) = %{z2d_commit}

- Provides:       bundled(SPIRV-Cross) = %{spirv_cross_commit}

- Provides:       bundled(libvaxis) = %{libvaxis_commit1}

- Provides:       bundled(libvaxis) = %{libvaxis_commit2}

- Provides:       bundled(sentry-native) = %{sentry_version}

- Provides:       bundled(glslang) = %{glslang_version}

  Provides:       bundled(freetype2) = %{freetype_version}

- Provides:       bundled(oniguruma) = %{oniguruma_version}

+ Provides:       bundled(glslang) = %{glslang_version}

+ Provides:       bundled(harfbuzz) = %{harfbuzz_version}

  Provides:       bundled(highway) = %{highway_version}

- Provides:       bundled(libxev) = %{libxev_commit}

- Provides:       bundled(imgui) = %{imgui_commit}

- Provides:       bundled(breakpad) = %{breakpad_commit}

+ Provides:       bundled(imgui) = 1.90.6-docking~git%{imgui_commit} # Can this just be the upstream cimgui version that tags the commit?

+ Provides:       bundled(oniguruma) = %{oniguruma_version}

+ Provides:       bundled(sentry-native) = %{sentry_version}

+ Provides:       bundled(simdutf) = 5.2.8

+ Provides:       bundled(utfcpp) = %{utfcpp_version}

  Provides:       bundled(wuffs) = %{wuffs_version}

- Provides:       bundled(ziglyph) = %{ziglyph_commit}

- Provides:       bundled(zf) = %{zf_commit}

- Provides:       bundled(zigimg) = %{zigimg_commit}

  Provides:       bundled(zg) = %{zg_version}

- Provides:       bundled(zig-objc) = %{zig_objc_commit}

- Provides:       bundled(zig-js) = %{zig_js_commit}

- Provides:       bundled(simdutf) = 5.2.8

+ Provides:       bundled(zig(dude_the_builder/ziglyph)) = 0.13.0~%{ziglyph_commit}

+ Provides:       bundled(zig(mitchellh/libxev)) = 0~git%{libxev_commit}

+ Provides:       bundled(zig(mitchellh/zig-js)) = 0~git%{zig_js_commit}

+ Provides:       bundled(zig(mitchellh/zig-objc)) = 0~git%{zig_objc_commit}

+ Provides:       bundled(zig(natecraddock/zf)) = 0~git%{zf_commit}

+ Provides:       bundled(zig(rockorager/libvaxis)) = 0~git%{libvaxis_commit1}

+ Provides:       bundled(zig(rockorager/libvaxis)) = 0~git%{libvaxis_commit2}

+ Provides:       bundled(zig(vancluever/z2d)) = 0~git%{z2d_commit}

+ Provides:       bundled(zig(zigimg/zigimg)) = 0~git%{zigimg_commit}

  

  # the fonts are included with ghostty and are embedded directly into the executable

  # https://github.com/ghostty-org/ghostty/blob/v1.0.0/src/font/embedded.zig

  # CodeNewRoman              OFL-1.1

+ # CozetteVector             MIT

  # GeistMono                 OFL-1.1

  # Inconsolata               OFL-1.1

  # JetBrainsMono             OFL-1.1
@@ -178,43 +179,42 @@ 

  # KawkabMono                OFL-1.1

  # Lilex                     OFL-1.1

  # MonaspaceNeon             OFL-1.1

- # NotoEmoji                 OFL-1.1

- # CozetteVector             MIT

  # NerdFont                  MIT AND OFL-1.1

+ # NotoEmoji                 OFL-1.1

  Provides:       bundled(font(JetBrainsMonoNerdFont)) = 2.3.0

  # the rest are used for test cases and NOT included in the final executable

  # see comment in 'src/font/embedded.zig'

- Provides:       bundled(font(NotoEmoji)) = 2.034

- Provides:       bundled(font(KawkabMono)) = 0.501

- Provides:       bundled(font(Lilex)) = 2.200

  Provides:       bundled(font(CodeNewRoman)) = 2.000

- Provides:       bundled(font(Inconsolata)) = 3.001

+ Provides:       bundled(font(CozetteVector)) = 1.22.2

  Provides:       bundled(font(GeistMono)) = 1.2.0

+ Provides:       bundled(font(Inconsolata)) = 3.001

  Provides:       bundled(font(JetBrainsMono)) = 2.3.0

  Provides:       bundled(font(JuliaMono)) = 0.055

- Provides:       bundled(font(CozetteVector)) = 1.22.2

+ Provides:       bundled(font(KawkabMono)) = 0.501

+ Provides:       bundled(font(Lilex)) = 2.200

  Provides:       bundled(font(MonaspaceNeon)) = 1.000

+ Provides:       bundled(font(NotoEmoji)) = 2.034

  

  ExclusiveArch:  %{zig_arches}

  

- BuildRequires:  gcc

- BuildRequires:  desktop-file-utils

- BuildRequires:  (zig >= 0.13 with zig < 0.14)

- BuildRequires:  zig-rpm-macros

- BuildRequires:  pkg-config

  # glslang in the fedora repos is too new

  #BuildRequires:  pkgconfig(glslang)

+ BuildRequires:  desktop-file-utils

+ BuildRequires:  gcc

+ BuildRequires:  pkg-config

  BuildRequires:  pkgconfig(simdutf)

+ BuildRequires:  (zig >= 0.13 with zig < 0.14)

+ BuildRequires:  zig-rpm-macros

  

  # font backend

  BuildRequires:  pkgconfig(bzip2)

- BuildRequires:  pkgconfig(freetype2)

  BuildRequires:  pkgconfig(fontconfig)

+ BuildRequires:  pkgconfig(freetype2)

  BuildRequires:  pkgconfig(harfbuzz)

  BuildRequires:  pkgconfig(libpng)

- BuildRequires:  pkgconfig(zlib)

- BuildRequires:  pkgconfig(oniguruma)

  BuildRequires:  pkgconfig(libxml-2.0)

+ BuildRequires:  pkgconfig(oniguruma)

+ BuildRequires:  pkgconfig(zlib)

  # app runtime

  BuildRequires:  pkgconfig(gtk4)

  BuildRequires:  pkgconfig(libadwaita-1)

I found your repo afer submitting a fedora-review request at https://bugzilla.redhat.com/show_bug.cgi?id=2334903 and it looks like you are farther along with removing the network build requirement and licenses.
I got initial feedback to improve the versioning and metadata of bundled dependencies that are built from git commits so here's a PR to add those

I also alphabetically sorted some sections, this might be unnecessary and I've separated the commit if you don't want this

Are you interested in collaborating or submitting to fedora review for packaging in the official repos?

Some notes:

  • There is no point in doing bundled(zig(foo)) since it doesn't provide any useful information
    • in the future it might be useful to automatically generate bundled(zon(hash)) but the toolchain and ecosystem hasn't matured far enough for this to be worth doing
  • I don't agree with the change of names to use the author/project syntax used in the bundled provides because it doesn't match how the underlying language package manager works
    • since zon dependency constants can be named whatever the developer wants and the given URL links to an arbitrary endpoint there is no real way to get an authoritative name outside of the actual project name
    • the pattern of simply using the project name has already been established by many other packages including river
  • I intentionally did not encode tag or branch names in the provides for multiple reasons:
    • zig's build system allows pulling arbitrary data with most projects not attaching any branch or version information
    • including the closest version to the commit can be misleading in regards to what is actually contained in the software
    • there is no good way to encode commit version in semver(-compatible) version format without breaking comparisons
    • provides using commit hashes have already been established by at least chromium and by the automatically generated golang bundles, which may use a shortened commit hash

Overall I don't agree with the changes made so I'll reject this PR for now.

Are you interested in collaborating or submitting to fedora review for packaging in the official repos?

I'm not interested in working together but feel free to pull anything you need from my spec file.

Pull-Request has been closed by sentry

3 months ago
Metadata