diff --git a/core/c/find-java-home b/core/c/find-java-home index bf7084862d..87306b8f65 100644 --- a/core/c/find-java-home +++ b/core/c/find-java-home @@ -25,6 +25,10 @@ elif [ $UNIXTYPE = "linux" ] && [ -e /etc/arch-release ]; then fi elif [ $UNIXTYPE = "darwin" ]; then JAVA_HOME=$(/usr/libexec/java_home) +elif [ $UNIXTYPE = "gnu/kfreebsd" ]; then + if [ -d /usr/lib/jvm/java-gcj ]; then + JAVA_HOME="/usr/lib/jvm/java-gcj" + fi fi export JAVA_HOME diff --git a/core/c/jbigi/build_jbigi.sh b/core/c/jbigi/build_jbigi.sh index 465fa9e43c..b1a68ddfd6 100755 --- a/core/c/jbigi/build_jbigi.sh +++ b/core/c/jbigi/build_jbigi.sh @@ -35,6 +35,8 @@ SunOS*|OpenBSD*|NetBSD*|*FreeBSD*|Linux*) UNIXTYPE=$(uname -s | tr "[A-Z]" "[a-z]") if [ $UNIXTYPE = "sunos" ]; then UNIXTYPE="solaris" + elif [ $UNIXTYPE = "gnu/kfreebsd" ]; then + UNIXTYPE="linux" fi COMPILEFLAGS="-fPIC -Wall" INCLUDES="-I. -I../../jbigi/include -I$JAVA_HOME/include -I$JAVA_HOME/include/${UNIXTYPE}" diff --git a/core/c/jbigi/mbuild-all.sh b/core/c/jbigi/mbuild-all.sh index 711b960df0..a2ff234439 100755 --- a/core/c/jbigi/mbuild-all.sh +++ b/core/c/jbigi/mbuild-all.sh @@ -1,5 +1,13 @@ #!/bin/sh +# If JAVA_HOME isn't set we'll try to figure it out +[ -z $JAVA_HOME ] && . ../find-java-home +if [ ! -f "$JAVA_HOME/include/jni.h" ]; then + echo "Cannot find jni.h! Looked in '$JAVA_HOME/include/jni.h'" + echo "Please set JAVA_HOME to a java home that has the JNI" + exit 1 +fi + #FIXME What platforms for MacOS? MISC_DARWIN_PLATFORMS="powerpc powerpc64 powerpc64le powerpcle" @@ -49,6 +57,8 @@ X86_PLATFORMS="pentium pentiummmx pentium2 pentium3 pentiumm k6 k62 k63 athlon g if [ $(uname -s |tr "[A-Z]" "[a-z]") = "linux" ]; then ECHO="/bin/echo" +elif [ $(uname -s |tr "[A-Z]" "[a-z]") = "gnu/kfreebsd" ]; then + ECHO="/bin/echo" else ECHO="echo" fi @@ -81,19 +91,23 @@ MINGW*) PLATFORM_LIST="${MINGW_PLATFORMS}" NAME="jbigi" TYPE="dll" - TARGET="-windows-" + TARGET="windows" $ECHO "Building windows .dlls for all architectures";; Darwin*) PLATFORM_LIST="${DARWIN_PLATFORMS}" NAME="libjbigi" TYPE="jnilib" - TARGET="-osx-" + TARGET="osx" $ECHO "Building ${TARGET} .jnilibs for all architectures";; -Linux*) +Linux*|*kFreeBSD) NAME="libjbigi" TYPE="so" PLATFORM_LIST="" - TARGET="-linux-" + if [ $(uname -s | tr "[A-Z]" "[a-z]") = "gnu/kfreebsd" ]; then + TARGET="kfreebsd" + else + TARGET="linux" + fi arch=$(uname -m | cut -f1 -d" ") case ${arch} in i[3-6]86) @@ -102,13 +116,13 @@ Linux*) case ${arch} in x86_64 | amd64) PLATFORM_LIST="${X86_64_PLATFORMS}" - TARGET="-linux-X86_64-";; + TARGET="$TARGET-X86_64";; ia64) PLATFORM_LIST="${X86_64_PLATFORMS}" - TARGET="-linux-ia64-";; + TARGET="$TARGET-ia64";; x86) PLATFORM_LIST="${X86_PLATFORMS}" - TARGET="-linux-x86-";; + TARGET="$TARGET-x86";; *) PLATFORM_LIST="${LINUX_PLATFORMS}";; esac @@ -126,13 +140,13 @@ NetBSD*|FreeBSD*|OpenBSD*) case ${arch} in x86_64|amd64) PLATFORM_LIST="${X86_64_PLATFORMS}" - TARGET="-${BSDTYPE}-X86_64-";; + TARGET="${BSDTYPE}-X86_64";; ia64) PLATFORM_LIST="${X86_64_PLATFORMS}" - TARGET="-${BSDTYPE}-ia64-";; + TARGET="${BSDTYPE}-ia64";; x86) PLATFORM_LIST="${X86_PLATFORMS}" - TARGET="-${BSDTYPE}-x86-";; + TARGET="${BSDTYPE}-x86";; *) case ${BSDTYPE} in netbsd) @@ -153,6 +167,10 @@ NetBSD*|FreeBSD*|OpenBSD*) esac make_static () { + # + # TODO + # Fix formatting of output filename. Final versions will need to look + # like libjbigi-linux-athlon64.so or libjbigi-linux-athlon64_64.so $ECHO "Attempting .${4} creation for ${3}${5}${2}" ../../build_jbigi.sh static || return 1 cp ${3}.${4} ../../lib/net/i2p/util/${3}${5}${2}.${4} @@ -217,7 +235,7 @@ do rm -Rf * fi - build_file "$VER" "$x" "$NAME" "$TYPE" "$TARGET" + build_file "$VER" "$x" "$NAME" "$TYPE" "-$TARGET-" ) done diff --git a/core/c/jcpuid/build.sh b/core/c/jcpuid/build.sh index 278d527dde..f3fc9c2444 100755 --- a/core/c/jcpuid/build.sh +++ b/core/c/jcpuid/build.sh @@ -35,11 +35,13 @@ case `uname -s` in LINKFLAGS="-dynamiclib -framework JavaVM" LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86-darwin.jnilib";; Linux*|OpenBSD*|NetBSD*|*FreeBSD*|SunOS*) + KFREEBSD=0 UNIXTYPE="`uname -s | tr [A-Z] [a-z]`" if [ ${UNIXTYPE} = "sunos" ]; then UNIXTYPE="solaris" - elif [ ${UNIXTYPE} = "kfreebsd" ]; then + elif [ ${UNIXTYPE} = "gnu/kfreebsd" ]; then UNIXTYPE="linux" + KFREEBSD=1 fi # If JAVA_HOME isn't set, try to figure it out on our own [ -z $JAVA_HOME ] && . ../find-java-home @@ -62,11 +64,15 @@ case `uname -s` in ARCH="x86";; *) echo "Unsupported build environment. jcpuid is only used on x86 systems." - exit 1;; + exit 0;; esac LINKFLAGS="-shared -Wl,-soname,libjcpuid-${ARCH}-${UNIXTYPE}.so" - LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-${ARCH}-${UNIXTYPE}.so" + if [ $KFREEBSD -eq 1 ]; then + LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-${ARCH}-kfreebsd.so" + else + LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-${ARCH}-${UNIXTYPE}.so" + fi COMPILEFLAGS="-fPIC -Wall" INCLUDES="-I. -Iinclude -I${JAVA_HOME}/include -I${JAVA_HOME}/include/${UNIXTYPE}";; esac diff --git a/core/java/src/freenet/support/CPUInformation/CPUID.java b/core/java/src/freenet/support/CPUInformation/CPUID.java index b295c3ac13..d20718b5de 100644 --- a/core/java/src/freenet/support/CPUInformation/CPUID.java +++ b/core/java/src/freenet/support/CPUInformation/CPUID.java @@ -55,7 +55,8 @@ public class CPUID { private static final String libPrefix = isWindows ? "" : "lib"; private static final String libSuffix = isWindows ? ".dll" : ".so"; private static final boolean isLinux = System.getProperty("os.name").toLowerCase(Locale.US).contains("linux"); - private static final boolean isFreebsd = System.getProperty("os.name").toLowerCase(Locale.US).contains("freebsd"); + private static final boolean isKFreebsd = System.getProperty("os.name").toLowerCase(Locale.US).contains("kfreebsd"); + private static final boolean isFreebsd = (!isKFreebsd) && System.getProperty("os.name").toLowerCase(Locale.US).contains("freebsd"); private static final boolean isNetbsd = System.getProperty("os.name").toLowerCase(Locale.US).contains("netbsd"); private static final boolean isOpenbsd = System.getProperty("os.name").toLowerCase(Locale.US).contains("openbsd"); private static final boolean isSunos = System.getProperty("os.name").toLowerCase(Locale.US).contains("sunos"); @@ -447,6 +448,8 @@ public class CPUID { return "jcpuid-x86-osx"; // The convention on Intel Macs } } + if(isKFreebsd) + return "jcpuid-x86-kfreebsd"; // The convention on kfreebsd... if(isFreebsd) return "jcpuid-x86-freebsd"; // The convention on freebsd... if(isNetbsd) @@ -464,6 +467,8 @@ public class CPUID { private static final String get64LibraryMiddlePart() { if(isWindows) return "jcpuid-x86_64-windows"; + if(isKFreebsd) + return "jcpuid-x86_64-kfreebsd"; if(isFreebsd) return "jcpuid-x86_64-freebsd"; if(isNetbsd) diff --git a/core/java/src/net/i2p/util/NativeBigInteger.java b/core/java/src/net/i2p/util/NativeBigInteger.java index 84cdb7c252..abe2aac1d4 100644 --- a/core/java/src/net/i2p/util/NativeBigInteger.java +++ b/core/java/src/net/i2p/util/NativeBigInteger.java @@ -162,7 +162,8 @@ public class NativeBigInteger extends BigInteger { private static final boolean _isOS2 = System.getProperty("os.name").startsWith("OS/2"); private static final boolean _isMac = SystemVersion.isMac(); private static final boolean _isLinux = System.getProperty("os.name").toLowerCase(Locale.US).contains("linux"); - private static final boolean _isFreebsd = System.getProperty("os.name").toLowerCase(Locale.US).contains("freebsd"); + private static final boolean _isKFreebsd = System.getProperty("os.name").toLowerCase(Locale.US).contains("kfreebsd"); + private static final boolean _isFreebsd = (!_isKFreebsd) && System.getProperty("os.name").toLowerCase(Locale.US).contains("freebsd"); private static final boolean _isNetbsd = System.getProperty("os.name").toLowerCase(Locale.US).contains("netbsd"); private static final boolean _isOpenbsd = System.getProperty("os.name").toLowerCase(Locale.US).contains("openbsd"); private static final boolean _isSunos = System.getProperty("os.name").toLowerCase(Locale.US).contains("sunos"); @@ -773,6 +774,8 @@ public class NativeBigInteger extends BigInteger { private static final String getMiddleName1() { if(_isWin) return "jbigi-windows-"; + if(_isKFreebsd) + return "jbigi-kfreebsd-"; if(_isFreebsd) return "jbigi-freebsd-"; if(_isNetbsd) diff --git a/debian/patches/0001-path-substitution.patch b/debian/patches/0001-path-substitution.patch index 2dd998183b..7c4cf7641a 100644 --- a/debian/patches/0001-path-substitution.patch +++ b/debian/patches/0001-path-substitution.patch @@ -107,7 +107,7 @@ Debian wrapper.config to try to prevent confusion. if [ -n "$FIXED_COMMAND" ] then COMMAND="$FIXED_COMMAND" -@@ -905,9 +856,6 @@ +@@ -908,9 +859,6 @@ # The string passed to eval must handles spaces in paths correctly. COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=\"$APP_NAME\" wrapper.java.command=\"$JAVABINARY\" wrapper.pidfile=\"$PIDFILE\" wrapper.name=\"$APP_NAME\" wrapper.displayname=\"$APP_LONG_NAME\" $ANCHORPROP $STATUSPROP $COMMANDPROP $LOCKPROP $LOGPROP $ADDITIONAL_PARA" eval $COMMAND_LINE @@ -117,7 +117,7 @@ Debian wrapper.config to try to prevent confusion. else eval echo `gettext '$APP_LONG_NAME is already running.'` exit 1 -@@ -1031,9 +979,6 @@ +@@ -1034,9 +982,6 @@ # The string passed to eval must handles spaces in paths correctly. COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" wrapper.syslog.ident=\"$APP_NAME\" wrapper.java.command=\"$JAVABINARY\" wrapper.pidfile=\"$PIDFILE\" wrapper.name=\"$APP_NAME\" wrapper.displayname=\"$APP_LONG_NAME\" wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $STATUSPROP $COMMANDPROP $LOCKPROP $LOGPROP $ADDITIONAL_PARA" eval $COMMAND_LINE @@ -127,7 +127,7 @@ Debian wrapper.config to try to prevent confusion. else eval echo `gettext '$APP_LONG_NAME is already running.'` exit 1 -@@ -1874,18 +1819,9 @@ +@@ -1877,18 +1822,9 @@ status ;; diff --git a/debian/patches/0002-jbigi-soname.patch b/debian/patches/0002-jbigi-soname.patch index 09085deb6e..00ec2dbebb 100644 --- a/debian/patches/0002-jbigi-soname.patch +++ b/debian/patches/0002-jbigi-soname.patch @@ -12,8 +12,8 @@ a soname to shut lintian up. --- a/core/c/jbigi/build_jbigi.sh +++ b/core/c/jbigi/build_jbigi.sh -@@ -37,7 +37,7 @@ - UNIXTYPE="solaris" +@@ -39,7 +39,7 @@ + UNIXTYPE="linux" fi COMPILEFLAGS="-fPIC -Wall" - INCLUDES="-I. -I../../jbigi/include -I$JAVA_HOME/include -I$JAVA_HOME/include/${UNIXTYPE}" @@ -21,7 +21,7 @@ a soname to shut lintian up. LINKFLAGS="-shared -Wl,-soname,libjbigi.so" LIBFILE="libjbigi.so";; *) -@@ -56,7 +56,7 @@ +@@ -58,7 +58,7 @@ echo "Compiling C code..." rm -f jbigi.o $LIBFILE diff --git a/debian/patches/0003-renaming-jcpuid.patch b/debian/patches/0003-renaming-jcpuid.patch index 2928b5c0ca..a71863d2c0 100644 --- a/debian/patches/0003-renaming-jcpuid.patch +++ b/debian/patches/0003-renaming-jcpuid.patch @@ -8,12 +8,16 @@ Subject: rename jcpuid --- a/core/c/jcpuid/build.sh +++ b/core/c/jcpuid/build.sh -@@ -65,8 +65,8 @@ - exit 1;; +@@ -67,12 +67,8 @@ + exit 0;; esac - LINKFLAGS="-shared -Wl,-soname,libjcpuid-${ARCH}-${UNIXTYPE}.so" -- LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-${ARCH}-${UNIXTYPE}.so" +- if [ $KFREEBSD -eq 1 ]; then +- LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-${ARCH}-kfreebsd.so" +- else +- LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-${ARCH}-${UNIXTYPE}.so" +- fi + LINKFLAGS="-shared -Wl,-soname,libjcpuid.so" + LIBFILE="../jbigi/libjcpuid.so" COMPILEFLAGS="-fPIC -Wall" diff --git a/history.txt b/history.txt index a80182f681..b0547f3120 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,7 @@ +2012-11-19 kytv + * Add support for kFreeBSD to NBI and CPUID + * Improve kFreeBSD support in jcupid/jbigi scripts + 2012-11-19 zzz * BuildHandler: Disable CoDel, wasn't helping * NetDB: Add negative lookup cache diff --git a/installer/resources/i2prouter b/installer/resources/i2prouter index afbc4612d4..60ddd72b32 100644 --- a/installer/resources/i2prouter +++ b/installer/resources/i2prouter @@ -357,6 +357,9 @@ case "$DIST_OS" in 'unix_sv') DIST_OS="unixware" ;; + 'gnu/kfreebsd') + DIST_OS="kfreebsd" + ;; 'os/390') DIST_OS="zos" ;; diff --git a/installer/resources/osid b/installer/resources/osid index f5fc79a146..235906dfb0 100644 --- a/installer/resources/osid +++ b/installer/resources/osid @@ -34,6 +34,7 @@ fi DARWIN=`echo "$HOST_OS" | grep Darwin` MAC=`echo "$HOST_OS" | grep Mac` +KFREEBSD=`echo "$HOST_OS" | grep kFreeBSD` FREEBSD=`echo "$HOST_OS" | grep FreeBSD` LINUX=`echo "$HOST_OS" | grep Linux` SOLARIS=`echo "$HOST_OS" | grep Solaris` @@ -43,25 +44,15 @@ OPENBSD=`echo "$HOST_OS" |grep OpenBSD` if [ ! "X$DARWIN" = "X" -o ! "X$MAC" = "X" ]; then echo osx - exit 0 -fi - -if [ ! "X$FREEBSD" = "X" ]; then +elif [ ! "X$KFREEBSD" = "X" ]; then + echo kfreebsd +elif [ ! "X$FREEBSD" = "X" ]; then echo freebsd - exit 0 -fi - -if [ ! "X$NETBSD" = "X" ]; then +elif [ ! "X$NETBSD" = "X" ]; then echo netbsd - exit 0 -fi - -if [ ! "X$OPENBSD" = "X" ]; then +elif [ ! "X$OPENBSD" = "X" ]; then echo openbsd - exit 0 -fi - -if [ ! "X$LINUX" = "X" ]; then +elif [ ! "X$LINUX" = "X" ]; then LINUX_DISTRO=`cat /proc/version` DEBIAN=`echo $LINUX_DISTRO | grep Debian` @@ -73,43 +64,21 @@ if [ ! "X$LINUX" = "X" ]; then if [ ! "X$DEBIAN" = "X" ]; then echo debian - exit 0 - fi - - if [ ! "X$FEDORA" = "X" ]; then + elif [ ! "X$FEDORA" = "X" ]; then echo fedora - exit 0 - fi - - if [ ! "X$GENTOO" = "X" ]; then + elif [ ! "X$GENTOO" = "X" ]; then echo gentoo - exit 0 - fi - - if [ ! "X$MANDRAKE" = "X" ]; then + elif [ ! "X$MANDRAKE" = "X" ]; then echo mandrake - exit 0 - fi - - if [ ! "X$REDHAT" = "X" ]; then + elif [ ! "X$REDHAT" = "X" ]; then echo redhat - exit 0 - fi - - if [ ! "X$SUSE" = "X" ]; then + elif [ ! "X$SUSE" = "X" ]; then echo suse - exit 0 + else + echo linux fi - - echo linux - exit 0 -fi - -if [ ! "X$SOLARIS" = "X" -o ! "X$SUNOS" = "X" ]; then +elif [ ! "X$SOLARIS" = "X" -o ! "X$SUNOS" = "X" ]; then echo solaris - exit 0 +else + echo unknown fi - -echo unknown -exit 0 - diff --git a/installer/resources/postinstall.sh b/installer/resources/postinstall.sh index 78dc628313..a186859310 100644 --- a/installer/resources/postinstall.sh +++ b/installer/resources/postinstall.sh @@ -81,7 +81,7 @@ case $HOST_OS in wrapperpath="./lib/wrapper/solaris" cp ${wrapperpath}/libwrapper.so ./lib/ ;; - netbsd|openbsd ) + netbsd|openbsd|kfreebsd) # FIXME # This isn't displayed when installing, but if we fall back to the "*)" # choice, no cleanup happens and users are advised to copy the wrapper