changeset in /hg/pulseaudio: 2008-09-12 Omair Majid <omajid at redh...

Omair Majid omajid at redhat.com
Fri Sep 12 13:40:24 PDT 2008


changeset cd7041f7a655 in /hg/pulseaudio
details: http://icedtea.classpath.org/hg/pulseaudio?cmd=changeset;node=cd7041f7a655
description:
	2008-09-12 Omair Majid <omajid at redhat.com>

	    * build.xml: Rearranged the tests to run in order of importance. If the
	    first ones fail there's probably a big problem somewhere.

	    * unittests/org/classpath/icedtea/pulseaudio/OtherSoundProvidersAvailableTest.java
	    Fixed name of file in the license. Renamed selectedMixer to mixer.

	    * unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java
	    Fixed the frameRate paramter for aSupportedFormat.
	    (testObtainingAClip): Added output describing the test.
	    (testClipOpenWrongUse): Likewise.
	    (testPlayTwoClips): Assert that both clips are now closed.

	    * unittests/org/classpath/icedtea/pulseaudio/PulseAudioEventLoopOverhead.java
	    Added license text. Renamed selectedMixer to mixer.
	    (setUp): Removed usage of PulseAudioMixer.
	    (tearDown): Close the mixer.

	    * unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerRawTest.java
	    This file tests those capabilites of PulseAudioMixer which are not exposed
	    by the sampled.Mixer interface.
	    (testOpen): Removed function.
	    (testLocalOpen): New function.
	    (testLocalOpenAppName): New function.
	    (testRemoveOpenWithInvalidPort): Likewise.
	    (testRemoveOpenWithValidPort): Likewise.
	    (testRemoteOpen): Likewise.
	    (testInvalidRemoteOpen): Likewise.
	    (tearDown): Close the mixer.

	    * unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerTest.java
	    This file tests capabilites of PulseAudioMixer which are exposed by the
	    sampled.Mixer interface. Changed type of selectedMixer to Mixer.
	    (setUp): Removed cast to PulseAudioMixer.
	    (testOpenClose): New function. Tests that open and close methods work.
	    (testLocalOpen): Moved method to PulseAudioMixerRawTest.java.
	    (testLocalOpenAppName):  Likewise.
	    (testRemoteOpenWithInvalidPort): Likewise.
	    (testRemoteOpenWithValidPort): Likewise.
	    (testRemoteOpen): Likewise.
	    (testInvalidRemoteOpen): Likewise.

	    * unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineRawTest.java
	    New file. Tests those capabilites of PulseAudioSourceDataLine which are
	    not exposed through the SourceDataLine interface.
	    (setUp): New function.
	    (testStartNotificationOnCork): Likewise.
	    (testVolumeAndMute): Likewise.
	    (testSettingStreamName): Likewise.
	    (messWithStreams): Likewise.
	    (tearDown): Likewise.

	    * unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineTest.java
	    Renamed PulseSourceDataLineTest.java

	    * unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourcePortTest.java
	    Added license.
	    (setUp): Removed dependency on knowing the internals of PulseAudioMixer.
	    It uses the AudioSystem to get the mixer.
	    (tearDown): Close the mixer if it isnt closed already.

	    * unittests/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLineTest.java
	    Added license.

	    * unittests/org/classpath/icedtea/pulseaudio/PulseAudioTargetPortTest.java
	    Added license.
	    (setUp): Removed dependency on knowing the interals of PulseAudioMixer.
	    Uses AudioSystem to get the mixer now.
	    (tearDown): Close the mixer if it isnt closed.

	    * unittests/org/classpath/icedtea/pulseaudio/PulseSourceDataLineTest.java
	    Renamed file to PulseAudioSourceDataLineTest.java

diffstat:

12 files changed, 1161 insertions(+), 810 deletions(-)
build.xml                                                                        |   16 
unittests/org/classpath/icedtea/pulseaudio/OtherSoundProvidersAvailableTest.java |   16 
unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java               |   16 
unittests/org/classpath/icedtea/pulseaudio/PulseAudioEventLoopOverhead.java      |   57 
unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerRawTest.java           |   59 
unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerTest.java              |   74 -
unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineRawTest.java  |  281 +++
unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineTest.java     |  580 ++++++++
unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourcePortTest.java         |   63 
unittests/org/classpath/icedtea/pulseaudio/PulseAudioTargetDataLineTest.java     |   37 
unittests/org/classpath/icedtea/pulseaudio/PulseAudioTargetPortTest.java         |   62 
unittests/org/classpath/icedtea/pulseaudio/PulseSourceDataLineTest.java          |  710 ----------

diffs (truncated from 2261 to 500 lines):

diff -r d4bb2fa0df23 -r cd7041f7a655 build.xml
--- a/build.xml	Fri Sep 12 12:44:34 2008 -0400
+++ b/build.xml	Fri Sep 12 16:28:22 2008 -0400
@@ -70,16 +70,22 @@
 			<formatter type="plain" />
 
 			<test name="org.classpath.icedtea.pulseaudio.OtherSoundProvidersAvailableTest" />
-			<test name="org.classpath.icedtea.pulseaudio.PulseAudioClipTest" />
+			<test name="org.classpath.icedtea.pulseaudio.PulseAudioMixerProviderTest" />
+
+			<test name="org.classpath.icedtea.pulseaudio.PulseAudioMixerTest" />
+			<test name="org.classpath.icedtea.pulseaudio.PulseAudioMixerRawTest" />
+
 			<test name="org.classpath.icedtea.pulseaudio.PulseAudioEventLoopOverhead" />
-			<test name="org.classpath.icedtea.pulseaudio.PulseAudioMixerProviderTest" />
-			<test name="org.classpath.icedtea.pulseaudio.PulseAudioMixerRawTest" />
-			<test name="org.classpath.icedtea.pulseaudio.PulseAudioMixerTest" />
+
+			<test name="org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLineTest" />
+			<test name="org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLineRawTest" />
+
 			<test name="org.classpath.icedtea.pulseaudio.PulseAudioSourcePortTest" />
+
 			<test name="org.classpath.icedtea.pulseaudio.PulseAudioTargetDataLineTest" />
 			<test name="org.classpath.icedtea.pulseaudio.PulseAudioTargetPortTest" />
-			<test name="org.classpath.icedtea.pulseaudio.PulseSourceDataLineTest" />
 
+			<test name="org.classpath.icedtea.pulseaudio.PulseAudioClipTest" />
 
 		</junit>
 	</target>
