rpms/java_cup/devel cup-ant-task.patch, NONE, 1.1 .cvsignore, 1.5, 1.6 java_cup.spec, 1.21, 1.22 sources, 1.3, 1.4

Lubomir Kundrak (lkundrak) fedora-extras-commits at redhat.com
Sun Feb 17 21:33:53 UTC 2008


Author: lkundrak

Update of /cvs/pkgs/rpms/java_cup/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv3750/devel

Modified Files:
	.cvsignore java_cup.spec sources 
Added Files:
	cup-ant-task.patch 
Log Message:
clean up and ant task

cup-ant-task.patch:

--- NEW FILE cup-ant-task.patch ---
diff -r -u -N java_cup_orig/AntTask.java java_cup/AntTask.java
--- java_cup_orig/AntTask.java	1970-01-01 10:00:00.000000000 +1000
+++ java_cup/AntTask.java	2003-06-04 03:11:53.000000000 +1000
@@ -0,0 +1,261 @@
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Ant task for CUP                                                        * 
+ * Copyright (C) 2003       Gerwin Klein <lsf at jflex.de>                    *
+ * All rights reserved.                                                    *
+ *                                                                         * 
+ * License: LGPL 2, http://www.gnu.org/copyleft/lesser.html                *
+ *                                                                         *
+ * This library is free software; you can redistribute it and/or           *
+ * modify it under the terms of the GNU Lesser General Public              *
+ * License as published by the Free Software Foundation; either            *
+ * version 2 of the License, or (at your option) any later version.        *
+ *                                                                         *
+ * This library 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       *
+ * Lesser General Public License for more details.                         *
+ *                                                                         *
+ * You should have received a copy of the GNU Lesser General Public        *
+ * License along with this library; if not, write to the Free Software     *
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA*
+ *                                                                         *
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+package java_cup;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.BuildException;
+
+import java.io.*;
+
+/*  
+  Example build.xml file for using CUP with Ant (assumes that java_cup classes 
+  are available in classpath):  
+
+  <project name="cup" default="jar">
+ 
+  <taskdef classname="java_cup.AntTask" name="cup" />
+ 
+  <target name="compile" depends="cup">
+    <javac srcdir="." destdir="bin" target="1.1" classpath="." />  
+  </target> 
+  
+  <target name="cup">
+    <cup file="java_cup/parser.cup" dir="java_cup" nosummary="true" />
+  </target>
+ 
+  <target name="jar" depends="compile">
+    <jar basedir="bin" includes="java_cup/**" jarfile="java_cup.jar" />
+  </target>
+  </project>
+ */
+
+/**
+ * An Ant task class for CUP, supports all CUP options available on 
+ * the command line.
+ * <p>
+ * The option names are the same as on the command line. Options without
+ * parameters are booleans in Ant (-nosummary becomes nosummary="true")
+ * <p>
+ * Example build.xml file for Ant (assumes that java_cup classes 
+ * are available in classpath):
+ * <pre> 
+ * <project name="cup" default="jar">
+ * 
+ * <taskdef classname="java_cup.AntTask" name="cup" />
+ * 
+ * <target name="compile" depends="cup">
+ *   <javac srcdir="." destdir="bin" target="1.1" classpath="." />  
+ * </target> 
+ * 
+ * <target name="cup">
+ *   <cup file="java_cup/parser.cup" dir="java_cup" nosummary="true" />
+ * </target>
+ *
+ * <target name="jar" depends="compile">
+ *   <jar basedir="bin" includes="java_cup/**" jarfile="java_cup.jar" />
+ * </target>
+ * </project>
+ * </pre>
+ * 
+ * @see java_cup.Main
+ * 
+ * @author Gerwin Klein
+ */
+public class AntTask extends Task {
+
+  private File inputFile;
+
+  /* FIXME: this duplicates default settings, 
+   * would be better to refactor settings from Main, emit, and here
+   * into an own class.
+   */
+  private String parserName = "parser";
+  private String symName = "sym";
+  private String packageName = null;
+
+  private File destinationDir;
+
+  private int expect = 0;
+
+  private boolean symInterface = false;
+  private boolean nonTerms = false;
+  private boolean compactRed = false;
+  private boolean noSummary = false;
+  private boolean noWarn = false;
+  private boolean dumpStates = false;
+  private boolean dumpTables = false;
+  private boolean printProgress = false;
+  private boolean dumpGrammar = false;
+  private boolean showTiming = false;
+  private boolean lrValues = true;
+  private boolean suppressScanner = false;
+
+  /**
+   * Run the Ant task. Assumes that options have already been set 
+   * with setter methods by Ant. 
+   * 
+   * @throws BuildException  if build fails
+   */
+  public void execute() throws BuildException {
+    if (inputFile == null) {
+      throw new BuildException("No input file. Use <cup file=\"your_parser.cup\"/>");
+    }
+
+    if (!inputFile.canRead()) {
+      throw new BuildException("Cannot read input file " + inputFile);
+    }
+
+    try {
+      File parserFile = new File(destinationDir, parserName + ".java");
+      File symFile = new File(destinationDir, symName + ".java");
+
+      if (inputFile.lastModified() > parserFile.lastModified()
+        || inputFile.lastModified() > symFile.lastModified()) {
+
+        // cup redefines System.in       
+        InputStream systemIn_save = System.in;
+
+        /* run it. assumption: Main.parse_args works with empty 
+         * argument list and does nothing */
+        configure();
+        Main.main(new String[0]);
+
+        // restore System.in
+        System.setIn(systemIn_save);
+
+        if (noSummary) {
+          System.out.println("Generated: " + parserFile + " and " + symFile);
+        }
+      }
+    } catch (IOException e) {
+      throw new BuildException("IOException: " + e.toString());
+    } catch (internal_error e) {
+      throw new BuildException("Internal CUP error.");
+    } catch (Exception e) {
+      throw new BuildException("CUP generation failed.");
+    }
+  }
+
+  /**
+   * Configures cup accordings to the settings of this class
+   * 
+   * @throws FileNotFoundException if inputFile does not exist
+   */
+  public void configure() throws FileNotFoundException {
+    System.setIn(new FileInputStream(inputFile));
+    Main.output_dir = destinationDir;
+    Main.sym_interface = symInterface;
+    emit.parser_class_name = parserName;
+    emit.symbol_const_class_name = symName;
+    emit.package_name = packageName;
+    Main.include_non_terms = nonTerms;
+    Main.expect_conflicts = expect;
+    Main.opt_compact_red = compactRed;
+    Main.no_summary = noSummary;
+    emit.nowarn = noWarn;
+    Main.opt_dump_states = dumpStates;
+    Main.opt_dump_grammar = dumpGrammar;
+    Main.opt_dump_tables = dumpTables;
+    Main.print_progress = printProgress;
+    Main.opt_show_timing = showTiming;
+    Main.lr_values = lrValues;
+    Main.suppress_scanner = suppressScanner;
+  }
+
+  public void setDir(File destinationDir) {
+    this.destinationDir = destinationDir;
+  }
+
+  public void setFile(File file) {
+    this.inputFile = file;
+  }
+
+  public void setParser(String name) {
+    this.parserName = name;
+  }
+
+  public void setSymbols(String name) {
+    this.symName = name;
+  }
+
+  public void setPackage(String name) {
+    this.packageName = name;
+  }
+
+  public void setInterface(boolean symInterface) {
+    this.symInterface = symInterface;
+  }
+
+  public void setCompact_red(boolean b) {
+    compactRed = b;
+  }
+
+  public void setDump_grammar(boolean b) {
+    dumpGrammar = b;
+  }
+
+  public void setDump_states(boolean b) {
+    dumpStates = b;
+  }
+
+  public void setDump_tables(boolean b) {
+    dumpTables = b;
+  }
+
+  public void setDump(boolean b) {
+    dumpStates = dumpTables = dumpGrammar = true;
+  }
+
+  public void setExpect(int i) {
+    expect = i;
+  }
+
+  public void setNopositions(boolean b) {
+    lrValues = !b;
+  }
+
+  public void setNonterms(boolean b) {
+    nonTerms = b;
+  }
+
+  public void setNosummary(boolean b) {
+    noSummary = b;
+  }
+
+  public void setNowarn(boolean b) {
+    noWarn = b;
+  }
+
+  public void setProgress(boolean b) {
+    printProgress = b;
+  }
+
+  public void setTime(boolean b) {
+    showTiming = b;
+  }
+
+  public void setNoscanner(boolean b) {
+    suppressScanner = b;
+  }
+}
diff -r -u -N java_cup_orig/Main.java java_cup/Main.java
--- java_cup_orig/Main.java	1999-07-24 23:16:59.000000000 +1000
+++ java_cup/Main.java	2003-06-04 03:03:41.000000000 +1000
@@ -25,6 +25,8 @@
  *   <dd> specify parser class name [default "parser"]
  *   <dt> -symbols name  
  *   <dd> specify name for symbol constant class [default "sym"]
