@@ -128,6 +128,34 @@ def resolve_dep(ps, ms, os, ver, data)
128128 return [ ]
129129end
130130
131+ def get_package_link ( platform_key , pkg_name , version_key )
132+ # get a link for info on pkg_name on platform platform_key
133+ case platform_key
134+ when 'ubuntu'
135+ if [ 'noble' , 'jammy' , 'plucky' , 'questing' , 'resolute' ] . include? ( version_key ) then
136+ return "https://packages.ubuntu.com/#{ version_key } /#{ pkg_name } "
137+ else
138+ return nil
139+ end
140+ when 'debian'
141+ if [ 'bullseye' , 'bookworm' , 'trixie' , 'forky' , 'sid' ] . include? ( version_key ) then
142+ return "https://packages.debian.org/#{ version_key } /#{ pkg_name } "
143+ else
144+ return nil
145+ end
146+ when 'fedora'
147+ if [ '41' , '42' , '43' ] . include? ( version_key ) then
148+ return "https://packages.fedoraproject.org/pkgs/#{ pkg_name } /#{ pkg_name } /"
149+ else
150+ return nil
151+ end
152+ when 'osx'
153+ return "https://formulae.brew.sh/formula/#{ pkg_name } "
154+ end
155+
156+ return nil
157+ end
158+
131159def expand_package_deps ( package_name , package_names , deps , distro )
132160 # Expand package dependencies at all levels for package_name.
133161 if deps . include? ( package_name )
@@ -788,12 +816,21 @@ def generate(site)
788816 platforms . each do |platform_key , platform_details |
789817 if platform_details [ 'versions' ] . size > 0
790818 platform_data [ platform_key ] = { }
791- platform_details [ 'versions' ] . each do |version_key , version_name |
792- platform_data [ platform_key ] [ version_key ] = resolve_dep ( platforms , manager_set , platform_key , version_key , dep_data )
819+ platform_details [ 'versions' ] . each_key do |version_key |
820+ packages = resolve_dep ( platforms , manager_set , platform_key , version_key , dep_data )
821+ if packages . is_a? ( Array )
822+ platform_data [ platform_key ] [ version_key ] = packages . map { |pkg_name |
823+ [ pkg_name , get_package_link ( platform_key , pkg_name , version_key ) ]
824+ }
825+ else
826+ # probably an old source entry, see libaria on debian Wheezy
827+ platform_data [ platform_key ] [ version_key ] = [ [ packages , nil ] ]
828+ end
793829 end
794830 # Get dep description from debian
795- if platform_key == 'debian' and platform_data [ platform_key ] . has_key? ( 'bullseye' )
796- platform_data [ platform_key ] [ 'bullseye' ] . each do |debian_key |
831+ if platform_key == 'debian'
832+ platform_data [ platform_key ] [ 'bullseye' ] . each do |key_and_link |
833+ debian_key = key_and_link [ 0 ]
797834 # zero-length debian_descriptions indicates a failed download
798835 if debian_descriptions . length > 0
799836 if debian_descriptions . has_key? ( debian_key )
@@ -809,7 +846,11 @@ def generate(site)
809846 end
810847 end
811848 else
812- platform_data [ platform_key ] = resolve_dep ( platforms , manager_set , platform_key , 'any_version' , dep_data )
849+ packages = resolve_dep ( platforms , manager_set , platform_key , 'any_version' , dep_data )
850+ # all platforms that don't have versions currently don't have links available
851+ platform_data [ platform_key ] = packages . map { |pkg_name |
852+ [ pkg_name , nil ]
853+ }
813854 end
814855 end
815856 # if debian did not get a description, maybe we got it from pip
@@ -1183,15 +1224,15 @@ def generate(site)
11831224 if version_name . empty?
11841225 version_name = version_key . capitalize
11851226 end
1186- names_for_version . collect do |name |
1187- aliases . add ( name )
1188- "#{ name } (#{ platform_name } #{ version_name } )"
1227+ names_for_version . collect do |name_and_link |
1228+ aliases . add ( name_and_link [ 0 ] )
1229+ "#{ name_and_link [ 0 ] } (#{ platform_name } #{ version_name } )"
11891230 end . join ( ' : ' )
11901231 end . compact . join ( ' : ' )
11911232 else
1192- data . collect do |name |
1193- aliases . add ( name )
1194- "#{ name } (#{ platform_name } )"
1233+ data . collect do |name_and_link |
1234+ aliases . add ( name_and_link [ 0 ] )
1235+ "#{ name_and_link [ 0 ] } (#{ platform_name } )"
11951236 end . join ( ' : ' )
11961237 end
11971238 end . compact . join ( ' : ' ) ,
0 commit comments