diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/typesetting')
5 files changed, 125 insertions, 46 deletions
diff --git a/nixpkgs/pkgs/tools/typesetting/asciidoctor/Gemfile b/nixpkgs/pkgs/tools/typesetting/asciidoctor/Gemfile index 4edebabc4cdd..f9329a80a815 100644 --- a/nixpkgs/pkgs/tools/typesetting/asciidoctor/Gemfile +++ b/nixpkgs/pkgs/tools/typesetting/asciidoctor/Gemfile @@ -2,6 +2,8 @@ source 'https://rubygems.org' gem 'asciidoctor' gem 'asciidoctor-diagram' gem 'asciidoctor-pdf' +gem 'asciidoctor-epub3' gem 'asciidoctor-mathematical' gem 'coderay' gem 'pygments.rb' +gem 'rouge' diff --git a/nixpkgs/pkgs/tools/typesetting/asciidoctor/Gemfile.lock b/nixpkgs/pkgs/tools/typesetting/asciidoctor/Gemfile.lock index 7416bd0268e2..02081e117d6e 100644 --- a/nixpkgs/pkgs/tools/typesetting/asciidoctor/Gemfile.lock +++ b/nixpkgs/pkgs/tools/typesetting/asciidoctor/Gemfile.lock @@ -8,6 +8,11 @@ GEM asciidoctor (2.0.10) asciidoctor-diagram (1.5.18) asciidoctor (>= 1.5.0, < 3.x) + asciidoctor-epub3 (1.5.0.alpha.9) + asciidoctor (>= 1.5.0, < 3.0.0) + concurrent-ruby (~> 1.1.5) + gepub (~> 1.0.2) + thread_safe (~> 0.3.6) asciidoctor-mathematical (0.3.0) asciidoctor (~> 2.0, >= 2.0.0) mathematical (~> 1.5, >= 1.5.8) @@ -27,12 +32,18 @@ GEM concurrent-ruby (1.1.5) css_parser (1.7.0) addressable + gepub (1.0.4) + nokogiri (>= 1.8.2, < 1.11) + rubyzip (>= 1.1.1) hashery (2.1.2) i18n (1.6.0) concurrent-ruby (~> 1.0) mathematical (1.6.12) ruby-enum (~> 0.4) + mini_portile2 (2.4.0) multi_json (1.13.1) + nokogiri (1.10.3) + mini_portile2 (~> 2.4.0) pdf-core (0.7.0) pdf-reader (2.2.0) Ascii85 (~> 1.0.0) @@ -54,12 +65,14 @@ GEM prawn-templates (0.1.1) pdf-reader (~> 2.0) prawn (~> 2.2) - public_suffix (3.1.0) + public_suffix (3.1.1) pygments.rb (1.2.1) multi_json (>= 1.0.0) + rouge (3.5.1) ruby-enum (0.7.2) i18n ruby-rc4 (0.1.5) + rubyzip (1.2.3) safe_yaml (1.0.5) thread_safe (0.3.6) treetop (1.5.3) @@ -72,10 +85,12 @@ PLATFORMS DEPENDENCIES asciidoctor asciidoctor-diagram + asciidoctor-epub3 asciidoctor-mathematical asciidoctor-pdf coderay pygments.rb + rouge BUNDLED WITH 1.17.2 diff --git a/nixpkgs/pkgs/tools/typesetting/asciidoctor/default.nix b/nixpkgs/pkgs/tools/typesetting/asciidoctor/default.nix index 760cc41609e5..2f1c7e461545 100644 --- a/nixpkgs/pkgs/tools/typesetting/asciidoctor/default.nix +++ b/nixpkgs/pkgs/tools/typesetting/asciidoctor/default.nix @@ -1,53 +1,46 @@ -{ stdenv, lib, bundlerApp, ruby - # Dependencies of the 'mathematical' package -, cmake, bison, flex, glib, pkgconfig, cairo -, pango, gdk_pixbuf, libxml2, python3, patchelf +{ lib, bundlerApp, makeWrapper, + # Optional dependencies, can be null + epubcheck, kindlegen, + # For the update shell + mkShell, bundix }: -bundlerApp { - inherit ruby; - pname = "asciidoctor"; - gemdir = ./.; +let + app = bundlerApp { + pname = "asciidoctor"; + gemdir = ./.; - exes = [ - "asciidoctor" - "asciidoctor-pdf" - "asciidoctor-safe" - ]; + exes = [ + "asciidoctor" + "asciidoctor-pdf" + "asciidoctor-safe" + "asciidoctor-epub3" + ]; - gemConfig = { - mathematical = attrs: { - buildInputs = [ - cmake - bison - flex - glib - pkgconfig - cairo - pango - gdk_pixbuf - libxml2 - python3 - ]; + buildInputs = [ makeWrapper ]; - # The ruby build script takes care of this - dontUseCmakeConfigure = true; - - # For some reason 'mathematical.so' is missing cairo and glib in its RPATH, add them explicitly here - postFixup = lib.optionalString stdenv.isLinux '' - soPath="$out/${ruby.gemPath}/gems/mathematical-${attrs.version}/lib/mathematical/mathematical.so" - ${patchelf}/bin/patchelf \ - --set-rpath "${lib.makeLibraryPath [ glib cairo ]}:$(${patchelf}/bin/patchelf --print-rpath "$soPath")" \ - "$soPath" + postBuild = '' + wrapProgram "$out/bin/asciidoctor-epub3" \ + ${lib.optionalString (epubcheck != null) "--set EPUBCHECK ${epubcheck}/bin/epubcheck"} \ + ${lib.optionalString (kindlegen != null) "--set KINDLEGEN ${kindlegen}/bin/kindlegen"} ''; + + passthru = { + inherit updateShell; + }; + + meta = with lib; { + description = "A faster Asciidoc processor written in Ruby"; + homepage = https://asciidoctor.org/; + license = licenses.mit; + maintainers = with maintainers; [ gpyh ]; + platforms = platforms.unix; }; }; - meta = with lib; { - description = "A faster Asciidoc processor written in Ruby"; - homepage = https://asciidoctor.org/; - license = licenses.mit; - maintainers = with maintainers; [ gpyh ]; - platforms = platforms.unix; + updateShell = mkShell { + inputsFrom = lib.attrValues app.gems; + buildInputs = [ bundix ]; }; -} +in + app diff --git a/nixpkgs/pkgs/tools/typesetting/asciidoctor/gemset.nix b/nixpkgs/pkgs/tools/typesetting/asciidoctor/gemset.nix index aef9061e1302..02700962eb28 100644 --- a/nixpkgs/pkgs/tools/typesetting/asciidoctor/gemset.nix +++ b/nixpkgs/pkgs/tools/typesetting/asciidoctor/gemset.nix @@ -51,6 +51,17 @@ }; version = "1.5.18"; }; + asciidoctor-epub3 = { + dependencies = ["asciidoctor" "concurrent-ruby" "gepub" "thread_safe"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "056yp0z64b1fhhkzz2kaiqsd11gpbgx2d1yjgq7cqma9c70bbxa5"; + type = "gem"; + }; + version = "1.5.0.alpha.9"; + }; asciidoctor-mathematical = { dependencies = ["asciidoctor" "mathematical" "ruby-enum"]; groups = ["default"]; @@ -104,6 +115,17 @@ }; version = "1.7.0"; }; + gepub = { + dependencies = ["nokogiri" "rubyzip"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1kg2h0mscb2hq6l3wjzq5fp5vw4552nglq8n9pawm7bzacf1gzyf"; + type = "gem"; + }; + version = "1.0.4"; + }; hashery = { groups = ["default"]; platforms = []; @@ -136,6 +158,16 @@ }; version = "1.6.12"; }; + mini_portile2 = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15zplpfw3knqifj9bpf604rb3wc1vhq6363pd6lvhayng8wql5vy"; + type = "gem"; + }; + version = "2.4.0"; + }; multi_json = { groups = ["default"]; platforms = []; @@ -146,6 +178,17 @@ }; version = "1.13.1"; }; + nokogiri = { + dependencies = ["mini_portile2"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "02bjydih0j515szfv9mls195cvpyidh6ixm7dwbl3s2sbaxxk5s4"; + type = "gem"; + }; + version = "1.10.3"; + }; pdf-core = { groups = ["default"]; platforms = []; @@ -237,10 +280,10 @@ platforms = []; source = { remotes = ["https://rubygems.org"]; - sha256 = "1c7c5xxkx91hwj4572hbnyvxmydb90q69wlpr2l0dxrmwx2p365l"; + sha256 = "0g9ds2ffzljl6jjmkjffwxc1z6lh5nkqqmhhkxjk71q5ggv0rkpm"; type = "gem"; }; - version = "3.1.0"; + version = "3.1.1"; }; "pygments.rb" = { dependencies = ["multi_json"]; @@ -253,6 +296,16 @@ }; version = "1.2.1"; }; + rouge = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0yfhazlhjc4abgzhkgq8zqmdphvkh52211widkl4zhsbhqh8wg2q"; + type = "gem"; + }; + version = "3.5.1"; + }; ruby-enum = { dependencies = ["i18n"]; groups = ["default"]; @@ -274,6 +327,16 @@ }; version = "0.1.5"; }; + rubyzip = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1w9gw28ly3zyqydnm8phxchf4ymyjl2r7zf7c12z8kla10cpmhlc"; + type = "gem"; + }; + version = "1.2.3"; + }; safe_yaml = { groups = ["default"]; platforms = []; diff --git a/nixpkgs/pkgs/tools/typesetting/asciidoctor/update.sh b/nixpkgs/pkgs/tools/typesetting/asciidoctor/update.sh new file mode 100755 index 000000000000..1f7e5541ceec --- /dev/null +++ b/nixpkgs/pkgs/tools/typesetting/asciidoctor/update.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +nix-shell ../../../.. -A asciidoctor.updateShell --run ' + rm gemset.nix Gemfile.lock + bundix -m --bundle-pack-path $TMPDIR/asciidoctor-ruby-bundle + rm -r .bundle +' |