From: <go...@us...> - 2008-07-30 10:07:01
|
Revision: 14821 http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=14821&view=rev Author: gousios Date: 2008-07-30 10:06:56 +0000 (Wed, 30 Jul 2008) Log Message: ----------- Fighting with primordials to build the bootimage Modified Paths: -------------- rvmroot/branches/RVM-549-OpenJDK/build.xml Added Paths: ----------- rvmroot/branches/RVM-549-OpenJDK/build/primordials/OpenJDK.txt rvmroot/branches/RVM-549-OpenJDK/build/primordials/getPrims.sh rvmroot/branches/RVM-549-OpenJDK/build/primordials/getexternals.pl rvmroot/branches/RVM-549-OpenJDK/build/primordials/primhelper.pl Copied: rvmroot/branches/RVM-549-OpenJDK/build/primordials/OpenJDK.txt (from rev 14793, rvmroot/branches/RVM-549-OpenJDK/build/primordials/Harmony.txt) =================================================================== --- rvmroot/branches/RVM-549-OpenJDK/build/primordials/OpenJDK.txt (rev 0) +++ rvmroot/branches/RVM-549-OpenJDK/build/primordials/OpenJDK.txt 2008-07-30 10:06:56 UTC (rev 14821) @@ -0,0 +1,465 @@ +[B +[C +[I +[F +[D +[J +[S +[Z +[[I +[[B +[[C +[[D +[[[I + +Ljava.util.Enumeration; +Ljava.util.Vector; +Ljava.util.Vector$Itr; +Ljava.util.Vector$ListItr; +Ljava.io.PrintStream; +Ljava.util.LinkedList; +Ljava.util.LinkedList$ListItr; +Ljava.util.LinkedList$Entry; +Ljava.util.LinkedList$DescendingIterator; +Ljava.io.BufferedWriter; +Ljava.io.FileOutputStream; +Ljava.io.IOException; +Ljava.io.OutputStreamWriter; +Ljava.util.Comparator; +Ljava.util.HashMap; +Ljava.util.HashMap$Entry; +Ljava.util.HashMap$HashIterator; +Ljava.util.HashMap$ValueIterator; +Ljava.util.HashMap$KeyIterator; +Ljava.util.HashMap$EntryIterator; +Ljava.util.HashMap$KeySet; +Ljava.util.HashMap$Values; +Ljava.util.HashMap$EntrySet; +Ljava.util.TreeSet; +Ljava.util.ArrayList; +Ljava.util.ArrayList$Itr; +Ljava.util.ArrayList$ListItr; +Ljava.util.ArrayList$SubList; +Ljava.util.List; +Ljava.util.ListIterator; +Ljava.util.ListResourceBundle; +Ljava.util.Hashtable; +Ljava.util.Hashtable$KeySet; +Ljava.util.Hashtable$EntrySet; +Ljava.util.Hashtable$ValueCollection; +Ljava.util.Hashtable$Entry; +Ljava.util.Hashtable$Enumerator; +Ljava.io.FileReader; +Ljava.io.LineNumberReader; +Ljava.util.StringTokenizer; +Ljava.lang.reflect.Constructor; +Ljava.lang.reflect.Constructor$objects; +Ljava.util.HashSet; +Ljava.util.Map; +Ljava.util.Map$Entry; +Ljava.util.Collection; +Ljava.util.Collections; +Ljava.util.Collections$SelfComparable; +Ljava.util.Collections$UnmodifiableCollection; +Ljava.util.Collections$UnmodifiableSet; +Ljava.util.Collections$UnmodifiableSortedSet; +Ljava.util.Collections$UnmodifiableList; +Ljava.util.Collections$UnmodifiableRandomAccessList; +Ljava.util.Collections$UnmodifiableMap; +Ljava.util.Collections$UnmodifiableEntrySet; +Ljava.util.Collections$UnmodifiableEntry; +Ljava.util.Collections$UnmodifiableSortedMap; +Ljava.util.Collections$SynchronizedCollection; +Ljava.util.Collections$SynchronizedSet; +Ljava.util.Collections$SynchronizedSortedSet; +Ljava.util.Collections$SynchronizedList; +Ljava.util.Collections$SynchronizedRandomAccessList; +Ljava.util.Collections$SynchronizedMap; +Ljava.util.Collections$SynchronizedSortedMap; +Ljava.util.Collections$CheckedCollection; +Ljava.util.Collections$CheckedSet; +Ljava.util.Collections$CheckedSortedSet; +Ljava.util.Collections$CheckedList; +Ljava.util.Collections$CheckedRandomAccessList; +Ljava.util.Collections$CheckedMap; +Ljava.util.Collections$CheckedEntrySet; +Ljava.util.Collections$CheckedEntry; +Ljava.util.Collections$CheckedSortedMap; +Ljava.util.Collections$EmptyIterator; +Ljava.util.Collections$EmptyListIterator; +Ljava.util.Collections$EmptyEnumeration; +Ljava.util.Collections$EmptySet; +Ljava.util.Collections$EmptyList; +Ljava.util.Collections$EmptyMap; +Ljava.util.Collections$SingletonSet; +Ljava.util.Collections$SingletonList; +Ljava.util.Collections$SingletonMap; +Ljava.util.Collections$CopiesList; +Ljava.util.Collections$ReverseComparator; +Ljava.util.Collections$ReverseComparator2; +Ljava.util.Collections$SetFromMap; +Ljava.util.Collections$AsLIFOQueue; +Ljava.io.BufferedReader; +Ljava.io.FileInputStream; +Ljava.io.InputStreamReader; +Ljava.util.NoSuchElementException; +Ljava.lang.annotation.Retention; +Ljava.lang.annotation.RetentionPolicy; +Ljava.lang.annotation.Target; +Ljava.io.DataInputStream; +Ljava.lang.annotation.Annotation; +Ljava.lang.annotation.AnnotationFormatError; +Ljava.lang.annotation.AnnotationTypeMismatchException; +Ljava.io.File; +Ljava.io.FileFilter; +Ljava.io.FilenameFilter; +Ljava.io.FileNotFoundException; +Ljava.io.FilePermission; +Ljava.io.FilePermission$FilePermissionCollection; +Ljava.io.FileSystem; +Ljava.io.FileWriter; +Ljava.net.MalformedURLException; +Ljava.net.URL; +Ljava.net.URL$Parts; +Ljava.net.URLClassLoader; +Ljava.net.URLClassLoader$FactoryURLClassLoader; +Ljava.net.URLConnection; +Ljava.net.URLConnection$UnknownContentHandler; +Ljava.net.URLDecoder; +Ljava.net.URLEncoder; +Ljava.net.URLStreamHandler; +Ljava.net.URLStreamHandlerFactory; +Ljava.io.UTFDataFormatException; +Ljava.lang.ref.WeakReference; +Ljava.util.WeakHashMap; +Ljava.util.WeakHashMap$Entry; +Ljava.util.WeakHashMap$HashIterator; +Ljava.util.WeakHashMap$ValueIterator; +Ljava.util.WeakHashMap$KeyIterator; +Ljava.util.WeakHashMap$EntryIterator; +Ljava.util.WeakHashMap$KeySet; +Ljava.util.WeakHashMap$Values; +Ljava.util.WeakHashMap$EntrySet; +Ljava.lang.reflect.Member; +Ljava.io.InputStream; +Ljava.util.zip.ZipEntry; +Ljava.util.zip.ZipFile; +Ljava.util.zip.ZipFile$ZipFileInputStream; +Ljava.lang.reflect.Array; +Ljava.lang.reflect.Method; +Ljava.lang.reflect.Proxy; +Ljava.lang.reflect.Proxy$limit; +Ljava.lang.reflect.Proxy$loader; +Ljava.lang.reflect.InvocationHandler; +Ljava.util.Arrays; +Ljava.util.Arrays$ArrayList; +Ljava.lang.annotation.Inherited; +Ljava.io.ByteArrayInputStream; +Ljava.lang.reflect.Field; +Ljava.nio.ByteBufferAs; +Ljava.util.Set; +Ljava.util.TreeMap; +Ljava.util.TreeMap$Values; +Ljava.util.TreeMap$EntrySet; +Ljava.util.TreeMap$KeySet; +Ljava.util.TreeMap$PrivateEntryIterator; +Ljava.util.TreeMap$EntryIterator; +Ljava.util.TreeMap$ValueIterator; +Ljava.util.TreeMap$KeyIterator; +Ljava.util.TreeMap$DescendingKeyIterator; +Ljava.util.TreeMap$NavigableSubMap; +Ljava.util.TreeMap$EntrySetView; +Ljava.util.TreeMap$SubMapIterator; +Ljava.util.TreeMap$SubMapEntryIterator; +Ljava.util.TreeMap$SubMapKeyIterator; +Ljava.util.TreeMap$DescendingSubMapEntryIterator; +Ljava.util.TreeMap$DescendingSubMapKeyIterator; +Ljava.util.TreeMap$AscendingSubMap; +Ljava.util.TreeMap$AscendingEntrySetView; +Ljava.util.TreeMap$DescendingSubMap; +Ljava.util.TreeMap$DescendingEntrySetView; +Ljava.util.TreeMap$SubMap; +Ljava.util.TreeMap$Entry; +Ljava.util.Iterator; +Ljava.util.Stack; +Ljava.io.PrintWriter; +Ljava.io.StringWriter; +Ljava.util.SortedSet; +Ljava.nio.Buffer; +Ljava.nio.charset.Charset; +Ljava.nio.charset.Charset; +Ljava.nio.charset.CodingErrorAction; +Ljava.lang.ref.PhantomReference; +Ljava.lang.ref.SoftReference; +Ljava.io.BufferedInputStream; +Ljava.io.BufferedOutputStream; +Ljava.io.OutputStream; +Ljava.net.ConnectException; +Ljava.net.DatagramSocket; +Ljava.net.DatagramSocketImpl; +Ljava.net.DatagramSocketImplFactory; +Ljava.net.InetAddress; +Ljava.net.InetAddress$CacheEntry; +Ljava.net.InetAddress$Cache; +Ljava.net.InetAddress$Type; +Ljava.net.InetAddress$InetAddressImplFactory; +Ljava.net.InetAddressImpl; +Ljava.net.InetSocketAddress; +Ljava.net.NoRouteToHostException; +Ljava.net.ServerSocket; +Ljava.net.Socket; +Ljava.net.SocketAddress; +Ljava.net.SocketException; +Ljava.net.SocketImpl; +Ljava.net.SocketImplFactory; +Ljava.net.SocketInputStream; +Ljava.net.SocketOptions; +Ljava.net.SocketOutputStream; +Ljava.net.SocketPermission; +Ljava.net.SocketPermission$SocketPermissionCollection; +Ljava.net.SocketTimeoutException; +Ljava.lang.instrument.Instrumentation; +Ljava.lang.reflect.InvocationTargetException; +Ljava.util.jar.JarFile; +Ljava.util.jar.JarFile$JarFileEntry; +Ljava.util.jar.Manifest; +Ljava.util.jar.Manifest$FastInputStream; +Ljava.io.Serializable; +Ljava.io.SerializablePermission; +Ljava.io.Bits; +Ljava.io.ByteArrayOutputStream; +Ljava.io.CharArrayReader; +Ljava.io.CharArrayWriter; +Ljava.io.CharConversionException; +Ljava.io.Closeable; +Ljava.io.Console; +Ljava.io.Console$LineReader; +Ljava.io.DataInput; +Ljava.io.DataOutput; +Ljava.io.DataOutputStream; +Ljava.io.DeleteOnExitHook; +Ljava.io.EOFException; +Ljava.io.ExpiringCache; +Ljava.io.ExpiringCache$Entry; +Ljava.io.Externalizable; +Ljava.io.FilterInputStream; +Ljava.io.FilterOutputStream; +Ljava.io.FilterReader; +Ljava.io.FilterWriter; +Ljava.io.Flushable; +Ljava.io.InterruptedIOException; +Ljava.io.InvalidClassException; +Ljava.io.InvalidObjectException; +Ljava.io.IOError; +Ljava.io.LineNumberInputStream; +Ljava.io.NotActiveException; +Ljava.io.NotSerializableException; +Ljava.io.ObjectInput; +Ljava.io.ObjectInputStream; +Ljava.io.ObjectInputStream$Caches; +Ljava.io.ObjectInputStream$loaders; +Ljava.io.ObjectInputStream$GetField; +Ljava.io.ObjectInputStream$descriptor; +Ljava.io.ObjectInputStream$class; +Ljava.io.ObjectInputStream$constant; +Ljava.io.ObjectInputStream$GetFieldImpl; +Ljava.io.ObjectInputStream$ValidationList; +Ljava.io.ObjectInputStream$Callback; +Ljava.io.ObjectInputStream$PeekInputStream; +Ljava.io.ObjectInputStream$BlockDataInputStream; +Ljava.io.ObjectInputStream$HandleTable; +Ljava.io.ObjectInputStream$HandleList; +Ljava.io.ObjectInputStream$CallbackContext; +Ljava.io.ObjectInputValidation; +Ljava.io.ObjectOutput; +Ljava.io.ObjectOutputStream; +Ljava.io.ObjectOutputStream$Caches; +Ljava.io.ObjectOutputStream$PutField; +Ljava.io.ObjectOutputStream$PutFieldImpl; +Ljava.io.ObjectOutputStream$BlockDataOutputStream; +Ljava.io.ObjectOutputStream$HandleTable; +Ljava.io.ObjectOutputStream$ReplaceTable; +Ljava.io.ObjectOutputStream$DebugTraceInfoStack; +Ljava.io.ObjectStreamClass; +Ljava.io.ObjectStreamClass$Caches; +Ljava.io.ObjectStreamClass$EntryFuture; +Ljava.io.ObjectStreamClass$type; +Ljava.io.ObjectStreamClass$class; +Ljava.io.ObjectStreamClass$class; +Ljava.io.ObjectStreamClass$incompatible; +Ljava.io.ObjectStreamClass$serialVersionUID; +Ljava.io.ObjectStreamClass$name; +Ljava.io.ObjectStreamClass$invalid; +Ljava.io.ObjectStreamClass$descriptor; +Ljava.io.ObjectStreamClass$descriptor; +Ljava.io.ObjectStreamClass$ClassDataSlot; +Ljava.io.ObjectStreamClass$MemberSignature; +Ljava.io.ObjectStreamClass$FieldReflector; +Ljava.io.ObjectStreamClass$FieldReflectorKey; +Ljava.io.ObjectStreamClass$WeakClassKey; +Ljava.io.ObjectStreamConstants; +Ljava.io.ObjectStreamException; +Ljava.io.ObjectStreamField; +Ljava.io.OptionalDataException; +Ljava.io.PipedInputStream; +Ljava.io.PipedOutputStream; +Ljava.io.PipedReader; +Ljava.io.PipedWriter; +Ljava.io.PushbackInputStream; +Ljava.io.PushbackReader; +Ljava.io.RandomAccessFile; +Ljava.io.Reader; +Ljava.io.SequenceInputStream; +Ljava.io.StreamCorruptedException; +Ljava.io.StreamTokenizer; +Ljava.io.StringBufferInputStream; +Ljava.io.StringReader; +Ljava.io.SyncFailedException; +Ljava.io.UnsupportedEncodingException; +Ljava.io.WriteAbortedException; +Ljava.io.Writer; +Ljava.util.AbstractCollection; +Ljava.util.AbstractList; +Ljava.util.AbstractList$Itr; +Ljava.util.AbstractList$ListItr; +Ljava.util.AbstractList$SubList; +Ljava.util.AbstractList$RandomAccessSubList; +Ljava.util.AbstractMap; +Ljava.util.AbstractMap$SimpleEntry; +Ljava.util.AbstractMap$SimpleImmutableEntry; +Ljava.util.AbstractQueue; +Ljava.util.AbstractSequentialList; +Ljava.util.AbstractSet; +Ljava.util.ArrayDeque; +Ljava.util.ArrayDeque$DeqIterator; +Ljava.util.ArrayDeque$DescendingIterator; +Ljava.util.BitSet; +Ljava.util.Calendar; +Ljava.util.ConcurrentModificationException; +Ljava.util.Currency; +Ljava.util.Currency$CurrencyNameGetter; +Ljava.util.Date; +Ljava.util.Deque; +Ljava.util.Dictionary; +Ljava.util.DuplicateFormatFlagsException; +Ljava.util.EmptyStackException; +Ljava.util.EnumMap; +Ljava.util.EnumMap$KeySet; +Ljava.util.EnumMap$Values; +Ljava.util.EnumMap$EntrySet; +Ljava.util.EnumMap$EnumMapIterator; +Ljava.util.EnumMap$KeyIterator; +Ljava.util.EnumMap$ValueIterator; +Ljava.util.EnumMap$EntryIterator; +Ljava.util.EnumSet; +Ljava.util.EnumSet$SerializationProxy; +Ljava.util.EventListener; +Ljava.util.EventListenerProxy; +Ljava.util.EventObject; +Ljava.util.FormatFlagsConversionMismatchException; +Ljava.util.Formattable; +Ljava.util.FormattableFlags; +Ljava.util.Formatter; +Ljava.util.Formatter$FormatString; +Ljava.util.Formatter$FixedString; +Ljava.util.Formatter$BigDecimalLayoutForm; +Ljava.util.Formatter$FormatSpecifier; +Ljava.util.Formatter$BigDecimalLayout; +Ljava.util.Formatter$Flags; +Ljava.util.Formatter$Conversion; +Ljava.util.Formatter$DateTime; +Ljava.util.FormatterClosedException; +Ljava.util.GregorianCalendar; +Ljava.util.IdentityHashMap; +Ljava.util.IdentityHashMap$IdentityHashMapIterator; +Ljava.util.IdentityHashMap$KeyIterator; +Ljava.util.IdentityHashMap$ValueIterator; +Ljava.util.IdentityHashMap$EntryIterator; +Ljava.util.IdentityHashMap$KeySet; +Ljava.util.IdentityHashMap$Values; +Ljava.util.IdentityHashMap$EntrySet; +Ljava.util.IllegalFormatCodePointException; +Ljava.util.IllegalFormatConversionException; +Ljava.util.IllegalFormatException; +Ljava.util.IllegalFormatFlagsException; +Ljava.util.IllegalFormatPrecisionException; +Ljava.util.IllegalFormatWidthException; +Ljava.util.InputMismatchException; +Ljava.util.InvalidPropertiesFormatException; +Ljava.util.JapaneseImperialCalendar; +Ljava.util.JumboEnumSet; +Ljava.util.JumboEnumSet$EnumSetIterator; +Ljava.util.LinkedHashMap; +Ljava.util.LinkedHashMap$Entry; +Ljava.util.LinkedHashMap$LinkedHashIterator; +Ljava.util.LinkedHashMap$KeyIterator; +Ljava.util.LinkedHashMap$ValueIterator; +Ljava.util.LinkedHashMap$EntryIterator; +Ljava.util.LinkedHashSet; +Ljava.util.Locale; +Ljava.util.Locale$LocaleNameGetter; +Ljava.util.LocaleISOData; +Ljava.util.MissingFormatArgumentException; +Ljava.util.MissingFormatWidthException; +Ljava.util.MissingResourceException; +Ljava.util.NavigableMap; +Ljava.util.NavigableSet; +Ljava.util.Observable; +Ljava.util.Observer; +Ljava.util.PriorityQueue; +Ljava.util.PriorityQueue$Itr; +Ljava.util.Properties; +Ljava.util.Properties$LineReader; +Ljava.util.PropertyPermission; +Ljava.util.PropertyPermission$PropertyPermissionCollection; +Ljava.util.PropertyResourceBundle; +Ljava.util.Queue; +Ljava.util.Random; +Ljava.util.RandomAccess; +Ljava.util.RegularEnumSet; +Ljava.util.RegularEnumSet$EnumSetIterator; +Ljava.util.ResourceBundle; +Ljava.util.ResourceBundle$RBClassLoader; +Ljava.util.ResourceBundle$CacheKey; +Ljava.util.ResourceBundle$CacheKeyReference; +Ljava.util.ResourceBundle$LoaderReference; +Ljava.util.ResourceBundle$BundleReference; +Ljava.util.ResourceBundle$Control; +Ljava.util.ResourceBundle$SingleFormatControl; +Ljava.util.ResourceBundle$NoFallbackControl; +Ljava.util.Scanner; +Ljava.util.ServiceConfigurationError; +Ljava.util.ServiceLoader; +Ljava.util.ServiceLoader$name; +Ljava.util.ServiceLoader$name; +Ljava.util.ServiceLoader$LazyIterator; +Ljava.util.SimpleTimeZone; +Ljava.util.SortedMap; +Ljava.util.Timer; +Ljava.util.Timer$TimerThread; +Ljava.util.Timer$TaskQueue; +Ljava.util.TimerTask; +Ljava.util.TimeZone; +Ljava.util.TimeZone$DisplayNames; +Ljava.util.TooManyListenersException; +Ljava.util.UnknownFormatConversionException; +Ljava.util.UnknownFormatFlagsException; +Ljava.util.UUID; +Ljava.util.XMLUtils; +Ljava.util.XMLUtils$Resolver; +Ljava.util.XMLUtils$EH; +Ljava.lang.reflect.AccessibleObject; +Ljava.lang.reflect.AnnotatedElement; +Ljava.lang.reflect.GenericArrayType; +Ljava.lang.reflect.GenericDeclaration; +Ljava.lang.reflect.GenericSignatureFormatError; +Ljava.lang.reflect.MalformedParameterizedTypeException; +Ljava.lang.reflect.Modifier; +Ljava.lang.reflect.ParameterizedType; +Ljava.lang.reflect.ReflectAccess; +Ljava.lang.reflect.ReflectPermission; +Ljava.lang.reflect.Type; +Ljava.lang.reflect.TypeVariable; +Ljava.lang.reflect.UndeclaredThrowableException; +Ljava.lang.reflect.WildcardType; +Ljava.lang.annotation.ElementType; Property changes on: rvmroot/branches/RVM-549-OpenJDK/build/primordials/OpenJDK.txt ___________________________________________________________________ Added: svn:mergeinfo + Added: rvmroot/branches/RVM-549-OpenJDK/build/primordials/getPrims.sh =================================================================== --- rvmroot/branches/RVM-549-OpenJDK/build/primordials/getPrims.sh (rev 0) +++ rvmroot/branches/RVM-549-OpenJDK/build/primordials/getPrims.sh 2008-07-30 10:06:56 UTC (rev 14821) @@ -0,0 +1,21 @@ +#!/bin/bash + +cp ../../.ant.properties ../../ant.properties.bck + +echo host.name=ia32-linux > ../../.ant.properties +echo target.name=ia32-linux >> ../../.ant.properties +echo config.name=production >> ../../.ant.properties + + +cd ../../ +ant real-clean +ant build + +cd build/primordials + +./getexternals.pl ../../MMTk/src/ ../../rvm/ ../../common/ ../../generated/|grep java|./primhelper.pl ../../components/openjdk/b29/src/share/classes/ >OpenJDK.txt + +cd ../../ +mv ant.properties.bck .ant.properties +cd build/primordials + Property changes on: rvmroot/branches/RVM-549-OpenJDK/build/primordials/getPrims.sh ___________________________________________________________________ Added: svn:executable + * Added: rvmroot/branches/RVM-549-OpenJDK/build/primordials/getexternals.pl =================================================================== --- rvmroot/branches/RVM-549-OpenJDK/build/primordials/getexternals.pl (rev 0) +++ rvmroot/branches/RVM-549-OpenJDK/build/primordials/getexternals.pl 2008-07-30 10:06:56 UTC (rev 14821) @@ -0,0 +1,181 @@ +#!/usr/bin/env perl +# This file is part of the Jikes RVM project (http://jikesrvm.org). +# +# This file is licensed to You under the Common Public License (CPL); +# You may not use this file except in compliance with the License. You +# may obtain a copy of the License at +# +# http://www.opensource.org/licenses/cpl1.0.php +# +# See the COPYRIGHT.txt file distributed with this work for information +# regarding copyright ownership. +# +# @author: Georgios Gousios <gou...@gm...>, Jul 2008 + +use strict; + +#Need at least 2 args +if ( not defined $ARGV[0] or not defined $ARGV[1] ) { + die usage(); +} + +my @allfiles; +my @allclasses; + +#Get all Java files in the provided directories +for ( my $i = 0 ; $i < $#ARGV ; $i++ ) { + push( @allfiles, recurse( $ARGV[$i] ) ); +} + +#Get all imported classes in a list +@allclasses = getimports(@allfiles); + +my %seen = (); +my @externals; + +#Remove doublicates +foreach my $item (@allclasses) { + push( @externals, $item ) unless $seen{$item}++; +} + +#Print result +foreach my $item (@externals) { + print $item. "\n"; +} + +#Get the list of external classes +sub getimports { + + my (@files) = @_; + my @classes, my @tmpimports; + my $package; + + #Read files and store all imports in a + #temporary list + foreach my $file (@files) { + open( FILE, "<", $file ) or die "can't open $file: $!"; + + #print "File:".$file."\n"; + while (<FILE>) { + m/^\s*package (.*);\s*$/ && ( $package = $1 ); + + #m/^\s*package (.*);\s*$/ && print "Found package:".$1."\n"; + m/^\s*import\s*(static)?\s?(.*);\s*$/ && ( push @tmpimports, $2 ); + + #m/^\s*import\s*(static)?\s?(.*);\s*$/ && print "Found import:".$2."\n"; + + if (m/^.*(class|(@)?interface) ([A-Z].*?)\s*(<.*>)? .*{?\s*}?\s*$/) { + + #print $_; + if ( $package eq "" ) { + push( @classes, $3 ); + + #print "Found class:" . $3 . "\n"; + } + else { + push( @classes, $package . "." . $3 ); + + #print "Found class:" . $package . "." . $3 . "\n"; + } + } + } + } + + #Get a list of unique package names. This might include + #class names in case of static field imports + my @tmpinclpkg; + %seen = (); + foreach my $import (@tmpimports) { + if ( $import =~ m/.*\.(.*)\..*$/ ) { + + #print("Package:".$1."\n"); + push( @tmpinclpkg, $1 ) unless $seen{$1}++; + } + } + + #For each potential enclosing package name, check if there is a + #class with the same name. If there is one, this means that this + #class contains static fields which are used in import declarations + #in other classes. + my @expst; + %seen = (); + foreach my $pkgname (@tmpinclpkg) { + foreach my $class (@classes) { + my $pattern = ".*" . $pkgname . "\$"; + if ( $class =~ m/$pattern/ ) { + push( @expst, $class ) unless $seen{$class}++; + + #printf("Class with exported static fields:".$class."\n" ); + } + } + } + + #Clean up imports satisfied by classes in this source dir + #Also remove duplicates and static class imports + %seen = (); + my @allimports; + + foreach my $import (@tmpimports) { + my $found = 0; + my $class; + foreach $class (@classes) { + if ( $class eq $import ) { + $found = 1; + last; + } + } + + foreach my $exportstatic (@expst) { + if ( $import =~ m/$exportstatic/ ) { + $found = 1; + last; + } + } + + if ( $found == 0 ) { + push( @allimports, $import ) unless $seen{$import}++; + } + } + + return @allimports; +} + +my @somefiles; + +#Recurse into subdirs and find all java files +sub recurse { + my ($path) = @_; + + ## append a trailing / if it's not there + $path .= '/' if ( $path !~ /\/$/ ); + + ## loop through the files contained in the directory + for my $eachFile ( glob( $path . '*' ) ) { + + ## if the file is a directory + if ( -d $eachFile ) { + ## pass the directory to the routine ( recursion ) + recurse($eachFile); + } + else { + if ( $eachFile =~ /.java$/ ) { + + #print "Adding file:",$eachFile,"\n"; + push( @somefiles, $eachFile ); + } + } + } + + return @somefiles; +} + +sub usage() { + print << "END"; +getexternals.pl - Parses the Java files found in the directories provided +as arguments and returns a list of classnames that are used but not +declared in either of those directories. + +usage: getexternals.pl dir1...dirn + +END +} Property changes on: rvmroot/branches/RVM-549-OpenJDK/build/primordials/getexternals.pl ___________________________________________________________________ Added: svn:mergeinfo + Added: rvmroot/branches/RVM-549-OpenJDK/build/primordials/primhelper.pl =================================================================== --- rvmroot/branches/RVM-549-OpenJDK/build/primordials/primhelper.pl (rev 0) +++ rvmroot/branches/RVM-549-OpenJDK/build/primordials/primhelper.pl 2008-07-30 10:06:56 UTC (rev 14821) @@ -0,0 +1,111 @@ +#!/usr/bin/env perl +# This file is part of the Jikes RVM project (http://jikesrvm.org). +# +# This file is licensed to You under the Common Public License (CPL); +# You may not use this file except in compliance with the License. You +# may obtain a copy of the License at +# +# http://www.opensource.org/licenses/cpl1.0.php +# +# See the COPYRIGHT.txt file distributed with this work for information +# regarding copyright ownership. +# +# @author: Georgios Gousios <gou...@gm...>, Jul 2008 + +use strict; + +#Need at least 1 arg +if ( not defined $ARGV[0] ) { + die usage(); +} + +my @allfiles; +my @files; + +recurse( $ARGV[0] ); + +my %seen = (); + +while ( defined( my $line = <STDIN> ) ) { + + chop $line; + $line =~ s/\.\*/.[^\/]*\$/; + #printf "Pattern ".$line."\n"; + foreach my $file (@allfiles) { + if ( $file =~ m/^$line/ ) { + #print "Adding primordial file " . $file . "\n"; + push( @files, $file ) unless $seen{$file}++; + } + } +} + +my @primordials; +my $package; + +foreach my $file (@files) { + $file = $ARGV[0] . "/" . $file; + open( FILE, "<", $file ) or die "can't open $file: $!"; + + #print "File:".$file."\n"; + my $mainclass = undef; + my $pattern = '^[^*\/]*(class|(@)?interface|enum) ([\w][\w\d_]*)\s*(<.*>)?.*$'; + while (<FILE>) { + m/^\s*package (.*);\s*$/ && ( $package = $1 ); + + if (not defined $mainclass and ($_ =~ m/$pattern/)) { + push( @primordials, $package.".".$3 ); + #print "Found main class:". $package."." . $3 . "\n"; + $mainclass = $3; + next; + } + + if (defined $mainclass and ($_ =~ m/$pattern/)) { + push( @primordials, $package.".".$mainclass."\$".$3 ); + #print " Found internal class:" . $mainclass."\$".$3 . "\n"; + } + } + if (not defined $mainclass) { + print STDERR "Warning: no class definition found in file: ".$file."\n"; + } +} + +foreach my $item (@primordials) { + print "L".$item.";\n"; +} + +#Recurse into subdirs and find all java files +sub recurse { + my ($path) = @_; + my $pattern = $ARGV[0] . "(.*)\$"; + ## append a trailing / if it's not there + $path .= '/' if ( $path !~ /\/$/ ); + + ## loop through the files contained in the directory + for my $eachFile ( glob( $path . '*' ) ) { + + ## if the file is a directory + if ( -d $eachFile ) { + ## pass the directory to the routine ( recursion ) + recurse($eachFile); + } + else { + if ( $eachFile =~ /.java$/ ) { + $eachFile =~ s/$pattern/$1/; + + #print "Adding file:",$eachFile,"\n"; + push( @allfiles, $eachFile ); + } + } + } +} + +sub usage() { + print << "END"; +primhelper.pl - Reads a list of classnames from STDIN, finds the class +declarations in classpath-dir, extracts any private classes and returns +the result in primordial friendly format. + +usage: primhelper.pl classpath-dir + +END +} Property changes on: rvmroot/branches/RVM-549-OpenJDK/build/primordials/primhelper.pl ___________________________________________________________________ Added: svn:mergeinfo + Modified: rvmroot/branches/RVM-549-OpenJDK/build.xml =================================================================== --- rvmroot/branches/RVM-549-OpenJDK/build.xml 2008-07-30 03:38:57 UTC (rev 14820) +++ rvmroot/branches/RVM-549-OpenJDK/build.xml 2008-07-30 10:06:56 UTC (rev 14821) @@ -1356,7 +1356,6 @@ </sequential> </if> - <!--TODO: OpenJDK --> <if> <conditions> <equals arg1="${classlib.provider}" arg2="OpenJDK"/> @@ -1365,7 +1364,7 @@ <concat destfile="${build.base}/Primordials.txt"> <filelist dir="${build.base}" files="ClassesForImage.txt"/> <filelist dir="${primordials.dir}" - files="OpenJDK.txt,RVM.txt${primordials.opt}${primordials.aos}${primordials.arch}"/> + files="OpenJDK.txt,RVM.txt${primordials.arch}"/> </concat> </sequential> </if> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |