Skip to content

Commit 57d3087

Browse files
authored
Merge pull request #56 from Ellipsis-Labs/jarry/update-dockerfiles
Update images
2 parents 35857c7 + 25c1d28 commit 57d3087

File tree

4 files changed

+68
-34
lines changed

4 files changed

+68
-34
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "solana-verify"
3-
version = "0.2.8"
3+
version = "0.2.9"
44
edition = "2021"
55
description = "A CLI tool for building verifiable Solana programs"
66
license = "MIT"

generate_dockerfiles.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
["git", "ls-remote", "--tags", "https://github.com/solana-labs/solana"]
3535
)
3636

37+
3738
def check_version(version_str):
3839
try:
3940
# Ignore this one
@@ -45,24 +46,25 @@ def check_version(version_str):
4546
except Exception as e:
4647
return False
4748

49+
4850
def get_toolchain(version_tag):
4951
if "v1.14" in version_tag:
5052
return "1.68.0"
5153

52-
5354
url = f"https://raw.githubusercontent.com/solana-labs/solana/{version_tag}/rust-toolchain.toml"
54-
headers = {'Accept': 'application/vnd.github.v3.raw'} # Fetch the raw file content
55+
headers = {"Accept": "application/vnd.github.v3.raw"} # Fetch the raw file content
5556

5657
response = requests.get(url, headers=headers)
5758
if response.status_code == 200:
5859
parsed_data = tomllib.loads(response.text)
59-
channel_version = parsed_data['toolchain']['channel']
60+
channel_version = parsed_data["toolchain"]["channel"]
6061

