From a74a5c78fd17a925018fa26ab037fc1c1f4e3582 Mon Sep 17 00:00:00 2001 From: sund3RRR Date: Sat, 1 Feb 2025 10:55:57 +0300 Subject: [PATCH 1/2] rtfm: 0.5.0 -> 0.6.0 --- .../rt/rtfm/enable-write-permissions.patch | 10 -- pkgs/by-name/rt/rtfm/make.patch | 39 ------ pkgs/by-name/rt/rtfm/package.nix | 127 +++++++++++------- pkgs/by-name/rt/rtfm/shards.nix | 14 +- 4 files changed, 85 insertions(+), 105 deletions(-) delete mode 100644 pkgs/by-name/rt/rtfm/enable-write-permissions.patch delete mode 100644 pkgs/by-name/rt/rtfm/make.patch diff --git a/pkgs/by-name/rt/rtfm/enable-write-permissions.patch b/pkgs/by-name/rt/rtfm/enable-write-permissions.patch deleted file mode 100644 index 8023d647f782..000000000000 --- a/pkgs/by-name/rt/rtfm/enable-write-permissions.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/src/doc2dash/docset_builder.cr 2024-04-20 10:45:32.000673168 +0300 -+++ b/src/doc2dash/docset_builder.cr 2024-04-20 10:45:56.072895349 +0300 -@@ -44,6 +44,7 @@ - real_dest = @html_dest.join(dest || source) - Dir.mkdir_p(Path.new(real_dest).dirname) - File.copy(original, real_dest) -+ File.chmod(real_dest, 0o600) - dest || source - end - diff --git a/pkgs/by-name/rt/rtfm/make.patch b/pkgs/by-name/rt/rtfm/make.patch deleted file mode 100644 index 40f327193deb..000000000000 --- a/pkgs/by-name/rt/rtfm/make.patch +++ /dev/null @@ -1,39 +0,0 @@ ---- a/Makefile 2024-04-20 10:28:36.697545022 +0300 -+++ b/Makefile 2024-04-20 10:37:55.591657540 +0300 -@@ -7,8 +7,10 @@ - shards build --debug -Dpreview_mt - - configure: -- shards install -- ./bin/gi-crystal -+ mkdir bin/ -+ cd lib/gi-crystal && shards build -Dpreview_mt --release --no-debug -+ cd ../.. -+ cp lib/gi-crystal/bin/gi-crystal bin/ && ./bin/gi-crystal - - rtfm: - shards build --release -Dpreview_mt rtfm -@@ -16,10 +18,10 @@ - docsets: crystal-docset gtk-docset - - crystal-docset: -- crystal run src/doc2dash/create_crystal_docset.cr -+ crystal src/doc2dash/create_crystal_docset.cr "@crystal@/share/doc/crystal/api" - - gtk-docset: -- crystal run src/doc2dash/create_gtk_docset.cr -+ crystal src/doc2dash/create_gtk_docset.cr "gtk-doc/" - - test: crystal-docset gtk-docset - crystal spec -@@ -28,8 +30,10 @@ - install -D -m 0755 bin/rtfm $(DESTDIR)$(PREFIX)/bin/rtfm - install -D -m 0644 data/io.github.hugopl.rtfm.desktop $(DESTDIR)$(PREFIX)/share/applications/io.github.hugopl.rtfm.desktop - install -D -m 0644 data/icons/hicolor/scalable/apps/io.github.hugopl.rtfm.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/io.github.hugopl.rtfm.svg -+ gtk4-update-icon-cache --ignore-theme-index $(PREFIX)/share/icons/hicolor - # Settings schema - install -D -m644 data/io.github.hugopl.rtfm.gschema.xml $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas/io.github.hugopl.rtfm.gschema.xml -+ glib-compile-schemas $(DESTDIR)$(PREFIX)/share/glib-2.0/schemas - # docsets - mkdir -p $(DESTDIR)$(PREFIX)/share/rtfm/docsets/ - cp -r data/Crystal.docset $(DESTDIR)$(PREFIX)/share/rtfm/docsets/ diff --git a/pkgs/by-name/rt/rtfm/package.nix b/pkgs/by-name/rt/rtfm/package.nix index 3bf066ff18f0..451cfb15b423 100644 --- a/pkgs/by-name/rt/rtfm/package.nix +++ b/pkgs/by-name/rt/rtfm/package.nix @@ -2,7 +2,7 @@ stdenv, lib, fetchFromGitHub, - crystal, + crystal_1_14, wrapGAppsHook4, gobject-introspection, desktopToDarwinBundle, @@ -10,45 +10,67 @@ sqlite, libadwaita, gtk4, + glib, pango, - replaceVars, + symlinkJoin, + gitUpdater, + _experimental-update-script-combinators, + runCommand, + crystal2nix, + writeShellScript, }: let - gtk4' = gtk4.override { x11Support = true; }; - pango' = pango.override { withIntrospection = true; }; -in -crystal.buildCrystalPackage rec { - pname = "rtfm"; - version = "0.5.0"; + version = "0.6.0"; src = fetchFromGitHub { owner = "hugopl"; repo = "rtfm"; - rev = "v${version}"; - name = "rtfm"; - hash = "sha256-+s7KXl3+j/BaneOBqVAMJJhmrG6xtcGaHhYnMvUfiVA="; + tag = "v${version}"; + hash = "sha256-KuxGQs7TPn2Lmgk/NjfoRsBtkTY0GC/DOUlQZXCdRXE="; }; - patches = [ - # 1) fixed gi-crystal binding generator command - # 2) fixed docset generator command - # 3) added commands to build gschemas and update icon-cache - (replaceVars ./make.patch { - inherit crystal; - }) - # added chmod +w for copied docs to prevent error: - # `Error opening file with mode 'wb': '.../style.css': Permission denied` - ./enable-write-permissions.patch - ]; - - postPatch = '' - substituteInPlace src/doc2dash/create_gtk_docset.cr \ - --replace-fail 'basedir = Path.new("/usr/share/doc")' 'basedir = Path.new(ARGV[0]? || "gtk-docs")' - ''; + gtk-doc = + let + gtk4' = gtk4.override { x11Support = true; }; + pango' = pango.override { withIntrospection = true; }; + in + symlinkJoin { + name = "gtk-doc"; + paths = [ + gtk4'.devdoc + pango'.devdoc + glib.devdoc + libadwaita.devdoc + webkitgtk_6_0.devdoc + ]; + }; +in +crystal_1_14.buildCrystalPackage { + pname = "rtfm"; + inherit version src; shardsFile = ./shards.nix; copyShardDeps = true; + postPatch = '' + substituteInPlace src/doc2dash/create_gtk_docset.cr \ + --replace-fail 'basedir = Path.new("/usr/share/doc")' 'basedir = Path.new(ARGV[0]? || "${gtk-doc}/share/doc")' \ + --replace-fail 'webkit2gtk-4.0' 'webkitgtk-6.0' + substituteInPlace src/doc2dash/create_crystal_docset.cr \ + --replace-fail 'doc_source = Path.new(ARGV[0]? || "/usr/share/doc/crystal/api")' 'doc_source = Path.new(ARGV[0]? || "${crystal_1_14}/share/doc/crystal/api")' + substituteInPlace src/doc2dash/docset_builder.cr \ + --replace-fail 'File.copy(original, real_dest)' 'File.copy(original, real_dest); File.chmod(real_dest, 0o600)' + substituteInPlace Makefile \ + --replace-fail 'shards install' 'true' + ''; + + preBuild = '' + cd lib/gi-crystal && shards build -Dpreview_mt --release --no-debug + cd ../.. && mkdir bin/ && cp lib/gi-crystal/bin/gi-crystal bin/ + ''; + + buildTargets = [ "all" ]; + nativeBuildInputs = [ wrapGAppsHook4 gobject-introspection @@ -58,37 +80,44 @@ crystal.buildCrystalPackage rec { webkitgtk_6_0 sqlite libadwaita - gtk4' - pango' + gtk4 + pango ]; - buildTargets = [ - "configure" - "rtfm" - "docsets" - ]; - - preBuild = '' - mkdir gtk-doc/ - - for file in "${gtk4'.devdoc}"/share/doc/*; do - ln -s "$file" "gtk-doc/$(basename "$file")" - done - - for file in "${pango'.devdoc}"/share/doc/*; do - ln -s "$file" "gtk-doc/$(basename "$file")" - done - - for file in "${libadwaita.devdoc}"/share/doc/*; do - ln -s "$file" "gtk-doc/$(basename "$file")" - done + postInstall = '' + glib-compile-schemas $out/share/glib-2.0/schemas ''; + passthru = { + updateScript = _experimental-update-script-combinators.sequence [ + (gitUpdater { rev-prefix = "v"; }) + (_experimental-update-script-combinators.copyAttrOutputToFile "rtfm.shardLock" "./shard.lock") + { + command = [ + (writeShellScript "update-lock" "cd $1; ${lib.getExe crystal2nix}") + ./. + ]; + supportedFeatures = [ "silent" ]; + } + { + command = [ + "rm" + "./shard.lock" + ]; + supportedFeatures = [ "silent" ]; + } + ]; + shardLock = runCommand "shard.lock" { inherit src; } '' + cp $src/shard.lock $out + ''; + }; + meta = with lib; { description = "Dash/docset reader with built in documentation for Crystal and GTK APIs"; homepage = "https://github.com/hugopl/rtfm/"; license = licenses.mit; mainProgram = "rtfm"; maintainers = with maintainers; [ sund3RRR ]; + platforms = platforms.unix; }; } diff --git a/pkgs/by-name/rt/rtfm/shards.nix b/pkgs/by-name/rt/rtfm/shards.nix index 79a2eeb2f0db..9fbf14f6e297 100644 --- a/pkgs/by-name/rt/rtfm/shards.nix +++ b/pkgs/by-name/rt/rtfm/shards.nix @@ -6,18 +6,18 @@ }; fzy = { url = "https://github.com/hugopl/fzy.git"; - rev = "6c2395bcdea1889969d0d08c16163c276fe4e473"; - sha256 = "0vpradafkwckfsq7wqrgkpsli7bfmgc27d38q06l1jzq0z0j92rw"; + rev = "v0.6.0"; + sha256 = "1mpw3ridzvqkf807wik6wzwpzcsk0075kifagsfnz38vx1mw2y55"; }; gi-crystal = { url = "https://github.com/hugopl/gi-crystal.git"; - rev = "v0.22.2"; - sha256 = "0bpa1f8iaf97z2kbgjc7nc8km7nd7bppiwna319lm2hvm8m5pw15"; + rev = "v0.24.0"; + sha256 = "0x356xn35008l573qhyl1sdddc9cc5i3bsa4c7865kgq9521ifyh"; }; gtk4 = { url = "https://github.com/hugopl/gtk4.cr.git"; - rev = "v0.16.1"; - sha256 = "1cqkbh072y70l8g0p040vf50k920p32ry1larnwn9mqabd74jwaj"; + rev = "v0.17.0"; + sha256 = "0lv3nvsanxi4g2322zvkf1jxx5zgzaapk228vcw2cl0ja1drm06d"; }; harfbuzz = { url = "https://github.com/hugopl/harfbuzz.cr.git"; @@ -25,7 +25,7 @@ sha256 = "06wgqxwyib5416yp53j2iwcbr3bl4jjxb1flm7z103l365par694"; }; libadwaita = { - url = "https://github.com/geopjr/libadwaita.cr.git"; + url = "https://github.com/hugopl/libadwaita.cr.git"; rev = "cffabb56e911d2a90c53c2fd14d6bd08bf5ac446"; sha256 = "0gcq04vgxg0vff9fcalgzq9phq0y76diihkzhlfn91bdxwkx7rl3"; }; From e6f734247301dc03507307ab1064be8a3d3c3e57 Mon Sep 17 00:00:00 2001 From: Sandro Date: Wed, 5 Feb 2025 11:47:10 +0100 Subject: [PATCH 2/2] rtfm: write preBuild onto multiple lines --- pkgs/by-name/rt/rtfm/package.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/rt/rtfm/package.nix b/pkgs/by-name/rt/rtfm/package.nix index 451cfb15b423..bf5856c57ba5 100644 --- a/pkgs/by-name/rt/rtfm/package.nix +++ b/pkgs/by-name/rt/rtfm/package.nix @@ -65,8 +65,11 @@ crystal_1_14.buildCrystalPackage { ''; preBuild = '' - cd lib/gi-crystal && shards build -Dpreview_mt --release --no-debug - cd ../.. && mkdir bin/ && cp lib/gi-crystal/bin/gi-crystal bin/ + cd lib/gi-crystal + shards build -Dpreview_mt --release --no-debug + cd ../.. + mkdir bin/ + cp lib/gi-crystal/bin/gi-crystal bin/ ''; buildTargets = [ "all" ];