This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to branch master in repository snappy-java.
commit dea7d6c30158a2df79a90512c1dc9bd0aa11f6c5 Author: Andreas Tille <[email protected]> Date: Wed Aug 8 09:23:45 2012 +0200 Stupidly inject missing file LoadSnappy.java as quilt patch for the purpose of testing. --- debian/changelog | 7 + debian/patches/add_missing_file.patch | 247 ++++++++++++++++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 255 insertions(+) diff --git a/debian/changelog b/debian/changelog index 71ae04e..bca9aa4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +snappy-java (1.0.4.1~dfsg-2) UNRELEASED; urgency=low + + * Stupidly inject missing file LoadSnappy.java as quilt patch for + the purpose of testing. + + -- Andreas Tille <[email protected]> Wed, 08 Aug 2012 09:21:35 +0200 + snappy-java (1.0.4.1~dfsg-1) unstable; urgency=low * Initial release. (Closes: #636181) diff --git a/debian/patches/add_missing_file.patch b/debian/patches/add_missing_file.patch new file mode 100644 index 0000000..4a4c245 --- /dev/null +++ b/debian/patches/add_missing_file.patch @@ -0,0 +1,247 @@ +--- /dev/null ++++ snappy-java/src/main/java/org/xerial/snappy/LoadSnappy.java +@@ -0,0 +1,244 @@ ++/*-------------------------------------------------------------------------- ++ * Copyright 2011 Taro L. Saito ++ * ++ * Licensed under the Apache License, Version 2.0 (the "License"); ++ * you may not use this file except in compliance with the License. ++ * You may obtain a copy of the License at ++ * ++ * http://www.apache.org/licenses/LICENSE-2.0 ++ * ++ * Unless required by applicable law or agreed to in writing, software ++ * distributed under the License is distributed on an "AS IS" BASIS, ++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++ * See the License for the specific language governing permissions and ++ * limitations under the License. ++ *--------------------------------------------------------------------------*/ ++//-------------------------------------- ++// snappy-java Project ++// ++// LoadSnappy.java ++// Since: 2011/03/29 ++// ++// $URL$ ++// $Author$ ++//-------------------------------------- ++package org.xerial.snappy; ++ ++import java.io.BufferedInputStream; ++import java.io.ByteArrayOutputStream; ++import java.io.File; ++import java.io.FileInputStream; ++import java.io.FileOutputStream; ++import java.io.IOException; ++import java.io.InputStream; ++import java.net.URL; ++import java.security.DigestInputStream; ++import java.security.MessageDigest; ++import java.security.NoSuchAlgorithmException; ++import java.util.Properties; ++ ++/** ++ * This class loads a native library of Snappy according to the platform of the ++ * user. ++ * ++ * @author leo ++ * ++ */ ++public class LoadSnappy ++{ ++ private static boolean isLoaded = false; ++ ++ public static boolean load() { ++ if (!isLoaded) { ++ loadSnappyNativeLibrary(); ++ } ++ return isLoaded; ++ } ++ ++ /** ++ * Computes the MD5 value of the input stream ++ * ++ * @param input ++ * @return ++ * @throws IOException ++ * @throws NoSuchAlgorithmException ++ */ ++ static String md5sum(InputStream input) throws IOException { ++ BufferedInputStream in = new BufferedInputStream(input); ++ ++ try { ++ MessageDigest digest = java.security.MessageDigest.getInstance("MD5"); ++ DigestInputStream digestInputStream = new DigestInputStream(in, digest); ++ for (; digestInputStream.read() >= 0;) { ++ ++ } ++ ByteArrayOutputStream md5out = new ByteArrayOutputStream(); ++ md5out.write(digest.digest()); ++ return md5out.toString(); ++ } ++ catch (NoSuchAlgorithmException e) { ++ throw new IllegalStateException("MD5 algorithm is not available: " + e); ++ } ++ finally { ++ in.close(); ++ } ++ } ++ ++ /** ++ * Extract the specified library file to the target folder ++ * ++ * @param libFolderForCurrentOS ++ * @param libraryFileName ++ * @param targetFolder ++ * @return ++ */ ++ private static boolean extractAndLoadLibraryFile(String libFolderForCurrentOS, String libraryFileName, ++ String targetFolder) { ++ String nativeLibraryFilePath = libFolderForCurrentOS + "/" + libraryFileName; ++ final String prefix = "snappy-" + getVersion() + "-"; ++ ++ String extractedLibFileName = prefix + libraryFileName; ++ File extractedLibFile = new File(targetFolder, extractedLibFileName); ++ ++ try { ++ if (extractedLibFile.exists()) { ++ // test md5sum value ++ String md5sum1 = md5sum(LoadSnappy.class.getResourceAsStream(nativeLibraryFilePath)); ++ String md5sum2 = md5sum(new FileInputStream(extractedLibFile)); ++ ++ if (md5sum1.equals(md5sum2)) { ++ return loadNativeLibrary(targetFolder, extractedLibFileName); ++ } ++ else { ++ // remove old native library file ++ boolean deletionSucceeded = extractedLibFile.delete(); ++ if (!deletionSucceeded) { ++ throw new IOException("failed to remove existing native library file: " ++ + extractedLibFile.getAbsolutePath()); ++ } ++ } ++ } ++ ++ // extract file into the current directory ++ InputStream reader = LoadSnappy.class.getResourceAsStream(nativeLibraryFilePath); ++ FileOutputStream writer = new FileOutputStream(extractedLibFile); ++ byte[] buffer = new byte[1024]; ++ int bytesRead = 0; ++ while ((bytesRead = reader.read(buffer)) != -1) { ++ writer.write(buffer, 0, bytesRead); ++ } ++ ++ writer.close(); ++ reader.close(); ++ ++ if (!System.getProperty("os.name").contains("Windows")) { ++ try { ++ Runtime.getRuntime().exec(new String[] { "chmod", "755", extractedLibFile.getAbsolutePath() }) ++ .waitFor(); ++ } ++ catch (Throwable e) {} ++ } ++ ++ return loadNativeLibrary(targetFolder, extractedLibFileName); ++ } ++ catch (IOException e) { ++ System.err.println(e.getMessage()); ++ return false; ++ } ++ ++ } ++ ++ private static synchronized boolean loadNativeLibrary(String path, String name) { ++ File libPath = new File(path, name); ++ if (libPath.exists()) { ++ ++ try { ++ System.load(new File(path, name).getAbsolutePath()); ++ return true; ++ } ++ catch (UnsatisfiedLinkError e) { ++ throw new SnappyError(SnappyErrorCode.FAILED_TO_LOAD_NATIVE_LIBRARY, e); ++ } ++ ++ } ++ else ++ return false; ++ } ++ ++ private static void loadSnappyNativeLibrary() { ++ if (isLoaded) ++ return; ++ ++ // Try loading the library from org.xerial.snappy.lib.path library path */ ++ String snappyNativeLibraryPath = System.getProperty("org.xerial.snappy.lib.path"); ++ String snappyNativeLibraryName = System.getProperty("org.xerial.snappy.lib.name"); ++ ++ // Resolve the library file name with a suffix (e.g., dll, .so, etc.) ++ if (snappyNativeLibraryName == null) ++ snappyNativeLibraryName = System.mapLibraryName("snappy"); ++ ++ if (snappyNativeLibraryPath != null) { ++ if (loadNativeLibrary(snappyNativeLibraryPath, snappyNativeLibraryName)) { ++ isLoaded = true; ++ return; ++ } ++ } ++ ++ // Load the os-dependent library from a jar file ++ snappyNativeLibraryPath = "/org/xerial/snappy/native/" + OSInfo.getNativeLibFolderPathForCurrentOS(); ++ ++ if (LoadSnappy.class.getResource(snappyNativeLibraryPath + "/" + snappyNativeLibraryName) == null) { ++ // use nested VM version ++ return; ++ } ++ ++ // Temporary library folder. Use the value of java.io.tmpdir ++ String tempFolder = new File(System.getProperty("java.io.tmpdir")).getAbsolutePath(); ++ // Try extracting the library from jar ++ if (extractAndLoadLibraryFile(snappyNativeLibraryPath, snappyNativeLibraryName, tempFolder)) { ++ isLoaded = true; ++ return; ++ } ++ ++ isLoaded = false; ++ return; ++ } ++ ++ private static void getNativeLibraryFolderForTheCurrentOS() { ++ String osName = OSInfo.getOSName(); ++ String archName = OSInfo.getArchName(); ++ ++ } ++ ++ public static int getMajorVersion() { ++ String[] c = getVersion().split("\\."); ++ return (c.length > 0) ? Integer.parseInt(c[0]) : 1; ++ } ++ ++ public static int getMinorVersion() { ++ String[] c = getVersion().split("\\."); ++ return (c.length > 1) ? Integer.parseInt(c[1]) : 0; ++ } ++ ++ public static String getVersion() { ++ ++ URL versionFile = LoadSnappy.class.getResource("/META-INF/maven/org.xerial.snappy/snappy-java/pom.properties"); ++ if (versionFile == null) ++ versionFile = LoadSnappy.class.getResource("/META-INF/maven/org.xerial.snappy/snappy-java/VERSION"); ++ ++ String version = "unknown"; ++ try { ++ if (versionFile != null) { ++ Properties versionData = new Properties(); ++ versionData.load(versionFile.openStream()); ++ version = versionData.getProperty("version", version); ++ version = version.trim().replaceAll("[^0-9\\.]", ""); ++ } ++ } ++ catch (IOException e) { ++ System.err.println(e); ++ } ++ return version; ++ } ++ ++} diff --git a/debian/patches/series b/debian/patches/series index b9d996f..4625ea1 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,4 @@ replace_silk-weaver_by_xml_grep.patch replace_OSInfo_by_dpkg-architecture.patch use_debian_packaged_libsnappy.patch +add_missing_file.patch -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/snappy-java.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

