CI: Add in-memory cache for the latest OpenSSL/LibreSSL
These functions were previously called once per compiler. Add the `lru_cache`
decorator to only perform one HTTP request each.
diff --git a/.github/matrix.py b/.github/matrix.py
index 7cd04e8..3df259c 100755
--- a/.github/matrix.py
+++ b/.github/matrix.py
@@ -8,6 +8,7 @@
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.
+import functools
import json
import sys
import urllib.request
@@ -25,6 +26,7 @@
def clean_ssl(ssl):
return ssl.replace("_VERSION", "").lower()
+@functools.lru_cache(5)
def determine_latest_openssl(ssl):
headers = {'Authorization': 'token ' + environ.get('GITHUB_API_TOKEN')} if environ.get('GITHUB_API_TOKEN') else {}
request = urllib.request.Request('https://api.github.com/repos/openssl/openssl/tags', headers=headers)
@@ -38,6 +40,7 @@
latest_tag = name
return "OPENSSL_VERSION={}".format(latest_tag[8:])
+@functools.lru_cache(5)
def determine_latest_libressl(ssl):
libressl_download_list = urllib.request.urlopen("http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/")
for line in libressl_download_list.readlines():