mirror of https://github.com/apache/lucene.git
LUCENE-5209: Allow the license checker to optionally avoid check sum comparisons on SNAPSHOT dependencies.
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1523356 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c3fd78cae6
commit
2eb1750f4d
lucene/tools
|
@ -57,7 +57,7 @@
|
|||
<sequential>
|
||||
<!-- LICENSE and NOTICE verification macro. -->
|
||||
<echo>License check under: @{dir}</echo>
|
||||
<licenses licenseDirectory="@{licensedir}">
|
||||
<licenses licenseDirectory="@{licensedir}" skipSnapshotsChecksum="${skipSnapshotsChecksum}">
|
||||
<fileset dir="@{dir}">
|
||||
<include name="**/*.jar" />
|
||||
<!-- Speed up scanning a bit. -->
|
||||
|
|
|
@ -54,6 +54,8 @@ public class LicenseCheckTask extends Task {
|
|||
private static final int CHECKSUM_BUFFER_SIZE = 8 * 1024;
|
||||
private static final int CHECKSUM_BYTE_MASK = 0xFF;
|
||||
|
||||
private boolean skipSnapshotsChecksum;
|
||||
|
||||
/**
|
||||
* All JAR files to check.
|
||||
*/
|
||||
|
@ -103,6 +105,10 @@ public class LicenseCheckTask extends Task {
|
|||
public void setLicenseDirectory(File file) {
|
||||
licenseDirectory = file;
|
||||
}
|
||||
|
||||
public void setSkipSnapshotsChecksum(boolean skipSnapshotsChecksum) {
|
||||
this.skipSnapshotsChecksum = skipSnapshotsChecksum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the task.
|
||||
|
@ -113,6 +119,7 @@ public class LicenseCheckTask extends Task {
|
|||
throw new BuildException("Expected an embedded <licenseMapper>.");
|
||||
}
|
||||
|
||||
if (skipSnapshotsChecksum) log("Skipping checksum for SNAPSHOT dependencies", Project.MSG_INFO);
|
||||
jarResources.setProject(getProject());
|
||||
processJars();
|
||||
|
||||
|
@ -160,49 +167,54 @@ public class LicenseCheckTask extends Task {
|
|||
*/
|
||||
private boolean checkJarFile(File jarFile) {
|
||||
log("Scanning: " + jarFile.getPath(), verboseLevel);
|
||||
|
||||
// validate the jar matches against our expected hash
|
||||
final File checksumFile = new File(licenseDirectory,
|
||||
jarFile.getName() + "." + CHECKSUM_TYPE);
|
||||
if (! (checksumFile.exists() && checksumFile.canRead()) ) {
|
||||
log("MISSING " +CHECKSUM_TYPE+ " checksum file for: " + jarFile.getPath(), Project.MSG_ERR);
|
||||
this.failures = true;
|
||||
return false;
|
||||
} else {
|
||||
final String expectedChecksum = readChecksumFile(checksumFile);
|
||||
try {
|
||||
final MessageDigest md = MessageDigest.getInstance(CHECKSUM_TYPE);
|
||||
byte[] buf = new byte[CHECKSUM_BUFFER_SIZE];
|
||||
|
||||
if (!skipSnapshotsChecksum || !jarFile.getName().contains("-SNAPSHOT")) {
|
||||
// validate the jar matches against our expected hash
|
||||
final File checksumFile = new File(licenseDirectory,
|
||||
jarFile.getName() + "." + CHECKSUM_TYPE);
|
||||
if (! (checksumFile.exists() && checksumFile.canRead()) ) {
|
||||
log("MISSING " +CHECKSUM_TYPE+ " checksum file for: " + jarFile.getPath(), Project.MSG_ERR);
|
||||
log("EXPECTED " +CHECKSUM_TYPE+ " checksum file : " + checksumFile.getPath(), Project.MSG_ERR);
|
||||
this.failures = true;
|
||||
return false;
|
||||
} else {
|
||||
final String expectedChecksum = readChecksumFile(checksumFile);
|
||||
try {
|
||||
FileInputStream fis = new FileInputStream(jarFile);
|
||||
final MessageDigest md = MessageDigest.getInstance(CHECKSUM_TYPE);
|
||||
byte[] buf = new byte[CHECKSUM_BUFFER_SIZE];
|
||||
try {
|
||||
DigestInputStream dis = new DigestInputStream(fis, md);
|
||||
FileInputStream fis = new FileInputStream(jarFile);
|
||||
try {
|
||||
while (dis.read(buf, 0, CHECKSUM_BUFFER_SIZE) != -1) {
|
||||
// NOOP
|
||||
DigestInputStream dis = new DigestInputStream(fis, md);
|
||||
try {
|
||||
while (dis.read(buf, 0, CHECKSUM_BUFFER_SIZE) != -1) {
|
||||
// NOOP
|
||||
}
|
||||
} finally {
|
||||
dis.close();
|
||||
}
|
||||
} finally {
|
||||
dis.close();
|
||||
fis.close();
|
||||
}
|
||||
} finally {
|
||||
fis.close();
|
||||
} catch (IOException ioe) {
|
||||
throw new BuildException("IO error computing checksum of file: " + jarFile, ioe);
|
||||
}
|
||||
} catch (IOException ioe) {
|
||||
throw new BuildException("IO error computing checksum of file: " + jarFile, ioe);
|
||||
final byte[] checksumBytes = md.digest();
|
||||
final String checksum = createChecksumString(checksumBytes);
|
||||
if ( ! checksum.equals(expectedChecksum) ) {
|
||||
log("CHECKSUM FAILED for " + jarFile.getPath() +
|
||||
" (expected: \"" + expectedChecksum + "\" was: \"" + checksum + "\")",
|
||||
Project.MSG_ERR);
|
||||
this.failures = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
} catch (NoSuchAlgorithmException ae) {
|
||||
throw new BuildException("Digest type " + CHECKSUM_TYPE + " not supported by your JVM", ae);
|
||||
}
|
||||
final byte[] checksumBytes = md.digest();
|
||||
final String checksum = createChecksumString(checksumBytes);
|
||||
if ( ! checksum.equals(expectedChecksum) ) {
|
||||
log("CHECKSUM FAILED for " + jarFile.getPath() +
|
||||
" (expected: \"" + expectedChecksum + "\" was: \"" + checksum + "\")",
|
||||
Project.MSG_ERR);
|
||||
this.failures = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
} catch (NoSuchAlgorithmException ae) {
|
||||
throw new BuildException("Digest type " + CHECKSUM_TYPE + " not supported by your JVM", ae);
|
||||
}
|
||||
} else if (skipSnapshotsChecksum) {
|
||||
log("Skipping jar because it is a SNAPSHOT : " + jarFile.getAbsolutePath(), Project.MSG_INFO);
|
||||
}
|
||||
|
||||
// Get the expected license path base from the mapper and search for license files.
|
||||
|
|
Loading…
Reference in New Issue