@@ -677,6 +677,9 @@ _llvm_distributions_base_url = {
677
677
"20.1.1" : "https://github.com/llvm/llvm-project/releases/download/llvmorg-" ,
678
678
}
679
679
680
+ # Complete list of file suffixes used accross all distributions.
681
+ _DIST_SUFFIXES = [".tar.xz" , ".tar.gz" , ".tar.zst" ]
682
+
680
683
def _get_auth (ctx , urls ):
681
684
"""
682
685
Given the list of URLs obtain the correct auth dict.
@@ -720,18 +723,16 @@ def _get_llvm_version(rctx):
720
723
return llvm_version
721
724
722
725
def _find_llvm_basename_list (llvm_version , arch , os ):
723
- """Lookup (llvm_version, arch, os) in the list of basenames in `_llvm_distributions.` """
726
+ """Lookup (llvm_version, arch, os) in the list of basenames in `_llvm_distributions`. """
724
727
prefixes = []
725
728
726
729
if os == "raspbian" :
727
- # TODO: Check the reported `arch` and return [] if unsupported
728
730
prefixes .append ("clang+llvm-{llvm_version}-{arch}-{os}" .format (
729
731
llvm_version = llvm_version ,
730
732
arch = "armv7a" ,
731
733
os = "linux-gnueabihf" ,
732
734
))
733
735
elif arch == "x86_64" and os == "pc-solaris2.11" :
734
- # TODO: Check the reported `arch` and return [] if unsupported
735
736
prefixes .append ("clang+llvm-{llvm_version}-{arch}-{os}" .format (
736
737
llvm_version = llvm_version ,
737
738
arch = "amd64" ,
@@ -781,9 +782,8 @@ def _find_llvm_basename_list(llvm_version, arch, os):
781
782
os = llvm_old_os ,
782
783
))
783
784
784
- suffixes = [".tar.gz" , ".tar.xz" ]
785
785
for prefix in prefixes :
786
- for suffix in suffixes :
786
+ for suffix in _DIST_SUFFIXES :
787
787
basename = prefix + suffix
788
788
if basename in _llvm_distributions :
789
789
return [basename ]
@@ -834,7 +834,7 @@ def _latest_llvm_release_name(arch, os, version_requirements):
834
834
def latest_llvm_release_name_or_fail (rctx , version_requirements ):
835
835
"""Find the latest distribution given `arch` and `os` from `rctx`.
836
836
837
- The function respects version requirements similar to Python package requirements.
837
+ The function respects `version_requirements` similar to Python package requirements.
838
838
The requirements string can be prefixed with "latest:".
839
839
The requirements are a sequence of operators and versions separated by commas:
840
840
("<", "<=", ">", ">=", "!=", "==") <digit>+ ("." <digit>+)+
@@ -883,13 +883,12 @@ def _distribution_urls(rctx):
883
883
884
884
sha256 = _llvm_distributions [basename ]
885
885
886
- if basename .endswith (".tar.xz" ):
887
- strip_prefix = basename [:(len (basename ) - len (".tar.xz" ))]
888
- elif basename .endswith (".tar.gz" ):
889
- strip_prefix = basename [:(len (basename ) - len (".tar.gz" ))]
890
- elif basename .endswith (".tar.zst" ):
891
- strip_prefix = basename [:(len (basename ) - len (".tar.zst" ))]
892
- else :
886
+ strip_prefix = None
887
+ for suffix in _DIST_SUFFIXES :
888
+ if basename .endswith (suffix ):
889
+ strip_prefix = basename [:(len (basename ) - len (suffix ))]
890
+ break
891
+ if not strip_prefix :
893
892
fail ("Unknown URL file extension {url}" , url = basename )
894
893
895
894
strip_prefix = strip_prefix .rstrip ("-rhel86" )
@@ -959,8 +958,6 @@ def _distributions_test_writer_impl(ctx):
959
958
not_found = {k : v for k , v in _llvm_distributions .items ()}
960
959
result = {}
961
960
for llvm_version in _llvm_distributions_base_url .keys ():
962
- #if not _version_ge(llvm_version, 18, 1, 1):
963
- # continue
964
961
for arch in arch_list :
965
962
for os in os_list :
966
963
basenames = _find_llvm_basename_list (llvm_version , arch , os )
0 commit comments