rtfm: 0.5.0 -> 0.6.0 (#378466)

This commit is contained in:
Sandro
2025-02-05 13:49:18 +01:00
committed by GitHub
4 changed files with 88 additions and 105 deletions
@@ -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
-39
View File
@@ -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/
+81 -49
View File
@@ -2,7 +2,7 @@
stdenv,
lib,
fetchFromGitHub,
crystal,
crystal_1_14,
wrapGAppsHook4,
gobject-introspection,
desktopToDarwinBundle,
@@ -10,45 +10,70 @@
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 +83,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;
};
}
+7 -7
View File
@@ -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";
};