diff --git a/ditaa.spec b/ditaa.spec index 7941aa6..0fe7aac 100644 --- a/ditaa.spec +++ b/ditaa.spec @@ -1,15 +1,20 @@ Summary: Diagrams Through ASCII Art Name: ditaa Version: 0.10 -Release: 8.1%{?dist} -License: GPLv2+ +Release: 30%{?dist} +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later URL: http://ditaa.sourceforge.net/ Source0: https://github.com/stathissideris/ditaa/archive/v%{version}.tar.gz Source1: ditaa.wrapper Patch0: ditaa-0.9-port-to-batik-1.8.patch +# Patch from Debian to build with JDK 10+ +Patch1: https://sources.debian.org/data/main/d/ditaa/0.10+ds1-1.2/debian/patches/remove-JavadocTaglet.patch +Patch2: jdk17.patch BuildArch: noarch -BuildRequires: java-devel >= 1:1.6.0 -BuildRequires: ant +ExclusiveArch: %{java_arches} noarch +BuildRequires: java-25-devel >= 1:1.6.0 +BuildRequires: ant-openjdk25 BuildRequires: jpackage-utils BuildRequires: batik BuildRequires: jericho-html @@ -20,7 +25,7 @@ Requires: xml-commons-apis Requires: jericho-html Requires: batik Requires: jpackage-utils -Requires: java-headless >= 1:1.6.0 +Requires: java-25-headless >= 1:1.6.0 %description ditaa is a small command-line utility written in Java, that can @@ -29,8 +34,7 @@ characters that resemble lines like | / - ), into proper bitmap graphics. %prep -%setup -q -%patch0 -p1 +%autosetup -p1 find -name '*.class' -delete find -name '*.jar' -delete @@ -49,8 +53,71 @@ install -D -p -m 0755 %{SOURCE1} %{buildroot}%{_bindir}/%{name} %{_javadir}/%{name}.jar %changelog -* Sat Jul 25 2020 Terje Rosten - 0.10-8.1 -- Rebuild +* Mon Jul 28 2025 jiri vanek - 0.10-30 +- Rebuilt for java-25-openjdk as preffered jdk + +* Wed Jul 23 2025 Fedora Release Engineering - 0.10-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 16 2025 Fedora Release Engineering - 0.10-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Jul 25 2024 Miroslav Suchý - 0.10-27 +- convert license to SPDX + +* Wed Jul 17 2024 Fedora Release Engineering - 0.10-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Mon Jul 01 2024 Terje Rosten - 0.10-25 +- Use autosetup macro + +* Tue Feb 27 2024 Jiri Vanek - 0.10-24 +- Rebuilt for java-21-openjdk as system jdk + +* Wed Jan 24 2024 Fedora Release Engineering - 0.10-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 0.10-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 19 2023 Fedora Release Engineering - 0.10-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jan 19 2023 Fedora Release Engineering - 0.10-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Jul 21 2022 Fedora Release Engineering - 0.10-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Fri Jul 08 2022 Jiri Vanek - 0.10-18 +- Rebuilt for Drop i686 JDKs + +* Sat Feb 05 2022 Jiri Vanek - 0.10-17 +- changed bytecode level to 8 + +* Sat Feb 05 2022 Jiri Vanek - 0.10-16 +- Rebuilt for java-17-openjdk as system jdk + +* Thu Jan 20 2022 Fedora Release Engineering - 0.10-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 0.10-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jan 26 2021 Fedora Release Engineering - 0.10-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 0.10-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Sun Jul 19 2020 Terje Rosten - 0.10-11 +- Add patch from Debian to build with JDK 10+ + +* Fri Jul 10 2020 Jiri Vanek - 0.10-10 +- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 + +* Tue Jan 28 2020 Fedora Release Engineering - 0.10-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild * Wed Jul 24 2019 Fedora Release Engineering - 0.10-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild diff --git a/jdk17.patch b/jdk17.patch new file mode 100644 index 0000000..82472b6 --- /dev/null +++ b/jdk17.patch @@ -0,0 +1,12 @@ +--- a/build/release.xml ++++ a/build/release.xml +@@ -35,7 +35,7 @@ + + + +- ++ + + + + diff --git a/remove-JavadocTaglet.patch b/remove-JavadocTaglet.patch new file mode 100644 index 0000000..996d809 --- /dev/null +++ b/remove-JavadocTaglet.patch @@ -0,0 +1,345 @@ +From: Markus Koschany +Date: Wed, 13 Jun 2018 22:58:25 +0200 +Subject: remove JavadocTaglet + +Remove JavadocTaglet class because the Taglet class has been removed in +Java 10. + +Bug-Debian: https://bugs.debian.org/897494 +--- + .../ascii2image/core/JavadocTaglet.java | 326 --------------------- + 1 file changed, 326 deletions(-) + delete mode 100644 src/org/stathissideris/ascii2image/core/JavadocTaglet.java + +diff --git a/src/org/stathissideris/ascii2image/core/JavadocTaglet.java b/src/org/stathissideris/ascii2image/core/JavadocTaglet.java +deleted file mode 100644 +index f1642ef..0000000 +--- a/src/org/stathissideris/ascii2image/core/JavadocTaglet.java ++++ /dev/null +@@ -1,326 +0,0 @@ +-/* +- * Text Diagram Taglet +- * +- * Copyright (C) 2006 Nordic Growth Market NGM AB, +- * Mikael Brannstrom. +- * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. +- * +- * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +- * GNU General Public License for more details. +- * +- * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +- * +- */ +-package org.stathissideris.ascii2image.core; +- +-import com.sun.javadoc.ProgramElementDoc; +-import com.sun.javadoc.Tag; +-import com.sun.tools.doclets.Taglet; +-import com.sun.tools.doclets.internal.toolkit.Configuration; +-import com.sun.tools.doclets.standard.Standard; +-import java.awt.image.RenderedImage; +-import java.io.File; +-import java.io.IOException; +-import java.io.UnsupportedEncodingException; +-import java.lang.reflect.Field; +-import java.lang.reflect.Method; +-import java.util.Map; +-import java.util.regex.Pattern; +-import javax.imageio.ImageIO; +- +-import org.stathissideris.ascii2image.text.TextGrid; +-import org.stathissideris.ascii2image.graphics.Diagram; +-import org.stathissideris.ascii2image.core.ConversionOptions; +-import org.stathissideris.ascii2image.graphics.BitmapRenderer; +- +-/** This class is a custom Javadoc taglet for embedding ditaa diagrams in +- * javadoc comments. The tag is an inline which can be used in any javadoc +- * comment. The tag can also be used in package documentation and in the +- * overview. +- * This taglet assumes that the Standard Javadoc Doclet is being used. +- *

