From 919e04f5d75773bfd8c1b8f76ce1cf030bcd8d68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Sun, 26 Jun 2022 19:54:24 +0000 Subject: [PATCH 1/3] asciidoc: 9.1.0 -> 10.2.0 https://github.com/asciidoc-py/asciidoc-py/blob/10.2.0/CHANGELOG.adoc --- pkgs/tools/typesetting/asciidoc/default.nix | 102 +++++++++----------- 1 file changed, 45 insertions(+), 57 deletions(-) diff --git a/pkgs/tools/typesetting/asciidoc/default.nix b/pkgs/tools/typesetting/asciidoc/default.nix index ed07c5588fe..4c3fe291831 100644 --- a/pkgs/tools/typesetting/asciidoc/default.nix +++ b/pkgs/tools/typesetting/asciidoc/default.nix @@ -1,5 +1,6 @@ { fetchurl, lib, stdenv, python3 , fetchFromGitHub, autoreconfHook +, installShellFiles , enableStandardFeatures ? false , sourceHighlight ? null , highlight ? null @@ -17,8 +18,7 @@ , docbook_xsl_ns ? null , docbook_xsl ? null , fop ? null -# TODO: Package this: -#, epubcheck ? null +, epubcheck ? null , gnused ? null , coreutils ? null @@ -61,8 +61,7 @@ assert enableStandardFeatures -> docbook_xsl_ns != null && docbook_xsl != null && (fop != null || !enableJava) && -# TODO: Package this: -# epubcheck != null && + epubcheck != null && gnused != null && coreutils != null; @@ -144,26 +143,24 @@ let sha256 = "08ya4bskygzqkfqwjllpg31qc5k08xp2k78z9b2480g8y57bfy10"; }; -in - -stdenv.mkDerivation rec { +in python3.pkgs.buildPythonApplication rec { pname = "asciidoc" + lib.optionalString enableStandardFeatures "-full" + lib.optionalString enableExtraPlugins "-with-plugins"; - version = "9.1.0"; + version = "10.2.0"; - # Note: a substitution to improve reproducibility should be updated once 10.0.0 is - # released. See the comment in `patchPhase` for more information. src = fetchFromGitHub { - owner = "asciidoc"; - repo = "asciidoc-py3"; + owner = "asciidoc-py"; + repo = "asciidoc-py"; rev = version; - sha256 = "1clf1axkns23wfmh48xfspzsnw04pjh4mq1pshpzvj0cwxhz0yaq"; + hash = "sha256-TqC0x9xB6e2d6Wc9bgnlqgZVOmYHmUUKfE/CKAiEtag="; }; - strictDeps = true; - nativeBuildInputs = [ python3 unzip autoreconfHook ]; - buildInputs = [ python3 ]; + nativeBuildInputs = [ + autoreconfHook + installShellFiles + unzip + ]; # install filters early, so their shebangs are patched too postPatch = with lib; '' @@ -230,22 +227,22 @@ stdenv.mkDerivation rec { -e "s|twopi|${graphviz}/bin/twopi|g" \ -e "s|circo|${graphviz}/bin/circo|g" \ -e "s|fdp|${graphviz}/bin/fdp|g" \ - -i "filters/graphviz/graphviz2png.py" + -i "asciidoc/resources/filters/graphviz/graphviz2png.py" sed -e "s|run('latex|run('${texlive}/bin/latex|g" \ -e "s|cmd = 'dvipng'|cmd = '${texlive}/bin/dvipng'|g" \ -e "s|cmd = 'dvisvgm'|cmd = '${texlive}/bin/dvisvgm'|g" \ - -i "filters/latex/latex2img.py" + -i "asciidoc/resources/filters/latex/latex2img.py" sed -e "s|run('abc2ly|run('${lilypond}/bin/abc2ly|g" \ -e "s|run('lilypond|run('${lilypond}/bin/lilypond|g" \ -e "s|run('convert|run('${imagemagick.out}/bin/convert|g" \ - -i "filters/music/music2png.py" + -i "asciidoc/resources/filters/music/music2png.py" sed -e 's|filter="source-highlight|filter="${sourceHighlight}/bin/source-highlight|' \ -e 's|filter="highlight|filter="${highlight}/bin/highlight|' \ -e 's|filter="pygmentize|filter="${pygments}/bin/pygmentize|' \ - -i "filters/source/source-highlight-filter.conf" + -i "asciidoc/resources/filters/source/source-highlight-filter.conf" # ENV is custom environment passed to programs that a2x invokes. Here we # use it to work around an impurity in the tetex package; tetex tools @@ -260,55 +257,45 @@ stdenv.mkDerivation rec { -e "s|^W3M =.*|W3M = '${w3m}/bin/w3m'|" \ -e "s|^LYNX =.*|LYNX = '${lynx}/bin/lynx'|" \ -e "s|^XMLLINT =.*|XMLLINT = '${libxml2.bin}/bin/xmllint'|" \ - -e "s|^EPUBCHECK =.*|EPUBCHECK = 'nixpkgs_is_missing_epubcheck'|" \ - -i a2x.py + -e "s|^EPUBCHECK =.*|EPUBCHECK = '${epubcheck}/bin/epubcheck'|" \ + -i asciidoc/a2x.py '' else '' sed -e "s|^ENV =.*|ENV = dict(XML_CATALOG_FILES='${docbook_xml_dtd_45}/xml/dtd/docbook/catalog.xml ${docbook_xsl_ns}/xml/xsl/docbook/catalog.xml ${docbook_xsl}/xml/xsl/docbook/catalog.xml')|" \ -e "s|^XSLTPROC =.*|XSLTPROC = '${libxslt.bin}/bin/xsltproc'|" \ -e "s|^XMLLINT =.*|XMLLINT = '${libxml2.bin}/bin/xmllint'|" \ - -i a2x.py + -i asciidoc/a2x.py '') + '' - patchShebangs --host \ - asciidoc.py \ - a2x.py \ - tests/testasciidoc.py \ - filters/code/code-filter.py \ - filters/latex/latex2img.py \ - filters/music/music2png.py \ - filters/unwraplatex.py \ - filters/graphviz/graphviz2png.py - - # Hardcode the path to its own asciidoc. - # This helps with cross-compilation. - substituteInPlace a2x.py \ - --replace "find_executable(ASCIIDOC)" "'${placeholder "out"}/bin/asciidoc'" - - # Note: this substitution will not work in the planned 10.0.0 release: - # - # https://github.com/asciidoc/asciidoc-py3/commit/dfffda23381014481cd13e8e9d8f131e1f93f08a - # - # Update this substitution to: - # - # --replace "python3 -m asciidoc.a2x" "python3 -m asciidoc.a2x -a revdate=01/01/1980" - substituteInPlace Makefile.in \ - --replace "python3 a2x.py" "python3 a2x.py -a revdate=01/01/1980" - # Fix tests for f in $(grep -R --files-with-matches "2002-11-25") ; do - substituteInPlace $f --replace "2002-11-25" "1970-01-01" - substituteInPlace $f --replace "00:37:42" "00:00:01" + substituteInPlace $f --replace "2002-11-25" "1980-01-02" + substituteInPlace $f --replace "00:37:42" "00:00:00" done '' + lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' # We want to use asciidoc from the build platform to build the documentation. substituteInPlace Makefile.in \ - --replace "python3 a2x.py" "python3 ${buildPackages.asciidoc}/bin/a2x.py" + --replace "python3 -m asciidoc.a2x" "${buildPackages.asciidoc}/bin/a2x" ''; - preInstall = "mkdir -p $out/etc/vim"; - makeFlags = lib.optional stdenv.isCygwin "DESTDIR=/."; + postBuild = '' + make manpages + ''; - checkInputs = [ sourceHighlight ]; - doCheck = true; + postInstall = '' + installManPage doc/asciidoc.1 doc/a2x.1 doc/testasciidoc.1 + ''; + + checkInputs = with python3.pkgs; [ + pytest + pytest-mock + ]; + + checkPhase = '' + runHook preCheck + + make test + + runHook postCheck + ''; meta = with lib; { description = "Text-based document generation system"; @@ -325,9 +312,10 @@ stdenv.mkDerivation rec { sourceProvenance = with sourceTypes; [ fromSource ] ++ lib.optional _enableDitaaFilter binaryBytecode; - homepage = "http://www.methods.co.nz/asciidoc/"; + homepage = "https://asciidoc-py.github.io/"; + changelog = "https://github.com/asciidoc-py/asciidoc-py/blob/${src.rev}/CHANGELOG.adoc"; license = licenses.gpl2Plus; platforms = platforms.unix; - maintainers = [ maintainers.bjornfor ]; + maintainers = with maintainers; [ bjornfor dotlambda ]; }; } From 601d9db27f32df51461627b0fc8099ea80c98e23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Mon, 27 Jun 2022 19:57:01 +0000 Subject: [PATCH 2/3] asciidoc: get rid of `? null` --- pkgs/tools/typesetting/asciidoc/default.nix | 83 +++++++-------------- pkgs/top-level/all-packages.nix | 10 +-- 2 files changed, 29 insertions(+), 64 deletions(-) diff --git a/pkgs/tools/typesetting/asciidoc/default.nix b/pkgs/tools/typesetting/asciidoc/default.nix index 4c3fe291831..64061c84183 100644 --- a/pkgs/tools/typesetting/asciidoc/default.nix +++ b/pkgs/tools/typesetting/asciidoc/default.nix @@ -2,38 +2,38 @@ , fetchFromGitHub, autoreconfHook , installShellFiles , enableStandardFeatures ? false -, sourceHighlight ? null -, highlight ? null -, pygments ? null -, graphviz ? null -, texlive ? null -, dblatexFull ? null -, libxslt ? null -, w3m ? null -, lynx ? null -, imagemagick ? null -, lilypond ? null -, libxml2 ? null -, docbook_xml_dtd_45 ? null -, docbook_xsl_ns ? null -, docbook_xsl ? null -, fop ? null -, epubcheck ? null -, gnused ? null -, coreutils ? null +, sourceHighlight +, highlight +, pygments +, graphviz +, texlive +, dblatexFull +, libxslt +, w3m +, lynx +, imagemagick +, lilypond +, libxml2 +, docbook_xml_dtd_45 +, docbook_xsl_ns +, docbook_xsl +, fop +, epubcheck +, gnused +, coreutils # if true, enable all the below filters and backends , enableExtraPlugins ? false # unzip is needed to extract filter and backend plugins -, unzip ? null +, unzip # filters -, enableDitaaFilter ? false, jre ? null -, enableMscgenFilter ? false, mscgen ? null -, enableDiagFilter ? false, blockdiag ? null, seqdiag ? null, actdiag ? null, nwdiag ? null -, enableQrcodeFilter ? false, qrencode ? null -, enableMatplotlibFilter ? false, matplotlib ? null, numpy ? null -, enableAafigureFilter ? false, aafigure ? null, recursivePthLoader ? null +, enableDitaaFilter ? false, jre +, enableMscgenFilter ? false, mscgen +, enableDiagFilter ? false, blockdiag, seqdiag, actdiag, nwdiag +, enableQrcodeFilter ? false, qrencode +, enableMatplotlibFilter ? false, matplotlib, numpy +, enableAafigureFilter ? false, aafigure, recursivePthLoader # backends , enableDeckjsBackend ? false , enableOdfBackend ? false @@ -44,37 +44,6 @@ , buildPackages }: -assert enableStandardFeatures -> - sourceHighlight != null && - highlight != null && - pygments != null && - graphviz != null && - texlive != null && - dblatexFull != null && - libxslt != null && - w3m != null && - lynx != null && - imagemagick != null && - lilypond != null && - libxml2 != null && - docbook_xml_dtd_45 != null && - docbook_xsl_ns != null && - docbook_xsl != null && - (fop != null || !enableJava) && - epubcheck != null && - gnused != null && - coreutils != null; - -# filters -assert enableExtraPlugins || enableDitaaFilter || enableMscgenFilter || enableDiagFilter || enableQrcodeFilter || enableAafigureFilter -> unzip != null; -assert (enableExtraPlugins && enableJava) || enableDitaaFilter -> jre != null; -assert enableExtraPlugins || enableMscgenFilter -> mscgen != null; -assert enableExtraPlugins || enableDiagFilter -> blockdiag != null && seqdiag != null && actdiag != null && nwdiag != null; -assert enableExtraPlugins || enableMatplotlibFilter -> matplotlib != null && numpy != null; -assert enableExtraPlugins || enableAafigureFilter -> aafigure != null && recursivePthLoader != null; -# backends -assert enableExtraPlugins || enableDeckjsBackend || enableOdfBackend -> unzip != null; - let _enableDitaaFilter = (enableExtraPlugins && enableJava) || enableDitaaFilter; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 94027a050a8..9617aa4bac5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4470,21 +4470,17 @@ with pkgs; arpoison = callPackage ../tools/networking/arpoison { }; asciidoc = callPackage ../tools/typesetting/asciidoc { - inherit (python3.pkgs) matplotlib numpy aafigure recursivePthLoader; + inherit (python3.pkgs) pygments matplotlib numpy aafigure recursivePthLoader; + texlive = texlive.combine { inherit (texlive) scheme-minimal dvipng; }; + w3m = w3m-batch; enableStandardFeatures = false; }; asciidoc-full = asciidoc.override { - inherit (python3.pkgs) pygments; - texlive = texlive.combine { inherit (texlive) scheme-minimal dvipng; }; - w3m = w3m-batch; enableStandardFeatures = true; }; asciidoc-full-with-plugins = asciidoc.override { - inherit (python3.pkgs) pygments; - texlive = texlive.combine { inherit (texlive) scheme-minimal dvipng; }; - w3m = w3m-batch; enableStandardFeatures = true; enableExtraPlugins = true; }; From 77454bd32bcf84ba38c4b6e0f460a3e83ffbcfdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Tue, 28 Jun 2022 18:15:01 +0000 Subject: [PATCH 3/3] libjxl: fix build with asciidoc wrapped in shell script --- pkgs/development/libraries/libjxl/default.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pkgs/development/libraries/libjxl/default.nix b/pkgs/development/libraries/libjxl/default.nix index 049d79c7025..89cab874090 100644 --- a/pkgs/development/libraries/libjxl/default.nix +++ b/pkgs/development/libraries/libjxl/default.nix @@ -47,6 +47,17 @@ stdenv.mkDerivation rec { url = "https://github.com/libjxl/libjxl/commit/204f87a5e4d684544b13900109abf040dc0b402b.patch"; sha256 = "sha256-DoAaYWLmQ+R9GZbHMTYGe0gBL9ZesgtB+2WhmbARna8="; }) + + # fix build with asciidoc wrapped in shell script + (fetchpatch { + url = "https://github.com/libjxl/libjxl/commit/b8ec58c58c6281987f42ebec892f513824c0cc0e.patch"; + hash = "sha256-g8U+YVhLfgSHJ+PWJgvVOI66+FElJSC8IgSRodNnsMw="; + }) + (fetchpatch { + url = "https://github.com/libjxl/libjxl/commit/ca8e276aacf63a752346a6a44ba673b0af993237.patch"; + excludes = [ "AUTHORS" ]; + hash = "sha256-9VXy1LdJ0JhYbCGPNMySpnGLBxUrr8BYzE+oU3LnUGw="; + }) ]; nativeBuildInputs = [