You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2015/07/28 21:04:22 UTC

svn commit: r1693143 - in /lucene/dev/trunk: dev-tools/scripts/smokeTestRelease.py solr/CHANGES.txt solr/build.xml solr/common-build.xml solr/contrib/contrib-build.xml solr/server/contexts/solr-jetty-context.xml solr/webapp/build.xml

Author: uschindler
Date: Tue Jul 28 19:04:21 2015
New Revision: 1693143

URL: http://svn.apache.org/r1693143
Log:
SOLR-7227: Don't create the WAR file at all

Modified:
    lucene/dev/trunk/dev-tools/scripts/smokeTestRelease.py
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/build.xml
    lucene/dev/trunk/solr/common-build.xml
    lucene/dev/trunk/solr/contrib/contrib-build.xml
    lucene/dev/trunk/solr/server/contexts/solr-jetty-context.xml
    lucene/dev/trunk/solr/webapp/build.xml

Modified: lucene/dev/trunk/dev-tools/scripts/smokeTestRelease.py
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/dev-tools/scripts/smokeTestRelease.py?rev=1693143&r1=1693142&r2=1693143&view=diff
==============================================================================
--- lucene/dev/trunk/dev-tools/scripts/smokeTestRelease.py (original)
+++ lucene/dev/trunk/dev-tools/scripts/smokeTestRelease.py Tue Jul 28 19:04:21 2015
@@ -168,88 +168,68 @@ LICENSE_FILE_NAME = 'META-INF/LICENSE.tx
 
 def checkJARMetaData(desc, jarFile, svnRevision, version):
 
-  s = None
-  notice = None
-  license = None
-
-  # support expanded WAR directory or JAR file
-  if isinstance(jarFile, str) and os.path.isdir(jarFile):
+  with zipfile.ZipFile(jarFile, 'r') as z:
     for name in (MANIFEST_FILE_NAME, NOTICE_FILE_NAME, LICENSE_FILE_NAME):
-      if not os.path.isfile(jarFile + '/' + name):
-        raise RuntimeError('%s is missing %s' % (desc, name))
-
-    s = open(jarFile + '/' + MANIFEST_FILE_NAME,encoding='UTF-8').read()
-    notice = open(jarFile + '/' + NOTICE_FILE_NAME,encoding='UTF-8').read()
-    license = open(jarFile + '/' + LICENSE_FILE_NAME,encoding='UTF-8').read()
-
-  else:
-    with zipfile.ZipFile(jarFile, 'r') as z:
-      for name in (MANIFEST_FILE_NAME, NOTICE_FILE_NAME, LICENSE_FILE_NAME):
-        try:
-          # The Python docs state a KeyError is raised ... so this None
-          # check is just defensive:
-          if z.getinfo(name) is None:
-            raise RuntimeError('%s is missing %s' % (desc, name))
-        except KeyError:
+      try:
+        # The Python docs state a KeyError is raised ... so this None
+        # check is just defensive:
+        if z.getinfo(name) is None:
           raise RuntimeError('%s is missing %s' % (desc, name))
-
-      s = decodeUTF8(z.read(MANIFEST_FILE_NAME))
-      notice = decodeUTF8(z.read(NOTICE_FILE_NAME))
-      license = decodeUTF8(z.read(LICENSE_FILE_NAME))
-
+      except KeyError:
+        raise RuntimeError('%s is missing %s' % (desc, name))
+      
+    s = decodeUTF8(z.read(MANIFEST_FILE_NAME))
     
