Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""
2@file
3@brief Various functions to install `Java JDK <http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html>`_
4"""
5from __future__ import print_function
6import sys
7import re
8import os
10from ..installhelper.install_cmd_helper import run_cmd
11from .install_custom import download_page, download_file
12from .install_custom_exceptions import ManualDownloadException
15def install_javajdk(
16 temp_folder=".", fLOG=print, install=True, force_download=False, version=None):
17 """
18 Install `Java JDK <http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html>`_.
20 @param temp_folder where to download the setup
21 @param fLOG logging function
22 @param install install (otherwise only download)
23 @param force_download force the downloading of pandoc
24 @param version version to install (unused)
25 @return temporary file
26 """
27 if version is not None:
28 raise ValueError("cannot specify a version")
29 #bb = IsPandocInstalled()
30 bb = False
31 if bb and not force_download:
32 return True
34 link = "http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"
35 page = download_page(link)
36 if sys.platform.startswith("win"):
37 reg = re.compile("(http.*?jdk.*?windows-x64[.]exe)")
38 alls = reg.findall(page)
39 if len(alls) == 0:
40 raise Exception(
41 "unable to find a link on a .exe file on page: " +
42 page)
44 file = alls[-1].split("/")[-1]
45 version = file.split("-")[1]
46 b18 = int(version.replace("8u", "")) + 18 - 66
47 root = "http://download.oracle.com/otn-pub/java/jdk/{0}-b{1}/".format(
48 version, b18)
50 filel = root + file
51 fLOG("[pymy] java-jdk, version ", version)
52 vershort = version.split("-")[0]
53 full = filel.format(vershort, version)
54 outfile = os.path.join(temp_folder, full.split("/")[-1])
55 fLOG("[pymy] download ", full)
56 local = download_file(full, outfile)
57 size = os.stat(local).st_size
58 if size < 2 ** 20:
59 raise ManualDownloadException(
60 "You should directly download the file from:\n{0}".format(link))
61 if install and not bb:
62 run_cmd("msiexec /i " + local, fLOG=fLOG, wait=True)
63 return local
64 else:
65 raise NotImplementedError("not available on platform " + sys.platform)