diff --git a/dev-lang/openjdk/download2 b/dev-lang/openjdk/download2 new file mode 100644 index 000000000..7e86282a0 Binary files /dev/null and b/dev-lang/openjdk/download2 differ diff --git a/dev-lang/openjdk/openjdk-1.7_u80_b02.recipe b/dev-lang/openjdk/openjdk-1.7_u80_b02.recipe index 2fec01516..0b54ef076 100644 --- a/dev-lang/openjdk/openjdk-1.7_u80_b02.recipe +++ b/dev-lang/openjdk/openjdk-1.7_u80_b02.recipe @@ -5,8 +5,7 @@ result of an effort Sun Microsystems began in 2006. The implementation is \ licensed under the GNU General Public License (GNU GPL) with a linking \ exception. Were it not for the GPL linking exception, components that linked \ to the Java class library would be subject to the terms of the GPL license. \ -OpenJDK is the official Java SE 7 reference implementation. -" +OpenJDK is the official Java SE 7 reference implementation." HOMEPAGE="http://openjdk.java.net/" COPYRIGHT="2012 Oracle and/or its affiliates." LICENSE="GNU GPL v2" @@ -27,7 +26,7 @@ SRC_URI_7="hg+http://hg.openjdk.java.net/jdk7u/jdk7u/jaxws#jdk7u80-b02" SRC_URI_8="hg+http://bitbucket.org/hamishm/haiku-jdk7u-hotspot#755ff2f" SRC_URI_9="hg+http://bitbucket.org/hamishm/haiku-jdk7u-jdk#f39f6f6" -REVISION="1" +REVISION="2" ARCHITECTURES="x86" if [ $effectiveTargetArchitecture != x86_gcc2 ]; then # x86_gcc2 is fine as primary target architecture as long as we're building @@ -65,6 +64,7 @@ PROVIDES=" cmd:jstack$secondaryArchSuffix = $portVersion compat >= 1 cmd:jstat$secondaryArchSuffix = $portVersion compat >= 1 cmd:jstatd$secondaryArchSuffix = $portVersion compat >= 1 + cmd:hjava = $portVersion compat >= 1 cmd:keytool$secondaryArchSuffix = $portVersion compat >= 1 cmd:native2ascii$secondaryArchSuffix = $portVersion compat >= 1 cmd:orbd$secondaryArchSuffix = $portVersion compat >= 1 @@ -95,7 +95,7 @@ BUILD_REQUIRES=" devel:libz$secondaryArchSuffix " BUILD_PREREQUIRES=" - cmd:cpio >= 2.10 + cmd:cpio cmd:make cmd:gcc$secondaryArchSuffix cmd:ld$secondaryArchSuffix @@ -113,6 +113,10 @@ BUILD_PREREQUIRES=" BUILD() { + # Build "hjava" command. + g++ $portDir/sources/hjava.cpp -DJAVA_BINARY=\"$binDir/java\" -o hjava + addResourcesToBinaries $portDir/sources/hjava.rdef hjava + OPENJDK_DIR=$(dirname $sourceDir) # prepare the directory structure @@ -147,13 +151,18 @@ BUILD() export USE_EXTERNAL_ZLIB=true - # Build. + # Build. (multijob make sometimes fails) cd jdk make } INSTALL() { + mkdir -p $binDir + + # install hjava + cp hjava $prefix/bin/ + # install the generated SDK image dir cd .. jdkDir=$libDir/openjdk @@ -161,7 +170,6 @@ INSTALL() cp -a output/j2sdk-image $jdkDir # symlink the executables to binDir - mkdir -p $binDir symlinkRelative -s $jdkDir/bin/* $binDir # TODO: We should probably link only a subset. diff --git a/dev-lang/openjdk/sources/hjava.cpp b/dev-lang/openjdk/sources/hjava.cpp new file mode 100644 index 000000000..f964ae32c --- /dev/null +++ b/dev-lang/openjdk/sources/hjava.cpp @@ -0,0 +1,24 @@ +#include +#include +#include + +int main(int argc, char* argv[]) +{ + if (argc < 2) { + system("alert --stop \"Java: Please specify a Jarfile.\" >/dev/null"); + return 1; + } + + char command[PATH_MAX]; + snprintf(command, sizeof(command), "%s -jar \"%s\"", JAVA_BINARY, argv[1]); + + FILE* fd = popen(command, "r"); + if (fd != NULL) { + char buffer[512]; + fgets(buffer, 512, fd); + return pclose(fd); + } else + system("alert --stop \"Java: popen failed!\" >/dev/null"); + + return 1; +} diff --git a/dev-lang/openjdk/sources/hjava.rdef b/dev-lang/openjdk/sources/hjava.rdef new file mode 100644 index 000000000..168c9c8c7 --- /dev/null +++ b/dev-lang/openjdk/sources/hjava.rdef @@ -0,0 +1,54 @@ +resource app_signature "application/x-vnd.hjava"; + +resource app_flags B_MULTIPLE_LAUNCH; + +resource app_version { + major = 1, + middle = 7, + minor = 0, + + variety = B_APPV_FINAL, + internal = 0, + + short_info = "hjava", + long_info = "Oracle JVM Launcher" +}; + +resource file_types message { + "types" = "application/java-archive" +}; + +resource vector_icon { + $"6E63696603050005FF0201060A3BDB8F0000000000003BDB8F490DCA4AF1DB00" + $"FFFFFF0FFBC8B412FBC3B02EF7978B4CF4716B6BF152518BEF3A3DACEE292FD1" + $"ED1F27FFED1C24070208B87DB7E3B87DB7E3B96FB9DFB7B0CC91B8CCC7B6B694" + $"D16EB536DCD0B578D79CB519DF07B6E3DFE7B570DFE7B971DFE7C0C2DAA3BCB0" + $"DA84C4D5DAC2C80AE0C7C621E0D1C9F2E0BCCB80DA2DCB7CE013CB8FC892B87D" + $"B7E3BCCDBA4CB87DB7E30213C549C5F5C549C5F5C62FC778C892C499C879C64E" + $"C8ABC2E4C74FC0A8C86BC0BDC634C094C44DBF63C569BF78C331BF4FC17CBEF1" + $"C201C06AC0F7BD78C44DBC9DC2E0BCD9C308BB58C1BAB878C249B9EFC12BB702" + $"C251B517C0C2B5AAC3E1B484C58AB8D1C3C0B778C503B6D4C4DCB4D9C4D1B601" + $"C4E6B3B0C676B309C4D1B2CFC81AB343C8ABB811C764B6ADC90FB6BFCA3BB463" + $"C94BB513CB2BB3B2CBF2B681CD4EB3AECA96B954CBEEBD15CC57BADBCB84BF4F" + $"C9B0C056CA3DBEE7C923C1C4C8FAC67ECA03C507C7F1C7F5C86DCC00C7C1CA34" + $"C65DCA13C549C5F5C549C5F5C549C5F50209B86EC7DCB86EC7DCB799CD92B48E" + $"D09FB4B4CE40B469D2FEB545D569B553D338B536D79AB307D9AEB343D87EB2CB" + $"DADFB4C0DB40B408DB40B578DB40B67BD617B631D818B6C6D415B587D187B587" + $"D2E7B587D027B700CFD8B755CDA2B87FCD7BB86EC7DCB935CA79B86EC7DC0207" + $"B98CCA09B98CCA09B8EBCD202ADE9AB4FADE62B8FDDED2C086D94DBBD9D943C5" + $"35D957C831DF7DC70DDF88C955DF73CA35D8ECCA16DFE5CA54D1F2C38EC51EC6" + $"12C90AC024C555B98CCA09BC78C812B98CCA090006C386C646C386C646C357C4" + $"57C00EC2D5C1E8C321BE44C28BBB10C4A5BC51C365B9A8C60EBA96C9AFB999C8" + $"04BB8FCB54BF7BCB76BDB7CBE0C1E5CAE6C386C646C3AFC8C9C386C6460007C2" + $"A3C6FEC2A3C6FEC278C8C0BF62CA92C111CA29BD99CB00BAFDC87BBBA1CA51BA" + $"AAC78BBB49C5C3BAB9C696BBC3C512BD49C42EBC87C487BED9C379C22DC4FAC1" + $"16C364C297C594C2A3C6FEC2A9C649C2A3C6FE0007C2A3C6FEC2A3C6FEC278C8" + $"C0BF62CA92C111CA29BD99CB00BAFDC87BBBA1CA51BAAAC78BBB49C5C3BAB9C6" + $"96BBC3C512BD49C42EBC87C487BED9C379C22DC4FAC116C364C297C594C2A3C6" + $"FEC2A9C649C2A3C6FE070A000100023E67E80000000000003E37B7473F2D3B22" + $"B20A000101023E67E80000000000003E37B7473F2D3B22B20A010103023E67E8" + $"0000000000003E37B7473F2D3B22B20A000104023E67E80000000000003E37B7" + $"473F2D3B22B20A020105023E67E80000000000003E37B7473F2D3B22B20A0001" + $"06123E67E80000000000003E37B7473F2D3B22B201178000040A000102023E67" + $"E80000000000003E37B7473F2D3B22B2" +};