Source code for pymyinstall.installcustom.install_custom_javajdk

"""
Various functions to install `Java JDK <http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html>`_


:githublink:`%|py|5`
"""
from __future__ import print_function
import sys
import re
import os

from ..installhelper.install_cmd_helper import run_cmd
from .install_custom import download_page, download_file
from .install_custom_exceptions import ManualDownloadException


[docs]def install_javajdk( temp_folder=".", fLOG=print, install=True, force_download=False, version=None): """ Install `Java JDK <http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html>`_. :param temp_folder: where to download the setup :param fLOG: logging function :param install: install (otherwise only download) :param force_download: force the downloading of pandoc :param version: version to install (unused) :return: temporary file :githublink:`%|py|26` """ if version is not None: raise ValueError("cannot specify a version") #bb = IsPandocInstalled() bb = False if bb and not force_download: return True link = "http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" page = download_page(link) if sys.platform.startswith("win"): reg = re.compile("(http.*?jdk.*?windows-x64[.]exe)") alls = reg.findall(page) if len(alls) == 0: raise Exception( "unable to find a link on a .exe file on page: " + page) file = alls[-1].split("/")[-1] version = file.split("-")[1] b18 = int(version.replace("8u", "")) + 18 - 66 root = "http://download.oracle.com/otn-pub/java/jdk/{0}-b{1}/".format( version, b18) filel = root + file fLOG("[pymy] java-jdk, version ", version) vershort = version.split("-")[0] full = filel.format(vershort, version) outfile = os.path.join(temp_folder, full.split("/")[-1]) fLOG("[pymy] download ", full) local = download_file(full, outfile) size = os.stat(local).st_size if size < 2 ** 20: raise ManualDownloadException( "You should directly download the file from:\n{0}".format(link)) if install and not bb: run_cmd("msiexec /i " + local, fLOG=fLOG, wait=True) return local else: raise NotImplementedError("not available on platform " + sys.platform)