Răsfoiți Sursa

Switching to a more dependency-like layout and only cache compiled jdk's (to save disk space)
Travis? GOTO :HELL

MeFisto94 9 ani în urmă
părinte
comite
fdd128c0c6
2 a modificat fișierele cu 141 adăugiri și 84 ștergeri
  1. 1 1
      .travis.yml
  2. 140 83
      jdks/download-jdks.sh

+ 1 - 1
.travis.yml

@@ -8,7 +8,7 @@ cache:
   directories:
    - gradle-cache
    - netbeans
-   - jdks/local
+   - jdks/local/*/compiled
 
 addons:
   apt:

+ 140 - 83
jdks/download-jdks.sh

@@ -9,13 +9,14 @@ platforms=( "linux-x64.tar.gz" "linux-i586.tar.gz" "windows-i586.exe" "windows-x
 
 function install_xar {
     # This is needed to open Mac OS .pkg files on Linux...
-    echo "> Compiling xar, just for you..."
+    echo ">> Compiling xar, just for you..."
     wget -q https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/xar/xar-1.5.2.tar.gz
     tar xf xar-1.5.2.tar.gz
     cd xar-1.5.2
     ./configure -q > /dev/null
     make -s > /dev/null
     cd ../
+    echo "<< OK!"
 }
 
 function install_seven_zip {
@@ -54,60 +55,92 @@ function install_seven_zip {
     cd ../../
 }
 
+function download_jdk {
+    echo ">>> Downloading the JDK for $1"
+
+    if [ -f downloads/jdk-$1 ];
+    then
+        echo "<<< Already existing, SKIPPING."
+    else
+        curl -L  -s -o downloads/jdk-$1 http://download.oracle.com/otn-pub/java/jdk/$jdk_version-$jdk_build_version/jdk-$jdk_version-$1 --cookie "gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" #--progress-bar
+        echo "<<< OK!"
+    fi
+}
+
 function unpack_mac_jdk {
-    echo "> Extracting the Mac JDK..."
-    cd local/$jdk_version-$jdk_build_version/
+    echo ">> Extracting the Mac JDK..."
+    #cd local/$jdk_version-$jdk_build_version/
 
-    if [ -f ../../jdk-macosx.zip ];
+    if [ -f "compiled/jdk-macosx.zip" ];
     then
         echo "< Already existing, SKIPPING."
-        cd ../../
+        #cd ../../
         return 0
     fi
 
+    download_jdk macosx-x64.dmg
+
     mkdir -p MacOS
     cd MacOS
 
     # MacOS
     if [ "$(uname)" == "Darwin" ]; then
-        hdiutil attach ../jdk-macosx-x64.dmg
+        hdiutil attach ../downloads/jdk-macosx-x64.dmg
         xar -xf /Volumes/JDK*/JDK*.pkg
         hdiutil detach /Volumes/JDK*
     else # Linux
-        #mkdir mnt
-        7z x ../jdk-macosx-x64.dmg > /dev/null
+        7z x ../downloads/jdk-macosx-x64.dmg > /dev/null
         7z x 4.hfs > /dev/null
-        #sudo mount -t hfsplus -o loop 4.hfs mnt
         install_xar
         ./xar-1.5.2/src/xar -xf JDK*/JDK*.pkg
-        #sudo umount mnt
     fi
 
     cd jdk1*.pkg
     cat Payload | gunzip -dc | cpio -i
-    mkdir -p Contents/jdk/
-    cd Contents/Home
-    # FROM HERE: build-osx-zip.sh by normen
-    cp -r . ../jdk
-    zip -9 -r -y -q ../../../../jdk-macosx.zip ../jdk
-    cd ../../../../
+    #mkdir -p Contents/jdk/
+    cd Contents/
+    # FROM HERE: build-osx-zip.sh by normen (with changes)
+    mv Home jdk # rename folder
+    zip -9 -r -y -q ../../../compiled/jdk-macosx.zip jdk
+    cd ../../../
     rm -rf MacOS/
-    cd ../../
+
+    if [ "$TRAVIS" == "true" ]; then
+        rm -rf downloads/jdk-macosx-x64.dmg
+    fi
+    #cd ../../
+
+    echo "<< OK!"
 }
 
