Files
chromebrew/packages/glibc_fallthrough.rb
Satadru Pramanik, DO, MPH, MEng 172b3a1e93 Adjust updater and packages to handle more circular dependencies, and make use of => :logical for some dependencies. — glib: 2.86.3 → 2.86.3,glibc: 2.41-5 → 2.41-5,glibc_build223: 2.23-6 → 2.23-6,glibc_build227: 2.27-1 → 2.27-1,glibc_build232: 2.32-4 → 2.32-4,glibc_build233: 2.33-3 → 2.33-3,glibc_build235: 2.35-1 → 2.35-1,glibc_build237: 2.37-2 → 2.37-2,glibc_fallthrough: 2.39 → 2.39,shared_mime_info: 2.4-icu77.1-1 → 2.4-icu77.1-1 (#14322)
* Adjust updater and packages to handle more circular dependencies, and make use of => :logical for some dependencies.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Adjust more glibc filecmd deps to avoid circular dependency.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Move message.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

* Suggested changes.

Signed-off-by: Satadru Pramanik <satadru@gmail.com>

---------

Signed-off-by: Satadru Pramanik <satadru@gmail.com>
2026-01-26 22:11:29 +00:00

62 lines
2.9 KiB
Ruby

require 'package'
class Glibc_fallthrough < Package
description 'The GNU C Library project provides the core libraries for GNU/Linux systems.'
homepage 'https://www.gnu.org/software/libc/'
version LIBC_VERSION
license 'LGPL-2.1+, BSD, HPND, ISC, inner-net, rc, and PCRE'
compatibility 'aarch64 armv7l x86_64'
min_glibc version.split('-').first
max_glibc version.split('-').first
source_url 'SKIP'
binary_compression 'tar.zst'
binary_sha256({})
depends_on 'gawk' => :build
depends_on 'filecmd' => :logical # Fixes creating symlinks on a fresh install.
depends_on 'libidn2' => :build
depends_on 'texinfo' => :build
depends_on 'patchelf' # L
conflicts_ok
no_env_options
no_upstream_update
def self.postinstall
if File.exist?("#{CREW_LIB_PREFIX}/libc.so.6")
FileUtils.chmod 'u=wrx', "#{CREW_LIB_PREFIX}/libc.so.6"
@crew_libcvertokens = `#{CREW_LIB_PREFIX}/libc.so.6`.lines.first.chomp.split(/\s/)
@libc_version = @crew_libcvertokens[@crew_libcvertokens.find_index('version') + 1].sub!(/[[:punct:]]?$/, '')
puts "Package glibc version is #{@libc_version}.".lightblue
else
@libc_version = LIBC_VERSION
end
@libraries = %w[ld libBrokenLocale libSegFault libanl libc libcrypt
libdl libm libmemusage libmvec libnsl libnss_compat libnss_db
libnss_dns libnss_files libnss_hesiod libpcprofile libpthread
libthread_db libresolv librlv librt libthread_db-1.0 libutil]
@libraries -= ['libpthread'] if Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.35')
@libraries -= ['libc'] if Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.35') && Kernel.system("patchelf --print-needed #{File.join(CREW_LIB_PREFIX, 'libc.so.6')} | grep -q libC.so.6")
@libraries -= ['libm'] if Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.35') && Kernel.system("patchelf --print-needed #{File.join(CREW_LIB_PREFIX, 'libm.so.6')} | grep -q libC.so.6")
Dir.chdir CREW_LIB_PREFIX do
puts "System glibc version is #{@libc_version}.".lightblue
puts 'Creating symlinks to system glibc version to prevent breakage.'.lightblue
case ARCH
when 'aarch64', 'armv7l'
FileUtils.ln_sf File.realpath('/lib/ld-linux-armhf.so.3'), 'ld-linux-armhf.so.3'
when 'x86_64'
FileUtils.ln_sf File.realpath('/lib64/ld-linux-x86-64.so.2'), 'ld-linux-x86-64.so.2'
end
@libraries.each do |lib|
# Reject entries which aren't libraries ending in .so, and which aren't files.
# Reject text files such as libc.so because they points to files like
# libc_nonshared.a, which are not provided by ChromeOS
Dir["{,/usr}/#{ARCH_LIB}/#{lib}.so*"].compact.select { |i| ['shared object', 'symbolic link'].any? { |j| `file #{i}`.chomp.include? j } }.each do |k|
FileUtils.ln_sf k, File.join(CREW_LIB_PREFIX, File.basename(k))
end
end
end
end
end