+- * The syntax is:
+- * +- * {@textdiagram diagram_name
+- * the ascii art diagram
+- * } +- *
+- *

+- * The diagram name will be used when generating the image, so that the image +- * can be referenced to somewhere else (by using an a-href HTML tag). The +- * diagram name can only contain letters, numbers and underscore. The name of +- * the generated image will become "<classname>-<diagram name>.png". +- *

+- * The syntax for the ditaa diagram is described at +- * http://ditaa.sourceforge.net/. +- *

+- * Note: The overview file needs to be named "overview.html" if it lies +- * in the source path, otherwise it is sufficient that it ends with ".html". +- * +- * @author Mikael Brannstrom +- */ +-public class JavadocTaglet implements Taglet { +- +- private static final String NAME = "textdiagram"; +- private static final Pattern FIGURE_NAME_PATTERN = Pattern.compile("\\w+"); +- +- private final File[] srcPath; +- private final File dstDir; +- +- private final boolean simpleMode; +- +- /** Creates a new instance of TextDiagramTaglet */ +- public JavadocTaglet() { +- +- String configSourcepath = null; +- String configDestDirName = null; +- // Try to get configuration +- try { +- // Do this: Configuration config = Standard.htmlDoclet.configuration(); +- Field htmlDocletField = Standard.class.getField("htmlDoclet"); +- Object htmlDoclet = htmlDocletField.get(null); // static field +- Method configurationMethod = htmlDoclet.getClass().getMethod("configuration", null); +- Object config = configurationMethod.invoke(htmlDoclet, null); +- // Do this: configSourcepath = config.sourcepath; +- Field sourcepathField = config.getClass().getField("sourcepath"); +- configSourcepath = (String)sourcepathField.get(config); +- // Do this: configDestDirName = config.destDirName; +- Field destDirNameField = config.getClass().getField("destDirName"); +- configDestDirName = (String)destDirNameField.get(config); +- } catch(Exception e) { +- warning("Could not setup taglet. Falling back to simple mode.\n"+e); +- } +- +- if(configDestDirName == null) { +- srcPath = null; +- dstDir = null; +- simpleMode = true; +- } else { +- // setup srcPath +- String[] srcPathStr = configSourcepath.split("[;:]"); +- srcPath = new File[srcPathStr.length]; +- for(int i=0; i"; +- } +- +- int i; +- if(i1 == -1 || i1 == -1) +- i = Math.max(i1, i2); +- else +- i = Math.min(i1, i2); +- +- figureName = text.substring(0, i); +- figureText = text.substring(i+1); +- +- if(!FIGURE_NAME_PATTERN.matcher(figureName).matches()) { +- error("Illegal "+getName()+" name: \""+figureName+"\""); +- } +- +- // Convert [d] to {d} where d can be 1 character and more +- figureText = figureText.replaceAll("\\[(\\w+)\\]", "{$1}"); +- +- if(simpleMode) { +- StringBuffer strBuf = new StringBuffer(); +- strBuf.append("

");
+-			strBuf.append(figureText);
+-			strBuf.append("
"); +- return strBuf.toString(); +- } else { +- File outputFile = getOutputFile(tag.position().file(), figureName); +- generateImage(figureText, outputFile); +- +- StringBuffer strBuf = new StringBuffer(); +- strBuf.append("\"");"); +- return strBuf.toString(); +- } +- } +- +- /** Returns null since this is an inline tag. +- */ +- public String toString(Tag[] tag) { +- return null; // should return null, this is an inline tag +- } +- +- /** Returns the path of the output file given +- * the source file and the diagram name. +- * @param srcFile the source file which contains the tag +- * @param name the diagram name that will be used for generating the output +- * filename. +- */ +- private File getOutputFile(File srcFile, String name) { +- String relPath = getRelativePath(srcFile); +- +- // Special hack for the overview file +- if(srcFile.getName().toLowerCase().equals("overview.html") || +- (relPath == null && srcFile.getName().toLowerCase().endsWith(".html"))) { +- relPath = "overview"; +- } +- +- if(relPath == null) { +- error("The file is not relative to the source path: "+srcFile); +- } +- +- // get the filename and dirname +- String dirname=null, filename=null; +- int i = relPath.lastIndexOf(File.separatorChar); +- if(i == -1) { +- filename = relPath; +- } else if(i == 0) { +- filename = relPath.substring(1); +- } else { +- filename = relPath.substring(i+1); +- dirname = relPath.substring(0, i); +- } +- +- // skip file ending in filename +- i = filename.lastIndexOf('.'); +- if(i != -1) +- filename = filename.substring(0, i); +- +- String path; +- if(dirname == null) { +- path = filename; +- } else { +- path = dirname+File.separator+filename; +- } +- +- return new File(dstDir, path+"-"+name+".png"); +- } +- +- /** Returns the relative path of a (source) file. +- * The path is relative to one of the source dirs specified to the +- * standard doclet. +- * @returns the relative path. If a relative path could not be found +- * null is returned. +- */ +- private String getRelativePath(File file) { +- file = file.getAbsoluteFile(); +- try { +- file = file.getCanonicalFile(); +- } catch (IOException ex) { +- warning("Could not get canonical path of file: "+file); +- } +- String filePath = file.getAbsolutePath(); +- for(int i=0; i