Skip to content

Instantly share code, notes, and snippets.

@ekmillard
Created December 7, 2023 22:30
Show Gist options
  • Save ekmillard/6c3a9a76a473fc316f30374ad61f804f to your computer and use it in GitHub Desktop.
Save ekmillard/6c3a9a76a473fc316f30374ad61f804f to your computer and use it in GitHub Desktop.
package ps.eden.server.cache.editor.emperor;
import java.io.FileInputStream;
import ps.eden.server.ServerConstants;
import ps.eden.server.cache.editor.dragonkk.store.Store;
import ps.eden.server.cache.editor.dragonkk.utils.Constants;
/**
* Handles packing HD libraries into the cache (as a new cache index).
* @author Emperor
*
*/
public final class HDLibraryPacker {
/**
* The cache index to use.
*/
private static final int CACHE_INDEX = 28;
/**
* The main method.
* @param args The arguments cast on runtime.
*/
@SuppressWarnings("deprecation")
public static void main(String[] args) throws Throwable {
Store store = new Store(ServerConstants.CACHE_530_DIR);
System.out.println(store.getIndexes().length);
if (CACHE_INDEX >= store.getIndexes().length) {
int idx = 0;
do {
idx = store.addIndex(false, false, Constants.GZIP_COMPRESSION);
System.out.println("Added cache index " + idx + "!");
} while (idx != CACHE_INDEX);
}
/*
* Archive 0 - windows 32-bit libs
*/
FileInputStream in = new FileInputStream("./hd-libs/windows/32-bit/jogl_awt.dll");
byte[] bs = new byte[in.available()];
in.read(bs);
in.close();
store.getIndexes()[CACHE_INDEX].putFile(0, 0, bs);
in = new FileInputStream("./hd-libs/windows/32-bit/jogl.dll");
bs = new byte[in.available()];
in.read(bs);
in.close();
store.getIndexes()[CACHE_INDEX].putFile(0, 1, bs);
/*
* Archive 1 - windows 64-bit libs
*/
in = new FileInputStream("./hd-libs/windows/64-bit/jogl_awt.dll");
bs = new byte[in.available()];
in.read(bs);
in.close();
store.getIndexes()[CACHE_INDEX].putFile(1, 0, bs);
in = new FileInputStream("./hd-libs/windows/64-bit/jogl.dll");
bs = new byte[in.available()];
in.read(bs);
in.close();
System.out.println(bs.length);
store.getIndexes()[CACHE_INDEX].putFile(1, 1, bs);
/*
* Archive 2 - mac 32-bit libs
*/
in = new FileInputStream("./hd-libs/mac/ppc/libjogl_awt.jnilib");
bs = new byte[in.available()];
in.read(bs);
in.close();
store.getIndexes()[CACHE_INDEX].putFile(2, 0, bs);
in = new FileInputStream("./hd-libs/mac/ppc/libjogl.jnilib");
bs = new byte[in.available()];
in.read(bs);
in.close();
store.getIndexes()[CACHE_INDEX].putFile(2, 1, bs);
/*
* Archive 3 - mac 64-bit libs
*/
in = new FileInputStream("./hd-libs/mac/universal/libjogl_awt.jnilib");
bs = new byte[in.available()];
in.read(bs);
in.close();
store.getIndexes()[CACHE_INDEX].putFile(3, 0, bs);
in = new FileInputStream("./hd-libs/mac/universal/libjogl.jnilib");
bs = new byte[in.available()];
in.read(bs);
in.close();
System.out.println(bs.length);
store.getIndexes()[CACHE_INDEX].putFile(3, 1, bs);
/*
* Archive 4 - linux 32-bit libs
*/
in = new FileInputStream("./hd-libs/linux/32-bit/libjogl_awt.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
store.getIndexes()[CACHE_INDEX].putFile(4, 0, bs);
in = new FileInputStream("./hd-libs/linux/32-bit/libjogl.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
System.out.println(bs.length);
store.getIndexes()[CACHE_INDEX].putFile(4, 1, bs);
in = new FileInputStream("./hd-libs/linux/32-bit/libgluegen-rt.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
System.out.println(bs.length);
store.getIndexes()[CACHE_INDEX].putFile(4, 2, bs);
/*
* Archive 5 - linux 64-bit libs
*/
in = new FileInputStream("./hd-libs/linux/64-bit/libjogl_awt.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
store.getIndexes()[CACHE_INDEX].putFile(5, 0, bs);
in = new FileInputStream("./hd-libs/linux/64-bit/libjogl.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
System.out.println(bs.length);
store.getIndexes()[CACHE_INDEX].putFile(5, 1, bs);
in = new FileInputStream("./hd-libs/linux/64-bit/libgluegen-rt.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
System.out.println(bs.length);
store.getIndexes()[CACHE_INDEX].putFile(5, 2, bs);
/*
* Archive 6 - solaris 32-bit libs
*/
in = new FileInputStream("./hd-libs/solaris/32-bit/libjogl_awt.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
store.getIndexes()[CACHE_INDEX].putFile(6, 0, bs);
in = new FileInputStream("./hd-libs/solaris/32-bit/libjogl.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
System.out.println(bs.length);
store.getIndexes()[CACHE_INDEX].putFile(6, 1, bs);
in = new FileInputStream("./hd-libs/solaris/32-bit/libgluegen-rt.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
System.out.println(bs.length);
store.getIndexes()[CACHE_INDEX].putFile(6, 2, bs);
/*
* Archive 7 - solaris 64-bit libs
*/
in = new FileInputStream("./hd-libs/solaris/sparcv9/libjogl_awt.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
store.getIndexes()[CACHE_INDEX].putFile(7, 0, bs);
in = new FileInputStream("./hd-libs/solaris/sparcv9/libjogl.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
System.out.println(bs.length);
store.getIndexes()[CACHE_INDEX].putFile(7, 1, bs);
in = new FileInputStream("./hd-libs/solaris/sparcv9/libgluegen-rt.so");
bs = new byte[in.available()];
in.read(bs);
in.close();
System.out.println(bs.length);
store.getIndexes()[CACHE_INDEX].putFile(7, 2, bs);
store.getIndexes()[CACHE_INDEX].rewriteTable();
System.out.println("Packed HD-libraries in cache index " + CACHE_INDEX + "!");
store = new Store(ServerConstants.CACHE_530_DIR, 530);
if (bs.length != store.getIndexes()[CACHE_INDEX].getFile(7, 2).length) {
System.err.println("Failed to pack!");
} else {
System.err.println("Successfully packed!");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment