Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

asciidoc: 9.1.0 -> 10.2.0 #179254

Merged
merged 3 commits into from
Jun 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions pkgs/development/libraries/libjxl/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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 = [
Expand Down
181 changes: 69 additions & 112 deletions pkgs/tools/typesetting/asciidoc/default.nix
Original file line number Diff line number Diff line change
@@ -1,39 +1,39 @@
{ fetchurl, lib, stdenv, python3
, 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
# TODO: Package this:
#, 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
Expand All @@ -44,38 +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) &&
# TODO: Package this:
# 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;
Expand Down Expand Up @@ -144,26 +112,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; ''
Expand Down Expand Up @@ -230,22 +196,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
Expand All @@ -260,55 +226,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 = ''
SuperSandro2000 marked this conversation as resolved.
Show resolved Hide resolved
make manpages
'';

postInstall = ''
SuperSandro2000 marked this conversation as resolved.
Show resolved Hide resolved
installManPage doc/asciidoc.1 doc/a2x.1 doc/testasciidoc.1
'';

checkInputs = with python3.pkgs; [
pytest
pytest-mock
];

checkInputs = [ sourceHighlight ];
doCheck = true;
checkPhase = ''
dotlambda marked this conversation as resolved.
Show resolved Hide resolved
runHook preCheck

make test

runHook postCheck
'';

meta = with lib; {
description = "Text-based document generation system";
Expand All @@ -325,9 +281,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 ];
};
}
10 changes: 3 additions & 7 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
Expand Down