6162
return channel_version
6263
else:
6364
print(f"Failed to fetch rust-toolchain.toml for {version_tag}")
6465
return None
65-
66+
67+
6668
tags = list(
6769
filter(
6870
check_version,
@@ -76,6 +78,7 @@ def get_toolchain(version_tag):
7678

7779
dockerfiles = {}
7880

81+
dirty_set = set()
7982
for release in tags:
8083
rust_version = get_toolchain(release)
8184
print("Generating Dockerfile for " + release + ", rust version " + rust_version)
@@ -98,14 +101,26 @@ def get_toolchain(version_tag):
98101
if image["architecture"] == "amd64":
99102
RUST_DOCKER_IMAGESHA_MAP[rust_version] = image["digest"]
100103
break
101-
104+
102105
if rust_version not in RUST_DOCKER_IMAGESHA_MAP:
103106
print(f"Failed to fetch rust image for {rust_version}")
104107
continue
105108

106-
dockerfile = base_dockerfile_text.replace(SOLANA_VERSION_PLACEHOLDER, release).lstrip("\n")
107-
dockerfile = dockerfile.replace(RUST_VERSION_PLACEHOLDER, RUST_DOCKER_IMAGESHA_MAP[rust_version])
109+
dockerfile = base_dockerfile_text.replace(
110+
SOLANA_VERSION_PLACEHOLDER, release
111+
).lstrip("\n")
112+
dockerfile = dockerfile.replace(
113+
RUST_VERSION_PLACEHOLDER, RUST_DOCKER_IMAGESHA_MAP[rust_version]
114+
)
115+
108116
path = f"docker/{release}.Dockerfile"
117+
with open(path, "r") as f:
118+
prev = f.read()
119+
120+
if prev != dockerfile:
121+
dirty_set.add(release.strip("v"))
122+
print(release)
123+
109124
with open(path, "w") as f:
110125
f.write(dockerfile)
111126
dockerfiles[release] = path
@@ -129,9 +144,11 @@ def get_toolchain(version_tag):
129144
for tag, dockerfile in dockerfiles.items():
130145
# Strip the `v` from the tag to keep the versions consistent in Docker
131146
stripped_tag = tag.strip("v")
132-
if stripped_tag in digest_set:
147+
if stripped_tag in digest_set and stripped_tag not in dirty_set:
133148
print(f"Already built image for {stripped_tag}, skipping")
134149
continue
150+
if stripped_tag in dirty_set:
151+
print(f"Dockerfile for {stripped_tag} needs to be modified")
135152
version_tag = f"solana:{stripped_tag}"
136153
print(version_tag)
137154
current_directory = os.getcwd()

src/image_config.rs

Lines changed: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use std::collections::BTreeMap;
55
lazy_static! {
66
pub static ref IMAGE_MAP: BTreeMap<(u32, u32, u32), &'static str> = {
77
let mut m = BTreeMap::new();
8-
m.insert((1, 14, 1), "sha256:987d26c8f94115d9a1ab0543aa3336340e55c7799e6ddc716c1a9c963f0bd031");
98
m.insert((1, 14, 2), "sha256:d4bcffdb9403b154ceeab3063cc5a846a0b4d59a41a8b708249fcc4239b4129d");
109
m.insert((1, 14, 3), "sha256:4adf5dfa0812d3b6835f65fb19687d705d057b7e7cb0cfe14abd240679e12de2");
1110
m.insert((1, 14, 4), "sha256:67cf2a1be16075ca0b53325212c03f48624ca68cdd86dcaaf5a06ff18e959fae");
@@ -35,35 +34,35 @@ lazy_static! {
3534
m.insert((1, 14, 28), "sha256:4b7a8fcc1d487fe80dfc152d1e49c6067025d5e44bd5d743869fe75b636e4907");
3635
m.insert((1, 14, 29), "sha256:2a38e78a1bcb369a6673b6442f1ee32f99e839445e426c4fdfdc48ee852e346e");
3736
m.insert((1, 16, 0), "sha256:eaf330939f614dab0c1daab2db65431753f114c82c62f9868f1993010db0e814");
38-
m.insert((1, 16, 1), "sha256:0e0b25a58363ceacfa63130c220affde874a9fe6872c9bdeceef2a3ab20a0c62");
39-
m.insert((1, 16, 2), "sha256:f18ea6e9f41e2cd23f1519ab0c327c671af697f14bcabfc7f86b14dee11e53f6");
40-
m.insert((1, 16, 3), "sha256:42bee5c9d5af3c9da1c9a1dee60edaa3f4015d1ee1cdb1b4f0706421d7efb554");
41-
m.insert((1, 16, 4), "sha256:7840a59861bce53dd4fc8b9bcd198dd210636ba645c532187b52d8e3f8356f86");
37+
m.insert((1, 16, 1), "sha256:1979f60e559498d29f2ea786229e59d082041b376fccd0f4c2b509acfcc5ca49");
38+
m.insert((1, 16, 2), "sha256:b2a53e3984aa39e16553f90b0e180e361bf3b76fea32ba11a07137aea41e0a42");
39+
m.insert((1, 16, 3), "sha256:87dc8f71a35c46c10cf170363adb4345742ccddf0bca0d89b66c573ed495d78f");
40+
m.insert((1, 16, 4), "sha256:36c5cb09802141adbb1ba2dc10c75b7915f601249edc89b208f1e9ec313ff008");
4241
m.insert((1, 16, 5), "sha256:bbe60168f1b8cab06020e48e1822d24423794b8acedada88c12c3e99e4d10bf1");
43-
m.insert((1, 16, 6), "sha256:b034ae5d7d9f3beb863e295172db28852e55d34f91712b5758d01681fb51c66b");
44-
m.insert((1, 16, 7), "sha256:c3c9043a2a6e5ac623d789c68ac2346e059009928d438f92d9e2de9b708f35e3");
42+
m.insert((1, 16, 6), "sha256:81100154468537f4476ba8c2b42a43c3e9516ef2abc4d10cc439203d21ef4ba2");
43+
m.insert((1, 16, 7), "sha256:d500b3b1b324381715665e6afaaab8e3620a4d22c8f88fed4199e89bf784b878");
4544
m.insert((1, 16, 8), "sha256:a377f19b7dd3dccc81b4dec69e8dae3b518bb6a058b27075f6078b264e4b4c5c");
46-
m.insert((1, 16, 9), "sha256:c40ff800cdfdb90700e7b34d6d30d5cfdf40570f7ff0b4694d2d5a26b8a55fa7");
45+
m.insert((1, 16, 9), "sha256:6a5e459a2f16c16068a3193a8d8d006ce071b8a84a1e188e7b06c994a04ed8fa");
4746
m.insert((1, 16, 10), "sha256:38f1c10abb3d274eef019bd5b726ad8aa6ff036959009959768ab2956eb749b0");
4847
m.insert((1, 16, 11), "sha256:a2788528b302c4c4144cfcaca35c978a1b420c936201b3b7b80977a289345914");
4948
m.insert((1, 16, 12), "sha256:7823267a7df4fb39cb7daf012416aab7dd3a5a7dec400a60bb02517a1d562c23");
50-
m.insert((1, 16, 13), "sha256:e36085bf68e25e538942ccb3cc1547189c63126fe2f6aeee711490b47dba7311");
51-
m.insert((1, 16, 14), "sha256:906c7d915dd87d099b03f78c7046ef1aa231cacb847e9d638cd0681e6549de2c");
49+
m.insert((1, 16, 13), "sha256:c99927b38601ad619c3f2f08bbb51a50dd65dd90937a558f9f5676b243bcc964");
50+
m.insert((1, 16, 14), "sha256:4bc6e90953a69e9566416317485d437488c595c6d39d3bf163991ea80c79cb9f");
5251
m.insert((1, 16, 15), "sha256:1b7e3ac6798829dee8dec42557af4824848fe9d3a2c43c31bca59aa6c63e510b");
53-
m.insert((1, 16, 16), "sha256:0ffcb49416f9e17c266e5b9b915f67e830e5c586921fb43aad98723346d0aba6");
54-
m.insert((1, 16, 17), "sha256:957ab8d383501320ab8fd10636834f6bd637549e27dc7d9b2b8b60c76d32b9f7");
55-
m.insert((1, 16, 18), "sha256:a097a773a388d5fca9acb2153d8fdf8e6cb0c20bc0c18c38a1dadeb585a700e9");
56-
m.insert((1, 16, 19), "sha256:2ad77df7353772b8946fde3abb1418a45bc8fbcac1fde55d5ffc3a87c4f08c97");
57-
m.insert((1, 16, 20), "sha256:8b73b104354c82c86950060e3fd03578065d5452d563fc81852177b2ab565a3c");
58-
m.insert((1, 16, 21), "sha256:f0e51b86976661ed92b9e62886798b976e34639a7693afad4aa9e5b773070a8f");
59-
m.insert((1, 16, 22), "sha256:3f4fdc0a74fd7d28363c21db09c1094a969c786756f764afbf9b8923ae2b19d4");
60-
m.insert((1, 16, 23), "sha256:6ef2655a1a345c51e862616adebf1108b108d5f827cb839c5edb463f4c43e777");
61-
m.insert((1, 16, 24), "sha256:11303db433cd2677bc6c646a4e8e2d0682e8d8cd70cc9ad7b51ccb19c87e9e66");
62-
m.insert((1, 16, 25), "sha256:32e3e55007f9628c4afc6c09083409ed5ee04f3e53c532796927e9e2e7037f5e");
63-
m.insert((1, 16, 26), "sha256:615d609998242d39975043393bf733b26b4759e340565705c1d0e843b2bd35af");
52+
m.insert((1, 16, 16), "sha256:0bf7a96764a57a2bc68ee0274ab098d6606d83e6315af1a1a8a21f346287a6a7");
53+
m.insert((1, 16, 17), "sha256:3ab3428a23620a2c6a250e6d592ada8012cb8b56b5789712171c4203d9cc3f61");
54+
m.insert((1, 16, 18), "sha256:d2a376b9134b698ac8b61ea4feaea016d5085f8fab61763a6541fe50e3771164");
55+
m.insert((1, 16, 19), "sha256:7fd9ecf02d378268fcea1ef7fe3b1906fc96e24a833529d3f54b1a16b55c592c");
56+
m.insert((1, 16, 20), "sha256:8dbb638f06642b0069d475083995ea45ab52f183d0e05987489567efca1e13e0");
57+
m.insert((1, 16, 21), "sha256:21d4f620cd144775b4d9af80b09584db49b106f67841d20415485eab6827069c");
58+
m.insert((1, 16, 22), "sha256:6837018a2e35edc9c9b955536973934b45517a87888c18875919f072c9085d50");
59+
m.insert((1, 16, 23), "sha256:9bdda2f4ca4628183a9c39f5a11ae66eee0e49b457439f5c487962c5917146ad");
60+
m.insert((1, 16, 24), "sha256:8d28e0ac1a0f929c2f8bf323df2bcf324b5dc4d2e0aac089096759f457963c46");
61+
m.insert((1, 16, 25), "sha256:c48298cbb97dbd6a493ee9592d4c3700e214b34788ea67e0bca58ff388179340");
62+
m.insert((1, 16, 26), "sha256:9a28b2961396c1fba8855744eaea125640b3dbda7a86fc0a7ae375824338144d");
6463
m.insert((1, 16, 27), "sha256:d3f39f5e1d2fbf798149416bbcb050ae8c03ea8ce18c559fc64beb7547f5c96b");
6564
m.insert((1, 17, 0), "sha256:8e5593ea91d20e4ec24eda8ea2065333f6e7c4ae5496947b9910b93889c78a03");
66-
m.insert((1, 17, 1), "sha256:f11a7beb650e08ef0f14dd4c588ff9358a78deaf5f7ae13ba62c7a41dc2610ca");
65+
m.insert((1, 17, 1), "sha256:3a522b734f7a260769d9daf2049c70172808285aedd3700d7f73ba5164e0b939");
6766
m.insert((1, 17, 2), "sha256:4d862e20ab6b1fafdc59cbb9b7cd3200b4c0e4c66de767fac3a49f871baa4e3d");
6867
m.insert((1, 17, 3), "sha256:c58cf31748b19f03aa21f2d677db0296d98ddc52889953096ab85586b537a770");
6968
m.insert((1, 17, 4), "sha256:d7cbe13c49ae3a23205d0a6c0d6410e2b4deb69c7b2d6ccc8bf9ca3fc322d649");
@@ -72,7 +71,7 @@ lazy_static! {
7271
m.insert((1, 17, 7), "sha256:2e4ae35f2f66c9eacee5f2491952ef15ada0f3ddc9e7ad0bfef8ae3973f3cf46");
7372
m.insert((1, 17, 8), "sha256:f50c3b8eaf406a9e3b64cdac41a8f72b76c632a4c62c53abe409346b200dcfea");
7473
m.insert((1, 17, 9), "sha256:1cb9b38cc53127a06d9341ecd642f3dd3751f662488fa79b487c404caabb5910");
75-
m.insert((1, 17, 10), "sha256:85e85695a432d1b50303c9a8e3afb735831e8a73ec307dc1cceeb469fc7e603e");
74+
m.insert((1, 17, 10), "sha256:66e24ed2b7a2a1e91f951f5124fe906f8e2cbc1a8bc31f2a535a95530667f918");
7675
m.insert((1, 17, 11), "sha256:ea64b41ae4773f1734e36004425ceeb0d3c59aebba1f12ac20a031aa5a8ebd99");
7776
m.insert((1, 17, 12), "sha256:f0f4dfd83424786a64812a53d218264f7900e8cf3286124a071ffa141dfd6051");
7877
m.insert((1, 17, 13), "sha256:63ac4121ca405779d201227f9622e55b556f9d81fcf38c614d258b7802f6faf5");
@@ -81,13 +80,31 @@ lazy_static! {
8180
m.insert((1, 17, 16), "sha256:7d6d95378cda2cd6866ae70563bf184e99d3d937632c0033797bcc483ae81597");
8281
m.insert((1, 17, 17), "sha256:495577d3de64e0829be1b67d631dea843635fa41ef23672048ec7eac628f753c");
8382
m.insert((1, 17, 18), "sha256:3c951af1c893a7d509872faed62410de33ff9fc41c2052a8c79f5e44840186d5");
84-
m.insert((1, 17, 19), "sha256:1dbdbe97e5c8a738cc4a9cd5d099126eb9b41a7034465d148e5bcebfc2dfc2ed");
83+
m.insert((1, 17, 19), "sha256:f2fbc2131c5edc8f9debc00aeb2e121bbe5aa8523c7c311aa205910dda61d0f7");
8584
m.insert((1, 17, 20), "sha256:7914649a71b10819dbb1f9d5ae440217b83af3f55e8454ff3a1f92e5174148d5");
8685
m.insert((1, 17, 21), "sha256:6f8c4364e7bd95b08b341caf13046841d6fe2b7e41d8bb6ca89edea479b8d59d");
8786
m.insert((1, 17, 22), "sha256:73a7160507ba99b97948aae6c45bb19639e9b0be0885149927b1cd24e3541b53");
87+
m.insert((1, 17, 23), "sha256:51784aead1d36253443a7b23cbf7f8b949a1f88926edfa9bb3931fce2da45a66");
88+
m.insert((1, 17, 24), "sha256:113205a16988d9d5201d5be0a325bbaa7bf951198b64bde0889eb666ca8d25be");
89+
m.insert((1, 17, 25), "sha256:6b6a24b4f7bf9a4ec1a01a836fd225fea7acecf7a5ddb69789175ba394e11bcd");
90+
m.insert((1, 17, 26), "sha256:f4dd1b25607cc26c3831b4585171dffce69cd29350548cc3680e598200901c50");
91+
m.insert((1, 17, 27), "sha256:09b65863f3edf0ad538c30f7f25aff87da27cc2d2bf1c1040d9a1ae25a7ba64a");
92+
m.insert((1, 17, 28), "sha256:e53f8847a65d7b63c4b7b8de4d7be5e62e6dc8c77bcc95d467e0bfeb6a79ba1c");
93+
m.insert((1, 17, 29), "sha256:2dd7508c8ec56323ec2aae4a0d6dbd41b05f8341e6d916c5d06450983648c06e");
94+
m.insert((1, 17, 30), "sha256:2ff30514c86609913c5911d00e1a8a2a4a4057aec4b59e0b61bf9e3969a9f540");
95+
m.insert((1, 17, 31), "sha256:2195a51d6ae8be894ea06e2b7da4f9d98354919766ddd63b62440420b72499cb");
8896
m.insert((1, 18, 0), "sha256:9442baedec5e2589b1263e5d12363ef9b2e8e8ad289d2ea5cd0ee7584e479fae");
8997
m.insert((1, 18, 1), "sha256:b5865168f3177d3acbf4de12d296aa06fcd4911090c4fa3bcb41cf36e347a695");
9098
m.insert((1, 18, 2), "sha256:9c150a6cde88d65e75ceb08512e8c6a861b2dc84b34a579aac34ef3f9021c483");
99+
m.insert((1, 18, 3), "sha256:b34788e5c8df22f2cd0643a0d15a96a2174821d5b02b8a33f4644dc160cd5cd2");
100+
m.insert((1, 18, 4), "sha256:2680be153b67f762ace21c0c1c55ff250e829748b357ef72d980b772863ad566");
101+
m.insert((1, 18, 5), "sha256:3baad00634f112e64889a840fa7da87c095b40927eb3d8bfb1972a50c6cdb141");
102+
m.insert((1, 18, 6), "sha256:5474b807c760b33ea93ed3fe9fdabca737d69a4e43ed31f1398777411e345dd3");
103+
m.insert((1, 18, 7), "sha256:b92d6e6b8e23bd6a52063e5d6b3b920751b6dc79be55acb7f474ac064de4dbc8");
104+
m.insert((1, 18, 8), "sha256:4982b38a4efd9de89bc72e62777982298e6b9bce3e0ffa3613dc105b52bd252d");
105+
m.insert((1, 18, 9), "sha256:008c69f4da34cca15cfa1bd7486800af192138dccc2603e7fb93fd3bd209e86e");
106+
m.insert((1, 18, 10), "sha256:4f045c3ebc78140d93ea23696a1479c3eeefcf7fad8fa10975eaaa975dffd83d");
107+
m.insert((1, 18, 11), "sha256:70eb2dc290cdf1336f9b4aeba666a96eb2d271d812216f4885ecc75bd44e9bde");
91108
m
92109
};
93110
}

0 commit comments

Comments
 (0)