-  for verify in (
-    'Specification-Vendor: The Apache Software Foundation',
-    'Implementation-Vendor: The Apache Software Foundation',
-    # Make sure 1.8 compiler was used to build release bits:
-    'X-Compile-Source-JDK: 1.8',
-    # Make sure 1.8 ant was used to build release bits: (this will match 1.8+)
-    'Ant-Version: Apache Ant 1.8',
-    # Make sure .class files are 1.8 format:
-    'X-Compile-Target-JDK: 1.8',
-    'Specification-Version: %s' % version,
-    # Make sure the release was compiled with 1.8:
-    'Created-By: 1.8'):
-    if s.find(verify) == -1:
-      raise RuntimeError('%s is missing "%s" inside its META-INF/MANIFEST.MF' % \
-                         (desc, verify))
-
-  if svnRevision != 'skip':
-    # Make sure this matches the version and svn revision we think we are releasing:
-    verifyRevision = 'Implementation-Version: %s %s ' % (version, svnRevision)
-    if s.find(verifyRevision) == -1:
-      raise RuntimeError('%s is missing "%s" inside its META-INF/MANIFEST.MF (wrong svn revision?)' % \
+    for verify in (
+      'Specification-Vendor: The Apache Software Foundation',
+      'Implementation-Vendor: The Apache Software Foundation',
+      # Make sure 1.8 compiler was used to build release bits:
+      'X-Compile-Source-JDK: 1.8',
+      # Make sure 1.8 ant was used to build release bits: (this will match 1.8+)
+      'Ant-Version: Apache Ant 1.8',
+      # Make sure .class files are 1.8 format:
+      'X-Compile-Target-JDK: 1.8',
+      'Specification-Version: %s' % version,
+      # Make sure the release was compiled with 1.8:
+      'Created-By: 1.8'):
+      if s.find(verify) == -1:
+        raise RuntimeError('%s is missing "%s" inside its META-INF/MANIFEST.MF' % \
+                           (desc, verify))
+
+    if svnRevision != 'skip':
+      # Make sure this matches the version and svn revision we think we are releasing:
+      verifyRevision = 'Implementation-Version: %s %s ' % (version, svnRevision)
+      if s.find(verifyRevision) == -1:
+        raise RuntimeError('%s is missing "%s" inside its META-INF/MANIFEST.MF (wrong svn revision?)' % \
                            (desc, verifyRevision))
 
-  idx = desc.find('inside WAR file')
-  if idx != -1:
-    desc2 = desc[:idx]
-  else:
-    desc2 = desc
+    notice = decodeUTF8(z.read(NOTICE_FILE_NAME))
+    license = decodeUTF8(z.read(LICENSE_FILE_NAME))
 
-  justFileName = os.path.split(desc2)[1]
-  if justFileName.lower().find('solr') != -1 or justFileName.lower().find('webapp') != -1:
-    if SOLR_LICENSE is None:
-      raise RuntimeError('BUG in smokeTestRelease!')
-    if SOLR_NOTICE is None:
-      raise RuntimeError('BUG in smokeTestRelease!')
-    if notice != SOLR_NOTICE:
-      raise RuntimeError('%s: %s contents doesn\'t match main NOTICE.txt' % \
-                         (desc, NOTICE_FILE_NAME))
-    if license != SOLR_LICENSE:
-      raise RuntimeError('%s: %s contents doesn\'t match main LICENSE.txt' % \
-                         (desc, LICENSE_FILE_NAME))
-  else:
-    if LUCENE_LICENSE is None:
-      raise RuntimeError('BUG in smokeTestRelease!')
-    if LUCENE_NOTICE is None:
-      raise RuntimeError('BUG in smokeTestRelease!')
-    if notice != LUCENE_NOTICE:
-      raise RuntimeError('%s: %s contents doesn\'t match main NOTICE.txt' % \
-                         (desc, NOTICE_FILE_NAME))
-    if license != LUCENE_LICENSE:
-      raise RuntimeError('%s: %s contents doesn\'t match main LICENSE.txt' % \
-                         (desc, LICENSE_FILE_NAME))
+    justFileName = os.path.split(desc)[1]
+    
+    if justFileName.lower().find('solr') != -1:
+      if SOLR_LICENSE is None:
+        raise RuntimeError('BUG in smokeTestRelease!')
+      if SOLR_NOTICE is None:
+        raise RuntimeError('BUG in smokeTestRelease!')
+      if notice != SOLR_NOTICE:
+        raise RuntimeError('%s: %s contents doesn\'t match main NOTICE.txt' % \
+                           (desc, NOTICE_FILE_NAME))
+      if license != SOLR_LICENSE:
+        raise RuntimeError('%s: %s contents doesn\'t match main LICENSE.txt' % \
+                           (desc, LICENSE_FILE_NAME))
+    else:
+      if LUCENE_LICENSE is None:
+        raise RuntimeError('BUG in smokeTestRelease!')
+      if LUCENE_NOTICE is None:
+        raise RuntimeError('BUG in smokeTestRelease!')
+      if notice != LUCENE_NOTICE:
+        raise RuntimeError('%s: %s contents doesn\'t match main NOTICE.txt' % \
+                           (desc, NOTICE_FILE_NAME))
+      if license != LUCENE_LICENSE:
+        raise RuntimeError('%s: %s contents doesn\'t match main LICENSE.txt' % \
+                           (desc, LICENSE_FILE_NAME))
 
 def normSlashes(path):
   return path.replace(os.sep, '/')
@@ -291,46 +271,6 @@ def checkAllJARs(topDir, project, svnRev
                                % (fullPath, luceneDistFilenames[jarFilename]))
 
 
-def checkSolrWAR(warFileName, svnRevision, version, tmpDir, baseURL):
-
-  """
-  Crawls for JARs inside the WAR and ensures there are no classes
-  under java.* or javax.* namespace.
-  """
-
-  print('    verify WAR metadata/contained JAR identity/no javax.* or java.* classes...')
-
-  checkJARMetaData(warFileName, warFileName, svnRevision, version)
-
-  distFilenames = dict()
-  for file in getBinaryDistFiles('lucene', tmpDir, version, baseURL):
-    distFilenames[os.path.basename(file)] = file
-
-  for (dirpath, subdirs, files) in os.walk(warFileName):
-    for name in files:
-      if name.endswith('.jar'):
-        path = os.path.join(dirpath, name)
-        jarInsideWarContents = open(path, 'rb').read()
-        noJavaPackageClasses('JAR file %s inside WAR file %s' % (name, warFileName),
-                             io.BytesIO(jarInsideWarContents))
-        if name.lower().find('lucene') != -1 or name.lower().find('solr') != -1:
-          checkJARMetaData('JAR file %s inside WAR file %s' % (name, warFileName),
-                           io.BytesIO(jarInsideWarContents),
-                           svnRevision,
-                           version)
-        if name.lower().find('lucene') != -1:              
-          jarInsideWarFilename = os.path.basename(name)
-          if jarInsideWarFilename not in distFilenames:
-            raise RuntimeError('Artifact %s in %s is not present in Lucene binary distribution'
-                              % (name, warFileName))
-          distJarName = distFilenames[jarInsideWarFilename]
-          with open(distJarName, "rb", buffering=0) as distJarFile:
-            distJarContents = distJarFile.readall()
-          if jarInsideWarContents != distJarContents:
-            raise RuntimeError('Artifact %s in %s is not identical to %s in Lucene binary distribution'
-                              % (name, warFileName, distJarName))
-          
-        
 def checkSigs(project, urlString, version, tmpDir, isSigned):
 
   print('  test basics...')
@@ -770,8 +710,6 @@ def verifyUnpacked(java, project, artifa
       checkJavadocpath('%s/docs' % unpackPath)
 
     else:
-      checkSolrWAR('%s/server/solr-webapp/webapp' % unpackPath, svnRevision, version, tmpDir, baseURL)
-
       print('    copying unpacked distribution for Java 8 ...')
       java8UnpackPath = '%s-java8' % unpackPath
       if os.path.exists(java8UnpackPath):

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1693143&r1=1693142&r2=1693143&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Tue Jul 28 19:04:21 2015
@@ -366,8 +366,9 @@ Other Changes
 * SOLR-7735: Look for solr.xml in Zookeeper by default in SolrCloud mode. If not found, it will be loaded
   from $SOLR_HOME/solr.xml as before. Sysprop solr.solrxml.location is now gone. (janhoy)
 
-* SOLR-7227: Ship Solr with the Web application directory exploded into server/solr-webapp,
-  solr.war is no longer included in the distribution bundles. (Timothy Potter)
+* SOLR-7227: Ship Solr with the Web application directory exploded into
+  server/solr-webapp, solr.war is no longer included in the distribution
+  bundles. (Timothy Potter, Uwe Schindler)
 
 ==================  5.2.1 ==================
 

Modified: lucene/dev/trunk/solr/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/build.xml?rev=1693143&r1=1693142&r2=1693143&view=diff
==============================================================================
--- lucene/dev/trunk/solr/build.xml (original)
+++ lucene/dev/trunk/solr/build.xml Tue Jul 28 19:04:21 2015
@@ -42,8 +42,11 @@
   <!-- ============================== USER TASKS =============================== -->
   <!-- ========================================================================= -->
 
-  <target name="server" depends="dist-contrib,server-war"
+  <target name="server" depends="dist-contrib"
           description="Creates a Solr server">
+    <ant dir="webapp" target="dist" inheritall="false">
+      <propertyset refid="uptodate.and.compiled.properties"/>
+    </ant>
     <jar destfile="${example}/exampledocs/post.jar"
          basedir="${dest}/solr-core/classes/java"
          includes="org/apache/solr/util/SimplePostTool*.class">
@@ -409,13 +412,6 @@
     <contrib-crawl target="dist" failonerror="true" />
   </target>
   
-  <target name="server-war"
-          description="Creates the Solr WAR Distribution file.">
-    <ant dir="webapp" target="server-war" inheritall="false">
-      <propertyset refid="uptodate.and.compiled.properties"/>
-    </ant>
-  </target>
-  
   <target name="prepare-release-no-sign" depends="clean, package, generate-maven-artifacts"/>
   <target name="prepare-release" depends="prepare-release-no-sign, sign-artifacts"/>
  
@@ -486,7 +482,7 @@
       <tarfileset dir="." prefix="${fullnamever}" includes="LICENSE.txt NOTICE.txt"/>
       <tarfileset dir="." prefix="${fullnamever}/solr"
                   excludes="build/** ${package.dir.rel}/** ${dist.rel}/**
-                            server/webapps/*.war example/lib/**
+                            example/lib/**
                             **/*.jar 
                             lib/README.committers.txt **/data/ **/logs/*
                             **/*.sh **/bin/ scripts/ 

Modified: lucene/dev/trunk/solr/common-build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/common-build.xml?rev=1693143&r1=1693142&r2=1693143&view=diff
==============================================================================
--- lucene/dev/trunk/solr/common-build.xml (original)
+++ lucene/dev/trunk/solr/common-build.xml Tue Jul 28 19:04:21 2015
@@ -488,10 +488,10 @@
     <contrib-crawl target="jar-core"/>
   </target>
 
-  <target name="contribs-add-to-war">
+  <target name="contribs-add-to-webapp">
     <mkdir dir="${dest}/web"/>
     <delete dir="${dest}/web" includes="**/*" failonerror="false"/>
-    <contrib-crawl target="add-to-war"/>
+    <contrib-crawl target="add-to-webapp"/>
   </target>
   
   <!-- Forbidden API Task, customizations for Solr -->

Modified: lucene/dev/trunk/solr/contrib/contrib-build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/contrib-build.xml?rev=1693143&r1=1693142&r2=1693143&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/contrib-build.xml (original)
+++ lucene/dev/trunk/solr/contrib/contrib-build.xml Tue Jul 28 19:04:21 2015
@@ -30,7 +30,7 @@
   <dirname file="${ant.file}" property="antfile.dir"/>
 
   <available property="contrib.has.webapp" type="dir" file="${antfile.dir}/src/webapp" />
-  <target name="add-to-war" if="contrib.has.webapp">
+  <target name="add-to-webapp" if="contrib.has.webapp">
     <copy todir="${dest}/web" failonerror="false">
       <fileset dir="${antfile.dir}/src/webapp"/>
     </copy>

Modified: lucene/dev/trunk/solr/server/contexts/solr-jetty-context.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/server/contexts/solr-jetty-context.xml?rev=1693143&r1=1693142&r2=1693143&view=diff
==============================================================================
--- lucene/dev/trunk/solr/server/contexts/solr-jetty-context.xml (original)
+++ lucene/dev/trunk/solr/server/contexts/solr-jetty-context.xml Tue Jul 28 19:04:21 2015
@@ -4,4 +4,5 @@
   <Set name="contextPath"><Property name="hostContext" default="/solr"/></Set>
   <Set name="war"><Property name="jetty.base"/>/solr-webapp/webapp</Set>
   <Set name="defaultsDescriptor"><Property name="jetty.base"/>/etc/webdefault.xml</Set>
+  <Set name="extractWAR">false</Set>
 </Configure>

Modified: lucene/dev/trunk/solr/webapp/build.xml
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/webapp/build.xml?rev=1693143&r1=1693142&r2=1693143&view=diff
==============================================================================
--- lucene/dev/trunk/solr/webapp/build.xml (original)
+++ lucene/dev/trunk/solr/webapp/build.xml Tue Jul 28 19:04:21 2015
@@ -23,13 +23,8 @@
 
   <import file="../common-build.xml"/>
 
-  <property name="exclude.from.war" value="*slf4j*,log4j-*" />
-  <property name="solr.war.suffix" value="" />
+  <property name="exclude.from.webapp" value="*slf4j*,log4j-*" />
 	
-  <target name="test" depends="compile-test-solr-core">
-  	<!-- no more JSP -->
-  </target>
-
   <!-- this module has no javadocs -->
   <target name="javadocs"/>
 
@@ -39,36 +34,27 @@
   <!-- nothing to compile -->
   <target name="compile-core"/>
   <target name="compile-test"/>
+  <target name="test"/>
 
-  <target name="server-war"
-          description="Creates the Solr WAR Distribution file."
-          depends="test, init-dist, dist-core, dist-solrj, lucene-jars-to-solr">
-    <build-manifest title="Apache Solr Search Server"
-                    implementation.title="org.apache.solr"/>
-    <ant dir="${common-solr.dir}" inheritall="false" target="contribs-add-to-war"/>
-    <mkdir dir="${server.dir}/webapps"/>
-    <war destfile="${server.dir}/webapps/solr.war"
-         webxml="web/WEB-INF/web.xml"
-         manifest="${manifest.file}">
-      <lib dir="${common-solr.dir}/core/lib" excludes="${exclude.from.war},${common.classpath.excludes}"/>
-      <lib dir="${common-solr.dir}/solrj/lib" excludes="${exclude.from.war},${common.classpath.excludes}"/>
-      <lib dir="${lucene-libs}" excludes="${exclude.from.war},${common.classpath.excludes}" />
-      <lib dir="${dist}" excludes="${exclude.from.war},${common.classpath.excludes}">
+  <target name="dist"
+          description="Creates the Webapp folder for distribution."
+          depends="dist-core, dist-solrj, lucene-jars-to-solr">
+    <ant dir="${common-solr.dir}" inheritall="false" target="contribs-add-to-webapp"/>
+    <mkdir dir="${server.dir}/solr-webapp/webapp"/>
+    <copy todir="${server.dir}/solr-webapp/webapp">
+      <fileset dir="web" excludes="${exclude.from.webapp}"/>
+      <fileset dir="${dest}/web" excludes="${exclude.from.war}"/> <!-- contribs' additions -->
+    </copy>
+    <mkdir dir="${server.dir}/solr-webapp/webapp/WEB-INF/lib"/>
+    <copy todir="${server.dir}/solr-webapp/webapp/WEB-INF/lib">
+      <fileset dir="${common-solr.dir}/core/lib" excludes="${exclude.from.webapp},${common.classpath.excludes}"/>
+      <fileset dir="${common-solr.dir}/solrj/lib" excludes="${exclude.from.webapp},${common.classpath.excludes}"/>
+      <fileset dir="${lucene-libs}" excludes="${exclude.from.webapp},${common.classpath.excludes}" />
+      <fileset dir="${dist}" excludes="${exclude.from.webapp},${common.classpath.excludes}">
         <include name="solr-solrj-${version}.jar" />
         <include name="solr-core-${version}.jar" />
-      </lib>
-      <fileset dir="${dest}/web" excludes="${exclude.from.war}"/> <!-- contribs' additions -->
-      <fileset dir="web" excludes="${exclude.from.war}"/>
-      <metainf dir="${common-solr.dir}" includes="LICENSE.txt,NOTICE.txt" excludes="${exclude.from.war}"/>
-    </war>
-
-    <!-- Ship Solr with the WAR already extracted -->
-    <delete dir="${server.dir}/solr-webapp/webapp"/>
-    <mkdir dir="${server.dir}/solr-webapp/webapp"/>
-    <unzip dest="${server.dir}/solr-webapp/webapp" src="${server.dir}/webapps/solr.war"/>
-    <delete file="${server.dir}/webapps/solr.war"/>
-    <delete dir="${server.dir}/webapps"/>
-
+      </fileset>
+    </copy>
   </target>
 
   <!-- nothing to do -->