uncommitted - knopflerfish-osgi
Ready changes
Summary
Import uploads missing from VCS:Diff
diff --git a/.pc/.quilt_patches b/.pc/.quilt_patches
new file mode 100644
index 0000000..6857a8d
--- /dev/null
+++ b/.pc/.quilt_patches
@@ -0,0 +1 @@
+debian/patches
diff --git a/.pc/.quilt_series b/.pc/.quilt_series
new file mode 100644
index 0000000..c206706
--- /dev/null
+++ b/.pc/.quilt_series
@@ -0,0 +1 @@
+series
diff --git a/.pc/.version b/.pc/.version
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/.pc/.version
@@ -0,0 +1 @@
+2
diff --git a/.pc/10_javac_encoding_source_target_level.patch/osgi/framework/build.xml b/.pc/10_javac_encoding_source_target_level.patch/osgi/framework/build.xml
new file mode 100644
index 0000000..5165c3a
--- /dev/null
+++ b/.pc/10_javac_encoding_source_target_level.patch/osgi/framework/build.xml
@@ -0,0 +1,408 @@
+<?xml version="1.0"?>
+
+<project name="framework" default="all">
+
+ <!-- build properties -->
+ <property name="topdir" location=".."/>
+ <property name="osgi.dir" location="${topdir}"/>
+ <property name="ant.dir" location="${topdir}/../ant"/>
+
+ <property name="root.out.dir" location="${topdir}/out"/>
+ <property name="jars.dir" location="${topdir}/jars"/>
+ <property name="outdir" location="${root.out.dir}/${ant.project.name}"/>
+ <property name="classout" location="${outdir}/classes"/>
+ <property name="classout_compact" location="${outdir}/classes_compact"/>
+ <property name="javadoc.out.dir" location="${outdir}/javadoc"/>
+ <property name="docs.dir" location="${root.out.dir}/doc"/>
+ <property name="outdocdir" location="${docs.dir}/${ant.project.name}"/>
+ <!-- Location of templates used by the framework_doc-target. -->
+ <property name="frameworkdoc_template"
+ location="${ant.dir}/html_template/frameworkdoc.html"/>
+
+ <property name="fw.base.version" value="8.0.5"/>
+ <property name="version.suffix" value=""/>
+ <condition property="fw.impl.version"
+ value="${fw.base.version}"
+ else="${fw.base.version}.${version.suffix}">
+ <equals arg1="${version.suffix}" arg2=""/>
+ </condition>
+
+ <property name="jarfile"
+ location="${topdir}/${ant.project.name}.jar"/>
+ <property name="jarfile_compact"
+ location="${topdir}/${ant.project.name}_compact.jar"/>
+ <property name="source.jarfile"
+ location="${topdir}/${ant.project.name}-source.jar"/>
+ <property name="javadoc.jarfile"
+ location="${topdir}/${ant.project.name}-javadoc.jar"/>
+ <property name="jarfile_version"
+ location="${jars.dir}/${ant.project.name}-${fw.impl.version}.jar"/>
+
+ <import file="${ant.dir}/android.xml"/>
+
+ <property name="proguard.libraryjar" value="${java.home}/lib/rt.jar"/>
+
+ <!-- OSGi annotations -->
+ <property name="osgi.annotation.jar" location="${topdir}/annotations/osgi.annotation-6.0.1.jar"/>
+
+ <property name="src.dir" location="src"/>
+
+ <property name="printClasses" location="true"/>
+
+ <path id="compile.path">
+ <pathelement location="${topdir}/framework/resources"/>
+ <pathelement location="${osgi.annotation.jar}"/>
+ <pathelement location="libs/asm-3.2.jar"/>
+ </path>
+
+ <path id="android.system.path">
+ <pathelement location="${osgi.dir}/ee/android.jar"/>
+ </path>
+
+ <path id="empty.path">
+ </path>
+
+ <property name="androidSrcs"
+ value="org/knopflerfish/framework/bundlestorage/dex/*.java"/>
+ <property name="android.class.path.name" value="android.system.path"/>
+
+ <!-- targets -->
+ <target name="all"
+ depends="jar, source.jar, save_javadoc_data, javadoc.jar">
+ </target>
+
+ <target name="compile">
+ <antcall target="compile_full"/>
+ <antcall target="compile_compact"/>
+ </target>
+
+ <target name = "compile_full"
+ unless = "compact"
+ description = "compiles all java sources">
+ <mkdir dir="${classout}"/>
+
+ <javac destdir = "${classout}"
+ srcdir = "${src.dir}"
+ debug = "on"
+ includeantruntime = "false"
+ includes = "**/*.java"
+ excludes = "${androidSrcs},**/package-info.java"
+ classpathref = "compile.path"
+ >
+ <compilerarg value="-Xlint:-options"/>
+ </javac>
+ <!-- Android parts (uses dalvik.*) -->
+ <javac destdir = "${classout}"
+ srcdir = "${src.dir}"
+ debug = "on"
+ includeantruntime = "false"
+ includejavaruntime = "true"
+ includes = "${androidSrcs}"
+ excludes = "**/package-info.java"
+ source = "1.6"
+ target = "1.6"
+ bootclasspathref = "${android.class.path.name}"
+ classpathref = "compile.path"
+ >
+ <compilerarg value="-Xlint:-options"/>
+ </javac>
+ </target>
+
+ <target name="compile_compact"
+ if="compact"
+ description="compiles with file storage only">
+ <mkdir dir="${classout_compact}"/>
+
+ <javac destdir = "${classout_compact}"
+ srcdir = "${src.dir}"
+ debug = "on"
+ includeantruntime = "false"
+ includes = "**/*.java"
+ excludes = "org/knopflerfish/framework/validator/*.java,org/knopflerfish/framework/bundlestorage/dex/*.java,org/knopflerfish/framework/bundlestorage/memory/*.java,**/package-info.java,org/knopflerfish/framework/SecurePermissionOps.java,org/knopflerfish/framework/permissions/*.java"
+ classpathref = "compile.path"
+ >
+ </javac>
+ </target>
+
+ <target name="jar" depends="compile,genexports" description="build jar">
+ <tstamp>
+ <format property="framework.tstamp"
+ pattern="'Build' EE MMMM d yyyy, HH:mm:ss"
+ locale="en"/>
+ </tstamp>
+
+ <!-- delete in case the file is read-only -->
+ <delete file="resources/version"/>
+ <echo message="${fw.impl.version}" file="resources/version"/>
+ <delete file="resources/tstamp"/>
+ <echo message="${framework.tstamp}" file="resources/tstamp"/>
+
+ <condition property="version.isset">
+ <isset property="version"/>
+ </condition>
+
+ <antcall target="writerelease"/>
+
+ <delete file="${classout}/classes.dex"/>
+
+ <loadfile srcfile="${src.dir}/org/osgi/framework/packageinfo"
+ property="fw.spec.version">
+ <filterchain>
+ <striplinebreaks/>
+ <replacestring from="version " to=""/>
+ </filterchain>
+ </loadfile>
+
+ <antcall target="jar_file_full"/>
+ <antcall target="jar_file_compact"/>
+ </target>
+
+ <target name = "jar_file_full"
+ unless = "compact">
+ <jar basedir="${classout}"
+ filesonly="true"
+ jarfile="${jarfile}">
+ <fileset dir="resources"/>
+ <manifest>
+ <attribute name="Main-class" value="org.knopflerfish.framework.Main"/>
+ <attribute name="Specification-Title" value="OSGi Framework API"/>
+ <attribute name="Specification-Version" value="${fw.spec.version}"/>
+ <attribute name="Specification-Vendor" value="Open Service Gateway initiative"/>
+ <attribute name="Implementation-Title" value="Knopflerfish OSGi Framework"/>
+ <attribute name="Implementation-Version" value="${fw.impl.version}" />
+ <attribute name="Implementation-Vendor" value="Knopflerfish"/>
+ <attribute name="Bundle-Vendor" value="Knopflerfish"/>
+ <attribute name="Bundle-Version" value="${fw.impl.version}"/>
+ <attribute name="Bundle-SymbolicName" value="org.knopflerfish.framework"/>
+ <attribute name="Bundle-Name" value="frameworkbundle"/>
+ <attribute name="Bundle-Description" value="Knopflerfish OSGi framework system bundle"/>
+ <attribute name="Bundle-License"
+ value=""http://www.knopflerfish.org/license.html";description=BSD;link="http://www.knopflerfish.org/license.html""/>
+ <attribute name="Export-Package" value="${fw.export-package}"/>
+ <attribute name="Bundle-DocURL" value="http://www.knopflerfish.org/releases/current/docs/bundledoc/index.html?docpage=framework/index.html"/>
+ <attribute name="Bundle-GitURL" value="https://github.com/knopflerfish/knopflerfish.org/tree/master/osgi/framework/"/>
+ <attribute name="Build-Date" value="${framework.tstamp}"/>
+ <attribute name="SplashScreen-Image" value="kfsplash.gif"/>
+ </manifest>
+ </jar>
+ <mkdir dir="${jars.dir}"/>
+ <copy file="${jarfile}"
+ tofile="${jarfile_version}"
+ overwrite="true"/>
+ <antcall target="cond_dex_jars"/>
+ </target>
+
+ <target name = "jar_file_compact"
+ if = "compact">
+ <jar basedir="${classout_compact}"
+ filesonly="true"
+ jarfile="${jarfile_compact}">
+ <fileset dir="resources">
+ <exclude name="kfsplash.gif"/>
+ </fileset>
+ <manifest>
+ <attribute name="Main-class" value="org.knopflerfish.framework.Main"/>
+ <attribute name="Specification-Title" value="OSGi Framework API"/>
+ <attribute name="Specification-Version" value="${fw.spec.version}"/>
+ <attribute name="Specification-Vendor" value="Open Service Gateway initiative"/>
+ <attribute name="Implementation-Title" value="Knopflerfish OSGi Framework"/>
+ <attribute name="Implementation-Version" value="${fw.impl.version}" />
+ <attribute name="Implementation-Vendor" value="Knopflerfish"/>
+ <attribute name="Bundle-Vendor" value="Knopflerfish"/>
+ <attribute name="Bundle-Version" value="${fw.impl.version}"/>
+ <attribute name="Bundle-SymbolicName" value="org.knopflerfish.framework"/>
+ <attribute name="Bundle-Name" value="frameworkbundle"/>
+ <attribute name="Bundle-Description" value="Knopflerfish OSGi framework system bundle"/>
+ <attribute name="Bundle-License"
+ value=""http://www.knopflerfish.org/license.html";description=BSD;link="http://www.knopflerfish.org/license.html""/>
+ <attribute name="Export-Package" value="${fw.export-package}"/>
+ <attribute name="Bundle-DocURL" value="http://www.knopflerfish.org/releases/current/docs/bundledoc/index.html?docpage=framework/index.html"/>
+ <attribute name="Bundle-GitURL" value="https://github.com/knopflerfish/knopflerfish.org/tree/master/osgi/framework/"/>
+ <attribute name="Build-Date" value="${framework.tstamp}"/>
+ </manifest>
+ </jar>
+ <antcall target="proguard_compact"/>
+ </target>
+
+ <target name = "proguard_compact"
+ depends="install_proguard">
+ <move file="${jarfile_compact}" tofile="${jarfile_compact}.tmp.jar"/>
+ <proguard note="false">
+ <!-- Specify the input jars, output jars, and library jars. -->
+ <injar file="${jarfile_compact}.tmp.jar" />
+ <outjar file="${jarfile_compact}" />
+ <libraryjar file="${proguard.libraryjar}" />
+ <libraryjar file="${osgi.annotation.jar}" />
+
+ <!-- Preserve Main. -->
+ <keepclasseswithmembers access="public">
+ <method access ="public static"
+ type ="void"
+ name ="main"
+ parameters="java.lang.String[]" />
+ </keepclasseswithmembers>
+
+ <!-- Keep KF dynamic -->
+ <keep name="org.knopflerfish.framework.FrameworkFactoryImpl"/>
+ <keep name="org.knopflerfish.framework.bundlestorage.file.BundleStorageImpl">
+ <constructor/>
+ </keep>
+
+ <!-- Keep OSGi interface -->
+ <keep name="org.osgi.**" access="public">
+ <field access="public,protected"/>
+ <method access="public,protected"/>
+ <constructor access="public,protected"/>
+ </keep>
+
+ <!-- Explicitly preserve all serialization members. The Serializable
+ interface is only a marker interface, so it wouldn't save them.
+ You can comment this out if your library doesn't use serialization.
+ If your code contains serializable classes that have to be backward
+ compatible, please refer to the manual. -->
+
+ <keepclassmembers implements="java.io.Serializable">
+ <field access ="static final"
+ type ="long"
+ name ="serialVersionUID" />
+ <field access ="static final"
+ type ="java.io.ObjectStreamField[]"
+ name ="serialPersistentFields" />
+ <method access ="private"
+ type ="void"
+ name ="writeObject"
+ parameters="java.io.ObjectOutputStream" />
+ <method access ="private"
+ type ="void"
+ name ="readObject"
+ parameters="java.io.ObjectInputStream" />
+ <method type ="java.lang.Object"
+ name ="writeReplace"
+ parameters="" />
+ <method type ="java.lang.Object"
+ name ="readResolve"
+ parameters="" />
+ </keepclassmembers>
+
+ </proguard>
+ <delete file="${jarfile_compact}.tmp.jar"/>
+ </target>
+
+ <target name="source.jar" if="bundle.build.source.jar">
+ <jar basedir="${src.dir}"
+ jarfile="${source.jarfile}"
+ includes="**/*.java"
+ excludes="**/package-info.java"
+ manifestencoding="UTF-8">
+ </jar>
+ </target>
+
+ <target name="save_javadoc_data" depends="genexports"
+ if="generate.javadoc.data">
+ <echo message="save_javadoc: to:${sources.file} src:${src.dir} "/>
+ <echo file="${sources.file}" append="true"
+ message="${src.dir}${line.separator}"/>
+ <echo file="${exported.file}" append="true"
+ message="${fw.export-package}${line.separator}"/>
+ </target>
+
+ <target name="javadoc.jar" if="bundle.build.javadoc.jar">
+ <mkdir dir="${javadoc.out.dir}"/>
+
+ <property name="javadoc.header"
+ value="Knopflerfish OSGi Framework ${fw.impl.version}"/>
+
+ <property name="javadoc.footer"
+ value="Knopflerfish OSGi ${version}"/>
+
+ <property name="javadoc.windowtitle"
+ value="${javadoc.header} javadoc"/>
+
+ <property name="javadoc.doctitle"
+ value="${javadoc.header} API documentation"/>
+
+ <javadoc header="${javadoc.header}"
+ footer="${javadoc.footer}"
+ windowtitle="${javadoc.windowtitle}"
+ doctitle="${javadoc.doctitle}"
+ destdir="${javadoc.out.dir}"
+ classpathref="compile.path">
+ <!-- Custome tags used by OSGi -->
+ <tag name="ThreadSafe" scope="all" description="ThreadSafe"/>
+ <tag name="NotThreadSafe" scope="all" description="NotThreadSafe"/>
+ <tag name="Immutable" scope="all" description="Immutable"/>
+ <tag name="security" scope="all" description="Required Permissions"/>
+ <tag name="noimplement" scope="all"
+ description="Consumers of this API must not implement this interface"/>
+ <packageset dir="${src.dir}">
+ <include name="org/osgi/**"/>
+ <exclude name="org/knopflerfish/**"/>
+ </packageset>
+
+ </javadoc>
+
+ <jar basedir="${javadoc.out.dir}"
+ jarfile="${javadoc.jarfile}"
+ includes="**"
+ manifestencoding="UTF-8">
+ </jar>
+ </target>
+
+ <target name="dex_jars"
+ description="Dexifies framework.">
+ <fail unless="android.exists" message="You must set the ANDROID_HOME property"/>
+ <antcall target="cond_dex_jars" inheritRefs="true"/>
+ </target>
+
+ <!-- Helper taget that adds Android dex data to framework.jar. -->
+ <target name="cond_dex_jars" if="android.exists">
+ <dexify_bundle bundle="${jarfile}"/>
+ </target>
+
+ <target name="framework_doc"
+ depends="bundle_tasks,genexports">
+ <property name="bmfa.Bundle-Version" value="${fw.impl.version}"/>
+ <property name="bmfa.Export-Package" value="${fw.export-package}"/>
+ <makehtml template="${frameworkdoc_template}"
+ outdir="${outdocdir}"
+ manstyle="true">
+ <fileset dir="doc">
+ <include name="**/*.html"/>
+ </fileset>
+ </makehtml>
+
+ <copy todir="${outdocdir}">
+ <fileset dir="doc">
+ <exclude name="**/*.html"/>
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="run">
+ <java fork="true"
+ jar="${outdir}/${ant.project.name}.jar"
+ />
+ </target>
+
+ <target name="writerelease" if="version.isset">
+ <delete file="resources/release"/>
+ <echo message="${version}" file="resources/release"/>
+ </target>
+
+ <target name="genexports" depends="bundle_tasks">
+ <delete file="resources/exports"/>
+ <bundleinfo exports = "fw.export-package"
+ addPackageinfoPackages = "true" >
+ <exports dir="src" includes="org/osgi/**"/>
+ </bundleinfo>
+ <echo message="${fw.export-package}" file="resources/exports"/>
+ </target>
+
+ <target name="clean" description="removes all generated files">
+ <delete dir="${outdir}"/>
+ <delete file="${jarfile}"/>
+ </target>
+
+ <import file="${topdir}/../ant/bundletasks.xml"/>
+
+</project>
diff --git a/.pc/40_ignore_android.patch/osgi/framework/build.xml b/.pc/40_ignore_android.patch/osgi/framework/build.xml
new file mode 100644
index 0000000..52643f1
--- /dev/null
+++ b/.pc/40_ignore_android.patch/osgi/framework/build.xml
@@ -0,0 +1,411 @@
+<?xml version="1.0"?>
+
+<project name="framework" default="all">
+
+ <!-- build properties -->
+ <property name="topdir" location=".."/>
+ <property name="osgi.dir" location="${topdir}"/>
+ <property name="ant.dir" location="${topdir}/../ant"/>
+
+ <property name="root.out.dir" location="${topdir}/out"/>
+ <property name="jars.dir" location="${topdir}/jars"/>
+ <property name="outdir" location="${root.out.dir}/${ant.project.name}"/>
+ <property name="classout" location="${outdir}/classes"/>
+ <property name="classout_compact" location="${outdir}/classes_compact"/>
+ <property name="javadoc.out.dir" location="${outdir}/javadoc"/>
+ <property name="docs.dir" location="${root.out.dir}/doc"/>
+ <property name="outdocdir" location="${docs.dir}/${ant.project.name}"/>
+ <!-- Location of templates used by the framework_doc-target. -->
+ <property name="frameworkdoc_template"
+ location="${ant.dir}/html_template/frameworkdoc.html"/>
+
+ <property name="fw.base.version" value="8.0.5"/>
+ <property name="version.suffix" value=""/>
+ <condition property="fw.impl.version"
+ value="${fw.base.version}"
+ else="${fw.base.version}.${version.suffix}">
+ <equals arg1="${version.suffix}" arg2=""/>
+ </condition>
+
+ <property name="jarfile"
+ location="${topdir}/${ant.project.name}.jar"/>
+ <property name="jarfile_compact"
+ location="${topdir}/${ant.project.name}_compact.jar"/>
+ <property name="source.jarfile"
+ location="${topdir}/${ant.project.name}-source.jar"/>
+ <property name="javadoc.jarfile"
+ location="${topdir}/${ant.project.name}-javadoc.jar"/>
+ <property name="jarfile_version"
+ location="${jars.dir}/${ant.project.name}-${fw.impl.version}.jar"/>
+
+ <import file="${ant.dir}/android.xml"/>
+
+ <property name="proguard.libraryjar" value="${java.home}/lib/rt.jar"/>
+
+ <!-- OSGi annotations -->
+ <property name="osgi.annotation.jar" location="${topdir}/annotations/osgi.annotation-6.0.1.jar"/>
+
+ <property name="src.dir" location="src"/>
+
+ <property name="printClasses" location="true"/>
+
+ <path id="compile.path">
+ <pathelement location="${topdir}/framework/resources"/>
+ <pathelement location="${osgi.annotation.jar}"/>
+ <pathelement location="libs/asm-3.2.jar"/>
+ </path>
+
+ <path id="android.system.path">
+ <pathelement location="${osgi.dir}/ee/android.jar"/>
+ </path>
+
+ <path id="empty.path">
+ </path>
+
+ <property name="androidSrcs"
+ value="org/knopflerfish/framework/bundlestorage/dex/*.java"/>
+ <property name="android.class.path.name" value="android.system.path"/>
+
+ <!-- targets -->
+ <target name="all"
+ depends="jar, source.jar, save_javadoc_data, javadoc.jar">
+ </target>
+
+ <target name="compile">
+ <antcall target="compile_full"/>
+ <antcall target="compile_compact"/>
+ </target>
+
+ <target name = "compile_full"
+ unless = "compact"
+ description = "compiles all java sources">
+ <mkdir dir="${classout}"/>
+
+ <javac destdir = "${classout}"
+ srcdir = "${src.dir}"
+ debug = "on"
+ includeantruntime = "false"
+ includes = "**/*.java"
+ excludes = "${androidSrcs},**/package-info.java"
+ classpathref = "compile.path"
+ encoding = "UTF-8"
+ source = "1.7"
+ target = "1.7"
+ >
+ <compilerarg value="-Xlint:-options"/>
+ </javac>
+ <!-- Android parts (uses dalvik.*) -->
+ <javac destdir = "${classout}"
+ srcdir = "${src.dir}"
+ debug = "on"
+ includeantruntime = "false"
+ includejavaruntime = "true"
+ includes = "${androidSrcs}"
+ excludes = "**/package-info.java"
+ source = "1.6"
+ target = "1.6"
+ bootclasspathref = "${android.class.path.name}"
+ classpathref = "compile.path"
+ >
+ <compilerarg value="-Xlint:-options"/>
+ </javac>
+ </target>
+
+ <target name="compile_compact"
+ if="compact"
+ description="compiles with file storage only">
+ <mkdir dir="${classout_compact}"/>
+
+ <javac destdir = "${classout_compact}"
+ srcdir = "${src.dir}"
+ debug = "on"
+ includeantruntime = "false"
+ includes = "**/*.java"
+ excludes = "org/knopflerfish/framework/validator/*.java,org/knopflerfish/framework/bundlestorage/dex/*.java,org/knopflerfish/framework/bundlestorage/memory/*.java,**/package-info.java,org/knopflerfish/framework/SecurePermissionOps.java,org/knopflerfish/framework/permissions/*.java"
+ classpathref = "compile.path"
+ >
+ </javac>
+ </target>
+
+ <target name="jar" depends="compile,genexports" description="build jar">
+ <tstamp>
+ <format property="framework.tstamp"
+ pattern="'Build' EE MMMM d yyyy, HH:mm:ss"
+ locale="en"/>
+ </tstamp>
+
+ <!-- delete in case the file is read-only -->
+ <delete file="resources/version"/>
+ <echo message="${fw.impl.version}" file="resources/version"/>
+ <delete file="resources/tstamp"/>
+ <echo message="${framework.tstamp}" file="resources/tstamp"/>
+
+ <condition property="version.isset">
+ <isset property="version"/>
+ </condition>
+
+ <antcall target="writerelease"/>
+
+ <delete file="${classout}/classes.dex"/>
+
+ <loadfile srcfile="${src.dir}/org/osgi/framework/packageinfo"
+ property="fw.spec.version">
+ <filterchain>
+ <striplinebreaks/>
+ <replacestring from="version " to=""/>
+ </filterchain>
+ </loadfile>
+
+ <antcall target="jar_file_full"/>
+ <antcall target="jar_file_compact"/>
+ </target>
+
+ <target name = "jar_file_full"
+ unless = "compact">
+ <jar basedir="${classout}"
+ filesonly="true"
+ jarfile="${jarfile}">
+ <fileset dir="resources"/>
+ <manifest>
+ <attribute name="Main-class" value="org.knopflerfish.framework.Main"/>
+ <attribute name="Specification-Title" value="OSGi Framework API"/>
+ <attribute name="Specification-Version" value="${fw.spec.version}"/>
+ <attribute name="Specification-Vendor" value="Open Service Gateway initiative"/>
+ <attribute name="Implementation-Title" value="Knopflerfish OSGi Framework"/>
+ <attribute name="Implementation-Version" value="${fw.impl.version}" />
+ <attribute name="Implementation-Vendor" value="Knopflerfish"/>
+ <attribute name="Bundle-Vendor" value="Knopflerfish"/>
+ <attribute name="Bundle-Version" value="${fw.impl.version}"/>
+ <attribute name="Bundle-SymbolicName" value="org.knopflerfish.framework"/>
+ <attribute name="Bundle-Name" value="frameworkbundle"/>
+ <attribute name="Bundle-Description" value="Knopflerfish OSGi framework system bundle"/>
+ <attribute name="Bundle-License"
+ value=""http://www.knopflerfish.org/license.html";description=BSD;link="http://www.knopflerfish.org/license.html""/>
+ <attribute name="Export-Package" value="${fw.export-package}"/>
+ <attribute name="Bundle-DocURL" value="http://www.knopflerfish.org/releases/current/docs/bundledoc/index.html?docpage=framework/index.html"/>
+ <attribute name="Bundle-GitURL" value="https://github.com/knopflerfish/knopflerfish.org/tree/master/osgi/framework/"/>
+ <attribute name="Build-Date" value="${framework.tstamp}"/>
+ <attribute name="SplashScreen-Image" value="kfsplash.gif"/>
+ </manifest>
+ </jar>
+ <mkdir dir="${jars.dir}"/>
+ <copy file="${jarfile}"
+ tofile="${jarfile_version}"
+ overwrite="true"/>
+ <antcall target="cond_dex_jars"/>
+ </target>
+
+ <target name = "jar_file_compact"
+ if = "compact">
+ <jar basedir="${classout_compact}"
+ filesonly="true"
+ jarfile="${jarfile_compact}">
+ <fileset dir="resources">
+ <exclude name="kfsplash.gif"/>
+ </fileset>
+ <manifest>
+ <attribute name="Main-class" value="org.knopflerfish.framework.Main"/>
+ <attribute name="Specification-Title" value="OSGi Framework API"/>
+ <attribute name="Specification-Version" value="${fw.spec.version}"/>
+ <attribute name="Specification-Vendor" value="Open Service Gateway initiative"/>
+ <attribute name="Implementation-Title" value="Knopflerfish OSGi Framework"/>
+ <attribute name="Implementation-Version" value="${fw.impl.version}" />
+ <attribute name="Implementation-Vendor" value="Knopflerfish"/>
+ <attribute name="Bundle-Vendor" value="Knopflerfish"/>
+ <attribute name="Bundle-Version" value="${fw.impl.version}"/>
+ <attribute name="Bundle-SymbolicName" value="org.knopflerfish.framework"/>
+ <attribute name="Bundle-Name" value="frameworkbundle"/>
+ <attribute name="Bundle-Description" value="Knopflerfish OSGi framework system bundle"/>
+ <attribute name="Bundle-License"
+ value=""http://www.knopflerfish.org/license.html";description=BSD;link="http://www.knopflerfish.org/license.html""/>
+ <attribute name="Export-Package" value="${fw.export-package}"/>
+ <attribute name="Bundle-DocURL" value="http://www.knopflerfish.org/releases/current/docs/bundledoc/index.html?docpage=framework/index.html"/>
+ <attribute name="Bundle-GitURL" value="https://github.com/knopflerfish/knopflerfish.org/tree/master/osgi/framework/"/>
+ <attribute name="Build-Date" value="${framework.tstamp}"/>
+ </manifest>
+ </jar>
+ <antcall target="proguard_compact"/>
+ </target>
+
+ <target name = "proguard_compact"
+ depends="install_proguard">
+ <move file="${jarfile_compact}" tofile="${jarfile_compact}.tmp.jar"/>
+ <proguard note="false">
+ <!-- Specify the input jars, output jars, and library jars. -->
+ <injar file="${jarfile_compact}.tmp.jar" />
+ <outjar file="${jarfile_compact}" />
+ <libraryjar file="${proguard.libraryjar}" />
+ <libraryjar file="${osgi.annotation.jar}" />
+
+ <!-- Preserve Main. -->
+ <keepclasseswithmembers access="public">
+ <method access ="public static"
+ type ="void"
+ name ="main"
+ parameters="java.lang.String[]" />
+ </keepclasseswithmembers>
+
+ <!-- Keep KF dynamic -->
+ <keep name="org.knopflerfish.framework.FrameworkFactoryImpl"/>
+ <keep name="org.knopflerfish.framework.bundlestorage.file.BundleStorageImpl">
+ <constructor/>
+ </keep>
+
+ <!-- Keep OSGi interface -->
+ <keep name="org.osgi.**" access="public">
+ <field access="public,protected"/>
+ <method access="public,protected"/>
+ <constructor access="public,protected"/>
+ </keep>
+
+ <!-- Explicitly preserve all serialization members. The Serializable
+ interface is only a marker interface, so it wouldn't save them.
+ You can comment this out if your library doesn't use serialization.
+ If your code contains serializable classes that have to be backward
+ compatible, please refer to the manual. -->
+
+ <keepclassmembers implements="java.io.Serializable">
+ <field access ="static final"
+ type ="long"
+ name ="serialVersionUID" />
+ <field access ="static final"
+ type ="java.io.ObjectStreamField[]"
+ name ="serialPersistentFields" />
+ <method access ="private"
+ type ="void"
+ name ="writeObject"
+ parameters="java.io.ObjectOutputStream" />
+ <method access ="private"
+ type ="void"
+ name ="readObject"
+ parameters="java.io.ObjectInputStream" />
+ <method type ="java.lang.Object"
+ name ="writeReplace"
+ parameters="" />
+ <method type ="java.lang.Object"
+ name ="readResolve"
+ parameters="" />
+ </keepclassmembers>
+
+ </proguard>
+ <delete file="${jarfile_compact}.tmp.jar"/>
+ </target>
+
+ <target name="source.jar" if="bundle.build.source.jar">
+ <jar basedir="${src.dir}"
+ jarfile="${source.jarfile}"
+ includes="**/*.java"
+ excludes="**/package-info.java"
+ manifestencoding="UTF-8">
+ </jar>
+ </target>
+
+ <target name="save_javadoc_data" depends="genexports"
+ if="generate.javadoc.data">
+ <echo message="save_javadoc: to:${sources.file} src:${src.dir} "/>
+ <echo file="${sources.file}" append="true"
+ message="${src.dir}${line.separator}"/>
+ <echo file="${exported.file}" append="true"
+ message="${fw.export-package}${line.separator}"/>
+ </target>
+
+ <target name="javadoc.jar" if="bundle.build.javadoc.jar">
+ <mkdir dir="${javadoc.out.dir}"/>
+
+ <property name="javadoc.header"
+ value="Knopflerfish OSGi Framework ${fw.impl.version}"/>
+
+ <property name="javadoc.footer"
+ value="Knopflerfish OSGi ${version}"/>
+
+ <property name="javadoc.windowtitle"
+ value="${javadoc.header} javadoc"/>
+
+ <property name="javadoc.doctitle"
+ value="${javadoc.header} API documentation"/>
+
+ <javadoc header="${javadoc.header}"
+ footer="${javadoc.footer}"
+ windowtitle="${javadoc.windowtitle}"
+ doctitle="${javadoc.doctitle}"
+ destdir="${javadoc.out.dir}"
+ classpathref="compile.path">
+ <!-- Custome tags used by OSGi -->
+ <tag name="ThreadSafe" scope="all" description="ThreadSafe"/>
+ <tag name="NotThreadSafe" scope="all" description="NotThreadSafe"/>
+ <tag name="Immutable" scope="all" description="Immutable"/>
+ <tag name="security" scope="all" description="Required Permissions"/>
+ <tag name="noimplement" scope="all"
+ description="Consumers of this API must not implement this interface"/>
+ <packageset dir="${src.dir}">
+ <include name="org/osgi/**"/>
+ <exclude name="org/knopflerfish/**"/>
+ </packageset>
+
+ </javadoc>
+
+ <jar basedir="${javadoc.out.dir}"
+ jarfile="${javadoc.jarfile}"
+ includes="**"
+ manifestencoding="UTF-8">
+ </jar>
+ </target>
+
+ <target name="dex_jars"
+ description="Dexifies framework.">
+ <fail unless="android.exists" message="You must set the ANDROID_HOME property"/>
+ <antcall target="cond_dex_jars" inheritRefs="true"/>
+ </target>
+
+ <!-- Helper taget that adds Android dex data to framework.jar. -->
+ <target name="cond_dex_jars" if="android.exists">
+ <dexify_bundle bundle="${jarfile}"/>
+ </target>
+
+ <target name="framework_doc"
+ depends="bundle_tasks,genexports">
+ <property name="bmfa.Bundle-Version" value="${fw.impl.version}"/>
+ <property name="bmfa.Export-Package" value="${fw.export-package}"/>
+ <makehtml template="${frameworkdoc_template}"
+ outdir="${outdocdir}"
+ manstyle="true">
+ <fileset dir="doc">
+ <include name="**/*.html"/>
+ </fileset>
+ </makehtml>
+
+ <copy todir="${outdocdir}">
+ <fileset dir="doc">
+ <exclude name="**/*.html"/>
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="run">
+ <java fork="true"
+ jar="${outdir}/${ant.project.name}.jar"
+ />
+ </target>
+
+ <target name="writerelease" if="version.isset">
+ <delete file="resources/release"/>
+ <echo message="${version}" file="resources/release"/>
+ </target>
+
+ <target name="genexports" depends="bundle_tasks">
+ <delete file="resources/exports"/>
+ <bundleinfo exports = "fw.export-package"
+ addPackageinfoPackages = "true" >
+ <exports dir="src" includes="org/osgi/**"/>
+ </bundleinfo>
+ <echo message="${fw.export-package}" file="resources/exports"/>
+ </target>
+
+ <target name="clean" description="removes all generated files">
+ <delete dir="${outdir}"/>
+ <delete file="${jarfile}"/>
+ </target>
+
+ <import file="${topdir}/../ant/bundletasks.xml"/>
+
+</project>
diff --git a/.pc/50_asm_compatibility.patch/ant/src/org/knopflerfish/ant/taskdefs/bundle/ClassAnalyserASM.java b/.pc/50_asm_compatibility.patch/ant/src/org/knopflerfish/ant/taskdefs/bundle/ClassAnalyserASM.java
new file mode 100644
index 0000000..40e8e38
--- /dev/null
+++ b/.pc/50_asm_compatibility.patch/ant/src/org/knopflerfish/ant/taskdefs/bundle/ClassAnalyserASM.java
@@ -0,0 +1,330 @@
+/*
+ * Copyright (c) 2003-2010, KNOPFLERFISH project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * - Neither the name of the KNOPFLERFISH project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.knopflerfish.ant.taskdefs.bundle;
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.Type;
+import org.objectweb.asm.FieldVisitor;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.AnnotationVisitor;
+import org.objectweb.asm.Attribute;
+
+
+/**
+ * Visitor implementation that populates a BundlePackagesInfo object
+ * with data about the given class.
+ */
+public class ClassAnalyserASM
+ implements ClassVisitor
+{
+
+ /**
+ * The name of the bundle activator interface on internal form.
+ */
+ final static private String BUNDLE_ACTIVATOR
+ = "org/osgi/framework/BundleActivator";
+
+ // The BundlePackagesInfo object to populate with data.
+ final BundlePackagesInfo bpInfo;
+
+ // The task using this object to provide logging functionality.
+ final Task task;
+
+ // The package of the current class.
+ String currentPackage = null;
+
+ // The File of the current class.
+ File currentClassFile = null;
+
+
+ public ClassAnalyserASM(final BundlePackagesInfo bpInfo,
+ final Task task)
+ {
+ this.bpInfo = bpInfo;
+ this.task = task;
+ }
+
+ public synchronized void analyseClass(File clsFile)
+ {
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(clsFile);
+ analyseClass(fis, clsFile.toString());
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (null!=fis) {
+ try { fis.close(); } catch (Exception _ec) {}
+ }
+ }
+ }
+
+ public synchronized void analyseClass(InputStream clsIn, String fileName)
+ {
+ try {
+ ClassReader cr = new ClassReader(clsIn);
+ currentClassFile = new File(fileName);
+ cr.accept(this, 0);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ protected void addReferencedType(final Type type)
+ {
+ switch (type.getSort()) {
+ case Type.OBJECT:
+ bpInfo.addReferencedClass(currentPackage, type.getInternalName());
+ break;
+ case Type.ARRAY:
+ addReferencedType(type.getElementType());
+ break;
+ default:
+ }
+ }
+
+ /*
+ * Visits the header of the class.
+ *
+ * @param version the class version.
+ * @param access the class's access flags (see {@link Opcodes}). This
+ * parameter also indicates if the class is deprecated.
+ * @param name the internal name of the class (see
+ * {@link Type#getInternalName() getInternalName}).
+ * @param signature the signature of this class. May be <tt>null</tt> if
+ * the class is not a generic one, and does not extend or implement
+ * generic classes or interfaces.
+ * @param superName the internal of name of the super class (see
+ * {@link Type#getInternalName() getInternalName}). For interfaces,
+ * the super class is {@link Object}. May be <tt>null</tt>, but
+ * only for the {@link Object} class.
+ * @param interfaces the internal names of the class's interfaces (see
+ * {@link Type#getInternalName() getInternalName}). May be
+ * <tt>null</tt>.
+ */
+ public void visit(int version,
+ int access,
+ String name,
+ String signature,
+ String superName,
+ String[] interfaces)
+ {
+ task.log("Analysing class '" +name +"'.", Project.MSG_VERBOSE);
+
+ currentPackage = bpInfo.addProvidedClass(name);
+ if (null!=superName) {
+ addReferencedType(Type.getObjectType(superName));
+ }
+ for(int i = 0; i < interfaces.length; i++) {
+ addReferencedType(Type.getObjectType(interfaces[i]));
+ if (BUNDLE_ACTIVATOR.equals(interfaces[i])) {
+ bpInfo.addProvidedActivatorClass(name);
+ }
+ }
+ }
+
+
+ /*
+ * Visits the source of the class.
+ *
+ * @param source the name of the source file from which the class was
+ * compiled. May be <tt>null</tt>.
+ * @param debug additional debug information to compute the correspondence
+ * between source and compiled elements of the class. May be
+ * <tt>null</tt>.
+ */
+ public void visitSource(String source, String debug)
+ {
+ }
+
+
+ /*
+ * Visits the enclosing class of the class. This method must be called only
+ * if the class has an enclosing class.
+ *
+ * @param owner internal name of the enclosing class of the class.
+ * @param name the name of the method that contains the class, or
+ * <tt>null</tt> if the class is not enclosed in a method of its
+ * enclosing class.
+ * @param desc the descriptor of the method that contains the class, or
+ * <tt>null</tt> if the class is not enclosed in a method of its
+ * enclosing class.
+ */
+ public void visitOuterClass(String owner, String name, String desc)
+ {
+ }
+
+
+ /*
+ * Visits an annotation of the class.
+ *
+ * @param desc the class descriptor of the annotation class.
+ * @param visible <tt>true</tt> if the annotation is visible at runtime.
+ * @return a visitor to visit the annotation values, or <tt>null</tt> if
+ * this visitor is not interested in visiting this annotation.
+ */
+ public AnnotationVisitor visitAnnotation(String desc, boolean visible)
+ {
+ return null;
+ }
+
+
+ /*
+ * Visits a non standard attribute of the class.
+ *
+ * @param attr an attribute.
+ */
+ public void visitAttribute(Attribute attr)
+ {
+ }
+
+
+ /*
+ * Visits information about an inner class. This inner class is not
+ * necessarily a member of the class being visited.
+ *
+ * @param name the internal name of an inner class (see
+ * {@link Type#getInternalName() getInternalName}).
+ * @param outerName the internal name of the class to which the inner class
+ * belongs (see {@link Type#getInternalName() getInternalName}). May
+ * be <tt>null</tt> for not member classes.
+ * @param innerName the (simple) name of the inner class inside its
+ * enclosing class. May be <tt>null</tt> for anonymous inner
+ * classes.
+ * @param access the access flags of the inner class as originally declared
+ * in the enclosing class.
+ */
+ public void visitInnerClass(String name,
+ String outerName,
+ String innerName,
+ int access)
+ {
+ }
+
+
+ /*
+ * Visits a field of the class.
+ *
+ * @param access the field's access flags (see {@link Opcodes}). This
+ * parameter also indicates if the field is synthetic and/or
+ * deprecated.
+ * @param name the field's name.
+ * @param desc the field's descriptor (see {@link Type Type}).
+ * @param signature the field's signature. May be <tt>null</tt> if the
+ * field's type does not use generic types.
+ * @param value the field's initial value. This parameter, which may be
+ * <tt>null</tt> if the field does not have an initial value, must
+ * be an {@link Integer}, a {@link Float}, a {@link Long}, a
+ * {@link Double} or a {@link String} (for <tt>int</tt>,
+ * <tt>float</tt>, <tt>long</tt> or <tt>String</tt> fields
+ * respectively). <i>This parameter is only used for static fields</i>.
+ * Its value is ignored for non static fields, which must be
+ * initialized through bytecode instructions in constructors or
+ * methods.
+ * @return a visitor to visit field annotations and attributes, or
+ * <tt>null</tt> if this class visitor is not interested in
+ * visiting these annotations and attributes.
+ */
+ public FieldVisitor visitField(int access,
+ String name,
+ String desc,
+ String signature,
+ Object value)
+ {
+ addReferencedType(Type.getType(desc));
+
+ return null;
+ }
+
+
+ /*
+ * Visits a method of the class. This method <i>must</i> return a new
+ * {@link MethodVisitor} instance (or <tt>null</tt>) each time it is
+ * called, i.e., it should not return a previously returned visitor.
+ *
+ * @param access the method's access flags (see {@link Opcodes}). This
+ * parameter also indicates if the method is synthetic and/or
+ * deprecated.
+ * @param name the method's name.
+ * @param desc the method's descriptor (see {@link Type Type}).
+ * @param signature the method's signature. May be <tt>null</tt> if the
+ * method parameters, return type and exceptions do not use generic
+ * types.
+ * @param exceptions the internal names of the method's exception classes
+ * (see {@link Type#getInternalName() getInternalName}). May be
+ * <tt>null</tt>.
+ * @return an object to visit the byte code of the method, or <tt>null</tt>
+ * if this class visitor is not interested in visiting the code of
+ * this method.
+ */
+ public MethodVisitor visitMethod(int access,
+ String name,
+ String desc,
+ String signature,
+ String[] exceptions)
+ {
+ Type[] argTypes = Type.getArgumentTypes(desc);
+ for (int i=0; argTypes!=null && i<argTypes.length; i++) {
+ addReferencedType(argTypes[i]);
+ }
+ addReferencedType(Type.getReturnType(desc));
+
+
+ for (int i=0; exceptions!=null && i<exceptions.length; i++) {
+ bpInfo.addReferencedClass(currentPackage, exceptions[i]);
+ }
+
+ return new MethodAnalyserASM(this, name);
+ }
+
+
+ /*
+ * Visits the end of the class. This method, which is the last one to be
+ * called, is used to inform the visitor that all the fields and methods of
+ * the class have been visited.
+ */
+ public void visitEnd()
+ {
+ }
+
+}
diff --git a/.pc/50_asm_compatibility.patch/ant/src/org/knopflerfish/ant/taskdefs/bundle/MethodAnalyserASM.java b/.pc/50_asm_compatibility.patch/ant/src/org/knopflerfish/ant/taskdefs/bundle/MethodAnalyserASM.java
new file mode 100644
index 0000000..7f803ba
--- /dev/null
+++ b/.pc/50_asm_compatibility.patch/ant/src/org/knopflerfish/ant/taskdefs/bundle/MethodAnalyserASM.java
@@ -0,0 +1,479 @@
+/*
+ * Copyright (c) 2003-2009, KNOPFLERFISH project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * - Neither the name of the KNOPFLERFISH project nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.knopflerfish.ant.taskdefs.bundle;
+
+import org.apache.tools.ant.Project;
+import org.objectweb.asm.AnnotationVisitor;
+import org.objectweb.asm.Attribute;
+import org.objectweb.asm.Label;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Type;
+
+
+/**
+ * Visitor implementation that populates a BundlePackagesInfo object
+ * with data about the method it visits.
+ */
+public class MethodAnalyserASM
+ implements MethodVisitor
+{
+
+ // The ClassAnalyserASM instance that this method analyzer is
+ // belonging to.
+ private final ClassAnalyserASM ca;
+
+ private final String methodName;
+
+ public MethodAnalyserASM(final ClassAnalyserASM ca, final String name)
+ {
+ this.ca = ca;
+ this.methodName = name;
+ }
+
+ /*
+ * Visits the default value of this annotation interface method.
+ *
+ * @return a visitor to the visit the actual default value of this
+ * annotation interface method, or <tt>null</tt> if this visitor
+ * is not interested in visiting this default value. The 'name'
+ * parameters passed to the methods of this annotation visitor are
+ * ignored. Moreover, exactly one visit method must be called on this
+ * annotation visitor, followed by visitEnd.
+ */
+ public AnnotationVisitor visitAnnotationDefault()
+ {
+ return null;
+ }
+
+ /*
+ * Visits an annotation of this method.
+ *
+ * @param desc the class descriptor of the annotation class.
+ * @param visible <tt>true</tt> if the annotation is visible at runtime.
+ * @return a visitor to visit the annotation values, or <tt>null</tt> if
+ * this visitor is not interested in visiting this annotation.
+ */
+ public AnnotationVisitor visitAnnotation(String desc, boolean visible)
+ {
+ return null;
+ }
+
+ /*
+ * Visits an annotation of a parameter this method.
+ *
+ * @param parameter the parameter index.
+ * @param desc the class descriptor of the annotation class.
+ * @param visible <tt>true</tt> if the annotation is visible at runtime.
+ * @return a visitor to visit the annotation values, or <tt>null</tt> if
+ * this visitor is not interested in visiting this annotation.
+ */
+ public AnnotationVisitor visitParameterAnnotation(
+ int parameter,
+ String desc,
+ boolean visible)
+ {
+ return null;
+ }
+
+ /*
+ * Visits a non standard attribute of this method.
+ *
+ * @param attr an attribute.
+ */
+ public void visitAttribute(Attribute attr)
+ {
+ }
+
+ /*
+ * Starts the visit of the method's code, if any (i.e. non abstract method).
+ */
+ public void visitCode()
+ {
+ ca.task.log(" method '" +methodName +"'.", Project.MSG_DEBUG);
+ }
+
+ /*
+ * Visits the current state of the local variables and operand stack
+ * elements. This method must(*) be called <i>just before</i> any
+ * instruction <b>i</b> that follows an unconditional branch instruction
+ * such as GOTO or THROW, that is the target of a jump instruction, or that
+ * starts an exception handler block. The visited types must describe the
+ * values of the local variables and of the operand stack elements <i>just
+ * before</i> <b>i</b> is executed. <br> <br> (*) this is mandatory only
+ * for classes whose version is greater than or equal to
+ * {@link Opcodes#V1_6 V1_6}. <br> <br> Packed frames are basically
+ * "deltas" from the state of the previous frame (very first frame is
+ * implicitly defined by the method's parameters and access flags): <ul>
+ * <li>{@link Opcodes#F_SAME} representing frame with exactly the same
+ * locals as the previous frame and with the empty stack.</li> <li>{@link Opcodes#F_SAME1}
+ * representing frame with exactly the same locals as the previous frame and
+ * with single value on the stack (<code>nStack</code> is 1 and
+ * <code>stack[0]</code> contains value for the type of the stack item).</li>
+ * <li>{@link Opcodes#F_APPEND} representing frame with current locals are
+ * the same as the locals in the previous frame, except that additional
+ * locals are defined (<code>nLocal</code> is 1, 2 or 3 and
+ * <code>local</code> elements contains values representing added types).</li>
+ * <li>{@link Opcodes#F_CHOP} representing frame with current locals are
+ * the same as the locals in the previous frame, except that the last 1-3
+ * locals are absent and with the empty stack (<code>nLocals</code> is 1,
+ * 2 or 3). </li> <li>{@link Opcodes#F_FULL} representing complete frame
+ * data.</li> </li> </ul>
+ *
+ * @param type the type of this stack map frame. Must be
+ * {@link Opcodes#F_NEW} for expanded frames, or
+ * {@link Opcodes#F_FULL}, {@link Opcodes#F_APPEND},
+ * {@link Opcodes#F_CHOP}, {@link Opcodes#F_SAME} or
+ * {@link Opcodes#F_APPEND}, {@link Opcodes#F_SAME1} for compressed
+ * frames.
+ * @param nLocal the number of local variables in the visited frame.
+ * @param local the local variable types in this frame. This array must not
+ * be modified. Primitive types are represented by
+ * {@link Opcodes#TOP}, {@link Opcodes#INTEGER},
+ * {@link Opcodes#FLOAT}, {@link Opcodes#LONG},
+ * {@link Opcodes#DOUBLE},{@link Opcodes#NULL} or
+ * {@link Opcodes#UNINITIALIZED_THIS} (long and double are
+ * represented by a single element). Reference types are represented
+ * by String objects (representing internal names), and uninitialized
+ * types by Label objects (this label designates the NEW instruction
+ * that created this uninitialized value).
+ * @param nStack the number of operand stack elements in the visited frame.
+ * @param stack the operand stack types in this frame. This array must not
+ * be modified. Its content has the same format as the "local" array.
+ */
+ public void visitFrame(
+ int type,
+ int nLocal,
+ Object[] local,
+ int nStack,
+ Object[] stack)
+ {
+ }
+
+ // -------------------------------------------------------------------------
+ // Normal instructions
+ // -------------------------------------------------------------------------
+
+ /*
+ * Visits a zero operand instruction.
+ *
+ * @param opcode the opcode of the instruction to be visited. This opcode is
+ * either NOP, ACONST_NULL, ICONST_M1, ICONST_0, ICONST_1, ICONST_2,
+ * ICONST_3, ICONST_4, ICONST_5, LCONST_0, LCONST_1, FCONST_0,
+ * FCONST_1, FCONST_2, DCONST_0, DCONST_1, IALOAD, LALOAD, FALOAD,
+ * DALOAD, AALOAD, BALOAD, CALOAD, SALOAD, IASTORE, LASTORE, FASTORE,
+ * DASTORE, AASTORE, BASTORE, CASTORE, SASTORE, POP, POP2, DUP,
+ * DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, SWAP, IADD, LADD, FADD,
+ * DADD, ISUB, LSUB, FSUB, DSUB, IMUL, LMUL, FMUL, DMUL, IDIV, LDIV,
+ * FDIV, DDIV, IREM, LREM, FREM, DREM, INEG, LNEG, FNEG, DNEG, ISHL,
+ * LSHL, ISHR, LSHR, IUSHR, LUSHR, IAND, LAND, IOR, LOR, IXOR, LXOR,
+ * I2L, I2F, I2D, L2I, L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B,
+ * I2C, I2S, LCMP, FCMPL, FCMPG, DCMPL, DCMPG, IRETURN, LRETURN,
+ * FRETURN, DRETURN, ARETURN, RETURN, ARRAYLENGTH, ATHROW,
+ * MONITORENTER, or MONITOREXIT.
+ */
+ public void visitInsn(int opcode)
+ {
+ }
+
+ /*
+ * Visits an instruction with a single int operand.
+ *
+ * @param opcode the opcode of the instruction to be visited. This opcode is
+ * either BIPUSH, SIPUSH or NEWARRAY.
+ * @param operand the operand of the instruction to be visited.<br> When
+ * opcode is BIPUSH, operand value should be between Byte.MIN_VALUE
+ * and Byte.MAX_VALUE.<br> When opcode is SIPUSH, operand value
+ * should be between Short.MIN_VALUE and Short.MAX_VALUE.<br> When
+ * opcode is NEWARRAY, operand value should be one of
+ * {@link Opcodes#T_BOOLEAN}, {@link Opcodes#T_CHAR},
+ * {@link Opcodes#T_FLOAT}, {@link Opcodes#T_DOUBLE},
+ * {@link Opcodes#T_BYTE}, {@link Opcodes#T_SHORT},
+ * {@link Opcodes#T_INT} or {@link Opcodes#T_LONG}.
+ */
+ public void visitIntInsn(int opcode, int operand)
+ {
+ }
+
+ /*
+ * Visits a local variable instruction. A local variable instruction is an
+ * instruction that loads or stores the value of a local variable.
+ *
+ * @param opcode the opcode of the local variable instruction to be visited.
+ * This opcode is either ILOAD, LLOAD, FLOAD, DLOAD, ALOAD, ISTORE,
+ * LSTORE, FSTORE, DSTORE, ASTORE or RET.
+ * @param var the operand of the instruction to be visited. This operand is
+ * the index of a local variable.
+ */
+ public void visitVarInsn(int opcode, int var)
+ {
+ }
+
+ /*
+ * Visits a type instruction. A type instruction is an instruction that
+ * takes the internal name of a class as parameter.
+ *
+ * @param opcode the opcode of the type instruction to be visited. This
+ * opcode is either NEW, ANEWARRAY, CHECKCAST or INSTANCEOF.
+ * @param type the operand of the instruction to be visited. This operand
+ * must be the internal name of an object or array class (see {@link
+ * Type#getInternalName() getInternalName}).
+ */
+ public void visitTypeInsn(int opcode, String type)
+ {
+ ca.addReferencedType(Type.getObjectType(type));
+ }
+
+ /*
+ * Visits a field instruction. A field instruction is an instruction that
+ * loads or stores the value of a field of an object.
+ *
+ * @param opcode the opcode of the type instruction to be visited. This
+ * opcode is either GETSTATIC, PUTSTATIC, GETFIELD or PUTFIELD.
+ * @param owner the internal name of the field's owner class (see {@link
+ * Type#getInternalName() getInternalName}).
+ * @param name the field's name.
+ * @param desc the field's descriptor (see {@link Type Type}).
+ */
+ public void visitFieldInsn(int opcode, String owner, String name, String desc)
+ {
+ ca.addReferencedType(Type.getObjectType(owner));
+ ca.addReferencedType(Type.getType(desc));
+ }
+
+ /*
+ * Visits a method instruction. A method instruction is an instruction that
+ * invokes a method.
+ *
+ * @param opcode the opcode of the type instruction to be visited. This
+ * opcode is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC,
+ * INVOKEINTERFACE or INVOKEDYNAMIC.
+ * @param owner the internal name of the method's owner class (see {@link
+ * Type#getInternalName() getInternalName})
+ * or {@link org.objectweb.asm.Opcodes#INVOKEDYNAMIC_OWNER}.
+ * @param name the method's name.
+ * @param desc the method's descriptor (see {@link Type Type}).
+ */
+ public void visitMethodInsn(int opcode,
+ String owner,
+ String name,
+ String desc)
+ {
+ ca.addReferencedType(Type.getObjectType(owner));
+
+ Type[] argTypes = Type.getArgumentTypes(desc);
+ for (int i=0; argTypes!=null && i<argTypes.length; i++) {
+ ca.addReferencedType(argTypes[i]);
+ }
+ ca.addReferencedType(Type.getReturnType(desc));
+ }
+
+ /*
+ * Visits a jump instruction. A jump instruction is an instruction that may
+ * jump to another instruction.
+ *
+ * @param opcode the opcode of the type instruction to be visited. This
+ * opcode is either IFEQ, IFNE, IFLT, IFGE, IFGT, IFLE, IF_ICMPEQ,
+ * IF_ICMPNE, IF_ICMPLT, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ACMPEQ,
+ * IF_ACMPNE, GOTO, JSR, IFNULL or IFNONNULL.
+ * @param label the operand of the instruction to be visited. This operand
+ * is a label that designates the instruction to which the jump
+ * instruction may jump.
+ */
+ public void visitJumpInsn(int opcode, Label label)
+ {
+ }
+
+ /*
+ * Visits a label. A label designates the instruction that will be visited
+ * just after it.
+ *
+ * @param label a {@link Label Label} object.
+ */
+ public void visitLabel(Label label)
+ {
+ }
+
+ // -------------------------------------------------------------------------
+ // Special instructions
+ // -------------------------------------------------------------------------
+
+ /*
+ * Visits a LDC instruction.
+ *
+ * @param cst the constant to be loaded on the stack. This parameter must be
+ * a non null {@link Integer}, a {@link Float}, a {@link Long}, a
+ * {@link Double} a {@link String} (or a {@link Type} for
+ * <tt>.class</tt> constants, for classes whose version is 49.0 or
+ * more).
+ */
+ public void visitLdcInsn(Object cst)
+ {
+ }
+
+ /*
+ * Visits an IINC instruction.
+ *
+ * @param var index of the local variable to be incremented.
+ * @param increment amount to increment the local variable by.
+ */
+ public void visitIincInsn(int var, int increment)
+ {
+ }
+
+ /*
+ * Visits a TABLESWITCH instruction.
+ *
+ * @param min the minimum key value.
+ * @param max the maximum key value.
+ * @param dflt beginning of the default handler block.
+ * @param labels beginnings of the handler blocks. <tt>labels[i]</tt> is
+ * the beginning of the handler block for the <tt>min + i</tt> key.
+ */
+ public void visitTableSwitchInsn(int min, int max, Label dflt, Label[] labels)
+ {
+ }
+
+ /*
+ * Visits a LOOKUPSWITCH instruction.
+ *
+ * @param dflt beginning of the default handler block.
+ * @param keys the values of the keys.
+ * @param labels beginnings of the handler blocks. <tt>labels[i]</tt> is
+ * the beginning of the handler block for the <tt>keys[i]</tt> key.
+ */
+ public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels)
+ {
+ }
+
+ /*
+ * Visits a MULTIANEWARRAY instruction.
+ *
+ * @param desc an array type descriptor (see {@link Type Type}).
+ * @param dims number of dimensions of the array to allocate.
+ */
+ public void visitMultiANewArrayInsn(String desc, int dims)
+ {
+ ca.addReferencedType(Type.getType(desc));
+ }
+
+ // -------------------------------------------------------------------------
+ // Exceptions table entries, debug information, max stack and max locals
+ // -------------------------------------------------------------------------
+
+ /*
+ * Visits a try catch block.
+ *
+ * @param start beginning of the exception handler's scope (inclusive).
+ * @param end end of the exception handler's scope (exclusive).
+ * @param handler beginning of the exception handler's code.
+ * @param type internal name of the type of exceptions handled by the
+ * handler, or <tt>null</tt> to catch any exceptions (for "finally"
+ * blocks).
+ * @throws IllegalArgumentException if one of the labels has already been
+ * visited by this visitor (by the {@link #visitLabel visitLabel}
+ * method).
+ */
+ public void visitTryCatchBlock(Label start,
+ Label end,
+ Label handler,
+ String type)
+ {
+ if (null!=type) {
+ ca.addReferencedType(Type.getObjectType(type));
+ }
+ }
+
+ /*
+ * Visits a local variable declaration.
+ *
+ * @param name the name of a local variable.
+ * @param desc the type descriptor of this local variable.
+ * @param signature the type signature of this local variable. May be
+ * <tt>null</tt> if the local variable type does not use generic
+ * types.
+ * @param start the first instruction corresponding to the scope of this
+ * local variable (inclusive).
+ * @param end the last instruction corresponding to the scope of this local
+ * variable (exclusive).
+ * @param index the local variable's index.
+ * @throws IllegalArgumentException if one of the labels has not already
+ * been visited by this visitor (by the
+ * {@link #visitLabel visitLabel} method).
+ */
+ public void visitLocalVariable(
+ String name,
+ String desc,
+ String signature,
+ Label start,
+ Label end,
+ int index)
+ {
+ ca.addReferencedType(Type.getType(desc));
+ }
+
+ /*
+ * Visits a line number declaration.
+ *
+ * @param line a line number. This number refers to the source file from
+ * which the class was compiled.
+ * @param start the first instruction corresponding to this line number.
+ * @throws IllegalArgumentException if <tt>start</tt> has not already been
+ * visited by this visitor (by the {@link #visitLabel visitLabel}
+ * method).
+ */
+ public void visitLineNumber(int line, Label start)
+ {
+ }
+
+ /*
+ * Visits the maximum stack size and the maximum number of local variables
+ * of the method.
+ *
+ * @param maxStack maximum stack size of the method.
+ * @param maxLocals maximum number of local variables for the method.
+ */
+ public void visitMaxs(int maxStack, int maxLocals)
+ {
+ }
+
+ /*
+ * Visits the end of the method. This method, which is the last one to be
+ * called, is used to inform the visitor that all the annotations and
+ * attributes of the method have been visited.
+ */
+ public void visitEnd()
+ {
+ }
+
+
+}
diff --git a/.pc/applied-patches b/.pc/applied-patches
new file mode 100644
index 0000000..2678ad2
--- /dev/null
+++ b/.pc/applied-patches
@@ -0,0 +1,3 @@
+10_javac_encoding_source_target_level.patch
+40_ignore_android.patch
+50_asm_compatibility.patch
diff --git a/ant/src/org/knopflerfish/ant/taskdefs/bundle/ClassAnalyserASM.java b/ant/src/org/knopflerfish/ant/taskdefs/bundle/ClassAnalyserASM.java
index 40e8e38..000c7a7 100644
--- a/ant/src/org/knopflerfish/ant/taskdefs/bundle/ClassAnalyserASM.java
+++ b/ant/src/org/knopflerfish/ant/taskdefs/bundle/ClassAnalyserASM.java
@@ -54,7 +54,7 @@ import org.objectweb.asm.Attribute;
* with data about the given class.
*/
public class ClassAnalyserASM
- implements ClassVisitor
+ extends ClassVisitor
{
/**
@@ -79,6 +79,7 @@ public class ClassAnalyserASM
public ClassAnalyserASM(final BundlePackagesInfo bpInfo,
final Task task)
{
+ super(org.objectweb.asm.Opcodes.ASM4);
this.bpInfo = bpInfo;
this.task = task;
}
diff --git a/ant/src/org/knopflerfish/ant/taskdefs/bundle/MethodAnalyserASM.java b/ant/src/org/knopflerfish/ant/taskdefs/bundle/MethodAnalyserASM.java
index 7f803ba..04edff4 100644
--- a/ant/src/org/knopflerfish/ant/taskdefs/bundle/MethodAnalyserASM.java
+++ b/ant/src/org/knopflerfish/ant/taskdefs/bundle/MethodAnalyserASM.java
@@ -45,7 +45,7 @@ import org.objectweb.asm.Type;
* with data about the method it visits.
*/
public class MethodAnalyserASM
- implements MethodVisitor
+ extends MethodVisitor
{
// The ClassAnalyserASM instance that this method analyzer is
@@ -56,6 +56,7 @@ public class MethodAnalyserASM
public MethodAnalyserASM(final ClassAnalyserASM ca, final String name)
{
+ super(org.objectweb.asm.Opcodes.ASM4);
this.ca = ca;
this.methodName = name;
}
diff --git a/debian/changelog b/debian/changelog
index ec30de9..866b7c4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+knopflerfish-osgi (6.1.1-3.1) unstable; urgency=medium
+
+ * Non maintainer upload by the Reproducible Builds team.
+ * No source change upload to rebuild on buildd with .buildinfo files.
+
+ -- Holger Levsen <holger@debian.org> Mon, 28 Dec 2020 11:53:15 +0100
+
knopflerfish-osgi (6.1.1-3) unstable; urgency=medium
* Build with source=1.7 and target=1.7 (Closes: #895885)
diff --git a/osgi/framework/build.xml b/osgi/framework/build.xml
index 5165c3a..8f8aa7d 100644
--- a/osgi/framework/build.xml
+++ b/osgi/framework/build.xml
@@ -38,7 +38,7 @@
<property name="jarfile_version"
location="${jars.dir}/${ant.project.name}-${fw.impl.version}.jar"/>
- <import file="${ant.dir}/android.xml"/>
+ <!--<import file="${ant.dir}/android.xml"/>-->
<property name="proguard.libraryjar" value="${java.home}/lib/rt.jar"/>
@@ -88,10 +88,14 @@
includes = "**/*.java"
excludes = "${androidSrcs},**/package-info.java"
classpathref = "compile.path"
+ encoding = "UTF-8"
+ source = "1.7"
+ target = "1.7"
>
<compilerarg value="-Xlint:-options"/>
</javac>
<!-- Android parts (uses dalvik.*) -->
+ <!--
<javac destdir = "${classout}"
srcdir = "${src.dir}"
debug = "on"
@@ -106,6 +110,7 @@
>
<compilerarg value="-Xlint:-options"/>
</javac>
+ -->
</target>
<target name="compile_compact"
Debdiff
File lists identical (after any substitutions)
No differences were encountered in the control files