kopia lustrzana https://github.com/jupyterhub/repo2docker
If looking for latest MRAN URL try earlier snapshots too
rodzic
8d490cf9d8
commit
5f3fcfcf08
|
@ -1,6 +1,7 @@
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
import datetime
|
import datetime
|
||||||
|
import requests
|
||||||
|
|
||||||
from distutils.version import LooseVersion as V
|
from distutils.version import LooseVersion as V
|
||||||
|
|
||||||
|
@ -135,8 +136,9 @@ class RBuildPack(PythonBuildPack):
|
||||||
# no R snapshot date set through runtime.txt
|
# no R snapshot date set through runtime.txt
|
||||||
# set the R runtime to the latest date that is guaranteed to
|
# set the R runtime to the latest date that is guaranteed to
|
||||||
# be on MRAN across timezones
|
# be on MRAN across timezones
|
||||||
self._checkpoint_date = datetime.date.today() - datetime.timedelta(
|
two_days_ago = datetime.date.today() - datetime.timedelta(days=2)
|
||||||
days=2
|
self._checkpoint_date = self._get_latest_working_mran_date(
|
||||||
|
two_days_ago, 3
|
||||||
)
|
)
|
||||||
self._runtime = "r-{}".format(str(self._checkpoint_date))
|
self._runtime = "r-{}".format(str(self._checkpoint_date))
|
||||||
return True
|
return True
|
||||||
|
@ -186,6 +188,29 @@ class RBuildPack(PythonBuildPack):
|
||||||
|
|
||||||
return super().get_packages().union(packages)
|
return super().get_packages().union(packages)
|
||||||
|
|
||||||
|
def _get_latest_working_mran_date(self, startdate, max_prior):
|
||||||
|
"""
|
||||||
|
Look for a working MRAN snapshot
|
||||||
|
|
||||||
|
Starts from `startdate` and tries up to `max_prior` previous days.
|
||||||
|
Raises `requests.HTTPError` with the last tried URL if no working snapshot found.
|
||||||
|
"""
|
||||||
|
for days in range(0, max_prior + 1):
|
||||||
|
test_date = startdate - datetime.timedelta(days=days)
|
||||||
|
mran_url = "https://mran.microsoft.com/snapshot/{}".format(
|
||||||
|
test_date.isoformat()
|
||||||
|
)
|
||||||
|
r = requests.head(mran_url)
|
||||||
|
if r.ok:
|
||||||
|
return test_date
|
||||||
|
self.log.warning(
|
||||||
|
"Failed to get MRAN snapshot URL %s: %s %s",
|
||||||
|
mran_url,
|
||||||
|
r.status_code,
|
||||||
|
r.reason,
|
||||||
|
)
|
||||||
|
r.raise_for_status()
|
||||||
|
|
||||||
def get_build_scripts(self):
|
def get_build_scripts(self):
|
||||||
"""
|
"""
|
||||||
Return series of build-steps common to all R repositories
|
Return series of build-steps common to all R repositories
|
||||||
|
|
Ładowanie…
Reference in New Issue