+function build_mac_jdk {
+    echo "> Building the Mac JDK"
+    if ! [ -f "compiled/jdk-macosx.zip" ];
+    then
+        unpack_mac_jdk # Depends on "unpack" which depends on "download" (Unpack includes what compile is to other archs)
+    fi
+
+    rm -rf ../../jdk-macosx.zip
+    ln -s ./local/$jdk_version-$jdk_build_version/compiled/jdk-macosx.zip ../../ # Note that the first part is seen relative to the second one.
+    echo "< OK!"
+}
+
+# PARAMS arch_oracle
 function unpack_windows {
-    echo "> Extracting the JDK for $1"
-    cd local/$jdk_version-$jdk_build_version/
+    echo ">> Extracting the JDK for $1"
+    #cd local/$jdk_version-$jdk_build_version/
 
     if [ -d $1 ];
     then
-        echo "< Already existing, SKIPPING."
-        cd ../../
-    return 0
+        echo "<< Already existing, SKIPPING."
+        # cd ../../
+        return 0
     fi
 
+    download_jdk $1.exe
+
     mkdir -p $1
-    7z x -o$1 "jdk-$1.exe" > /dev/null
+    7z x -o$1 "downloads/jdk-$1.exe" > /dev/null
     unzip -qq $1/tools.zip -d $1/
     rm $1/tools.zip
 
@@ -119,94 +152,118 @@ function unpack_windows {
         rm $eachFile;
     done
 
-    cd ../../
+    if [ "$TRAVIS" == "true" ]; then
+        rm -rf downloads/jdk-$1.exe
+    fi
+    # cd ../../
+    echo "<< OK!"
 }
 
 function unpack_linux {
-    echo "> Extracting the JDK for $1"
-    cd local/$jdk_version-$jdk_build_version/
+    echo ">> Extracting the JDK for $1"
+    #cd local/$jdk_version-$jdk_build_version/
 
     if [ -d $1 ];
     then
-        echo "< Already existing, SKIPPING."
-        cd ../../
+        echo "<< Already existing, SKIPPING."
+        #cd ../../
         return 0
     fi
 
+    download_jdk $1.tar.gz
+
     mkdir -p $1
     cd $1
-    tar -xf "../jdk-$1.tar.gz"
+    tar -xf "../downloads/jdk-$1.tar.gz"
     cd jdk1*
     mv * ../
     cd ../
     rm -rf jdk1*
-    cd ../../../
-}
+    cd ../
 
-function build_mac_jdk {
-    if [ -f local/$jdk_version-$jdk_build_version/jdk-macosx.zip ];
-    then
-        rm -f jdk-macosx.zip
-        mv -f local/$jdk_version-$jdk_build_version/jdk-macosx.zip .
-    fi # Already packed
+    if [ "$TRAVIS" == "true" ]; then
+        rm -rf downloads/jdk-$1.tar.gz
+    fi
+
+    echo "<< OK!"
 }
 
-function exec_build_package {
-    echo "> Building Package for $1"
-    name="jdk-$1.$3"
+# PARAMS: os arch_usual arch_oracle
+function compile_other {
+    echo "> Compiling JDK for $1-$2"
 
-    if [ -f "$name" ]; then
-        echo "< Already existing, SKIPPING."
+    if [ $1 == "windows" ]; then
+        name="jdk-$1-$2.exe"
+    elif [ $1 == "linux" ]; then
+        name="jdk-$1-$2.bin"
     else
-        # ./build-package.sh $1 $2 # We do it manually now
-        unzipsfxname="unzipsfx/unzipsfx-$1"
-        if [ ! -f "$unzipsfxname" ]; then
-            echo "No unzipsfx for platform $1 found at $unzipsfxname, cannot continue"
-            exit 1
-        fi
+        echo "Unknown Platform $1. ERROR!!!"
+        exit 1
+    fi
 
+    if [ -f "compiled/$name" ]; then
+        echo "< Already existing, SKIPPING."
+        return 0
+    fi
 
-        echo ">> Creating SFX JDK package $name for $1 with source $2."
+    # Depends on UNPACK and thus DOWNLOAD
+    if [ $1 == "windows" ]; then
+        unpack_windows windows-$3
+    elif [ $1 == "linux" ]; then
+        unpack_linux linux-$3
+    fi
 
-        if [ -f "$2jre/lib/rt.jar" ]; then # Already packed?
-            pack200 -J-Xmx1024m $2jre/lib/rt.jar.pack.gz $2jre/lib/rt.jar
-            rm -rf $2jre/lib/rt.jar
-        fi
+    unzipsfxname="../../unzipsfx/unzipsfx-$1-$2"
+    if [ ! -f "$unzipsfxname" ]; then
+        echo "No unzipsfx for platform $1-$2 found at $unzipsfxname, cannot continue"
+        exit 1
+    fi
 
-        echo ">>> Zipping JDK"
-        zip -9 -qry jdk_tmp_sfx.zip $2
-        echo ">>> Building SFX"
-        cat $unzipsfxname jdk_tmp_sfx.zip > $name
-        chmod +x $name
-        rm -rf jdk_tmp_sfx.zip
+    echo "> Creating SFX JDK package $name"
+    if [ -f "$1-$3/jre/lib/rt.jar" ]; then # Already packed?
+        echo "> PACK200 rt.jar"
+        pack200 -J-Xmx1024m $1-$3/jre/lib/rt.jar.pack.gz $1-$3/jre/lib/rt.jar
+        rm -rf $1-$3/jre/lib/rt.jar
     fi
-}
 
-mkdir -p local/$jdk_version-$jdk_build_version
+    echo "> Zipping JDK"
+    zip -9 -qry jdk_tmp_sfx.zip $1-$3
+    echo "> Building SFX"
+    cat $unzipsfxname jdk_tmp_sfx.zip > compiled/$name
+    chmod +x compiled/$name
+    rm -rf jdk_tmp_sfx.zip
 
-for platform in ${platforms[@]}
-do
-    echo "> Downloading the JDK for $platform"
+    if [ "$TRAVIS" == "true" ]; then
+        rm -rf $1-$3
+    fi
 
-    if [ -f local/$jdk_version-$jdk_build_version/jdk-$platform ];
-    then
-        # rm -f local/$jdk_version-$jdk_build_version/jdk-$platform
-        echo "< Already existing, SKIPPING."
-    else
-        curl -L  -s -o local/$jdk_version-$jdk_build_version/jdk-$platform http://download.oracle.com/otn-pub/java/jdk/$jdk_version-$jdk_build_version/jdk-$jdk_version-$platform --cookie "gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" #--progress-bar
+    echo "< OK!"
+}
+
+# PARAMS: os arch_usual arch_oracle
+function build_other_jdk {
+    echo "> Building Package for $1-$2"
+    compile_other $1 $2 $3 # Depend on Compile
+
+    if [ $1 == "windows" ]; then
+        name="jdk-$1-$2.exe"
+    elif [ $1 == "linux" ]; then
+        name="jdk-$1-$2.bin"
     fi
-done
 
-#cd local/$jdk_version-$jdk_build_version
-#install_seven_zip # see travis' apt addon
-#cd ../../
-unpack_mac_jdk
+    rm -rf ../../$name
+    ln -s ./local/$jdk_version-$jdk_build_version/compiled/$name ../../ # Note that the first part is seen relative to the second one.
+    echo "< OK!"
+}
+
+mkdir -p local/$jdk_version-$jdk_build_version/downloads
+mkdir -p local/$jdk_version-$jdk_build_version/compiled
+
+cd local/$jdk_version-$jdk_build_version
+
 build_mac_jdk
-unpack_windows windows-i586
-exec_build_package windows-x86 local/$jdk_version-$jdk_build_version/windows-i586/ exe
-unpack_windows windows-x64
-exec_build_package windows-x64 local/$jdk_version-$jdk_build_version/windows-x64/ exe
-unpack_linux linux-i586
-exec_build_package linux-x86 local/$jdk_version-$jdk_build_version/linux-i586/ bin
-unpack_linux linux-x64
-exec_build_package linux-x64 local/$jdk_version-$jdk_build_version/linux-x64/ bin
+build_other_jdk windows x86 i586
+build_other_jdk windows x64 x64
+build_other_jdk linux x86 i586
+build_other_jdk linux x64 x64
+cd ../../