Merge "Remove old library JARs when upgrading" into stable-2.6

This commit is contained in:
Shawn Pearce
2013-04-26 14:50:01 +00:00
committed by Gerrit Code Review
3 changed files with 31 additions and 0 deletions

View File

@@ -78,6 +78,7 @@ class Libraries {
dl.setName(get(cfg, n, "name")); dl.setName(get(cfg, n, "name"));
dl.setJarUrl(get(cfg, n, "url")); dl.setJarUrl(get(cfg, n, "url"));
dl.setSHA1(get(cfg, n, "sha1")); dl.setSHA1(get(cfg, n, "sha1"));
dl.setRemove(get(cfg, n, "remove"));
field.set(this, dl); field.set(this, dl);
} }

View File

@@ -14,6 +14,7 @@
package com.google.gerrit.pgm.init; package com.google.gerrit.pgm.init;
import com.google.common.base.Strings;
import com.google.gerrit.pgm.util.ConsoleUI; import com.google.gerrit.pgm.util.ConsoleUI;
import com.google.gerrit.pgm.util.Die; import com.google.gerrit.pgm.util.Die;
import com.google.gerrit.server.config.SitePaths; import com.google.gerrit.server.config.SitePaths;
@@ -26,6 +27,7 @@ import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
@@ -46,6 +48,7 @@ class LibraryDownloader {
private String name; private String name;
private String jarUrl; private String jarUrl;
private String sha1; private String sha1;
private String remove;
private File dst; private File dst;
@Inject @Inject
@@ -68,6 +71,10 @@ class LibraryDownloader {
this.sha1 = sha1; this.sha1 = sha1;
} }
void setRemove(String remove) {
this.remove = remove;
}
void downloadRequired() { void downloadRequired() {
this.required = true; this.required = true;
download(); download();
@@ -123,6 +130,7 @@ class LibraryDownloader {
} }
try { try {
removeStaleVersions();
doGetByHttp(); doGetByHttp();
verifyFileChecksum(); verifyFileChecksum();
} catch (IOException err) { } catch (IOException err) {
@@ -158,6 +166,26 @@ class LibraryDownloader {
reload.reload(); reload.reload();
} }
private void removeStaleVersions() {
if (!Strings.isNullOrEmpty(remove)) {
String[] names = lib_dir.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.matches("^" + remove + "$");
}
});
if (names != null) {
for (String old : names) {
String bak = "." + old + ".backup";
ui.message("Renaming %s to %s", old, bak);
if (!new File(lib_dir, old).renameTo(new File(lib_dir, bak))) {
throw new Die("cannot rename " + old);
}
}
}
}
}
private void doGetByHttp() throws IOException { private void doGetByHttp() throws IOException {
System.err.print("Downloading " + jarUrl + " ..."); System.err.print("Downloading " + jarUrl + " ...");
System.err.flush(); System.err.flush();

View File

@@ -17,8 +17,10 @@
name = Bouncy Castle Crypto v144 name = Bouncy Castle Crypto v144
url = http://www.bouncycastle.org/download/bcprov-jdk16-144.jar url = http://www.bouncycastle.org/download/bcprov-jdk16-144.jar
sha1 = 6327a5f7a3dc45e0fd735adb5d08c5a74c05c20c sha1 = 6327a5f7a3dc45e0fd735adb5d08c5a74c05c20c
remove = bcprov-.*[.]jar
[library "mysqlDriver"] [library "mysqlDriver"]
name = MySQL Connector/J 5.1.21 name = MySQL Connector/J 5.1.21
url = http://repo2.maven.org/maven2/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar url = http://repo2.maven.org/maven2/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar
sha1 = 7abbd19fc2e2d5b92c0895af8520f7fa30266be9 sha1 = 7abbd19fc2e2d5b92c0895af8520f7fa30266be9
remove = mysql-connector-java-.*[.]jar