+ *   <dt> -dir name  
+ *   <dd> put generated files into directory name [default "."]
  *   <dt> -interface
  *   <dd> emit symbol constant <i>interface</i>, rather than class
  *   <dt> -nonterms      
@@ -110,6 +112,10 @@
    *  java_cup.runtime.Scanner for compatibility with old runtimes? */
   protected static boolean suppress_scanner = false;
 
+  /** User option -- directory for ouput files */ 
+  protected static File output_dir = null;
+
+
   /*----------------------------------------------------------------------*/
   /* Timing data (not all of these time intervals are mutually exclusive) */
   /*----------------------------------------------------------------------*/
@@ -244,6 +250,7 @@
 "    -parser name   specify parser class name [default \"parser\"]\n" +
 "    -symbols name  specify name for symbol constant class [default \"sym\"]\n"+
 "    -interface     put symbols in an interface, rather than a class\n" +
+"    -dir name      put generated into directory name [default \".\"]" +
 "    -nonterms      put non terminals in symbol constant class\n" + 
 "    -expect #      number of conflicts expected/allowed [default 0]\n" + 
 "    -compact_red   compact tables by defaulting to most frequent reduce\n" +
@@ -287,6 +294,15 @@
 	      /* record the name */
 	      emit.package_name = argv[i];
 	    }