diff -r d4bb2fa0df23 -r cd7041f7a655 unittests/org/classpath/icedtea/pulseaudio/OtherSoundProvidersAvailableTest.java
--- a/unittests/org/classpath/icedtea/pulseaudio/OtherSoundProvidersAvailableTest.java	Fri Sep 12 12:44:34 2008 -0400
+++ b/unittests/org/classpath/icedtea/pulseaudio/OtherSoundProvidersAvailableTest.java	Fri Sep 12 16:28:22 2008 -0400
@@ -1,4 +1,4 @@
-/* PulseAudioStreamVolumeControl.java
+/* OtherSoundProvidersAvailableTest.java
    Copyright (C) 2008 Red Hat, Inc.
 
 This file is part of IcedTea.
@@ -59,7 +59,7 @@ public class OtherSoundProvidersAvailabl
 
 		Mixer.Info mixerInfos[] = AudioSystem.getMixerInfo();
 		Mixer.Info selectedMixerInfo = null;
-		Mixer selectedMixer;
+		Mixer mixer;
 
 		boolean selected = false;
 		int i = 0;
@@ -81,14 +81,14 @@ public class OtherSoundProvidersAvailabl
 
 		System.out.print("Selected mixer is of class: ");
 
-		selectedMixer = AudioSystem.getMixer(selectedMixerInfo);
-		System.out.println(selectedMixer.getClass().toString());
+		mixer = AudioSystem.getMixer(selectedMixerInfo);
+		System.out.println(mixer.getClass().toString());
 		try {
 			Line.Info sourceDataLineInfo = null;
 
-			selectedMixer.open(); // initialize the mixer
+			mixer.open(); // initialize the mixer
 
-			Line.Info allLineInfo[] = selectedMixer.getSourceLineInfo();
+			Line.Info allLineInfo[] = mixer.getSourceLineInfo();
 			System.out.println("Source lines supported by mixer: ");
 			int j = 0;
 			for (Line.Info lineInfo : allLineInfo) {
@@ -103,7 +103,7 @@ public class OtherSoundProvidersAvailabl
 			if (sourceDataLineInfo == null) {
 				System.out.println("Mixer supports no SourceDataLines");
 			} else {
-				SourceDataLine sourceDataLine = (SourceDataLine) selectedMixer
+				SourceDataLine sourceDataLine = (SourceDataLine) mixer
 						.getLine(sourceDataLineInfo);
 
 				sourceDataLine.open();
@@ -112,6 +112,8 @@ public class OtherSoundProvidersAvailabl
 			}
 		} catch (LineUnavailableException e) {
 			System.out.println("Line unavailable");
+		} finally {
+			mixer.close();
 		}
 
 	}
diff -r d4bb2fa0df23 -r cd7041f7a655 unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java
--- a/unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java	Fri Sep 12 12:44:34 2008 -0400
+++ b/unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java	Fri Sep 12 16:28:22 2008 -0400
@@ -64,7 +64,7 @@ public class PulseAudioClipTest {
 
 	Mixer mixer;
 	AudioFormat aSupportedFormat = new AudioFormat(
-			AudioFormat.Encoding.PCM_UNSIGNED, 44100f, 8, 1, 1, 10, true);
+			AudioFormat.Encoding.PCM_UNSIGNED, 44100f, 8, 1, 1, 44100f, true);
 
 	public static junit.framework.Test suite() {
 		return new JUnit4TestAdapter(PulseAudioClipTest.class);
@@ -87,12 +87,15 @@ public class PulseAudioClipTest {
 
 	@Test
 	public void testObtainingAClip() throws LineUnavailableException {
+		System.out
+				.println("This tests if a clip can be obtained from the mixer");
 		Clip clip = (Clip) mixer.getLine(new Line.Info(Clip.class));
 		Assert.assertNotNull(clip);
 	}
 
 	@Test(expected = IllegalArgumentException.class)
 	public void testClipOpenWrongUse() throws LineUnavailableException {
+		System.out.println("This test checks ");
 		Clip clip = (Clip) mixer.getLine(new Line.Info(Clip.class));
 		clip.open();
 	}
@@ -228,7 +231,7 @@ public class PulseAudioClipTest {
 		Assert.assertEquals(1, closed);
 
 	}
-	
+
 	int started = 0;
 	int stopped = 0;
 
@@ -242,8 +245,7 @@ public class PulseAudioClipTest {
 		AudioFormat audioFormat = audioInputStream.getFormat();
 
 		Clip clip;
-		clip = (Clip) mixer.getLine(new DataLine.Info(
-				Clip.class, audioFormat));
+		clip = (Clip) mixer.getLine(new DataLine.Info(Clip.class, audioFormat));
 		Assert.assertNotNull(clip);
 
 		started = 0;
@@ -284,8 +286,7 @@ public class PulseAudioClipTest {
 		stopped = 0;
 
 	}
-	
-	
+
 	@Test
 	public void testLoop0Clip() throws LineUnavailableException, IOException,
 			UnsupportedAudioFileException {
@@ -345,6 +346,9 @@ public class PulseAudioClipTest {
 		clip1.close();
 		clip2.close();
 
+		Assert.assertFalse(clip1.isOpen());
+		Assert.assertFalse(clip2.isOpen());
+
 	}
 
 	@Test
diff -r d4bb2fa0df23 -r cd7041f7a655 unittests/org/classpath/icedtea/pulseaudio/PulseAudioEventLoopOverhead.java
--- a/unittests/org/classpath/icedtea/pulseaudio/PulseAudioEventLoopOverhead.java	Fri Sep 12 12:44:34 2008 -0400
+++ b/unittests/org/classpath/icedtea/pulseaudio/PulseAudioEventLoopOverhead.java	Fri Sep 12 16:28:22 2008 -0400
@@ -1,3 +1,40 @@ package org.classpath.icedtea.pulseaudio
+/* PulseAudioEventLoopOverhead.java
+   Copyright (C) 2008 Red Hat, Inc.
+
+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, version 2.
+
+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
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
 package org.classpath.icedtea.pulseaudio;
 
 import static org.junit.Assert.assertNotNull;
@@ -19,7 +56,7 @@ public class PulseAudioEventLoopOverhead
 		return new JUnit4TestAdapter(PulseAudioEventLoopOverhead.class);
 	}
 
-	Mixer selectedMixer;
+	Mixer mixer;
 
 	@Before
 	public void setUp() {
@@ -34,18 +71,18 @@ public class PulseAudioEventLoopOverhead
 			}
 		}
 		assertNotNull(selectedMixerInfo);
-		selectedMixer = (PulseAudioMixer) AudioSystem
-				.getMixer(selectedMixerInfo);
-		assertNotNull(selectedMixer);
-		if (selectedMixer.isOpen()) {
-			selectedMixer.close();
+		mixer = AudioSystem.getMixer(selectedMixerInfo);
+		assertNotNull(mixer);
+		if (mixer.isOpen()) {
+			mixer.close();
 		}
 
 	}
 
-	@Test @Ignore
+	@Test
+	@Ignore
 	public void testLongWait() throws LineUnavailableException {
-		selectedMixer.open();
+		mixer.open();
 		try {
 			/*
 			 * While this test is running, the java procces shouldnt be hogging
@@ -61,7 +98,9 @@ public class PulseAudioEventLoopOverhead
 
 	@After
 	public void tearDown() {
-
+		if (mixer.isOpen()) {
+			mixer.close();
+		}
 	}
 
 }
diff -r d4bb2fa0df23 -r cd7041f7a655 unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerRawTest.java
--- a/unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerRawTest.java	Fri Sep 12 12:44:34 2008 -0400
+++ b/unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerRawTest.java	Fri Sep 12 16:28:22 2008 -0400
@@ -37,8 +37,9 @@ exception statement from your version.
 
 package org.classpath.icedtea.pulseaudio;
 
+import java.net.UnknownHostException;
+
 import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.Mixer;
 
 import org.junit.After;
 import org.junit.Before;
@@ -46,7 +47,7 @@ import org.junit.Test;
 
 public class PulseAudioMixerRawTest {
 
-	Mixer mixer = null;
+	PulseAudioMixer mixer = null;
 
 	@Before
 	public void setUp() {
@@ -54,15 +55,63 @@ public class PulseAudioMixerRawTest {
 	}
 
 	@Test
-	public void testOpen() throws LineUnavailableException {
-		mixer.open();
+	public void testLocalOpen() throws LineUnavailableException {
+		System.out.println("This test tries to open to the local system");
+		mixer.openLocal();
+	}
+
+	@Test
+	public void testLocalOpenAppName() throws LineUnavailableException {
+		System.out
+				.println("This test tries to connect to the local system while using an application name");
+		mixer.openLocal("JunitTest");
+
+	}
+
+	@Test(expected = LineUnavailableException.class)
+	public void testRemoteOpenWithInvalidPort() throws UnknownHostException,
+			LineUnavailableException {
+		System.out
+				.println("this test tries to connect to an invalid remote system");
+		mixer.openRemote("JUnitTest", "128.0.0.1", 10);
+
+	}
+
+	/*
+	 * This test assumes a computer named 'town' is in the network with
+	 * pulseaudio listening on port 4173
+	 */
+	@Test
+	public void testRemoteOpenWithValidPort() throws UnknownHostException,
+			LineUnavailableException {
+		System.out.println("This test tries to connect a valid remote system");
+		mixer.openRemote("JUnitTest", "town", 4713);
 		mixer.close();
+	}
 
