@@ -94,15 +94,24 @@ def get_depends(self, pkg, ignore_pkgs=None):
9494
9595 def get_released_repo (self , pkg_name ):
9696 if self .snapshot and pkg_name in self .snapshot :
97- return (
98- self .snapshot [pkg_name ].get ("url" , None ),
99- self .snapshot [pkg_name ].get ("tag" , None ),
100- )
97+
98+ # In the case of snapshot, for rosdistro_additional_recipes
99+ # we also support a 'rev' field, so depending on what is available
100+ # we return either the tag or the rev, and the third argument is either 'rev' or 'tag'
101+ url = self .snapshot [pkg_name ].get ("url" , None )
102+ if "tag" in self .snapshot [pkg_name ].keys ():
103+ tag_or_rev = self .snapshot [pkg_name ].get ("tag" , None )
104+ ref_type = "tag"
105+ else :
106+ tag_or_rev = self .snapshot [pkg_name ].get ("rev" , None )
107+ ref_type = "rev"
108+
109+ return url , tag_or_rev , ref_type
101110
102111 pkg = self ._distro .release_packages [pkg_name ]
103112 repo = self ._distro .repositories [pkg .repository_name ].release_repository
104113 release_tag = get_release_tag (repo , pkg_name )
105- return repo .url , release_tag
114+ return repo .url , release_tag , 'tag'
106115
107116 def check_package (self , pkg_name ):
108117 # If the package is in the additional_packages_snapshot, it is always considered valid
@@ -151,12 +160,13 @@ def get_package_xml_for_additional_package(self, pkg_info):
151160 raise RuntimeError (f"Cannot handle non-GitHub URL: { raw_url_base } " )
152161 # Extract owner/repo
153162 owner_repo = raw_url_base .split ("github.com/" )[- 1 ]
154- tag = pkg_info .get ("tag" )
163+ # Use rev if available, otherwise fallback to tag
164+ ref = pkg_info .get ("rev" ) or pkg_info .get ("tag" )
155165 xml_name = pkg_info .get ("package_xml_name" , "package.xml" )
156166 additional_folder = pkg_info .get ("additional_folder" , "" )
157167 if additional_folder != "" :
158168 additional_folder = additional_folder + "/"
159- raw_url = f"https://raw.githubusercontent.com/{ owner_repo } /{ tag } /{ additional_folder } { xml_name } "
169+ raw_url = f"https://raw.githubusercontent.com/{ owner_repo } /{ ref } /{ additional_folder } { xml_name } "
160170 try :
161171 with urllib .request .urlopen (raw_url ) as resp :
162172 return resp .read ().decode ('utf-8' )
0 commit comments