+	  else if (argv[i].equals("-dir")) 
+	    {
+	      if (++i >= len || argv[i].startsWith("-") || 
+				argv[i].endsWith(".cup")) 
+		usage("-dir must have a name argument");
+
+		/* record the name */
+		output_dir = new File(argv[i]); 
+	    }
 	  else if (argv[i].equals("-parser"))
 	    {
 	      /* must have an arg */
@@ -390,23 +406,23 @@
 
       /* parser class */
       out_name = emit.parser_class_name + ".java";
-      fil = new File(out_name);
+      fil = new File(output_dir,out_name);
       try {
         parser_class_file = new PrintWriter(
 		 new BufferedOutputStream(new FileOutputStream(fil), 4096));
       } catch(Exception e) {
-	System.err.println("Can't open \"" + out_name + "\" for output");
+	System.err.println("Can't open \"" + fil + "\" for output");
 	System.exit(3);
       }
 
       /* symbol constants class */
       out_name = emit.symbol_const_class_name + ".java";
-      fil = new File(out_name);
+      fil = new File(output_dir,out_name);
       try {
         symbol_class_file = new PrintWriter(
 		 new BufferedOutputStream(new FileOutputStream(fil), 4096));
       } catch(Exception e) {
-	System.err.println("Can't open \"" + out_name + "\" for output");
+	System.err.println("Can't open \"" + fil + "\" for output");
 	System.exit(4);
       }
     }
@@ -656,8 +672,11 @@
 
       /* code location */
       if (output_produced)
-	System.err.println("  Code written to \"" + emit.parser_class_name + 
-	        ".java\", and \"" + emit.symbol_const_class_name + ".java\".");
+	System.err.println("  Code written to \"" + 
+		new File(output_dir, emit.parser_class_name) + 
+	        ".java\", and \"" + 
+	        new File(output_dir, emit.symbol_const_class_name) + 
+		".java\".");
       else
 	System.err.println("  No code produced.");
 


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/java_cup/devel/.cvsignore,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- .cvsignore	28 Jun 2005 11:47:44 -0000	1.5
+++ .cvsignore	17 Feb 2008 21:33:16 -0000	1.6
@@ -1,4 +1 @@
-java_cup_v10k-RHCLEAN.tar.bz2
-java_cup-0.10
-i386
-*.src.rpm
+java_cup_v10k.tar.gz