+	/*
+	 * This test assumes a computer named 'town' is in the network with
+	 * pulseaudio listening
+	 */
+	@Test
+	public void testRemoteOpen() throws UnknownHostException,
+			LineUnavailableException {
+		mixer.openRemote("JUnitTest", "town");
+		mixer.close();
+	}
+
+	@Test(expected = LineUnavailableException.class)
+	public void testInvalidRemoteOpen() throws UnknownHostException,
+			LineUnavailableException {
+		mixer.openRemote("JUnitTest", "127.0.0.1");
+		mixer.close();
 	}
 
 	@After
 	public void tearDown() {
-
+		if (mixer.isOpen()) {
+			mixer.close();
+		}
 	}
 
 }
diff -r d4bb2fa0df23 -r cd7041f7a655 unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerTest.java
--- a/unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerTest.java	Fri Sep 12 12:44:34 2008 -0400
+++ b/unittests/org/classpath/icedtea/pulseaudio/PulseAudioMixerTest.java	Fri Sep 12 16:28:22 2008 -0400
@@ -1,4 +1,4 @@
-/* PulseAudioStreamVolumeControl.java
+/* PulseAudioMixerTest.java
    Copyright (C) 2008 Red Hat, Inc.
 
 This file is part of IcedTea.
@@ -37,10 +37,6 @@ exception statement from your version.
 
 package org.classpath.icedtea.pulseaudio;
 
-import static org.junit.Assert.assertNotNull;
-
-import java.net.UnknownHostException;
-
 import javax.sound.sampled.AudioFormat;
 import javax.sound.sampled.AudioSystem;
 import javax.sound.sampled.Line;
@@ -50,7 +46,6 @@ import javax.sound.sampled.Mixer;
 import javax.sound.sampled.Mixer;
 import javax.sound.sampled.Port;
 import javax.sound.sampled.TargetDataLine;
-import javax.sound.sampled.DataLine.Info;
 
 import junit.framework.JUnit4TestAdapter;
 
@@ -62,7 +57,7 @@ import org.junit.Test;
 
 public class PulseAudioMixerTest {
 
-	PulseAudioMixer selectedMixer;
+	Mixer selectedMixer;
 
 	AudioFormat aSupportedFormat = new AudioFormat(
 			AudioFormat.Encoding.PCM_UNSIGNED, 44100f, 8, 1, 1, 44100f, true);
@@ -83,10 +78,9 @@ public class PulseAudioMixerTest {
 				selectedMixerInfo = info;
 			}
 		}
-		assertNotNull(selectedMixerInfo);
-		selectedMixer = (PulseAudioMixer) AudioSystem
-				.getMixer(selectedMixerInfo);
-		assertNotNull(selectedMixer);
+		Assert.assertNotNull(selectedMixerInfo);
+		selectedMixer = AudioSystem.getMixer(selectedMixerInfo);
+		Assert.assertNotNull(selectedMixer);
 		if (selectedMixer.isOpen()) {
 			selectedMixer.close();
 		}
@@ -94,56 +88,10 @@ public class PulseAudioMixerTest {
 	}
 
 	@Test
-	public void testLocalOpen() throws LineUnavailableException {
-		System.out.println("This test tries to open to the local system");
-		selectedMixer.openLocal();
-	}
-
-	@Test
-	public void testLocalOpenAppName() throws LineUnavailableException {
-		System.out
-				.println("This test tries to connect to the local system while using an application name");
-		selectedMixer.openLocal("JunitTest");
-
-	}
-
-	@Test(expected = LineUnavailableException.class)
-	public void testRemoteOpenWithInvalidPort() throws UnknownHostException,
-			LineUnavailableException {
-		System.out
-				.println("this test tries to connect to an invalid remote system");
-		selectedMixer.openRemote("JUnitTest", "128.0.0.1", 10);
-
-	}
-
-	/*
-	 * This test assumes a computer named 'town' is in the network with
-	 * pulseaudio listening on port 4173
-	 */
-	@Test
-	public void testRemoteOpenWithValidPort() throws UnknownHostException,
-			LineUnavailableException {
-		System.out.println("This test tries to connect a valid remote system");
-		selectedMixer.openRemote("JUnitTest", "town", 4713);
-		selectedMixer.close();
-	}
-
-	/*
-	 * This test assumes a computer named 'town' is in the network with
-	 * pulseaudio listening
-	 */
-	@Test
-	public void testRemoteOpen() throws UnknownHostException,
-			LineUnavailableException {
-		selectedMixer.openRemote("JUnitTest", "town");
-		selectedMixer.close();
-	}
-
-	@Test(expected = LineUnavailableException.class)
-	public void testInvalidRemoteOpen() throws UnknownHostException,
-			LineUnavailableException {
-		selectedMixer.openRemote("JUnitTest", "127.0.0.1");
-		selectedMixer.close();
+	public void testOpenClose() throws LineUnavailableException {
+		selectedMixer.open();
+		selectedMixer.close();
+
 	}
 
 	@Test
@@ -172,7 +120,7 @@ public class PulseAudioMixerTest {
 				Assert.assertFalse("Found a new type of Line", true);
 			}
 			Line sourceLine = (Line) selectedMixer.getLine(lineInfo);
-			assertNotNull(sourceLine);
+			Assert.assertNotNull(sourceLine);
 
 		}
 
@@ -205,7 +153,7 @@ public class PulseAudioMixerTest {
 				Assert.assertTrue("Found invalid type of target line", true);
 			}
 			Line targetLine = (Line) selectedMixer.getLine(lineInfo);
-			assertNotNull(targetLine);
+			Assert.assertNotNull(targetLine);
 
 		}
 
diff -r d4bb2fa0df23 -r cd7041f7a655 unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineRawTest.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineRawTest.java	Fri Sep 12 16:28:22 2008 -0400
@@ -0,0 +1,281 @@
+/* PulseAudioSourceDataLineRawTest.java
+   Copyright (C) 2008 Red Hat, Inc.
+
+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, version 2.
+
+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
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not



More information about the distro-pkg-dev mailing list