Fix duplicate packages providing library in tools/getrealdeps.rb (#15600)

This commit is contained in:
Max Downey Twiss
2026-04-13 11:54:21 +10:00
committed by GitHub
parent 1f6bdcba10
commit ca65bdcdc4
8 changed files with 8 additions and 12 deletions

View File

@@ -23,7 +23,6 @@ class Cmus < Package
depends_on 'flac' # R
depends_on 'gcc_lib' # R
depends_on 'glibc' # R
depends_on 'jack1' # R
depends_on 'jack' # R
depends_on 'libmodplug' # R
depends_on 'libsamplerate' # R

View File

@@ -23,7 +23,6 @@ class Evolution_data_server < CMake
depends_on 'gcr_3' # R
depends_on 'gdk_pixbuf' => :library
depends_on 'glib' => :library
depends_on 'glib_stub' => :library
depends_on 'glibc' => :library
depends_on 'gobject_introspection' => :build
depends_on 'gperf' => :build
@@ -41,7 +40,6 @@ class Evolution_data_server < CMake
depends_on 'libsoup' => :library
depends_on 'libsoup2' # R
depends_on 'libxml2' => :library
depends_on 'libxml2_autotools' => :library
depends_on 'nss' => :library
depends_on 'p11kit' # R
depends_on 'pango' => :library

View File

@@ -18,7 +18,6 @@ class Gnome_online_accounts < Meson
depends_on 'gcr_4' => :library
depends_on 'glib' => :library
depends_on 'glib_stub' => :library
depends_on 'glibc' => :library
depends_on 'gobject_introspection' => :build
depends_on 'gtk4' => :library
@@ -33,7 +32,6 @@ class Gnome_online_accounts < Meson
depends_on 'libsecret' => :library
depends_on 'libsoup' => :library
depends_on 'libxml2' => :library
depends_on 'libxml2_autotools' => :library
depends_on 'libxslt'
depends_on 'rest' => :library
depends_on 'vala' => :build

View File

@@ -22,7 +22,6 @@ class Gnome_sudoku < Meson
depends_on 'desktop_file_utils' => :build
depends_on 'gcc_lib' => :executable
depends_on 'glib' => :executable
depends_on 'glib_stub' => :executable
depends_on 'glibc' => :executable
depends_on 'gsound' => :build
depends_on 'gtk4' => :executable

View File

@@ -17,7 +17,6 @@ class Libgedit_gfls < Meson
})
depends_on 'glib' => :library
depends_on 'glib_stub' => :library
depends_on 'glibc' => :library
depends_on 'gobject_introspection'
depends_on 'gtk3'

View File

@@ -25,13 +25,11 @@ class Pipewire < Meson
depends_on 'eudev' => :library
depends_on 'gcc_lib' => :library
depends_on 'glib' => :library
depends_on 'glib_stub' => :library
depends_on 'glibc' => :library
depends_on 'gsettings_desktop_schemas' => :build
depends_on 'gstreamer' => :library
depends_on 'gstreamer' => :logical
depends_on 'jack' => :library
depends_on 'jack1' => :library
depends_on 'libdrm' => :library
depends_on 'libmysofa' => :library
depends_on 'libsndfile' => :library

View File

@@ -18,7 +18,6 @@ class Py3_lxml < Pip
depends_on 'glibc' => :library
depends_on 'libxml2' => :library
depends_on 'libxml2_autotools' => :library
depends_on 'libxslt' => :library
depends_on 'py3_cython' => :build
depends_on 'python3' => :logical

View File

@@ -212,10 +212,16 @@ def determine_dependencies(pkg_name, pkgfiles_to_check)
pkgdeps = pkgdeps.map { |i| i.gsub(/llvm(\d)+_lib/, 'llvm_lib') }.uniq
pkgdeps = pkgdeps.map { |i| i.gsub(/llvm(\d)+_dev/, 'llvm_dev') }.uniq
# If two packages both provide a library, use the regular one unless this is the specific package that needs the alternative.
# TODO: Are there more packages like this?
pkgdeps = pkgdeps.map { |i| i.gsub('glib_stub', 'glib') }.uniq unless %w[gobject_introspection glib].include?(pkg_name)
# TODO: Since these packages aren't needed by any specific package, do we need to package them at all?
pkgdeps = pkgdeps.map { |i| i.gsub('jack1', 'jack') }.uniq
pkgdeps = pkgdeps.map { |i| i.gsub('libxml2_autotools', 'libxml2') }.uniq
# Split any multi-dependency strings into individual array members.
pkgdeps = pkgdeps.flat_map(&:split).uniq
# TODO: Handle the situation where two conflicting packages provide the same library (i.e. jack and jack1)
if pkgdeps.blank?
return []
else
@@ -273,7 +279,7 @@ def main(pkg)
# was just built.
pkgfiles.map! { |item| item.prepend(CREW_DEST_DIR) } if @opt_use_crew_dest_dir
# TODO: Does anything create this directory? If so, that should be documented more clearly, and if not, the line can be removed.
# Remove the temporary directory created in determine_dependencies.
FileUtils.rm_rf("/tmp/deps/#{pkg.name}")
# Remove files we don't care about, such as man files and non-binaries.
pkgfiles = pkgfiles.reject { |i| !File.file?(i.chomp) || File.read(i.chomp, 4) != "\x7FELF" || i.include?('.zst') }