Unverified Commit 725bc533 authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

rtfm: 0.5.0 -> 0.6.0 (#378466)

parents 65b8ed6b e6f73424
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
--- 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
 

pkgs/by-name/rt/rtfm/make.patch

deleted100644 → 0
+0 −39
Original line number Diff line number Diff line
--- 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/
+79 −47
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
  stdenv,
  lib,
  fetchFromGitHub,
  crystal,
  crystal_1_14,
  wrapGAppsHook4,
  gobject-introspection,
  desktopToDarwinBundle,
@@ -10,44 +10,69 @@
  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
  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-docs")'
      --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'
  '';

  shardsFile = ./shards.nix;
  copyShardDeps = 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
@@ -58,31 +83,37 @@ crystal.buildCrystalPackage rec {
    webkitgtk_6_0
    sqlite
    libadwaita
    gtk4'
    pango'
  ];

  buildTargets = [
    "configure"
    "rtfm"
    "docsets"
    gtk4
    pango
  ];

  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
  postInstall = ''
    glib-compile-schemas $out/share/glib-2.0/schemas
  '';

    for file in "${libadwaita.devdoc}"/share/doc/*; do
      ln -s "$file" "gtk-doc/$(basename "$file")"
    done
  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";
@@ -90,5 +121,6 @@ crystal.buildCrystalPackage rec {
    license = licenses.mit;
    mainProgram = "rtfm";
    maintainers = with maintainers; [ sund3RRR ];
    platforms = platforms.unix;
  };
}
+7 −7
Original line number Diff line number Diff line
@@ -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";
  };