/hg/icedtea-web: Reverting unapproved change 235:114a981d3552

Jiri Vanek jvanek at redhat.com
Wed May 11 08:32:51 PDT 2011


So when the only point is index.html.in - do you agree I will remove it, 
and the rest can go in so Pavel can add it into daily report? (He will 
work with xml and sheet only)

On 05/11/2011 03:56 PM, andrew at icedtea.classpath.org wrote:
> changeset 0e6b12424423 in /hg/icedtea-web
> details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=0e6b12424423
> author: Andrew John Hughes<ahughes at redhat.com>
> date: Wed May 11 14:56:32 2011 +0100
>
> 	Reverting unapproved change 235:114a981d3552
>
>
> diffstat:
>
>   ChangeLog                                          |   19 -
>   Makefile.am                                        |   38 +--
>   tests/junit-runner/CommandLine.java                |    3 -
>   tests/junit-runner/JunitLikeXmlOutputListener.java |  225 ---------------------
>   tests/report-styles/index.html.in                  |   25 --
>   tests/report-styles/index.js                       |   67 ------
>   tests/report-styles/jreport.xsl                    |  215 --------------------
>   tests/report-styles/report.css                     |   21 -
>   8 files changed, 7 insertions(+), 606 deletions(-)
>
> diffs (truncated from 709 to 500 lines):
>
> diff -r 2b1a69f4c54b -r 0e6b12424423 ChangeLog
> --- a/ChangeLog	Tue May 10 11:16:17 2011 -0400
> +++ b/ChangeLog	Wed May 11 14:56:32 2011 +0100
> @@ -4,25 +4,6 @@
>   	(addComponents):Created a new comparator for sorting by file size and
>   	date.
>
> -2011-05-10 Jiri Vanek<jvanek at redhat.com>
> -
> -	* tests/junit-runner/JunitLikeXmlOutputListener: This listener exports
> -	results of junit in xml which "follows junit-output schema". Extended
> -	for date, duration and some statististics for future purpose
> -	*tests/report-sytles/index.html.in : file which provides runtime
> -	transformation	of tests-output.xml and report.xml
> -	* tests/report-styles/index.js: runtime transformation script and fast
> -	navigation functions
> -	* tests/report-styles/report.css: styles for transformed result
> -	* tests/report-styles/jreport.xsl: template for human-readable
> -	xml->html transformation.
> -	* Makefile.am (javaws, itweb_settings): New variables for report-styles
> -	directory; (edit_tests_index) - sed makro for replacing variables
> -	inside 	index.html.in; (index.html) - goal for generating index.html
> -	file from index.html.in and copying styles fiels; (run-netx-unit-tests)
> -	cloned stdout/err (clean-netx-unit-tests) cleaning styles dir and
> -	index.html
> -
>   2011-05-09  Jiri Vanek<jvanek at redhat.com>
>   	* tests/junit-runner/CommandLine.java:r added skipping of inner
>   	classes and one jnlp file from sources package.
> diff -r 2b1a69f4c54b -r 0e6b12424423 Makefile.am
> --- a/Makefile.am	Tue May 10 11:16:17 2011 -0400
> +++ b/Makefile.am	Wed May 11 14:56:32 2011 +0100
> @@ -6,19 +6,15 @@
>   NETX_EXTRA_DIR=$(abs_top_srcdir)/extra/net/sourceforge/javaws/about/resources
>   NETX_EXTRA_DIST_DIR=$(abs_top_builddir)/extra-lib/net/sourceforge/javaws/about/resources
>
> -REPORT_STYLES_DIRNAME=report-styles
> +TESTS_SRCDIR=$(abs_top_srcdir)/tests
> +TESTS_DIR=$(abs_top_builddir)/tests.build
>
> -TESTS_SRCDIR=$(abs_top_srcdir)/tests
>   NETX_UNIT_TEST_SRCDIR=$(TESTS_SRCDIR)/netx/unit
> -TESTS_STYLES_SRCDIR=$(TESTS_SRCDIR)/$(REPORT_STYLES_DIRNAME)
> +NETX_UNIT_TEST_DIR=$(TESTS_DIR)/netx/unit
> +
> +JUNIT_RUNNER_DIR=$(TESTS_DIR)/junit-runner
>   JUNIT_RUNNER_SRCDIR=$(TESTS_SRCDIR)/junit-runner
>
> -TESTS_DIR=$(abs_top_builddir)/tests.build
> -NETX_UNIT_TEST_DIR=$(TESTS_DIR)/netx/unit
> -TESTS_STYLES_DIR=$(TESTS_DIR)/$(REPORT_STYLES_DIRNAME)
> -JUNIT_RUNNER_DIR=$(TESTS_DIR)/junit-runner
> -
> -
>   JUNIT_RUNNER_JAR=$(abs_top_builddir)/junit-runner.jar
>
>   # Build directories
> @@ -126,14 +122,6 @@
>     -e 's|[@]JAVA[@]|$(JAVA)|g' \
>     -e 's|[@]JRE[@]|$(JRE)|g'
>
> -edit_tests_index = sed \
> -  -e 's|[@]data_path_unit[@]|netx/unit/tests-output.xml|g' \
> -  -e 's|[@]data_path_dist[@]|netx/dist/tests-output.xml|g' \
> -  -e 's|[@]css_styles[@]|$(REPORT_STYLES_DIRNAME)/report.css|g' \
> -  -e 's|[@]xslt_script[@]|$(REPORT_STYLES_DIRNAME)/index.js|g' \
> -  -e 's|[@]sheet_path_unit[@]|$(REPORT_STYLES_DIRNAME)/jreport.xsl|g' \
> -  -e 's|[@]sheet_path_dist[@]|$(REPORT_STYLES_DIRNAME)/jreport.xsl|g'
> -
>   # Top-Level Targets
>   # =================
>
> @@ -462,13 +450,6 @@
>   netx-unit-tests-source-files.txt:
>   	find $(NETX_UNIT_TEST_SRCDIR) -name '*.java' | sort>  $@
>
> -$(TESTS_DIR)/index.html: stamps/netx-unit-tests-compile.stamp
> -	mkdir $(TESTS_STYLES_DIR)/
> -	cp $(TESTS_STYLES_SRCDIR)/*.css $(TESTS_STYLES_DIR)/
> -	cp $(TESTS_STYLES_SRCDIR)/*.xsl $(TESTS_STYLES_DIR)/
> -	cp $(TESTS_STYLES_SRCDIR)/*.js $(TESTS_STYLES_DIR)/
> -	$(edit_tests_index)<  $(TESTS_STYLES_SRCDIR)/index.html.in>  $@
> -
>   stamps/netx-unit-tests-compile.stamp: stamps/netx.stamp \
>    netx-unit-tests-source-files.txt
>   	mkdir -p $(NETX_UNIT_TEST_DIR)&&  \
> @@ -479,7 +460,7 @@
>   	mkdir -p stamps&&  \
>   	touch $@
>
> -run-netx-unit-tests: stamps/netx-unit-tests-compile.stamp $(TESTS_DIR)/index.html \
> +run-netx-unit-tests: stamps/netx-unit-tests-compile.stamp \
>    $(JUNIT_RUNNER_JAR)
>   	cp {$(NETX_UNIT_TEST_SRCDIR),$(NETX_UNIT_TEST_DIR)}/net/sourceforge/jnlp/basic.jnlp
>   	cd $(NETX_UNIT_TEST_DIR) ; \
> @@ -491,10 +472,7 @@
>   	done ; \
>   	echo $$class_names ; \
>   	CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):. \
> -	  $(BOOT_DIR)/bin/java -Xbootclasspath:$(RUNTIME) CommandLine $$class_names \
> -	>  stdout.log 2>  stderr.log ; \
> -	cat stdout.log ; \
> -	cat stderr.log>&2
> +	  $(BOOT_DIR)/bin/java -Xbootclasspath:$(RUNTIME) CommandLine $$class_names
>
>   clean-netx-tests: clean-netx-unit-tests clean-junit-runner
>   	if [ -e $(TESTS_DIR)/netx ]; then \
> @@ -507,8 +485,6 @@
>   	rm -f $(JUNIT_RUNNER_JAR)
>
>   clean-netx-unit-tests:
> -	rm -rf $(TESTS_STYLES_DIR)
> -	rm -f $(TESTS_DIR)/index.html
>   	rm -f netx-unit-tests-source-files.txt
>   	rm -rf $(NETX_UNIT_TEST_DIR)
>   	rm -f stamps/netx-unit-tests-compile.stamp
> diff -r 2b1a69f4c54b -r 0e6b12424423 tests/junit-runner/CommandLine.java
> --- a/tests/junit-runner/CommandLine.java	Tue May 10 11:16:17 2011 -0400
> +++ b/tests/junit-runner/CommandLine.java	Wed May 11 14:56:32 2011 +0100
> @@ -7,7 +7,6 @@
>    * http://www.eclipse.org/legal/cpl-v10.html
>    */
>
> -import java.io.File;
>   import java.util.ArrayList;
>   import java.util.List;
>
> @@ -42,8 +41,6 @@
>                   system.out().println("ERROR: Could not find class: " + each);
>               }
>           }
> -        RunListener jXmlOutput = new JunitLikeXmlOutputListener(system, new File("tests-output.xml"));
> -        addListener(jXmlOutput);
>           RunListener listener = new LessVerboseTextListener(system);
>           addListener(listener);
>           Result result = run(classes.toArray(new Class[0]));
> diff -r 2b1a69f4c54b -r 0e6b12424423 tests/junit-runner/JunitLikeXmlOutputListener.java
> --- a/tests/junit-runner/JunitLikeXmlOutputListener.java	Tue May 10 11:16:17 2011 -0400
> +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
> @@ -1,225 +0,0 @@
> -/*
> - * Copyright 2011 Red Hat, Inc.
> - *
> - * This file is made available under the terms of the Common Public License
> - * v1.0 which accompanies this distribution, and is available at
> - * http://www.eclipse.org/legal/cpl-v10.html
> - */
> -
> -import java.io.BufferedWriter;
> -import java.io.File;
> -
> -import java.io.FileOutputStream;
> -import java.io.IOException;
> -import java.io.OutputStreamWriter;
> -import java.text.DecimalFormat;
> -import java.text.NumberFormat;
> -import java.util.Date;
> -import java.util.HashMap;
> -import java.util.Map;
> -import java.util.Map.Entry;
> -import java.util.Set;
> -
> -
> -import org.junit.internal.JUnitSystem;
> -import org.junit.runner.Description;
> -import org.junit.runner.Result;
> -import org.junit.runner.notification.Failure;
> -import org.junit.runner.notification.RunListener;
> -/**
> - * This class listens for events in junit testsuite and wrote output to xml.
> - * Xml tryes to follow ant-tests schema, and is enriched for by-class statistics
> - * stdout and err elements are added, but must be filled from elsewhere (eg tee
> - * in make) as junit suite and listener run from our executer have no access to
> - * them.
> - *
> - */
> -public class JunitLikeXmlOutputListener extends RunListener {
> -
> -    private BufferedWriter writer;
> -    private Failure testFailed = null;
> -    private static final String ROOT = "testsuite";
> -    private static final String DATE_ELEMENT = "date";
> -    private static final String TEST_ELEMENT = "testcase";
> -    private static final String TEST_NAME_ATTRIBUTE = "name";
> -    private static final String TEST_TIME_ATTRIBUTE = "time";
> -    private static final String TEST_ERROR_ELEMENT = "error";
> -    private static final String TEST_CLASS_ATTRIBUTE = "classname";
> -    private static final String ERROR_MESSAGE_ATTRIBUTE = "message";
> -    private static final String ERROR_TYPE_ATTRIBUTE = "type";
> -    private static final String SOUT_ELEMENT = "system-out";
> -    private static final String SERR_ELEMENT = "system-err";
> -    private static final String CDATA_START = "<![CDATA[";
> -    private static final String CDATA_END = "]]>";
> -    private static final String TEST_CLASS_ELEMENT = "class";
> -    private static final String STATS_ELEMENT = "stats";
> -    private static final String CLASSES_ELEMENT = "classes";
> -    private static final String SUMMARY_ELEMENT = "summary";
> -    private static final String SUMMARY_TOTAL_ELEMENT = "total";
> -    private static final String SUMMARY_PASSED_ELEMENT = "passed";
> -    private static final String SUMMARY_FAILED_ELEMENT = "failed";
> -    private static final String SUMMARY_IGNORED_ELEMENT = "ignored";
> -    private long testStart;
> -
> -    private class ClassCounter {
> -
> -        int total;
> -        int failed;
> -        int passed;
> -        long time = 0;
> -    }
> -    Map<String, ClassCounter>  classStats = new HashMap<String, ClassCounter>();
> -
> -    public JunitLikeXmlOutputListener(JUnitSystem system, File f) {
> -        try {
> -            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8"));
> -        } catch (Exception ex) {
> -            throw new RuntimeException(ex);
> -        }
> -    }
> -
> -    @Override
> -    public void testRunStarted(Description description) throws Exception {
> -        openElement(ROOT);
> -        writeElement(DATE_ELEMENT, new Date().toString());
> -    }
> -
> -    private void openElement(String name) throws IOException {
> -        openElement(name, null);
> -    }
> -
> -    private void openElement(String name, Map<String, String>  atts) throws IOException {
> -        StringBuilder attString = new StringBuilder();
> -        if (atts != null) {
> -            attString.append(" ");
> -            Set<Entry<String, String>>  entries = atts.entrySet();
> -            for (Entry<String, String>  entry : entries) {
> -                attString.append(entry.getKey()).append("=\"").append(attributize(entry.getValue())).append("\"");
> -                attString.append(" ");
> -            }
> -        }
> -        writer.write("<" + name + attString.toString() +">");
> -        writer.newLine();
> -    }
> -
> -    private static String attributize(String s) {
> -        return s.replace("&","&amp;").replace("<","&lt;");
> -    }
> -
> -    private void closeElement(String name) throws IOException {
> -        writer.newLine();
> -        writer.write("</" + name + ">");
> -        writer.newLine();
> -    }
> -
> -    private void writeContent(String content) throws IOException {
> -        writer.write(CDATA_START + content + CDATA_END);
> -    }
> -
> -    private void writeElement(String name, String content) throws IOException {
> -        writeElement(name, content, null);
> -    }
> -
> -    private void writeElement(String name, String content, Map<String, String>  atts) throws IOException {
> -        openElement(name, atts);
> -        writeContent(content);
> -        closeElement(name);
> -    }
> -
> -    @Override
> -    public void testStarted(Description description) throws Exception {
> -        testFailed = null;
> -        testStart = System.nanoTime()/1000l/1000l;
> -    }
> -
> -    @Override
> -    public void testFailure(Failure failure) throws IOException {
> -        testFailed = failure;
> -    }
> -
> -    @Override
> -    public void testFinished(org.junit.runner.Description description) throws Exception {
> -        long testTime = System.nanoTime()/1000l/1000l - testStart;
> -        double testTimeSeconds = ((double) testTime) / 1000d;
> -
> -        Map<String, String>  testcaseAtts = new HashMap<String, String>(3);
> -        NumberFormat formatter = new DecimalFormat("#0.0000");
> -        String stringedTime = formatter.format(testTimeSeconds);
> -        stringedTime.replace(",", ".");
> -        testcaseAtts.put(TEST_TIME_ATTRIBUTE, stringedTime);
> -        testcaseAtts.put(TEST_CLASS_ATTRIBUTE, description.getClassName());
> -        testcaseAtts.put(TEST_NAME_ATTRIBUTE, description.getMethodName());
> -
> -        openElement(TEST_ELEMENT, testcaseAtts);
> -        if (testFailed != null) {
> -            Map<String, String>  errorAtts = new HashMap<String, String>(3);
> -
> -            errorAtts.put(ERROR_MESSAGE_ATTRIBUTE, testFailed.getMessage());
> -            int i = testFailed.getTrace().indexOf(":");
> -            if (i>= 0) {
> -                errorAtts.put(ERROR_TYPE_ATTRIBUTE, testFailed.getTrace().substring(0, i));
> -            } else {
> -                errorAtts.put(ERROR_TYPE_ATTRIBUTE, "?");
> -            }
> -
> -            writeElement(TEST_ERROR_ELEMENT, testFailed.getTrace(), errorAtts);
> -        }
> -
> -        closeElement(TEST_ELEMENT);
> -        writer.flush();
> -
> -        ClassCounter cc = classStats.get(description.getClassName());
> -        if (cc == null) {
> -            cc = new ClassCounter();
> -            classStats.put(description.getClassName(), cc);
> -        }
> -        cc.total++;
> -        cc.time += testTime;
> -        if (testFailed == null) {
> -            cc.passed++;
> -        } else {
> -
> -            cc.failed++;
> -        }
> -    }
> -
> -    @Override
> -    public void testRunFinished(Result result) throws Exception {
> -
> -        writeElement(SOUT_ELEMENT, "@sout@");
> -        writeElement(SERR_ELEMENT, "@serr@");
> -        openElement(STATS_ELEMENT);
> -        openElement(SUMMARY_ELEMENT);
> -        int passed = result.getRunCount() - result.getFailureCount() - result.getIgnoreCount();
> -        int failed = result.getFailureCount();
> -        int ignored = result.getIgnoreCount();
> -        writeElement(SUMMARY_TOTAL_ELEMENT, String.valueOf(result.getRunCount()));
> -        writeElement(SUMMARY_FAILED_ELEMENT, String.valueOf(failed));
> -        writeElement(SUMMARY_IGNORED_ELEMENT, String.valueOf(ignored));
> -        writeElement(SUMMARY_PASSED_ELEMENT, String.valueOf(passed));
> -        closeElement(SUMMARY_ELEMENT);
> -        openElement(CLASSES_ELEMENT);
> -        Set<Entry<String, ClassCounter>>  e = classStats.entrySet();
> -        for (Entry<String, ClassCounter>  entry : e) {
> -
> -            Map<String, String>  testcaseAtts = new HashMap<String, String>(3);
> -            testcaseAtts.put(TEST_NAME_ATTRIBUTE, entry.getKey());
> -            testcaseAtts.put(TEST_TIME_ATTRIBUTE, String.valueOf(entry.getValue().time));
> -
> -            openElement(TEST_CLASS_ELEMENT, testcaseAtts);
> -            writeElement(SUMMARY_PASSED_ELEMENT, String.valueOf(entry.getValue().passed));
> -            writeElement(SUMMARY_FAILED_ELEMENT, String.valueOf(entry.getValue().failed));
> -            writeElement(SUMMARY_IGNORED_ELEMENT, String.valueOf(entry.getValue().total - entry.getValue().failed - entry.getValue().passed));
> -            writeElement(SUMMARY_TOTAL_ELEMENT, String.valueOf(entry.getValue().total));
> -
> -            closeElement(TEST_CLASS_ELEMENT);
> -        }
> -        closeElement(CLASSES_ELEMENT);
> -        closeElement(STATS_ELEMENT);
> -
> -        closeElement(ROOT);
> -        writer.flush();
> -        writer.close();
> -
> -    }
> -}
> diff -r 2b1a69f4c54b -r 0e6b12424423 tests/report-styles/index.html.in
> --- a/tests/report-styles/index.html.in	Tue May 10 11:16:17 2011 -0400
> +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
> @@ -1,25 +0,0 @@
> -<html>
> -<head>
> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
> -<script src="@xslt_script@">
> -</script>
> -<link href="@css_styles@" rel="stylesheet" type="text/css"/>
> -</head>
> -<body onload="xslt('@sheet_path_unit@','@data_path_unit@','wholePage2');
> -		xslt('@sheet_path_dist@','@data_path_dist@','wholePage4');
> -		">
> -
> -<div>
> -<hr/>
> -<a name="JunitTests">Unit-tests:</a>  [<a href="#JdistTests">dist tests</a>]
> -<hr/>
> -<div id="wholePage2"/>
> -</div>
> -
> -<hr/>
> -<a name="JdistTests">Dist-tests:</a>  [<a href="#JunitTests">unit tests</a>]
> -<hr/>
> -<div id="wholePage4"/>
> -</div>
> -</body>
> -</html>
> diff -r 2b1a69f4c54b -r 0e6b12424423 tests/report-styles/index.js
> --- a/tests/report-styles/index.js	Tue May 10 11:16:17 2011 -0400
> +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
> @@ -1,67 +0,0 @@
> -
> -if(typeof String.prototype.trim !== 'function') {   String.prototype.trim = function() {     return this.replace(/^\s+|\s+$/g, '');    } }
> -
> -
> -function negateIdDisplay(which){
> -	var e = document.getElementById(which);
> - 		if (e.style.display=="block") {
> -			e.style.display="none"
> - 		}else{
> -			 e.style.display="block"
> -		 }
> -	 }
> -
> -
> - function setClassDisplay(which,what) {
> -	 var e = document.getElementsByClassName(which);
> -		 for ( var i = 0; i<  e.length; i++ ){
> -			 e[i].style.display=what
> -			 }
> -		 }
> -
> -
> - function loadXMLDoc(dname) {
> -	 if (window.XMLHttpRequest) {
> -		 xhttp=new XMLHttpRequest();
> -	 }else{
> -		 xhttp=new ActiveXObject("Microsoft.XMLHTTP");
> - 	}
> - 	xhttp.open("GET",dname,false);
> -	xhttp.send("");
> -	return xhttp.responseXML;
> - }
> -
> -
> - function xslt(sheet,data,dest) {
> -	 var sheetName=sheet;
> -	 var xmlName=data;
> -	 var htmlDest=dest;
> -	 // code for IE
> -	 if (window.ActiveXObject) {
> -		 var XML = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
> -		 XML.async = "false";
> -		 XML.load(xmlName);
> -		 var XSL = new ActiveXObject("MSXML2.FreeThreadedDomDocument");
> -		 XSL.async = "false";
> -		 XSL.load(sheetName);
> -		 var XSLTCompiled = new ActiveXObject("MSXML2.XSLTemplate");
> -		 //Add the stylesheet information
> -		 XSLTCompiled.stylesheet = XSL.documentElement;
> -		 //Create the XSLT processor
> -		 var msSheet = XSLTCompiled.createProcessor();
> -		 msSheet.input = XML
> -		 //Perform the transform
> -		 msSheet.transform();
> -		 document.getElementById(htmlDest).innerHTML=msSheet.output;
> -	 }
> -	 // code for Mozilla, Firefox, Opera, etc.
> -	 else if (document.implementation&&  document.implementation.createDocument){
> -		 xsl=loadXMLDoc(sheetName);
> -		 xml=loadXMLDoc(xmlName);
> -		 xsltProcessor=new XSLTProcessor();
> -		 xsltProcessor.importStylesheet(xsl);
> -		 resultDocument = xsltProcessor.transformToFragment(xml,document);
> - 		document.getElementById(htmlDest).appendChild(resultDocument);
> -	 }
> -	 setClassDisplay("trace","none"); //by default allare visible to protect disabled javascript
> - }
> diff -r 2b1a69f4c54b -r 0e6b12424423 tests/report-styles/jreport.xsl
> --- a/tests/report-styles/jreport.xsl	Tue May 10 11:16:17 2011 -0400
> +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
> @@ -1,215 +0,0 @@
> -<?xml version="1.0"?>
> -<!--
> -
> -This file is part of IcedTea.
> -
> -IcedTea 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, or (at your option)
> -any later version.
> -
> -IcedTea 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 IcedTea; see the file COPYING.  If not, write to the
> -Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> -02110-1301 USA.
> -
> -Linking this library statically or dynamically with other modules is
> -making a combined work based on this library.  Thus, the terms and
> -conditions of the GNU General Public License cover the whole
> -combination.
> -
> -As a special exception, the copyright holders of this library give you
> -permission to link this library with independent modules to produce an
> -executable, regardless of the license terms of these independent
> -modules, and to copy and distribute the resulting executable under
> -terms of your choice, provided that you also meet, for each linked
> -independent module, the terms and conditions of the license of that



Regards J.



More information about the distro-pkg-dev mailing list