Index: java_cup.spec
===================================================================
RCS file: /cvs/pkgs/rpms/java_cup/devel/java_cup.spec,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- java_cup.spec	5 Aug 2006 01:57:34 -0000	1.21
+++ java_cup.spec	17 Feb 2008 21:33:16 -0000	1.22
@@ -32,39 +32,39 @@
 
 %define gcj_support %{?_with_gcj_support:1}%{!?_with_gcj_support:%{?_without_gcj_support:0}%{!?_without_gcj_support:%{?_gcj_support:%{_gcj_support}}%{!?_gcj_support:0}}}
 
-%define pkg_version	v10k
-%define section		free
+%define pkg_version     v10k
+%define section         free
 
-Name:		java_cup
-Version:	0.10
-Release:	0.k.6jpp.1
-Epoch:		1
-Summary:	Java source interpreter
-License:	BSD-style
-Url: 		http://www.cs.princeton.edu/%7Eappel/modern/java/CUP/
-Source0:	java_cup_v10k-RHCLEAN.tar.bz2
-#Source0:	java_cup_v10k.tar.gz
-Source1:	%{name}-build.xml
-BuildRequires:	ant
+Name:           java_cup
+Version:        0.10
+Release:        0.k.6jpp.2
+Epoch:          1
+Summary:        Java source interpreter
+License:        BSD and LGPLv2
+Url:            http://www.cs.princeton.edu/%7Eappel/modern/java/CUP/
+Source0:        http://www.cs.princeton.edu/%7Eappel/modern/java/CUP/%{name}_%{pkg_version}.tar.gz
+Source1:        %{name}-build.xml
+Patch0:         http://jflex.de/cup-ant-task.patch
+BuildRequires:  ant
 BuildRequires:  jpackage-utils >= 0:1.5
-Group: 		Development/Java
+Group:          Development/Tools
 %if ! %{gcj_support}
-Buildarch:	noarch
+Buildarch:      noarch
 %endif
-Buildroot:	%{_tmppath}/%{name}-%{version}-buildroot
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 %if %{gcj_support}
-BuildRequires:		java-gcj-compat-devel
-Requires(post):		java-gcj-compat
-Requires(postun):	java-gcj-compat
+BuildRequires:          java-gcj-compat-devel
+Requires(post):         java-gcj-compat
+Requires(postun):       java-gcj-compat
 %endif
 
 %description
 java_cup is a LALR Parser Generator for Java
 
 %package javadoc
-Summary:	Javadoc for java_cup
-Group:		Development/Java
+Summary:        Javadoc for java_cup
+Group:          Documentation
 Requires(post): %{__rm}
 Requires(post): /bin/ln
 Requires(postun): %{__rm}
@@ -73,14 +73,15 @@
 Javadoc for java_cup
 
 %package manual
-Summary:	Javadoc for java_cup
-Group:		Development/Java
+Summary:        Documentation for java_cup
+Group:          Documentation
 
 %description manual
 Documentation for java_cup.
 
 %prep
 %setup -q -c -n %{name}-%{version}
+%patch0 -p0 
 install -m 644 %{SOURCE1} build.xml
 
 # remove all binary files
@@ -88,9 +89,12 @@
 
 %build
 ant
+find . -name parser.cup -exec rm {} \;
 ant javadoc
 
 %install
+rm -rf $RPM_BUILD_ROOT
+
 # jar
 install -d -m 755 $RPM_BUILD_ROOT%{_javadir}
 install -m 644 dist/lib/%{name}.jar $RPM_BUILD_ROOT%{_javadir}/%{name}-%{version}.jar
@@ -156,6 +160,10 @@
 %ghost %doc %{_javadocdir}/%{name}
 
 %changelog
+* Sun Feb 17 2008 Lubomir Kundrak <lkundrak at redhat.com> - 1:0.10-0.k.6jpp.2
+- Ant task
+- Clean up to satisfy QA script and rpmlint
+
 * Fri Aug 04 2006 Vivek Lakshmanan <vivekl at redhat.com> - 1:0.10-0.k.6jpp.1
 - Re-sync with latest version from JPP.
 - Partially adopt new naming convention.


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/java_cup/devel/sources,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- sources	21 Jun 2005 15:12:36 -0000	1.3
+++ sources	17 Feb 2008 21:33:16 -0000	1.4
@@ -1 +1 @@
-61ce88d145f2e22e53b90e3d8d85fb63  java_cup_v10k-RHCLEAN.tar.bz2
+8b11edfec13c590ea443d0f0ae0da479  java_cup_v10k.tar.gz




More information about the fedora-extras-commits mailing list