glibc-standalone: Rename to glibc, add a LD_PRELOAD library with useful features (#11911)

* crew: Add a LD_PRELOAD library for hijacking linker/library path

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Add `glibc_{build,dev.lib}` to deprecated package list

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Bump version

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Minor changes

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Move static libraries to CREW_LIB_PREFIX

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Remove glibc_build from const.rb

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Make rubocop happy

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Fix arm build and add binaries.

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

* cleanup

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

* Adjust x86_64 unit tests to use the Nocturne M90 container image and armv7l unit tests to use the fievel M91 container image since we are using the same glibc for everything now.

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

* Adjust build containers to use the oldest glibc based containers.

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

* Add i686 builds.

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

* Add x86_64 build.

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

* Set LD_PRELOAD before running any command

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Use File.join

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Use File.join

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* adjust unit tests.

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

* Fix arm CREW_GLIBC_INTERPRETER

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

* Update Rhythmbox

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

* Update Rhythmbox

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

* lint

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

* Do not install crew_sudo in container.

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

* Bump version

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

---------

Signed-off-by: SupeChicken666 <me@supechicken666.dev>
Signed-off-by: Satadru Pramanik <satadru@gmail.com>
Co-authored-by: Satadru Pramanik <satadru@gmail.com>
This commit is contained in:
SupeChicken666
2025-05-20 18:21:15 +08:00
committed by GitHub
parent 284a5d0c90
commit 3ee0c82139
67 changed files with 4674 additions and 2767 deletions

View File

@@ -199,25 +199,27 @@ jobs:
case $TARGET_ARCH in
x86_64)
# Export the x86_64 container depending on whether this branch updates packages with appropriate minimum glibc.
if [[ $GLIBC_232_COMPATIBLE_PACKAGES ]]; then
echo "CONTAINER=nocturne-x86_64.m97" >> "$GITHUB_ENV"
elif [[ $GLIBC_237_COMPATIBLE_PACKAGES ]]; then
echo "CONTAINER=hatch-x86_64.m135" >> "$GITHUB_ENV"
else
echo "CONTAINER=nocturne-x86_64.m90" >> "$GITHUB_ENV"
fi
# if [[ $GLIBC_232_COMPATIBLE_PACKAGES ]]; then
# echo "CONTAINER=nocturne-x86_64.m97" >> "$GITHUB_ENV"
# elif [[ $GLIBC_237_COMPATIBLE_PACKAGES ]]; then
# echo "CONTAINER=hatch-x86_64.m135" >> "$GITHUB_ENV"
# else
# echo "CONTAINER=nocturne-x86_64.m90" >> "$GITHUB_ENV"
# fi
echo "CONTAINER=nocturne-x86_64.m90" >> "$GITHUB_ENV"
echo "PLATFORM=linux/amd64" >> "$GITHUB_ENV"
echo "LIB_SUFFIX=64" >> "$GITHUB_ENV"
;;
armv7l)
# Export the armv7l container depending on whether this branch updates packages with appropriate minimum glibc.
if [[ $GLIBC_232_COMPATIBLE_PACKAGES ]]; then
echo "CONTAINER=fievel-armv7l.m97" >> "$GITHUB_ENV"
elif [[ $GLIBC_237_COMPATIBLE_PACKAGES ]]; then
echo "CONTAINER=strongbad-armv7l.m135" >> "$GITHUB_ENV"
else
echo "CONTAINER=fievel-armv7l.m91" >> "$GITHUB_ENV"
fi
# if [[ $GLIBC_232_COMPATIBLE_PACKAGES ]]; then
# echo "CONTAINER=fievel-armv7l.m97" >> "$GITHUB_ENV"
# elif [[ $GLIBC_237_COMPATIBLE_PACKAGES ]]; then
# echo "CONTAINER=strongbad-armv7l.m135" >> "$GITHUB_ENV"
# else
# echo "CONTAINER=fievel-armv7l.m91" >> "$GITHUB_ENV"
# fi
echo "CONTAINER=fievel-armv7l.m91" >> "$GITHUB_ENV"
echo "PLATFORM=linux/arm/v7" >> "$GITHUB_ENV"
echo "LIB_SUFFIX=" >> "$GITHUB_ENV"
;;

View File

@@ -130,25 +130,27 @@ jobs:
case $TARGET_ARCH in
x86_64)
# Export the x86_64 container depending on whether this PR updates packages with appropriate minimum glibc.
if [[ $GLIBC_232_COMPATIBLE_PACKAGES ]]; then
echo "CONTAINER=nocturne-x86_64.m97" >> "$GITHUB_ENV"
elif [[ $GLIBC_237_COMPATIBLE_PACKAGES ]]; then
echo "CONTAINER=hatch-x86_64.m135" >> "$GITHUB_ENV"
else
echo "CONTAINER=nocturne-x86_64.m90" >> "$GITHUB_ENV"
fi
# if [[ $GLIBC_232_COMPATIBLE_PACKAGES ]]; then
# echo "CONTAINER=nocturne-x86_64.m97" >> "$GITHUB_ENV"
# elif [[ $GLIBC_237_COMPATIBLE_PACKAGES ]]; then
# echo "CONTAINER=hatch-x86_64.m135" >> "$GITHUB_ENV"
# else
# echo "CONTAINER=nocturne-x86_64.m90" >> "$GITHUB_ENV"
# fi
echo "CONTAINER=hatch-x86_64.m135" >> "$GITHUB_ENV"
echo "PLATFORM=linux/amd64" >> "$GITHUB_ENV"
echo "LIB_SUFFIX=64" >> "$GITHUB_ENV"
;;
armv7l)
# Export the armv7l container depending on whether this PR updates packages with appropriate minimum glibc.
if [[ $GLIBC_232_COMPATIBLE_PACKAGES ]]; then
echo "CONTAINER=fievel-armv7l.m97" >> "$GITHUB_ENV"
elif [[ $GLIBC_237_COMPATIBLE_PACKAGES ]]; then
echo "CONTAINER=strongbad-armv7l.m135" >> "$GITHUB_ENV"
else
echo "CONTAINER=fievel-armv7l.m91" >> "$GITHUB_ENV"
fi
# if [[ $GLIBC_232_COMPATIBLE_PACKAGES ]]; then
# echo "CONTAINER=fievel-armv7l.m97" >> "$GITHUB_ENV"
# elif [[ $GLIBC_237_COMPATIBLE_PACKAGES ]]; then
# echo "CONTAINER=strongbad-armv7l.m135" >> "$GITHUB_ENV"
# else
# echo "CONTAINER=fievel-armv7l.m91" >> "$GITHUB_ENV"
# fi
echo "CONTAINER=strongbad-armv7l.m135" >> "$GITHUB_ENV"
echo "PLATFORM=linux/arm/v7" >> "$GITHUB_ENV"
echo "LIB_SUFFIX=" >> "$GITHUB_ENV"
;;

View File

@@ -191,7 +191,7 @@ echo_out 'Set up the local package repo...'
# Download the chromebrew repository.
curl_wrapper -L --progress-bar https://github.com/"${OWNER}"/"${REPO}"/tarball/"${BRANCH}" | tar -xz --strip-components=1 -C "${CREW_LIB_PATH}"
BOOTSTRAP_PACKAGES='zstd_static glibc_standalone libxcrypt upx patchelf lz4 zlib xzutils zstd zlib_ng crew_mvdir ruby git ca_certificates libyaml openssl gmp'
BOOTSTRAP_PACKAGES='zstd_static glibc libxcrypt upx patchelf lz4 zlib xzutils zstd zlib_ng crew_mvdir ruby git ca_certificates libyaml openssl gmp'
# Older i686 systems.
if [[ "${ARCH}" == "i686" ]]; then
@@ -314,14 +314,11 @@ function extract_install () {
echo_intra "Installing ${1}..."
tar cpf - ./*/* | (cd /; tar xp --keep-directory-symlink -m -f -)
if [[ "${1}" == 'glibc_standalone' ]]; then
# set LD_AUDIT to ignore libC.so.6 requests
# export LD_AUDIT="${CREW_PREFIX}/opt/glibc-libs/crew-audit.so"
if [[ "${1}" == 'glibc' ]]; then
# update ld.so cache
ldconfig
else
# decompress and switch to glibc_standalone for existing binaries
# decompress and switch to our glibc for existing binaries
if command -v upx &> /dev/null; then
echo_intra "Running upx on ${1}..."
grep "/usr/local/\(bin\|lib\|lib${LIB_SUFFIX}\)" < filelist | xargs -P "$(nproc)" -n1 upx -qq -d 2> /dev/null || true

View File

@@ -3,7 +3,7 @@
require 'etc'
OLD_CREW_VERSION ||= defined?(CREW_VERSION) ? CREW_VERSION : '1.0'
CREW_VERSION ||= '1.60.8' unless defined?(CREW_VERSION) && CREW_VERSION == OLD_CREW_VERSION
CREW_VERSION ||= '1.60.9' unless defined?(CREW_VERSION) && CREW_VERSION == OLD_CREW_VERSION
# Kernel architecture.
KERN_ARCH ||= Etc.uname[:machine]
@@ -31,8 +31,9 @@ ARCH_LIB ||= "lib#{CREW_LIB_SUFFIX}"
CREW_PREFIX ||= ENV.fetch('CREW_PREFIX', '/usr/local') unless defined?(CREW_PREFIX)
# Glibc related constants
CREW_GLIBC_PREFIX ||= File.join(CREW_PREFIX, 'opt/glibc-libs')
CREW_GLIBC_INTERPRETER ||= File.symlink?("#{CREW_PREFIX}/bin/ld.so") ? File.realpath("#{CREW_PREFIX}/bin/ld.so") : nil unless defined?(CREW_GLIBC_INTERPRETER)
CREW_GLIBC_PREFIX ||= File.join(CREW_PREFIX, 'opt/glibc-libs')
@crew_glibc_interpreter = File.join(CREW_GLIBC_PREFIX, File.basename(File.realpath("#{CREW_PREFIX}/bin/ld.so"))) unless defined?(CREW_GLIBC_INTERPRETER)
CREW_GLIBC_INTERPRETER ||= File.file?(@crew_glibc_interpreter) ? @crew_glibc_interpreter : nil unless defined?(CREW_GLIBC_INTERPRETER)
# Glibc version can be found from the output of libc.so.6
@libcvertokens = (`LD_AUDIT= #{CREW_GLIBC_PREFIX}/libc.so.6`.lines.first.chomp.split(/[\s]/) if File.file?("#{CREW_GLIBC_PREFIX}/libc.so.6"))
@@ -49,8 +50,7 @@ end
# These are packages that crew needs to run-- only packages that the bin/crew needs should be required here.
# lz4, for example, is required for zstd to have lz4 support, but this is not required to run bin/crew.
# The LIBC_VERSION ternary is to reflect the change from glibc_build to glibc_lib as the source of essential libraries starting at glibc 2.35.
CREW_ESSENTIAL_PACKAGES ||= %W[crew_profile_base gcc_lib #{LIBC_VERSION.to_f > 2.34 ? "glibc_lib#{LIBC_VERSION.delete('.')}" : "glibc_build#{LIBC_VERSION.delete('.')}"} glibc_standalone gmp ruby zlib zlib_ng zstd]
CREW_ESSENTIAL_PACKAGES ||= %w[crew_profile_base gcc_lib glibc gmp ruby zlib zlib_ng zstd]
CREW_IN_CONTAINER ||= File.exist?('/.dockerenv') || ENV.fetch('CREW_IN_CONTAINER', false) unless defined?(CREW_IN_CONTAINER)
@@ -105,7 +105,7 @@ CREW_CACHE_FAILED_BUILD ||= ENV.fetch('CREW_CACHE_FAILED_BUILD', false) unless d
CREW_NO_GIT ||= ENV.fetch('CREW_NO_GIT', false) unless defined?(CREW_NO_GIT)
CREW_UNATTENDED ||= ENV.fetch('CREW_UNATTENDED', false) unless defined?(CREW_UNATTENDED)
CREW_STANDALONE_UPGRADE_ORDER = %w[glibc_standalone openssl ruby python3] unless defined?(CREW_STANDALONE_UPGRADE_ORDER)
CREW_STANDALONE_UPGRADE_ORDER = %w[glibc openssl ruby python3] unless defined?(CREW_STANDALONE_UPGRADE_ORDER)
CREW_DEBUG ||= ARGV.intersect?(%w[-D --debug]) unless defined?(CREW_DEBUG)
CREW_FORCE ||= ARGV.intersect?(%w[-f --force]) unless defined?(CREW_FORCE)
@@ -207,16 +207,13 @@ when 'x86_64'
CREW_ARCH_FLAGS ||= CREW_ARCH_FLAGS_OVERRIDE.to_s.empty? ? '' : CREW_ARCH_FLAGS_OVERRIDE
end
CREW_LINKER ||= ENV.fetch('CREW_LINKER', 'mold') unless defined?(CREW_LINKER)
CREW_LINKER_FLAGS ||= ENV.fetch('CREW_LINKER_FLAGS', '-flto=auto') unless defined?(CREW_LINKER_FLAGS)
CREW_CORE_FLAGS ||= "-O3 -pipe -ffat-lto-objects -fPIC #{CREW_ARCH_FLAGS} -fuse-ld=#{CREW_LINKER} #{CREW_LINKER_FLAGS}"
CREW_COMMON_FLAGS ||= "#{CREW_CORE_FLAGS} -B#{CREW_GLIBC_PREFIX} -flto=auto"
CREW_COMMON_FNO_LTO_FLAGS ||= "#{CREW_CORE_FLAGS} -B#{CREW_GLIBC_PREFIX} -fno-lto"
CREW_CORE_FLAGS ||= "-O3 -pipe -ffat-lto-objects -fPIC #{CREW_ARCH_FLAGS} #{CREW_LINKER_FLAGS}"
CREW_COMMON_FLAGS ||= "#{CREW_CORE_FLAGS} -flto=auto"
CREW_COMMON_FNO_LTO_FLAGS ||= "#{CREW_CORE_FLAGS} -fno-lto"
CREW_FNO_LTO_LDFLAGS ||= '-fno-lto'
CREW_LINKER_FLAGS << " -Wl,--dynamic-linker,#{CREW_GLIBC_INTERPRETER} -Wl,-rpath,#{CREW_GLIBC_PREFIX}:#{CREW_LIB_PREFIX} -B#{CREW_GLIBC_PREFIX} -L#{CREW_GLIBC_PREFIX} -L#{CREW_LIB_PREFIX}" if CREW_GLIBC_INTERPRETER
CREW_ENV_OPTIONS_HASH ||=
if CREW_DISABLE_ENV_OPTIONS
{ 'CREW_DISABLE_ENV_OPTIONS' => '1' }
@@ -284,7 +281,7 @@ CREW_CMAKE_OPTIONS ||= <<~OPT.chomp
-DCMAKE_C_FLAGS='#{CREW_COMMON_FLAGS.gsub(/-fuse-ld=.{2,4}\s/, '')}' \
-DCMAKE_CXX_FLAGS='#{CREW_COMMON_FLAGS.gsub(/-fuse-ld=.{2,4}\s/, '')}' \
-DCMAKE_EXE_LINKER_FLAGS='#{CREW_LINKER_FLAGS}' \
-DCMAKE_LINKER_TYPE=#{CREW_LINKER.upcase} \
-DCMAKE_LINKER_TYPE=MOLD \
-DCMAKE_SHARED_LINKER_FLAGS='#{CREW_LINKER_FLAGS}' \
-DCMAKE_MODULE_LINKER_FLAGS='#{CREW_LINKER_FLAGS}' \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=TRUE \

View File

@@ -110,6 +110,7 @@ renamed_packages = Set[
{ pkg_name: 'codium', pkg_rename: 'vscodium', comments: 'Renamed to better match upstream.' },
{ pkg_name: 'dstat', pkg_rename: 'py3_dool', comments: 'Following upstream rename.' },
{ pkg_name: 'ffcall', pkg_rename: 'libffcall', comments: 'Renamed to better match upstream.' },
{ pkg_name: 'glibc_standalone', pkg_rename: 'glibc', comments: 'Renamed to better match upstream.' },
{ pkg_name: 'itstool', pkg_rename: 'py3_itstool', comments: 'Renamed to indicate switch to pip buildsystem.' },
{ pkg_name: 'jsonc', pkg_rename: 'json_c', comments: 'Renamed to better match upstream.' },
{ pkg_name: 'libcurl', pkg_rename: 'curl', comments: 'Renamed to better match upstream.' },
@@ -160,6 +161,25 @@ renamed_packages = Set[
deprecated_packages = Set[
{ pkg_name: 'epydoc', comments: 'Abandoned upstream, only supports Python 2.' },
{ pkg_name: 'git_prompt', comments: 'Integrated into git package.' },
{ pkg_name: 'glibc_build223', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_build227', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_build232', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_build233', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_build235', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_build237', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_dev223', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_dev227', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_dev232', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_dev233', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_dev235', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_dev237', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_fallthrough', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_lib223', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_lib227', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_lib232', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_lib233', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_lib235', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'glibc_lib237', comments: 'We are moving away from system glibc.' },
{ pkg_name: 'gnome_session', comments: 'No longer compatible with any architecture, requires systemd.' },
{ pkg_name: 'gnome_settings_daemon', comments: 'No longer compatible with any architecture, requires systemd.' },
{ pkg_name: 'gnome_shell', comments: 'No longer compatible with any architecture, requires systemd.' },

View File

@@ -26,7 +26,7 @@ end
class Package
boolean_property :arch_flags_override, :conflicts_ok, :git_clone_deep, :git_fetchtags, :gem_compile_needed, :gnome, :is_fake, :is_musl, :is_static,
:no_binaries_needed, :no_compile_needed, :no_compress, :no_env_options, :no_fhs, :no_git_submodules, :no_links, :no_lto, :no_patchelf,
:no_binaries_needed, :no_compile_needed, :no_compress, :no_env_options, :no_fhs, :no_git_submodules, :no_links, :no_lto, :no_mold, :no_patchelf,
:no_shrink, :no_source_build, :no_strip, :no_upstream_update, :no_zstd, :patchelf, :prerelease, :print_source_bashrc, :run_tests
property :description, :homepage, :version, :license, :compatibility,
@@ -258,9 +258,9 @@ class Package
orig_arrow_index_newbranch = orig_arrow_index_connecter + 4
# if the char under the processing arrow symbol (orig_arrow_index_connecter) is also arrow or pipe, change the processing char to tee symbol
line[orig_arrow_index_connecter] = '├' if orig_arrow_index_connecter && tree_view.lines[line_i + 1].to_s[orig_arrow_index_connecter] =~ (/[└│]/)
line[orig_arrow_index_connecter] = '├' if orig_arrow_index_connecter && tree_view.lines[line_i + 1].to_s[orig_arrow_index_connecter] =~ /[└│]/
# if the char under the processing arrow symbol (orig_arrow_index_newbranch) is also arrow or pipe, change the processing char to tee symbol
line[orig_arrow_index_newbranch] = '┬' if orig_arrow_index_newbranch && tree_view.lines[line_i + 1].to_s[orig_arrow_index_newbranch] =~ (/[└├]/)
line[orig_arrow_index_newbranch] = '┬' if orig_arrow_index_newbranch && tree_view.lines[line_i + 1].to_s[orig_arrow_index_newbranch] =~ /[└├]/
next line # return modified line
end.join
@@ -327,15 +327,15 @@ class Package
def self.source?(architecture) = missing_binaries ? true : !(binary?(architecture) || is_fake?)
def self.system(*args, **opt_args)
@crew_env_options_hash = if no_env_options?
{ 'CREW_DISABLE_ENV_OPTIONS' => '1' }
elsif no_lto?
CREW_ENV_FNO_LTO_OPTIONS_HASH
else
CREW_ENV_OPTIONS_HASH
end
crew_env_options_hash = if no_env_options?
{ 'CREW_DISABLE_ENV_OPTIONS' => '1' }
elsif no_lto?
CREW_ENV_FNO_LTO_OPTIONS_HASH
else
CREW_ENV_OPTIONS_HASH
end
# Replace CREW_ARCH_FLAGS if @arch_flags_override is true.
@crew_env_options_hash = @arch_flags_override ? @crew_env_options_hash.each { |k, v| @crew_env_options_hash[k] = v.gsub(CREW_ARCH_FLAGS, CREW_ARCH_FLAGS_OVERRIDE) } : @crew_env_options_hash
crew_env_options_hash.transform_values! { |v| v.gsub(CREW_ARCH_FLAGS, CREW_ARCH_FLAGS_OVERRIDE) } if arch_flags_override
# Add "-j#" argument to "make" at compile-time, if necessary.
@@ -350,13 +350,18 @@ class Package
# Extract env hash.
if args[0].is_a?(Hash)
env = @crew_env_options_hash.merge(args[0])
env = crew_env_options_hash.merge(args[0])
args.delete_at(0) # Remove env hash from args array.
else
env = @crew_env_options_hash
env = crew_env_options_hash
end
cmd_args = args # After removing the env hash, all remaining args must be command args.
env['CREW_PRELOAD_ENABLE_COMPILE_HACKS'] = opt_args.delete(:no_preload_hacks) ? '0' : '1'
env['CREW_PRELOAD_NO_MOLD'] = @no_mold ? '1' : '0'
env['LD_PRELOAD'] = File.join(CREW_LIB_PREFIX, 'crew-preload.so') if File.exist?("#{CREW_LIB_PREFIX}/crew-preload.so")
# After removing the env hash, all remaining args must be command args.
cmd_args = args
make_threads = CREW_NPROC
modded_make_cmd = false

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,12 +2,16 @@
/usr/local/bin/rhythmbox-client
/usr/local/include/rhythmbox/backends/rb-encoder.h
/usr/local/include/rhythmbox/backends/rb-player-gst-filter.h
/usr/local/include/rhythmbox/backends/rb-player-gst-helper.h
/usr/local/include/rhythmbox/backends/rb-player-gst-tee.h
/usr/local/include/rhythmbox/backends/rb-player.h
/usr/local/include/rhythmbox/lib/libmediaplayerid/mediaplayerid.h
/usr/local/include/rhythmbox/lib/rb-async-copy.h
/usr/local/include/rhythmbox/lib/rb-builder-helpers.h
/usr/local/include/rhythmbox/lib/rb-chunk-loader.h
/usr/local/include/rhythmbox/lib/rb-debug.h
/usr/local/include/rhythmbox/lib/rb-file-helpers.h
/usr/local/include/rhythmbox/lib/rb-gst-media-types.h
/usr/local/include/rhythmbox/lib/rb-list-model.h
/usr/local/include/rhythmbox/lib/rb-stock-icons.h
/usr/local/include/rhythmbox/lib/rb-string-value-map.h
@@ -18,7 +22,6 @@
/usr/local/include/rhythmbox/metadata/rb-ext-db.h
/usr/local/include/rhythmbox/metadata/rb-metadata.h
/usr/local/include/rhythmbox/plugins/rb-plugin-macros.h
/usr/local/include/rhythmbox/podcast/rb-podcast-entry-types.h
/usr/local/include/rhythmbox/podcast/rb-podcast-manager.h
/usr/local/include/rhythmbox/podcast/rb-podcast-parse.h
/usr/local/include/rhythmbox/podcast/rb-podcast-search.h
@@ -26,12 +29,12 @@
/usr/local/include/rhythmbox/rhythmdb/rhythmdb-entry-type.h
/usr/local/include/rhythmbox/rhythmdb/rhythmdb-entry.h
/usr/local/include/rhythmbox/rhythmdb/rhythmdb-import-job.h
/usr/local/include/rhythmbox/rhythmdb/rhythmdb-metadata-cache.h
/usr/local/include/rhythmbox/rhythmdb/rhythmdb-property-model.h
/usr/local/include/rhythmbox/rhythmdb/rhythmdb-query-model.h
/usr/local/include/rhythmbox/rhythmdb/rhythmdb-query-result-list.h
/usr/local/include/rhythmbox/rhythmdb/rhythmdb-query-results.h
/usr/local/include/rhythmbox/rhythmdb/rhythmdb.h
/usr/local/include/rhythmbox/shell/rb-application.h
/usr/local/include/rhythmbox/shell/rb-history.h
/usr/local/include/rhythmbox/shell/rb-play-order.h
/usr/local/include/rhythmbox/shell/rb-playlist-manager.h
@@ -39,13 +42,13 @@
/usr/local/include/rhythmbox/shell/rb-shell-player.h
/usr/local/include/rhythmbox/shell/rb-shell-preferences.h
/usr/local/include/rhythmbox/shell/rb-shell.h
/usr/local/include/rhythmbox/shell/rb-task-list.h
/usr/local/include/rhythmbox/shell/rb-track-transfer-batch.h
/usr/local/include/rhythmbox/shell/rb-track-transfer-queue.h
/usr/local/include/rhythmbox/sources/rb-auto-playlist-source.h
/usr/local/include/rhythmbox/sources/rb-browser-source.h
/usr/local/include/rhythmbox/sources/rb-device-source.h
/usr/local/include/rhythmbox/sources/rb-display-page-group.h
/usr/local/include/rhythmbox/sources/rb-display-page-menu.h
/usr/local/include/rhythmbox/sources/rb-display-page-model.h
/usr/local/include/rhythmbox/sources/rb-display-page-tree.h
/usr/local/include/rhythmbox/sources/rb-display-page.h
@@ -58,49 +61,28 @@
/usr/local/include/rhythmbox/sources/rb-static-playlist-source.h
/usr/local/include/rhythmbox/sources/rb-streaming-source.h
/usr/local/include/rhythmbox/sources/rb-transfer-target.h
/usr/local/include/rhythmbox/widgets/nautilus-floating-bar.h
/usr/local/include/rhythmbox/widgets/rb-alert-dialog.h
/usr/local/include/rhythmbox/widgets/rb-button-bar.h
/usr/local/include/rhythmbox/widgets/rb-cell-renderer-pixbuf.h
/usr/local/include/rhythmbox/widgets/rb-cell-renderer-rating.h
/usr/local/include/rhythmbox/widgets/rb-dialog.h
/usr/local/include/rhythmbox/widgets/rb-encoding-settings.h
/usr/local/include/rhythmbox/widgets/rb-entry-view.h
/usr/local/include/rhythmbox/widgets/rb-fading-image.h
/usr/local/include/rhythmbox/widgets/rb-import-dialog.h
/usr/local/include/rhythmbox/widgets/rb-library-browser.h
/usr/local/include/rhythmbox/widgets/rb-object-property-editor.h
/usr/local/include/rhythmbox/widgets/rb-property-view.h
/usr/local/include/rhythmbox/widgets/rb-rating.h
/usr/local/include/rhythmbox/widgets/rb-search-entry.h
/usr/local/include/rhythmbox/widgets/rb-segmented-bar.h
/usr/local/include/rhythmbox/widgets/rb-song-info.h
/usr/local/include/rhythmbox/widgets/rb-source-toolbar.h
/usr/local/include/rhythmbox/widgets/rb-task-list-display.h
/usr/local/include/rhythmbox/widgets/rb-uri-dialog.h
/usr/local/lib64/girepository-1.0/MPID-3.0.typelib
/usr/local/lib64/girepository-1.0/RB-3.0.typelib
/usr/local/lib64/librhythmbox-core.la
/usr/local/lib64/librhythmbox-core.so
/usr/local/lib64/librhythmbox-core.so.10
/usr/local/lib64/librhythmbox-core.so.10.0.0
/usr/local/lib64/pkgconfig/rhythmbox.pc
/usr/local/lib64/rhythmbox/plugins/android/android.plugin
/usr/local/lib64/rhythmbox/plugins/android/libandroid.la
/usr/local/lib64/rhythmbox/plugins/android/libandroid.so
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/artsearch.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/artsearch.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/embedded.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/embedded.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/lastfm.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/lastfm.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/local.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/local.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/musicbrainz.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/musicbrainz.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/oldcache.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/oldcache.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/songinfo.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/__pycache__/songinfo.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/artsearch/artsearch.plugin
/usr/local/lib64/rhythmbox/plugins/artsearch/artsearch.py
/usr/local/lib64/rhythmbox/plugins/artsearch/embedded.py
@@ -110,56 +92,19 @@
/usr/local/lib64/rhythmbox/plugins/artsearch/oldcache.py
/usr/local/lib64/rhythmbox/plugins/artsearch/songinfo.py
/usr/local/lib64/rhythmbox/plugins/audiocd/audiocd.plugin
/usr/local/lib64/rhythmbox/plugins/audiocd/libaudiocd.la
/usr/local/lib64/rhythmbox/plugins/audiocd/libaudiocd.so
/usr/local/lib64/rhythmbox/plugins/audioscrobbler/audioscrobbler.plugin
/usr/local/lib64/rhythmbox/plugins/audioscrobbler/libaudioscrobbler.la
/usr/local/lib64/rhythmbox/plugins/audioscrobbler/libaudioscrobbler.so
/usr/local/lib64/rhythmbox/plugins/context/AlbumTab.py
/usr/local/lib64/rhythmbox/plugins/context/ArtistTab.py
/usr/local/lib64/rhythmbox/plugins/context/ContextView.py
/usr/local/lib64/rhythmbox/plugins/context/LastFM.py
/usr/local/lib64/rhythmbox/plugins/context/LinksTab.py
/usr/local/lib64/rhythmbox/plugins/context/LyricsTab.py
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/AlbumTab.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/AlbumTab.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/ArtistTab.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/ArtistTab.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/ContextView.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/ContextView.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/LastFM.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/LastFM.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/LinksTab.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/LinksTab.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/LyricsTab.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/LyricsTab.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/context.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/context/__pycache__/context.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/context/context.py
/usr/local/lib64/rhythmbox/plugins/dbus-media-server/dbus-media-server.plugin
/usr/local/lib64/rhythmbox/plugins/dbus-media-server/libdbus-media-server.la
/usr/local/lib64/rhythmbox/plugins/dbus-media-server/libdbus-media-server.so
/usr/local/lib64/rhythmbox/plugins/fmradio/fmradio.plugin
/usr/local/lib64/rhythmbox/plugins/fmradio/libfmradio.la
/usr/local/lib64/rhythmbox/plugins/fmradio/libfmradio.so
/usr/local/lib64/rhythmbox/plugins/generic-player/generic-player.plugin
/usr/local/lib64/rhythmbox/plugins/generic-player/libgeneric-player.la
/usr/local/lib64/rhythmbox/plugins/generic-player/libgeneric-player.so
/usr/local/lib64/rhythmbox/plugins/im-status/__pycache__/im-status.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/im-status/__pycache__/im-status.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/im-status/im-status.plugin
/usr/local/lib64/rhythmbox/plugins/im-status/im-status.py
/usr/local/lib64/rhythmbox/plugins/iradio/iradio.plugin
/usr/local/lib64/rhythmbox/plugins/iradio/libiradio.la
/usr/local/lib64/rhythmbox/plugins/iradio/libiradio.so
/usr/local/lib64/rhythmbox/plugins/listenbrainz/__pycache__/client.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/listenbrainz/__pycache__/client.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/listenbrainz/__pycache__/listenbrainz.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/listenbrainz/__pycache__/listenbrainz.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/listenbrainz/__pycache__/queue.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/listenbrainz/__pycache__/queue.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/listenbrainz/__pycache__/settings.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/listenbrainz/__pycache__/settings.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/listenbrainz/client.py
/usr/local/lib64/rhythmbox/plugins/listenbrainz/listenbrainz.plugin
/usr/local/lib64/rhythmbox/plugins/listenbrainz/listenbrainz.py
@@ -175,201 +120,43 @@
/usr/local/lib64/rhythmbox/plugins/lyrics/LyricsSites.py
/usr/local/lib64/rhythmbox/plugins/lyrics/TerraParser.py
/usr/local/lib64/rhythmbox/plugins/lyrics/WinampcnParser.py
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/AstrawebParser.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/AstrawebParser.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/DarkLyricsParser.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/DarkLyricsParser.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/JetlyricsParser.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/JetlyricsParser.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/JlyricParser.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/JlyricParser.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/LyricWikiParser.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/LyricWikiParser.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/LyricsConfigureDialog.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/LyricsConfigureDialog.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/LyricsParse.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/LyricsParse.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/LyricsSites.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/LyricsSites.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/TerraParser.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/TerraParser.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/WinampcnParser.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/WinampcnParser.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/lyrics.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/__pycache__/lyrics.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/lyrics/lyrics.plugin
/usr/local/lib64/rhythmbox/plugins/lyrics/lyrics.py
/usr/local/lib64/rhythmbox/plugins/magnatune/DownloadAlbumHandler.py
/usr/local/lib64/rhythmbox/plugins/magnatune/MagnatuneAccount.py
/usr/local/lib64/rhythmbox/plugins/magnatune/MagnatuneSource.py
/usr/local/lib64/rhythmbox/plugins/magnatune/TrackListHandler.py
/usr/local/lib64/rhythmbox/plugins/magnatune/__pycache__/DownloadAlbumHandler.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/magnatune/__pycache__/DownloadAlbumHandler.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/magnatune/__pycache__/MagnatuneAccount.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/magnatune/__pycache__/MagnatuneAccount.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/magnatune/__pycache__/MagnatuneSource.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/magnatune/__pycache__/MagnatuneSource.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/magnatune/__pycache__/TrackListHandler.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/magnatune/__pycache__/TrackListHandler.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/magnatune/__pycache__/magnatune.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/magnatune/__pycache__/magnatune.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/magnatune/magnatune.plugin
/usr/local/lib64/rhythmbox/plugins/magnatune/magnatune.py
/usr/local/lib64/rhythmbox/plugins/mmkeys/libmmkeys.la
/usr/local/lib64/rhythmbox/plugins/mmkeys/libmmkeys.so
/usr/local/lib64/rhythmbox/plugins/mmkeys/mmkeys.plugin
/usr/local/lib64/rhythmbox/plugins/mpris/libmpris.la
/usr/local/lib64/rhythmbox/plugins/mpris/libmpris.so
/usr/local/lib64/rhythmbox/plugins/mpris/mpris.plugin
/usr/local/lib64/rhythmbox/plugins/notification/libnotification.la
/usr/local/lib64/rhythmbox/plugins/notification/libnotification.so
/usr/local/lib64/rhythmbox/plugins/notification/notification.plugin
/usr/local/lib64/rhythmbox/plugins/power-manager/libpower-manager.la
/usr/local/lib64/rhythmbox/plugins/power-manager/libpower-manager.so
/usr/local/lib64/rhythmbox/plugins/power-manager/power-manager.plugin
/usr/local/lib64/rhythmbox/plugins/python-console/__pycache__/pythonconsole.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/python-console/__pycache__/pythonconsole.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/python-console/pythonconsole.plugin
/usr/local/lib64/rhythmbox/plugins/python-console/pythonconsole.py
/usr/local/lib64/rhythmbox/plugins/rb/Coroutine.py
/usr/local/lib64/rhythmbox/plugins/rb/Loader.py
/usr/local/lib64/rhythmbox/plugins/rb/URLCache.py
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/Coroutine.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/Coroutine.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/Loader.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/Loader.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/URLCache.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/URLCache.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/rb.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/rb.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/rbconfig.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/rbconfig.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/stringmatch.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/rb/__pycache__/stringmatch.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/rb/rb.plugin
/usr/local/lib64/rhythmbox/plugins/rb/rb.py
/usr/local/lib64/rhythmbox/plugins/rb/rbconfig.py
/usr/local/lib64/rhythmbox/plugins/rb/stringmatch.py
/usr/local/lib64/rhythmbox/plugins/rbzeitgeist/__pycache__/rbzeitgeist.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/rbzeitgeist/__pycache__/rbzeitgeist.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/rbzeitgeist/rbzeitgeist.plugin
/usr/local/lib64/rhythmbox/plugins/rbzeitgeist/rbzeitgeist.py
/usr/local/lib64/rhythmbox/plugins/replaygain/__pycache__/config.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/replaygain/__pycache__/config.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/replaygain/__pycache__/player.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/replaygain/__pycache__/player.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/replaygain/__pycache__/replaygain.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/replaygain/__pycache__/replaygain.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/replaygain/config.py
/usr/local/lib64/rhythmbox/plugins/replaygain/player.py
/usr/local/lib64/rhythmbox/plugins/replaygain/replaygain.plugin
/usr/local/lib64/rhythmbox/plugins/replaygain/replaygain.py
/usr/local/lib64/rhythmbox/plugins/soundcloud/__pycache__/soundcloud.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/soundcloud/__pycache__/soundcloud.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/soundcloud/soundcloud.plugin
/usr/local/lib64/rhythmbox/plugins/soundcloud/soundcloud.py
/usr/local/lib64/rhythmbox/plugins/webremote/__pycache__/siphash.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/webremote/__pycache__/siphash.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/webremote/__pycache__/webremote.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/plugins/webremote/__pycache__/webremote.cpython-310.pyc
/usr/local/lib64/rhythmbox/plugins/webremote/siphash.py
/usr/local/lib64/rhythmbox/plugins/webremote/webremote.plugin
/usr/local/lib64/rhythmbox/plugins/webremote/webremote.py
/usr/local/lib64/rhythmbox/sample-plugins/sample-python/__pycache__/sample-python.cpython-310.opt-1.pyc
/usr/local/lib64/rhythmbox/sample-plugins/sample-python/__pycache__/sample-python.cpython-310.pyc
/usr/local/lib64/rhythmbox/sample-plugins/sample-python/sample-python.plugin
/usr/local/lib64/rhythmbox/sample-plugins/sample-python/sample-python.py
/usr/local/lib64/rhythmbox/sample-plugins/sample/libsample.la
/usr/local/lib64/rhythmbox/sample-plugins/sample/libsample.so
/usr/local/lib64/rhythmbox/sample-plugins/sample/sample.plugin
/usr/local/libexec/rhythmbox-metadata
/usr/local/share/applications/rhythmbox-device.desktop
/usr/local/share/applications/rhythmbox.desktop
/usr/local/share/applications/org.gnome.Rhythmbox3.desktop
/usr/local/share/applications/org.gnome.Rhythmbox3.device.desktop
/usr/local/share/dbus-1/services/org.gnome.Rhythmbox3.service
/usr/local/share/gir-1.0/MPID-3.0.gir
/usr/local/share/gir-1.0/RB-3.0.gir
/usr/local/share/glib-2.0/schemas/org.gnome.rhythmbox.gschema.xml
/usr/local/share/gtk-doc/html/rhythmbox/RBApplication.html
/usr/local/share/gtk-doc/html/rhythmbox/RBAutoPlaylistSource.html
/usr/local/share/gtk-doc/html/rhythmbox/RBBrowserSource.html
/usr/local/share/gtk-doc/html/rhythmbox/RBCellRendererPixbuf.html
/usr/local/share/gtk-doc/html/rhythmbox/RBCellRendererRating.html
/usr/local/share/gtk-doc/html/rhythmbox/RBDisplayPage.html
/usr/local/share/gtk-doc/html/rhythmbox/RBDisplayPageGroup.html
/usr/local/share/gtk-doc/html/rhythmbox/RBDisplayPageModel.html
/usr/local/share/gtk-doc/html/rhythmbox/RBDisplayPageTree.html
/usr/local/share/gtk-doc/html/rhythmbox/RBEntryView.html
/usr/local/share/gtk-doc/html/rhythmbox/RBHeader.html
/usr/local/share/gtk-doc/html/rhythmbox/RBHistory.html
/usr/local/share/gtk-doc/html/rhythmbox/RBImportErrorsSource.html
/usr/local/share/gtk-doc/html/rhythmbox/RBLibraryBrowser.html
/usr/local/share/gtk-doc/html/rhythmbox/RBLibrarySource.html
/usr/local/share/gtk-doc/html/rhythmbox/RBMediaPlayerSource.html
/usr/local/share/gtk-doc/html/rhythmbox/RBMetaData.html
/usr/local/share/gtk-doc/html/rhythmbox/RBMissingFilesSource.html
/usr/local/share/gtk-doc/html/rhythmbox/RBPlayOrder.html
/usr/local/share/gtk-doc/html/rhythmbox/RBPlayQueueSource.html
/usr/local/share/gtk-doc/html/rhythmbox/RBPlayer.html
/usr/local/share/gtk-doc/html/rhythmbox/RBPlayerGstFilter.html
/usr/local/share/gtk-doc/html/rhythmbox/RBPlayerGstTee.html
/usr/local/share/gtk-doc/html/rhythmbox/RBPlaylistManager.html
/usr/local/share/gtk-doc/html/rhythmbox/RBPlaylistSource.html
/usr/local/share/gtk-doc/html/rhythmbox/RBPropertyView.html
/usr/local/share/gtk-doc/html/rhythmbox/RBQueryCreator.html
/usr/local/share/gtk-doc/html/rhythmbox/RBRandomPlayOrder.html
/usr/local/share/gtk-doc/html/rhythmbox/RBRating.html
/usr/local/share/gtk-doc/html/rhythmbox/RBRemovableMediaManager.html
/usr/local/share/gtk-doc/html/rhythmbox/RBSearchEntry.html
/usr/local/share/gtk-doc/html/rhythmbox/RBShell.html
/usr/local/share/gtk-doc/html/rhythmbox/RBShellClipboard.html
/usr/local/share/gtk-doc/html/rhythmbox/RBShellPlayer.html
/usr/local/share/gtk-doc/html/rhythmbox/RBShellPreferences.html
/usr/local/share/gtk-doc/html/rhythmbox/RBSongInfo.html
/usr/local/share/gtk-doc/html/rhythmbox/RBSource.html
/usr/local/share/gtk-doc/html/rhythmbox/RBStaticPlaylistSource.html
/usr/local/share/gtk-doc/html/rhythmbox/RBStreamingSource.html
/usr/local/share/gtk-doc/html/rhythmbox/RBStringValueMap.html
/usr/local/share/gtk-doc/html/rhythmbox/RBTrackTransferBatch.html
/usr/local/share/gtk-doc/html/rhythmbox/RBTrackTransferQueue.html
/usr/local/share/gtk-doc/html/rhythmbox/RBURIDialog.html
/usr/local/share/gtk-doc/html/rhythmbox/RhythmDB.html
/usr/local/share/gtk-doc/html/rhythmbox/RhythmDBEntryType.html
/usr/local/share/gtk-doc/html/rhythmbox/RhythmDBImportJob.html
/usr/local/share/gtk-doc/html/rhythmbox/RhythmDBPropertyModel.html
/usr/local/share/gtk-doc/html/rhythmbox/RhythmDBQueryModel.html
/usr/local/share/gtk-doc/html/rhythmbox/RhythmDBQueryResults.html
/usr/local/share/gtk-doc/html/rhythmbox/ch01.html
/usr/local/share/gtk-doc/html/rhythmbox/ch02.html
/usr/local/share/gtk-doc/html/rhythmbox/ch03.html
/usr/local/share/gtk-doc/html/rhythmbox/ch04.html
/usr/local/share/gtk-doc/html/rhythmbox/ch05.html
/usr/local/share/gtk-doc/html/rhythmbox/ch06.html
/usr/local/share/gtk-doc/html/rhythmbox/ch07.html
/usr/local/share/gtk-doc/html/rhythmbox/home.png
/usr/local/share/gtk-doc/html/rhythmbox/index.html
/usr/local/share/gtk-doc/html/rhythmbox/left-insensitive.png
/usr/local/share/gtk-doc/html/rhythmbox/left.png
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-RBDeviceSource.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-RBEncoder.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-RBExtDB.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-RBTransferTarget.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-rb-async-queue-watch.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-rb-builder-helpers.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-rb-debug.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-rb-dialog.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-rb-ext-db-key.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-rb-file-helpers.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-rb-gst-media-types.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-rb-rating-helper.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-rb-text-helpers.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-rb-tree-dnd.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox-rb-util.html
/usr/local/share/gtk-doc/html/rhythmbox/rhythmbox.devhelp2
/usr/local/share/gtk-doc/html/rhythmbox/right-insensitive.png
/usr/local/share/gtk-doc/html/rhythmbox/right.png
/usr/local/share/gtk-doc/html/rhythmbox/style.css
/usr/local/share/gtk-doc/html/rhythmbox/up-insensitive.png
/usr/local/share/gtk-doc/html/rhythmbox/up.png
/usr/local/share/help/C/rhythmbox/figures/rb-iradio-main.png
/usr/local/share/help/C/rhythmbox/figures/rb-notification-zone.png
/usr/local/share/help/C/rhythmbox/figures/rb-podcast-main.png
@@ -470,6 +257,16 @@
/usr/local/share/help/gl/rhythmbox/figures/rb-window.png
/usr/local/share/help/gl/rhythmbox/index.docbook
/usr/local/share/help/gl/rhythmbox/legal.xml
/usr/local/share/help/id/rhythmbox/figures/rb-iradio-main.png
/usr/local/share/help/id/rhythmbox/figures/rb-notification-zone.png
/usr/local/share/help/id/rhythmbox/figures/rb-podcast-main.png
/usr/local/share/help/id/rhythmbox/figures/rb-toolbar-prevplaynext.png
/usr/local/share/help/id/rhythmbox/figures/rb-toolbar-repeat.png
/usr/local/share/help/id/rhythmbox/figures/rb-toolbar-shuffle.png
/usr/local/share/help/id/rhythmbox/figures/rb-volume-changer.png
/usr/local/share/help/id/rhythmbox/figures/rb-window.png
/usr/local/share/help/id/rhythmbox/index.docbook
/usr/local/share/help/id/rhythmbox/legal.xml
/usr/local/share/help/it/rhythmbox/figures/rb-iradio-main.png
/usr/local/share/help/it/rhythmbox/figures/rb-notification-zone.png
/usr/local/share/help/it/rhythmbox/figures/rb-podcast-main.png
@@ -580,8 +377,8 @@
/usr/local/share/help/zh_CN/rhythmbox/figures/rb-window.png
/usr/local/share/help/zh_CN/rhythmbox/index.docbook
/usr/local/share/help/zh_CN/rhythmbox/legal.xml
/usr/local/share/icons/hicolor/scalable/apps/org.gnome.Rhythmbox-symbolic.svg
/usr/local/share/icons/hicolor/scalable/apps/org.gnome.Rhythmbox.svg
/usr/local/share/icons/hicolor/scalable/apps/org.gnome.Rhythmbox3-symbolic.svg
/usr/local/share/icons/hicolor/scalable/apps/org.gnome.Rhythmbox3.svg
/usr/local/share/locale/af/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/am/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/ar/LC_MESSAGES/rhythmbox.mo
@@ -620,9 +417,11 @@
/usr/local/share/locale/hr/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/hu/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/id/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/ie/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/is/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/it/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/ja/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/ka/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/kk/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/kn/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/ko/LC_MESSAGES/rhythmbox.mo
@@ -664,23 +463,12 @@
/usr/local/share/locale/zh_CN/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/zh_HK/LC_MESSAGES/rhythmbox.mo
/usr/local/share/locale/zh_TW/LC_MESSAGES/rhythmbox.mo
/usr/local/share/man/man1/rhythmbox-client.1.gz
/usr/local/share/man/man1/rhythmbox.1.gz
/usr/local/share/metainfo/rhythmbox.appdata.xml
/usr/local/share/man/man1/rhythmbox-client.1.zst
/usr/local/share/man/man1/rhythmbox.1.zst
/usr/local/share/metainfo/org.gnome.Rhythmbox3.appdata.xml
/usr/local/share/rhythmbox/plugins/audioscrobbler/audioscrobbler-preferences.ui
/usr/local/share/rhythmbox/plugins/audioscrobbler/audioscrobbler-profile.ui
/usr/local/share/rhythmbox/plugins/audioscrobbler/icons/hicolor/scalable/places/Last.fm-symbolic.svg
/usr/local/share/rhythmbox/plugins/context/img/Allmusic16x16.png
/usr/local/share/rhythmbox/plugins/context/img/Discogs16x16.png
/usr/local/share/rhythmbox/plugins/context/img/Wikipedia16x16.png
/usr/local/share/rhythmbox/plugins/context/img/lastfm.png
/usr/local/share/rhythmbox/plugins/context/img/spinner.gif
/usr/local/share/rhythmbox/plugins/context/tmpl/album-tmpl.html
/usr/local/share/rhythmbox/plugins/context/tmpl/artist-tmpl.html
/usr/local/share/rhythmbox/plugins/context/tmpl/links-tmpl.html
/usr/local/share/rhythmbox/plugins/context/tmpl/loading.html
/usr/local/share/rhythmbox/plugins/context/tmpl/lyrics-tmpl.html
/usr/local/share/rhythmbox/plugins/context/tmpl/main.css
/usr/local/share/rhythmbox/plugins/listenbrainz/settings.ui
/usr/local/share/rhythmbox/plugins/lyrics/lyrics-prefs.ui
/usr/local/share/rhythmbox/plugins/magnatune/icons/hicolor/scalable/places/magnatune-symbolic.svg
@@ -691,9 +479,6 @@
/usr/local/share/rhythmbox/plugins/magnatune/magnatune_logo_color_small.png
/usr/local/share/rhythmbox/plugins/magnatune/magnatune_logo_color_tiny.png
/usr/local/share/rhythmbox/plugins/replaygain/replaygain-prefs.ui
/usr/local/share/rhythmbox/plugins/soundcloud/icons/hicolor/scalable/places/soundcloud-symbolic.svg
/usr/local/share/rhythmbox/plugins/soundcloud/powered-by-soundcloud.png
/usr/local/share/rhythmbox/plugins/soundcloud/soundcloud.ui
/usr/local/share/rhythmbox/plugins/webremote/css/grids-responsive-min.css
/usr/local/share/rhythmbox/plugins/webremote/css/pure-min.css
/usr/local/share/rhythmbox/plugins/webremote/css/webremote.css

View File

@@ -19,7 +19,6 @@ class Abseil_cpp < CMake
depends_on 'gcc_lib' # R
depends_on 'glibc' # R
depends_on 'glibc_lib' # R
cmake_options '-DBUILD_SHARED_LIBS=ON'
end

View File

@@ -13,8 +13,6 @@ class Buildessential < Package
depends_on 'core'
# install first to get ldconfig
depends_on 'glibc_lib'
depends_on 'glibc_dev'
depends_on 'gcc_dev'
depends_on 'gmp'
depends_on 'mpfr'

View File

@@ -3,7 +3,7 @@ require 'package'
class Core < Package
description 'Core Chromebrew Packages.'
homepage 'https://github.com/chromebrew/chromebrew'
version '3.7'
version '3.8'
license 'GPL-3+'
compatibility 'all'
@@ -18,7 +18,7 @@ class Core < Package
depends_on 'command_not_found'
depends_on 'crew_mvdir'
depends_on 'crew_profile_base'
depends_on 'crew_sudo' if CHROMEOS_RELEASE.to_i > 116
depends_on 'crew_sudo' if CHROMEOS_RELEASE.to_i > 116 && !CREW_IN_CONTAINER
depends_on 'e2fsprogs'
depends_on 'elfutils'
depends_on 'expat'
@@ -30,8 +30,7 @@ class Core < Package
depends_on 'gettext'
depends_on 'git'
depends_on 'git_mestrelion_tools'
depends_on 'glibc_lib'
depends_on 'glibc_standalone'
depends_on 'glibc'
depends_on 'gmp'
depends_on 'gnutls'
depends_on 'groff'

View File

@@ -17,7 +17,6 @@ class Dav1d < Meson
})
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'nasm' => :build

View File

@@ -28,7 +28,6 @@ class Foot < Meson
depends_on 'freetype' # R
depends_on 'gcc_lib' # R
depends_on 'glibc' # R
depends_on 'glibc_lib' # R
depends_on 'harfbuzz' # R
depends_on 'libxkbcommon'
depends_on 'ncurses'

View File

@@ -39,7 +39,6 @@ class Gcc_build < Package
depends_on 'binutils' => :build
depends_on 'ccache' => :build
depends_on 'dejagnu' => :build # for test
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'gmp' # R
depends_on 'isl' # R

View File

@@ -36,7 +36,6 @@ class Gcc_dev < Package
depends_on 'gcc_build' => :build
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'gmp' # R
depends_on 'isl' # R

View File

@@ -35,7 +35,6 @@ class Gcc_lib < Package
end
depends_on 'gcc_build' => :build
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
no_shrink

View File

@@ -1,20 +1,132 @@
require 'package'
Package.load_package("#{__dir__}/glibc_standalone.rb")
class Glibc < Package
description 'The GNU C Library project provides the core libraries for GNU/Linux systems.'
homepage Glibc_standalone.homepage
license Glibc_standalone.license
homepage 'https://www.gnu.org/software/libc/'
version '2.41-4'
license 'LGPL-2.1+, BSD, HPND, ISC, inner-net, rc, and PCRE'
compatibility 'all'
source_url "https://ftpmirror.gnu.org/glibc/glibc-#{version.partition('-')[0]}.tar.xz"
source_sha256 'a5a26b22f545d6b7d7b3dd828e11e428f24f4fac43c934fb071b6a7d0828e901'
binary_compression 'tar.zst'
is_fake
binary_sha256({
aarch64: '609104350dd5e50382472f4409d57ceab099d65839adf891b77621adf447f1f1',
armv7l: '609104350dd5e50382472f4409d57ceab099d65839adf891b77621adf447f1f1',
i686: '4b7a2d8025430f183b85d982924a9764b31c485e4c8938753858465853ba25d3',
x86_64: '5d5da0128e3054020c507d883d5f27c0b8a978263b799f068c845393b5fffe17'
})
if LIBC_VERSION <= '2.41'
version Glibc_standalone.version
compatibility Glibc_standalone.compatibility
depends_on 'glibc_standalone'
else
version LIBC_VERSION
compatibility 'aarch64 armv7l x86_64'
depends_on 'glibc_fallthrough'
depends_on 'gawk' => :build
depends_on 'libidn2' => :build
depends_on 'texinfo' => :build
depends_on 'libxcrypt' # Latest glibc removed libcrypt.so, add this for backward compatibility
conflicts_ok
no_env_options
no_shrink
print_source_bashrc
def self.patch
system "git clone --depth=1 https://github.com/chromebrew/crew-package-glibc -b #{version}"
system 'filefix'
Dir.glob('crew-package-glibc/patches/*.patch') do |patch|
puts "Applying #{patch}...".yellow
system 'patch', '-p1', '-i', patch
end
end
def self.build
cc_macro_list = %W[
-DCREW_PREFIX=\\"#{CREW_PREFIX}\\"
-DCREW_GLIBC_PREFIX=\\"#{CREW_GLIBC_PREFIX}\\"
-DCREW_GLIBC_INTERPRETER=\\"#{CREW_GLIBC_INTERPRETER}\\"
-DSYSTEM_GLIBC_INTERPRETER=\\"/#{ARCH_LIB}/#{File.basename(CREW_GLIBC_INTERPRETER)}\\"
]
build_env = {
CFLAGS: "-O3 -pipe -fPIC -fno-lto #{cc_macro_list.join(' ')}",
CXXFLAGS: "-O3 -pipe -fPIC -fno-lto #{cc_macro_list.join(' ')}",
LDFLAGS: '-fno-lto'
}
config_opts = %W[
--prefix=#{CREW_PREFIX}
--libdir=#{CREW_LIB_PREFIX}
--mandir=#{CREW_MAN_PREFIX}
--with-headers=#{CREW_PREFIX}/include
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new
--enable-bind-now
--enable-fortify-source
--enable-kernel=3.2
--enable-shared
--disable-nscd
--disable-multilib
--disable-profile
--disable-sanity-checks
--disable-werror
--without-cvs
--without-selinux
]
config_opts << '--enable-cet' unless ARCH == 'i686'
FileUtils.mkdir_p %w[builddir]
Dir.chdir('builddir') do
File.write 'configparms', <<~EOF
slibdir=#{CREW_GLIBC_PREFIX}
rtlddir=#{CREW_GLIBC_PREFIX}
sbindir=#{CREW_PREFIX}/bin
rootsbindir=#{CREW_PREFIX}/bin
EOF
system build_env.transform_keys(&:to_s), '../configure', *config_opts, no_preload_hacks: true
system "make PARALLELMFLAGS='-j #{CREW_NPROC}'", no_preload_hacks: true
end
arch_flag = case ARCH
when 'x86_64'
'-m64'
when 'i686'
'-m32'
else
'-mfloat-abi=hard -mfpu=vfpv3-d16 -march=armv7-a+fp'
end
# Link with ChromeOS's glibc libraries to ensure compatibility
system <<~CMD, chdir: 'crew-package-glibc/crew-preload', no_preload_hacks: true
cc -B #{CREW_GLIBC_PREFIX} #{CREW_COMMON_FLAGS} #{arch_flag} -fuse-ld=mold \
#{cc_macro_list.join(' ')} ../prebuilt/#{ARCH.sub('aarch64', 'armv7l')}/lib{c,dl}-*.so \
-shared -fvisibility=hidden -Wl,-soname,crew-preload.so \
main.c hooks.c -o ../crew-preload.so
CMD
end
def self.install
FileUtils.mkdir_p %W[#{CREW_DEST_PREFIX}/etc/env.d #{CREW_DEST_PREFIX}/etc/ld.so.conf.d #{CREW_DEST_LIB_PREFIX}]
system "make DESTDIR=#{CREW_DEST_DIR} install", chdir: 'builddir'
system "make DESTDIR=#{CREW_DEST_DIR} localedata/install-locales", chdir: 'builddir'
File.write "#{CREW_DEST_PREFIX}/etc/ld.so.conf", <<~EOF
# ld.so.conf autogenerated by Chromebrew
# DO NOT put your changes here. Instead, put them in
# #{CREW_PREFIX}/etc/ld.so.conf.d/ instead.
include #{CREW_PREFIX}/etc/ld.so.conf.d/*.conf
#{CREW_GLIBC_PREFIX}
#{CREW_LIB_PREFIX}
include /etc/ld.so.conf
EOF
# install crew-audit
FileUtils.install 'crew-package-glibc/crew-preload.so', File.join(CREW_DEST_LIB_PREFIX, 'crew-preload.so'), mode: 0o755
end
def self.postinstall
# update search cache for ld.so
system "#{CREW_PREFIX}/bin/ldconfig", %i[out err] => File::NULL
end
end

View File

@@ -1,373 +0,0 @@
require 'package'
class Glibc_build223 < Package
description 'The GNU C Library project provides the core libraries for GNU/Linux systems.'
homepage 'https://www.gnu.org/software/libc/'
version '2.23-6'
license 'LGPL-2.1+, BSD, HPND, ISC, inner-net, rc, and PCRE'
@libc_version = LIBC_VERSION
compatibility 'i686'
min_glibc version.split('-').first
max_glibc version.split('-').first
source_url 'https://ftpmirror.gnu.org/glibc/glibc-2.23.tar.xz'
source_sha256 '94efeb00e4603c8546209cefb3e1a50a5315c86fa9b078b6fad758e187ce13e9'
binary_compression 'tar.zst'
binary_sha256({
i686: 'f40aa662009999330bd1be1feb6c64efbe663a7a308973dc7c5a2b41c1faaf6b'
})
depends_on 'gawk' => :build
depends_on 'filecmd' # L Fixes creating symlinks on a fresh install.
depends_on 'libidn2' => :build
depends_on 'texinfo' => :build
depends_on 'hashpipe' => :build
conflicts_ok
no_env_options
no_upstream_update
def self.patch
# Patch to avoid old ld issue on glibc 2.23 by using ld configure
# portion from https://github.com/bminor/glibc/blob/master/configure
@glibc_223_i686_patch = <<~'GLIBC_223_HEREDOC'
--- a/configure 2021-12-22 11:42:36.689574968 -0500
+++ b/configure 2021-12-22 11:58:43.052504544 -0500
@@ -4434,7 +4434,143 @@ if test $ac_verc_fail = yes; then
AS=: critic_missing="$critic_missing as"
fi
-for ac_prog in $LD
+libc_cv_with_lld=no
+case $($LD --version) in
+ "GNU gold"*)
+ # Accept gold 1.14 or higher
+ for ac_prog in $LD
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+if test -z "$LD"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
+$as_echo_n "checking version of $LD... " >&6; }
+ ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU gold.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ LD=: critic_missing="$critic_missing GNU gold"
+fi
+
+ ;;
+ "LLD"*)
+ # Accept LLD 13.0.0 or higher
+ for ac_prog in $LD
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+if test -z "$LD"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
+$as_echo_n "checking version of $LD... " >&6; }
+ ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*LLD.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 1[3-9].*|[2-9][0-9].*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ LD=: critic_missing="$critic_missing LLD"
+fi
+
+ libc_cv_with_lld=yes
+ ;;
+ *)
+ for ac_prog in $LD
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
@@ -4485,7 +4621,7 @@ $as_echo_n "checking version of $LD... "
ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.1[0-9][0-9]*|2.2[2-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
+ 2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
@@ -4494,9 +4630,14 @@ $as_echo_n "checking version of $LD... "
$as_echo "$ac_prog_version" >&6; }
fi
if test $ac_verc_fail = yes; then
- LD=: critic_missing="$critic_missing ld"
+ LD=: critic_missing="$critic_missing GNU ld"
fi
+ ;;
+esac
+config_vars="$config_vars
+with-lld = $libc_cv_with_lld"
+
# These programs are version sensitive.
GLIBC_223_HEREDOC
case ARCH
when 'i686'
File.write('glibc_223_i686.patch', @glibc_223_i686_patch)
system 'patch -Np1 -i glibc_223_i686.patch'
when 'armv7l', 'x86_64'
@googlesource_branch = 'release-R91-13904.B'
system "git clone --depth=1 -b #{@googlesource_branch} https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay googlesource"
Dir.glob("googlesource/sys-libs/glibc/files/local/glibc-2.27/glibc-#{@libc_version}*.patch").each do |patch|
puts "patch -Np1 -i #{patch}" if @opt_verbose
system "patch -Np1 -i #{patch} || (echo 'Retrying #{patch}' && patch -Np0 -i #{patch} || true)"
end
# Fix multiple definitions of __nss_*_database (bug 22918) in Glibc 2.27
system 'curl -Ls "https://sourceware.org/git/?p=glibc.git;a=commitdiff_plain;h=eaf6753f8aac33a36deb98c1031d1bad7b593d2d;hp=4dc23804a220f917f400e2404bc4803cd60491c7" \
hashpipe sha256 0c40630adf77292abb763362182158a87648e2c45904aebb5758b5ca38653ac9 | \
patch -Np1 --binary || true'
end
end
def self.build
FileUtils.mkdir_p 'glibc_build'
Dir.chdir 'glibc_build' do
# gold linker does not work for glibc 2.23, and maybe others.
FileUtils.mkdir_p 'binutils'
@binutils = File.readlines(File.join(CREW_META_PATH, 'binutils.filelist'))
@binutils.each do |bin|
FileUtils.cp bin.chomp, "binutils/#{File.basename(bin.chomp)}" if bin['/bin/']
end
FileUtils.cp 'binutils/ld.bfd', 'binutils/ld'
system "CFLAGS='-O2 -pipe -fno-stack-protector' ../configure \
#{CREW_CONFIGURE_OPTIONS} \
--with-headers=#{CREW_PREFIX}/include \
--without-gd \
--disable-werror \
--disable-sanity-checks \
--enable-shared \
--disable-multilib \
--with-binutils=binutils \
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new \
libc_cv_forced_unwind=yes \
libc_cv_ssp=no \
libc_cv_ssp_strong=no"
system "make PARALLELMFLAGS='-j #{CREW_NPROC}' || make || make PARALLELMFLAGS='-j 1'"
end
end
def self.install
FileUtils.mkdir_p CREW_DEST_LIB_PREFIX
system "sed 's,/usr/#{ARCH_LIB}/libc_nonshared.a,#{CREW_LIB_PREFIX}/libc_nonshared.a,g' /usr/#{ARCH_LIB}/libc.so > #{CREW_DEST_LIB_PREFIX}/libc.so"
FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/etc"
Dir.chdir 'glibc_build' do
system 'touch', "#{CREW_DEST_PREFIX}/etc/ld.so.conf"
case ARCH
when 'i686'
system "make -j1 DESTDIR=#{CREW_DEST_DIR} install"
end
case @libc_version
when '2.23'
Dir.chdir 'localedata' do
system "mkdir -pv #{CREW_DEST_LIB_PREFIX}/locale"
puts 'Install minimum set of locales'.lightblue
# Assume old version of glibc is installed. -> use localedef.
# If not installed, we can move following instruction to postinstall
# Since glibc is a basic package, we prefer to provide pre-compiled package.
# No compilcated detect logics required -> make it as simple as possible
system "localedef --prefix=#{CREW_DEST_DIR} -i cs_CZ -f UTF-8 cs_CZ.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i de_DE -f ISO-8859-1 de_DE"
system "localedef --prefix=#{CREW_DEST_DIR} -i de_DE@euro -f ISO-8859-15 de_DE@euro"
system "localedef --prefix=#{CREW_DEST_DIR} -i de_DE -f UTF-8 de_DE.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i en_GB -f UTF-8 en_GB.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i en_HK -f ISO-8859-1 en_HK"
system "localedef --prefix=#{CREW_DEST_DIR} -i en_PH -f ISO-8859-1 en_PH"
system "localedef --prefix=#{CREW_DEST_DIR} -i en_US -f ISO-8859-1 en_US"
system "localedef --prefix=#{CREW_DEST_DIR} -i en_US -f UTF-8 en_US.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i es_MX -f ISO-8859-1 es_MX"
system "localedef --prefix=#{CREW_DEST_DIR} -i fa_IR -f UTF-8 fa_IR"
system "localedef --prefix=#{CREW_DEST_DIR} -i fr_FR -f ISO-8859-1 fr_FR"
system "localedef --prefix=#{CREW_DEST_DIR} -i fr_FR@euro -f ISO-8859-15 fr_FR@euro"
system "localedef --prefix=#{CREW_DEST_DIR} -i fr_FR -f UTF-8 fr_FR.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i it_IT -f ISO-8859-1 it_IT"
system "localedef --prefix=#{CREW_DEST_DIR} -i it_IT -f UTF-8 it_IT.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i ja_JP -f EUC-JP ja_JP"
system "localedef --prefix=#{CREW_DEST_DIR} -i ru_RU -f KOI8-R ru_RU.KOI8-R"
system "localedef --prefix=#{CREW_DEST_DIR} -i ru_RU -f UTF-8 ru_RU.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i tr_TR -f UTF-8 tr_TR.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i zh_CN -f GB18030 zh_CN.GB18030"
end
end
Dir.chdir CREW_DEST_LIB_PREFIX do
puts "System glibc version is #{LIBC_VERSION}.".lightblue
puts 'Creating symlinks to system glibc version to prevent breakage.'.lightblue
@crew_libc_version = @libc_version
case ARCH
when 'i686'
FileUtils.ln_sf File.realpath('/lib/ld-linux.so.2'), 'ld-linux.so.2'
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.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_DEST_LIB_PREFIX, File.basename(k))
end
end
end
end
# Only save libnsl.so.2, since libnsl.so.1 is provided by perl
# For this to work, build on a M107 or newer container.
FileUtils.ln_sf File.realpath("#{CREW_DEST_LIB_PREFIX}/libnsl.so.1"), "#{CREW_DEST_LIB_PREFIX}/libnsl.so.2"
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so"
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so.1"
# Remove libmount.so since it conflicts with the one from util_linux.
FileUtils.rm Dir.glob("#{CREW_DEST_LIB_PREFIX}/libmount.so*")
end
def self.check
# Tests on i686 fail.
# /usr/local/bin/nm: /usr/local/tmp/crew/glibc.20211222010048.dir/glibc-2.23/glibc_build/elf/../string/rtld-memcpy-sse2-unaligned.os: no symbols
# /usr/local/bin/nm: /usr/local/tmp/crew/glibc.20211222010048.dir/glibc-2.23/glibc_build/elf/../string/rtld-memmove-sse2-unaligned.os: no symbols
# make[2]: Target 'tests' not remade because of errors.
# rm /usr/local/tmp/crew/glibc.20211222010048.dir/glibc-2.23/glibc_build/libc.dynsym /usr/local/tmp/crew/glibc.20211222010048.dir/glibc-2.23/glibc_build/elf/ld.dynsym
# make[2]: Leaving directory '/usr/local/tmp/crew/glibc.20211222010048.dir/glibc-2.23/elf'
# make[1]: *** [Makefile:214: elf/tests] Error 2
# make[1]: Target 'check' not remade because of errors.
# make[1]: Leaving directory '/usr/local/tmp/crew/glibc.20211222010048.dir/glibc-2.23'
# make: *** [Makefile:9: check] Error 2
return if ARCH == 'i686'
# Dir.chdir 'glibc_build' do
# system 'make -j1 check'
# end
end
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/)
@crew_libc_version = @crew_libcvertokens[@crew_libcvertokens.find_index('version') + 1].sub!(/[[:punct:]]?$/, '')
puts "Package glibc version is #{@crew_libc_version}.".lightblue
else
@crew_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]
Dir.chdir CREW_LIB_PREFIX do
puts "System glibc version is #{@crew_libc_version}.".lightblue
puts 'Creating symlinks to system glibc version to prevent breakage.'.lightblue
case ARCH
when 'i686'
FileUtils.ln_sf File.realpath('/lib/ld-linux.so.2'), 'ld-linux.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

View File

@@ -1,397 +0,0 @@
require 'package'
class Glibc_build227 < Package
description 'The GNU C Library project provides the core libraries for GNU/Linux systems.'
homepage 'https://www.gnu.org/software/libc/'
version '2.27-1'
license 'LGPL-2.1+, BSD, HPND, ISC, inner-net, rc, and PCRE'
@libc_version = LIBC_VERSION
compatibility 'aarch64 armv7l x86_64'
min_glibc version.split('-').first
max_glibc version.split('-').first
source_url 'https://ftpmirror.gnu.org/glibc/glibc-2.27.tar.xz'
source_sha256 '5172de54318ec0b7f2735e5a91d908afe1c9ca291fec16b5374d9faadfc1fc72'
binary_compression 'tar.xz'
binary_sha256({
aarch64: '64b4b73e2096998fd1a0a0e7d18472ef977aebb2f1cad83d99c77e164cb6a1d6',
armv7l: '64b4b73e2096998fd1a0a0e7d18472ef977aebb2f1cad83d99c77e164cb6a1d6',
x86_64: '5fe94642dbbf900d22b715021c73ac1a601b81517f0da1e7413f0af8fbea7997'
})
depends_on 'gawk' => :build
depends_on 'filecmd' # L Fixes creating symlinks on a fresh install.
depends_on 'libidn2' => :build
depends_on 'texinfo' => :build
depends_on 'hashpipe' => :build
conflicts_ok
no_env_options
no_upstream_update
def self.patch
# Patch to avoid old ld issue on glibc 2.23 by using ld configure
# portion from https://github.com/bminor/glibc/blob/master/configure
@glibc_223_i686_patch = <<~'GLIBC_223_HEREDOC'
--- a/configure 2021-12-22 11:42:36.689574968 -0500
+++ b/configure 2021-12-22 11:58:43.052504544 -0500
@@ -4434,7 +4434,143 @@ if test $ac_verc_fail = yes; then
AS=: critic_missing="$critic_missing as"
fi
-for ac_prog in $LD
+libc_cv_with_lld=no
+case $($LD --version) in
+ "GNU gold"*)
+ # Accept gold 1.14 or higher
+ for ac_prog in $LD
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+if test -z "$LD"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
+$as_echo_n "checking version of $LD... " >&6; }
+ ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU gold.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ LD=: critic_missing="$critic_missing GNU gold"
+fi
+
+ ;;
+ "LLD"*)
+ # Accept LLD 13.0.0 or higher
+ for ac_prog in $LD
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LD="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LD" && break
+done
+
+if test -z "$LD"; then
+ ac_verc_fail=yes
+else
+ # Found it, now check the version.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $LD" >&5
+$as_echo_n "checking version of $LD... " >&6; }
+ ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*LLD.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 1[3-9].*|[2-9][0-9].*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+fi
+if test $ac_verc_fail = yes; then
+ LD=: critic_missing="$critic_missing LLD"
+fi
+
+ libc_cv_with_lld=yes
+ ;;
+ *)
+ for ac_prog in $LD
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
@@ -4485,7 +4621,7 @@ $as_echo_n "checking version of $LD... "
ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 2.1[0-9][0-9]*|2.2[2-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
+ 2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
@@ -4494,9 +4630,14 @@ $as_echo_n "checking version of $LD... "
$as_echo "$ac_prog_version" >&6; }
fi
if test $ac_verc_fail = yes; then
- LD=: critic_missing="$critic_missing ld"
+ LD=: critic_missing="$critic_missing GNU ld"
fi
+ ;;
+esac
+config_vars="$config_vars
+with-lld = $libc_cv_with_lld"
+
# These programs are version sensitive.
GLIBC_223_HEREDOC
case ARCH
when 'i686'
File.write('glibc_223_i686.patch', @glibc_223_i686_patch)
system 'patch -Np1 -i glibc_223_i686.patch'
when 'armv7l', 'x86_64'
@googlesource_branch = 'release-R91-13904.B'
system "git clone --depth=1 -b #{@googlesource_branch} https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay googlesource"
Dir.glob("googlesource/sys-libs/glibc/files/local/glibc-2.27/glibc-#{@libc_version}*.patch").each do |patch|
puts "patch -Np1 -i #{patch}" if @opt_verbose
system "patch -Np1 -i #{patch} || (echo 'Retrying #{patch}' && patch -Np0 -i #{patch} || true)"
end
# Fix multiple definitions of __nss_*_database (bug 22918) in Glibc 2.27
system 'curl -Ls "https://sourceware.org/git/?p=glibc.git;a=commitdiff_plain;h=eaf6753f8aac33a36deb98c1031d1bad7b593d2d;hp=4dc23804a220f917f400e2404bc4803cd60491c7" \
hashpipe sha256 0c40630adf77292abb763362182158a87648e2c45904aebb5758b5ca38653ac9 | \
patch -Np1 --binary || true'
end
end
def self.build
FileUtils.mkdir_p 'glibc_build'
Dir.chdir 'glibc_build' do
# gold linker does not work for glibc 2.23, and maybe others.
FileUtils.mkdir_p 'binutils'
@binutils = File.readlines(File.join(CREW_META_PATH, 'binutils.filelist'))
@binutils.each do |bin|
FileUtils.cp bin.chomp, "binutils/#{File.basename(bin.chomp)}" if bin['/bin/']
end
FileUtils.cp 'binutils/ld.bfd', 'binutils/ld'
case ARCH
when 'armv7l', 'aarch64'
File.write('configparms', "slibdir=#{CREW_LIB_PREFIX}")
# enable-obsolete-rpc will cause a conflict with libtirpc
system "SYSROOT='' CFLAGS='-O2 -fno-strict-aliasing -fno-stack-protector -march=armv7-a+fp' \
LD=ld ../configure \
#{CREW_CONFIGURE_OPTIONS} \
--with-headers=#{CREW_PREFIX}/include \
ac_cv_lib_cap_cap_init=no \
--disable-sanity-checks \
--disable-werror \
--enable-bind-now \
--enable-shared \
--enable-static-pie \
libc_cv_arm_tls=yes \
libc_cv_asm_cfi_directives=yes \
libc_cv_broken_visibility_attribute=no \
libc_cv_c_cleanup=yes \
libc_cv_forced_unwind=yes \
libc_cv_gcc___thread=yes \
libc_cv_hashstyle=no \
--with-binutils=binutils \
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new \
--without-cvs \
--without-selinux"
when 'x86_64'
File.write('configparms', "slibdir=#{CREW_LIB_PREFIX}")
system "CFLAGS='-O2 -pipe -fno-stack-protector' ../configure \
#{CREW_CONFIGURE_OPTIONS} \
--with-headers=#{CREW_PREFIX}/include \
--without-gd \
--disable-werror \
--disable-sanity-checks \
--enable-shared \
--with-binutils=binutils \
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new \
--disable-multilib \
libc_cv_forced_unwind=yes \
libc_cv_ssp=no \
libc_cv_ssp_strong=no"
end
system "make PARALLELMFLAGS='-j #{CREW_NPROC}' || make || make PARALLELMFLAGS='-j 1'"
end
end
def self.install
FileUtils.mkdir_p CREW_DEST_LIB_PREFIX
system "sed 's,/usr/#{ARCH_LIB}/libc_nonshared.a,#{CREW_LIB_PREFIX}/libc_nonshared.a,g' /usr/#{ARCH_LIB}/libc.so > #{CREW_DEST_LIB_PREFIX}/libc.so"
FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/etc"
Dir.chdir 'glibc_build' do
system 'touch', "#{CREW_DEST_PREFIX}/etc/ld.so.conf"
case ARCH
when 'aarch64', 'armv7l'
system "make -j1 DESTDIR=#{CREW_DEST_DIR} install || true" # "sln elf/symlink.list" fails on armv7l
when 'i686', 'x86_64'
system "make -j1 DESTDIR=#{CREW_DEST_DIR} install"
end
Dir.chdir 'localedata' do
system "mkdir -pv #{CREW_DEST_LIB_PREFIX}/locale"
puts 'Install minimum set of locales'.lightblue
# Assume old version of glibc is installed. -> use localedef.
# If not installed, we can move following instruction to postinstall
# Since glibc is a basic package, we prefer to provide pre-compiled package.
# No compilcated detect logics required -> make it as simple as possible
system "localedef --prefix=#{CREW_DEST_DIR} -i cs_CZ -f UTF-8 cs_CZ.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i de_DE -f ISO-8859-1 de_DE"
system "localedef --prefix=#{CREW_DEST_DIR} -i de_DE@euro -f ISO-8859-15 de_DE@euro"
system "localedef --prefix=#{CREW_DEST_DIR} -i de_DE -f UTF-8 de_DE.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i en_GB -f UTF-8 en_GB.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i en_HK -f ISO-8859-1 en_HK"
system "localedef --prefix=#{CREW_DEST_DIR} -i en_PH -f ISO-8859-1 en_PH"
system "localedef --prefix=#{CREW_DEST_DIR} -i en_US -f ISO-8859-1 en_US"
system "localedef --prefix=#{CREW_DEST_DIR} -i en_US -f UTF-8 en_US.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i es_MX -f ISO-8859-1 es_MX"
system "localedef --prefix=#{CREW_DEST_DIR} -i fa_IR -f UTF-8 fa_IR"
system "localedef --prefix=#{CREW_DEST_DIR} -i fr_FR -f ISO-8859-1 fr_FR"
system "localedef --prefix=#{CREW_DEST_DIR} -i fr_FR@euro -f ISO-8859-15 fr_FR@euro"
system "localedef --prefix=#{CREW_DEST_DIR} -i fr_FR -f UTF-8 fr_FR.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i it_IT -f ISO-8859-1 it_IT"
system "localedef --prefix=#{CREW_DEST_DIR} -i it_IT -f UTF-8 it_IT.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i ja_JP -f EUC-JP ja_JP"
system "localedef --prefix=#{CREW_DEST_DIR} -i ru_RU -f KOI8-R ru_RU.KOI8-R"
system "localedef --prefix=#{CREW_DEST_DIR} -i ru_RU -f UTF-8 ru_RU.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i tr_TR -f UTF-8 tr_TR.UTF-8"
system "localedef --prefix=#{CREW_DEST_DIR} -i zh_CN -f GB18030 zh_CN.GB18030"
end
end
Dir.chdir CREW_DEST_LIB_PREFIX do
puts "System glibc version is #{LIBC_VERSION}.".lightblue
puts 'Creating symlinks to system glibc version to prevent breakage.'.lightblue
@crew_libc_version = @libc_version
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 = %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 @crew_libc_version.to_f >= 2.35
@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_DEST_LIB_PREFIX, File.basename(k))
end
end
end
# Only save libnsl.so.2, since libnsl.so.1 is provided by perl
# For this to work, build on a M107 or newer container.
FileUtils.ln_sf File.realpath("#{CREW_DEST_LIB_PREFIX}/libnsl.so.1"), "#{CREW_DEST_LIB_PREFIX}/libnsl.so.2"
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so"
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so.1"
# Remove libmount.so since it conflicts with the one from util_linux.
FileUtils.rm Dir.glob("#{CREW_DEST_LIB_PREFIX}/libmount.so*")
end
def self.check
# Dir.chdir 'glibc_build' do
# system 'make -j1 check'
# end
end
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/)
@crew_libc_version = @crew_libcvertokens[@crew_libcvertokens.find_index('version') + 1].sub!(/[[:punct:]]?$/, '')
puts "Package glibc version is #{@crew_libc_version}.".lightblue
else
@crew_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')
Dir.chdir CREW_LIB_PREFIX do
puts "System glibc version is #{@crew_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

View File

@@ -1,260 +0,0 @@
require 'package'
class Glibc_build232 < Package
description 'The GNU C Library project provides the core libraries for GNU/Linux systems.'
homepage 'https://www.gnu.org/software/libc/'
version '2.32-4'
license 'LGPL-2.1+, BSD, HPND, ISC, inner-net, rc, and PCRE'
@libc_version = LIBC_VERSION
compatibility 'aarch64 armv7l x86_64'
min_glibc version.split('-').first
max_glibc version.split('-').first
source_url 'https://ftpmirror.gnu.org/glibc/glibc-2.32.tar.xz'
source_sha256 '1627ea54f5a1a8467032563393e0901077626dc66f37f10ee6363bb722222836'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '2ab295e7c338288bf5fa6cb7b76c0039e452c7dab379744342a7bac1d26a300b',
armv7l: '2ab295e7c338288bf5fa6cb7b76c0039e452c7dab379744342a7bac1d26a300b',
x86_64: '37870ec860096ce1081b87b8155e4ad38ff5979d2baf4e367d8087aa4e1ce603'
})
depends_on 'gawk' => :build
depends_on 'filecmd' # L Fixes creating symlinks on a fresh install.
depends_on 'libidn2' => :build
depends_on 'texinfo' => :build
depends_on 'hashpipe' => :build
# depends_on 'libtirpc' # R
conflicts_ok
no_env_options
no_upstream_update
def self.patch
FileUtils.mkdir 'fedora'
# Patch to enable build-local-archive
system 'curl -Ls https://src.fedoraproject.org/rpms/glibc/raw/f30/f/glibc-fedora-locarchive.patch | \
hashpipe sha256 0acccf57d8c6e7de82871c61ccb845f7a1ae13ae1fbc65995d347de8367c7bb1 | \
patch -Np1 --binary'
system 'curl -Ls https://src.fedoraproject.org/rpms/glibc/raw/f30/f/build-locale-archive.c | \
hashpipe sha256 6834e8b8f2a987bf8adfd265c0e01665f102c7115db94b99ec36376b68e9d3fa > fedora/build-locale-archive.c'
system "sed -i 's,/lib/locale,/lib#{CREW_LIB_SUFFIX}/locale,g' fedora/build-locale-archive.c"
system "sed -i 's,/usr/sbin/tzdata-update,/bin/true,g' fedora/build-locale-archive.c"
system "sed -i 's,verbose,locale_verbose,g' fedora/build-locale-archive.c"
system "sed -i 's,be_quiet,locale_be_quiet,g' fedora/build-locale-archive.c"
FileUtils.mkdir_p 'gentoopatches'
system 'curl -Ls https://dev.gentoo.org/~dilfridge/distfiles/glibc-2.32-patches-8.tar.xz | \
hashpipe sha256 6653f1d0aadad10bd288f3bae274bd4e0a013d47f09ce78199fb5989b2d8fd9b | \
tar -xJf - -C gentoopatches'
Dir.glob('gentoopatches/patches/*.patch').each do |patch|
puts "patch -Np1 < #{patch}" if @opt_verbose
system "patch -Np1 < #{patch}"
end
@googlesource_branch = 'release-R96-14268.B'
system "git clone --depth=1 -b #{@googlesource_branch} https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay googlesource"
Dir.glob('googlesource/sys-libs/glibc/files/local/glibc-2.32/*.patch').each do |patch|
puts "patch -Np1 < #{patch}" if @opt_verbose
system "patch -Np1 < #{patch}"
end
end
def self.build
FileUtils.mkdir_p 'glibc_build'
Dir.chdir 'glibc_build' do
# gold linker does not work for glibc 2.23, and maybe others.
FileUtils.mkdir_p 'binutils'
@binutils = File.readlines(File.join(CREW_META_PATH, 'binutils.filelist'))
@binutils.each do |bin|
FileUtils.cp bin.chomp, "binutils/#{File.basename(bin.chomp)}" if bin['/bin/']
end
FileUtils.cp 'binutils/ld.bfd', 'binutils/ld'
# Optimization flags from https://github.com/InBetweenNames/gentooLTO
case ARCH
when 'armv7l', 'aarch64'
system "CFLAGS='-pipe -O2 -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans' \
LD=ld ../configure \
--prefix=#{CREW_PREFIX} \
--libdir=#{CREW_LIB_PREFIX} \
--with-headers=#{CREW_PREFIX}/include \
--without-gd \
ac_cv_header_cpuid_h=yes \
ac_cv_lib_audit_audit_log_user_avc_message=no \
ac_cv_lib_cap_cap_init=no \
--disable-profile \
--disable-sanity-checks \
--disable-werror \
--enable-bind-now \
--enable-hacker-mode \
--enable-kernel=4.14 \
--enable-shared \
libc_cv_386_tls=yes \
libc_cv_arm_tls=yes \
libc_cv_asm_cfi_directives=yes \
libc_cv_broken_visibility_attribute=no \
libc_cv_c_cleanup=yes \
libc_cv_forced_unwind=yes \
libc_cv_gcc___thread=yes \
libc_cv_hashstyle=no \
libc_cv_mlong_double_128ibm=yes \
libc_cv_mlong_double_128=yes \
libc_cv_predef_fortify_source=no \
libc_cv_visibility_attribute=yes \
libc_cv_x86_64_tls=yes \
libc_cv_z_combreloc=yes \
libc_cv_z_execstack=yes \
libc_cv_z_initfirst=yes \
libc_cv_z_nodelete=yes \
libc_cv_z_nodlopen=yes \
libc_cv_z_relro=yes \
--with-binutils=binutils \
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new \
--without-cvs \
--without-selinux \
"
# install-symbolic-link segfaults on armv7l, but we're deleting
# the libraries anyways, so it doesn't matter.
system "sed -i 's,install-symbolic-link,/bin/true,g' ../Makefile"
system "sed -i 's,symbolic-link-prog := $(elf-objpfx)sln,symbolic-link-prog := /bin/true,g' ../Makerules"
when 'x86_64'
File.write('configparms', "slibdir=#{CREW_LIB_PREFIX}", mode: 'a+')
system "CFLAGS='-pipe -O2 -fipa-pta -fno-semantic-interposition -falign-functions=32 -fdevirtualize-at-ltrans' \
LD=ld ../configure \
--prefix=#{CREW_PREFIX} \
--libdir=#{CREW_LIB_PREFIX} \
--with-headers=#{CREW_PREFIX}/include \
ac_cv_header_cpuid_h=yes \
ac_cv_lib_audit_audit_log_user_avc_message=no \
ac_cv_lib_cap_cap_init=no \
--disable-profile \
--disable-sanity-checks \
--disable-werror \
--enable-bind-now \
--enable-cet \
--enable-hacker-mode \
--enable-kernel=4.14 \
--enable-shared \
libc_cv_386_tls=yes \
libc_cv_arm_tls=yes \
libc_cv_asm_cfi_directives=yes \
libc_cv_broken_visibility_attribute=no \
libc_cv_c_cleanup=yes \
libc_cv_forced_unwind=yes \
libc_cv_gcc___thread=yes \
libc_cv_hashstyle=no \
libc_cv_mlong_double_128ibm=yes \
libc_cv_mlong_double_128=yes \
libc_cv_predef_fortify_source=no \
libc_cv_visibility_attribute=yes \
libc_cv_x86_64_tls=yes \
libc_cv_z_combreloc=yes \
libc_cv_z_execstack=yes \
libc_cv_z_initfirst=yes \
libc_cv_z_nodelete=yes \
libc_cv_z_nodlopen=yes \
libc_cv_z_relro=yes \
--with-binutils=binutils \
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new \
--without-cvs \
--without-gd \
--without-selinux \
"
end
system "make PARALLELMFLAGS='-j #{CREW_NPROC}' || make || make PARALLELMFLAGS='-j 1'"
if Gem::Version.new(@libc_version.to_s) >= Gem::Version.new('2.32')
system "gcc -Os -g -static -o build-locale-archive ../fedora/build-locale-archive.c \
../glibc_build/locale/locarchive.o \
../glibc_build/locale/md5.o \
../glibc_build/locale/record-status.o \
-I. -DDATADIR=\\\"#{CREW_PREFIX}/share\\\" -DPREFIX=\\\"#{CREW_PREFIX}\\\" \
-L../glibc_build \
-B../glibc_build/csu/ -lc -lc_nonshared"
end
end
end
def self.install
FileUtils.mkdir_p CREW_DEST_LIB_PREFIX
system "sed 's,/usr/#{ARCH_LIB}/libc_nonshared.a,#{CREW_LIB_PREFIX}/libc_nonshared.a,g' /usr/#{ARCH_LIB}/libc.so > #{CREW_DEST_LIB_PREFIX}/libc.so"
FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/etc"
Dir.chdir 'glibc_build' do
system 'touch', "#{CREW_DEST_PREFIX}/etc/ld.so.conf"
case ARCH
when 'aarch64', 'armv7l'
system "make -j1 DESTDIR=#{CREW_DEST_DIR} install || true" # "sln elf/symlink.list" fails on armv7l
when 'x86_64'
system "make -j1 DESTDIR=#{CREW_DEST_DIR} install"
end
Dir.chdir CREW_DEST_LIB_PREFIX do
puts "System glibc version is #{LIBC_VERSION}.".lightblue
puts 'Creating symlinks to system glibc version to prevent breakage.'.lightblue
@crew_libc_version = @libc_version
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 = %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 @crew_libc_version.to_f >= 2.35
@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_DEST_LIB_PREFIX, File.basename(k))
end
end
end
end
# Only save libnsl.so.2, since libnsl.so.1 is provided by perl
FileUtils.ln_sf File.realpath("#{CREW_DEST_LIB_PREFIX}/libnsl.so.1"), "#{CREW_DEST_LIB_PREFIX}/libnsl.so.2"
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so"
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so.1"
# Remove libmount.so since it conflicts with the one from util_linux.
FileUtils.rm Dir.glob("#{CREW_DEST_LIB_PREFIX}/libmount.so*")
end
def self.check
# Dir.chdir 'glibc_build' do
# system 'make -j1 check'
# end
end
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/)
@crew_libc_version = @crew_libcvertokens[@crew_libcvertokens.find_index('version') + 1].sub!(/[[:punct:]]?$/, '')
puts "Package glibc version is #{@crew_libc_version}.".lightblue
else
@crew_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')
Dir.chdir CREW_LIB_PREFIX do
puts "System glibc version is #{@crew_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

View File

@@ -1,303 +0,0 @@
require 'package'
class Glibc_build233 < Package
description 'The GNU C Library project provides the core libraries for GNU/Linux systems.'
homepage 'https://www.gnu.org/software/libc/'
version '2.33-3'
license 'LGPL-2.1+, BSD, HPND, ISC, inner-net, rc, and PCRE'
@libc_version = LIBC_VERSION
compatibility 'aarch64 armv7l x86_64'
min_glibc version.split('-').first
max_glibc version.split('-').first
source_url 'https://ftpmirror.gnu.org/glibc/glibc-2.33.tar.xz'
source_sha256 '2e2556000e105dbd57f0b6b2a32ff2cf173bde4f0d85dffccfd8b7e51a0677ff'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '11a3e7ba5eec18c325afa80bc869b4f8cc1fcbfef78ddf25e1b1e278679203a4',
armv7l: '11a3e7ba5eec18c325afa80bc869b4f8cc1fcbfef78ddf25e1b1e278679203a4',
x86_64: '3edde53b5ab8b577604b127c141042f4572b8972b7081abcda2e86778d1974a9'
})
depends_on 'gawk' => :build
depends_on 'filecmd' # L Fixes creating symlinks on a fresh install.
depends_on 'libidn2' => :build
depends_on 'texinfo' => :build
depends_on 'hashpipe' => :build
conflicts_ok
no_env_options
no_upstream_update
def self.patch
FileUtils.mkdir 'fedora'
# Patch to enable build-local-archive
system 'curl -Ls https://src.fedoraproject.org/rpms/glibc/raw/f30/f/glibc-fedora-locarchive.patch | \
hashpipe sha256 0acccf57d8c6e7de82871c61ccb845f7a1ae13ae1fbc65995d347de8367c7bb1 | \
patch -Np1 --binary'
system 'curl -Ls https://src.fedoraproject.org/rpms/glibc/raw/f30/f/build-locale-archive.c | \
hashpipe sha256 6834e8b8f2a987bf8adfd265c0e01665f102c7115db94b99ec36376b68e9d3fa > fedora/build-locale-archive.c'
system "sed -i 's,/lib/locale,/lib#{CREW_LIB_SUFFIX}/locale,g' fedora/build-locale-archive.c"
system "sed -i 's,/usr/sbin/tzdata-update,/bin/true,g' fedora/build-locale-archive.c"
system "sed -i 's,verbose,locale_verbose,g' fedora/build-locale-archive.c"
system "sed -i 's,be_quiet,locale_be_quiet,g' fedora/build-locale-archive.c"
FileUtils.mkdir_p 'gentoopatches'
system 'curl -Ls https://dev.gentoo.org/~dilfridge/distfiles/glibc-2.33-patches-6.tar.xz | \
hashpipe sha256 29c2e4036c2b33b830a9588055c63fde5dd5255bcfd5fad2fc92f3bbd27456c1 | \
tar -xJf - -C gentoopatches'
Dir.glob('gentoopatches/patches/*.patch').each do |patch|
puts "patch -Np1 -i #{patch} || true" if @opt_verbose
system "patch -Np1 -i #{patch} || true"
end
@googlesource_branch = 'release-R99-14469.B'
system "git clone --depth=1 -b #{@googlesource_branch} https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay googlesource"
Dir.glob('googlesource/sys-libs/glibc/files/local/glibc-2.33/*.patch').each do |patch|
puts "patch -Np1 < #{patch} || true" if @opt_verbose
system "patch -Np1 < #{patch} || true"
end
end
def self.build
FileUtils.mkdir_p 'glibc_build'
Dir.chdir 'glibc_build' do
# gold linker does not work for glibc 2.23, and maybe others.
FileUtils.mkdir_p 'binutils'
@binutils = File.readlines(File.join(CREW_META_PATH, 'binutils.filelist'))
@binutils.each do |bin|
FileUtils.cp bin.chomp, "binutils/#{File.basename(bin.chomp)}" if bin['/bin/']
end
FileUtils.cp 'binutils/ld.bfd', 'binutils/ld'
# Optimization flags from https://github.com/InBetweenNames/gentooLTO
case ARCH
when 'armv7l', 'aarch64'
system "CFLAGS='-pipe -O2 -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans' \
LD=ld ../configure \
--prefix=#{CREW_PREFIX} \
--libdir=#{CREW_LIB_PREFIX} \
--with-headers=#{CREW_PREFIX}/include \
--without-gd \
ac_cv_header_cpuid_h=yes \
ac_cv_lib_audit_audit_log_user_avc_message=no \
ac_cv_lib_cap_cap_init=no \
--disable-profile \
--disable-sanity-checks \
--disable-werror \
--enable-bind-now \
--enable-hacker-mode \
--enable-kernel=4.14 \
--enable-shared \
libc_cv_386_tls=yes \
libc_cv_arm_tls=yes \
libc_cv_asm_cfi_directives=yes \
libc_cv_broken_visibility_attribute=no \
libc_cv_c_cleanup=yes \
libc_cv_forced_unwind=yes \
libc_cv_gcc___thread=yes \
libc_cv_hashstyle=no \
libc_cv_mlong_double_128ibm=yes \
libc_cv_mlong_double_128=yes \
libc_cv_predef_fortify_source=no \
libc_cv_visibility_attribute=yes \
libc_cv_x86_64_tls=yes \
libc_cv_z_combreloc=yes \
libc_cv_z_execstack=yes \
libc_cv_z_initfirst=yes \
libc_cv_z_nodelete=yes \
libc_cv_z_nodlopen=yes \
libc_cv_z_relro=yes \
--with-binutils=binutils \
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new \
--without-cvs \
--without-selinux \
"
# install-symbolic-link segfaults on armv7l, but we're deleting
# the libraries anyways, so it doesn't matter.
system "sed -i 's,install-symbolic-link,/bin/true,g' ../Makefile"
system "sed -i 's,symbolic-link-prog := $(elf-objpfx)sln,symbolic-link-prog := /bin/true,g' ../Makerules"
when 'x86_64'
File.write('configparms', "slibdir=#{CREW_LIB_PREFIX}", mode: 'a+')
system "CFLAGS='-pipe -O2 -fipa-pta -fno-semantic-interposition -falign-functions=32 -fdevirtualize-at-ltrans' \
LD=ld ../configure \
--prefix=#{CREW_PREFIX} \
--libdir=#{CREW_LIB_PREFIX} \
--with-headers=#{CREW_PREFIX}/include \
ac_cv_header_cpuid_h=yes \
ac_cv_lib_audit_audit_log_user_avc_message=no \
ac_cv_lib_cap_cap_init=no \
--disable-profile \
--disable-sanity-checks \
--disable-werror \
--enable-bind-now \
--enable-cet \
--enable-hacker-mode \
--enable-kernel=4.14 \
--enable-shared \
libc_cv_386_tls=yes \
libc_cv_arm_tls=yes \
libc_cv_asm_cfi_directives=yes \
libc_cv_broken_visibility_attribute=no \
libc_cv_c_cleanup=yes \
libc_cv_forced_unwind=yes \
libc_cv_gcc___thread=yes \
libc_cv_hashstyle=no \
libc_cv_mlong_double_128ibm=yes \
libc_cv_mlong_double_128=yes \
libc_cv_predef_fortify_source=no \
libc_cv_visibility_attribute=yes \
libc_cv_x86_64_tls=yes \
libc_cv_z_combreloc=yes \
libc_cv_z_execstack=yes \
libc_cv_z_initfirst=yes \
libc_cv_z_nodelete=yes \
libc_cv_z_nodlopen=yes \
libc_cv_z_relro=yes \
--with-binutils=binutils \
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new \
--without-cvs \
--without-gd \
--without-selinux \
"
end
system "make PARALLELMFLAGS='-j #{CREW_NPROC}' || make || make PARALLELMFLAGS='-j 1'"
if Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.32')
system "gcc -Os -g -static -o build-locale-archive ../fedora/build-locale-archive.c \
../glibc_build/locale/locarchive.o \
../glibc_build/locale/md5.o \
../glibc_build/locale/record-status.o \
-I. -DDATADIR=\\\"#{CREW_PREFIX}/share\\\" -DPREFIX=\\\"#{CREW_PREFIX}\\\" \
-L../glibc_build \
-B../glibc_build/csu/ -lc -lc_nonshared"
end
end
end
def self.install
FileUtils.mkdir_p CREW_DEST_LIB_PREFIX
system "sed 's,/usr/#{ARCH_LIB}/libc_nonshared.a,#{CREW_LIB_PREFIX}/libc_nonshared.a,g' /usr/#{ARCH_LIB}/libc.so > #{CREW_DEST_LIB_PREFIX}/libc.so"
FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/etc"
Dir.chdir 'glibc_build' do
system 'touch', "#{CREW_DEST_PREFIX}/etc/ld.so.conf"
case ARCH
when 'aarch64', 'armv7l'
system "make -j1 DESTDIR=#{CREW_DEST_DIR} install || true" # "sln elf/symlink.list" fails on armv7l
when 'x86_64'
system "make -j1 DESTDIR=#{CREW_DEST_DIR} install"
end
if Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.32')
system "install -Dt #{CREW_DEST_PREFIX}/bin -m755 build-locale-archive"
system "make -j1 DESTDIR=#{CREW_DEST_DIR} localedata/install-locales"
end
Dir.chdir CREW_DEST_LIB_PREFIX do
puts "System glibc version is #{LIBC_VERSION}.".lightblue
puts 'Creating symlinks to system glibc version to prevent breakage.'.lightblue
@crew_libc_version = @libc_version
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 = %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 @crew_libc_version.to_f >= 2.35
@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_DEST_LIB_PREFIX, File.basename(k))
end
end
end
end
# Only save libnsl.so.2, since libnsl.so.1 is provided by perl
# For this to work, build on a M107 or newer container.
FileUtils.ln_sf File.realpath("#{CREW_DEST_LIB_PREFIX}/libnsl.so.1"), "#{CREW_DEST_LIB_PREFIX}/libnsl.so.2"
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so"
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so.1"
# Remove libmount.so since it conflicts with the one from util_linux.
FileUtils.rm Dir.glob("#{CREW_DEST_LIB_PREFIX}/libmount.so*")
end
def self.check
# Dir.chdir 'glibc_build' do
# system 'make -j1 check'
# end
end
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/)
@crew_libc_version = @crew_libcvertokens[@crew_libcvertokens.find_index('version') + 1].sub!(/[[:punct:]]?$/, '')
puts "Package glibc version is #{@crew_libc_version}.".lightblue
else
@crew_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 @crew_libc_version.to_f >= 2.35
Dir.chdir CREW_LIB_PREFIX do
puts "System glibc version is #{@crew_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
return unless Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.32') && Gem::Version.new(CREW_KERNEL_VERSION.to_s) >= Gem::Version.new('5.10')
puts 'Paring locales to a minimal set.'.lightblue
system 'localedef --list-archive | grep -v -i -e ^en -e ^cs -e ^de -e ^es -e ^fa -e ^fe -e ^it -e ^ja -e ^ru -e ^tr -e ^zh -e ^C| xargs localedef --delete-from-archive',
exception: false
FileUtils.mv "#{CREW_LIB_PREFIX}/locale/locale-archive", "#{CREW_LIB_PREFIX}/locale/locale-archive.tmpl"
unless File.file?('')
downloader "https://raw.githubusercontent.com/bminor/glibc/release/#{@crew_libc_version}/master/intl/locale.alias",
'SKIP', "#{CREW_PREFIX}/share/locale/locale.alias"
end
if @opt_verbose
system 'build-locale-archive'
else
system 'build-locale-archive', %i[out err] => File::NULL
end
FileUtils.rm "#{CREW_LIB_PREFIX}/locale/locale-archive.tmpl"
# minimum set of locales -> #{CREW_LIB_PREFIX}/locale/locale-archive
# We just whitelist certain locales and delete everything else like other distributions do, e.g.
# for dir in locale i18n; do
# find #{CREW_PREFIX}/usr/share/${dir} -mindepth 1 -maxdepth 1 -type d -not \( -name "${KEEPLANG}" -o -name POSIX \) -exec rm -rf {} +
# done
# This is the array of locales to save:
@locales = %w[C cs_CZ de_DE en es_MX fa_IR fr_FR it_IT ja_JP ru_RU tr_TR zh]
@localedirs = %W[#{CREW_PREFIX}/share/locale #{CREW_PREFIX}/share/i18n/locales]
@filelist = File.readlines("#{CREW_META_PATH}/glibc_build233.filelist")
@localedirs.each do |localedir|
Dir.chdir localedir do
Dir['*'].each do |f|
next if @locales.any? { |s| File.basename(f).include?(s) }
FileUtils.rm_f f
@fpath = "#{localedir}/#{f}"
@filelist.reject! { |e| e.include?(@fpath) }
end
end
end
puts 'Updating glibc package filelist...'.lightblue
File.open("#{CREW_META_PATH}/glibc_build233.filelist", 'w+') do |f|
f.puts(@filelist)
end
end
end

View File

@@ -1,298 +0,0 @@
require 'package'
class Glibc_build235 < Package
description 'The GNU C Library project provides the core libraries for GNU/Linux systems.'
homepage 'https://www.gnu.org/software/libc/'
version '2.35-1'
license 'LGPL-2.1+, BSD, HPND, ISC, inner-net, rc, and PCRE'
@libc_version = LIBC_VERSION
compatibility 'aarch64 armv7l x86_64'
min_glibc version.split('-').first
max_glibc version.split('-').first
# Use current glibc 2.35 stable branch commit, which avoids
# compilation failures, from https://github.com/bminor/glibc/tree/release/2.35/master
source_url 'https://github.com/bminor/glibc/archive/757d9a6306cee9e96d7a4d1d11c8d69763c6eecf.zip'
source_sha256 '75d6586a89a8c03b434ef7fa1b4b02b007287fc9a6b8148a84e97d6ed039872d'
# source_url 'https://ftpmirror.gnu.org/glibc/glibc-2.35.tar.xz'
# source_sha256 '5123732f6b67ccd319305efd399971d58592122bcc2a6518a1bd2510dd0cf52e'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '928b60200126cb0d69401bc5124a9a4e7b2294b54a1046c6f88caa45d7be32b9',
armv7l: '928b60200126cb0d69401bc5124a9a4e7b2294b54a1046c6f88caa45d7be32b9',
x86_64: 'e7977a6ad811776fbb8c3d54e11e408a5f9ffeee8b3d8bb666255695b3fc20d6'
})
depends_on 'gawk' => :build
depends_on 'filecmd' # L Fixes creating symlinks on a fresh install.
depends_on 'libidn2' => :build
depends_on 'texinfo' => :build
depends_on 'hashpipe' => :build
conflicts_ok
no_env_options
no_upstream_update
def self.patch
FileUtils.mkdir 'fedora'
# Patch to enable build-local-archive
system 'curl -Ls https://src.fedoraproject.org/rpms/glibc/raw/f30/f/glibc-fedora-locarchive.patch | \
hashpipe sha256 0acccf57d8c6e7de82871c61ccb845f7a1ae13ae1fbc65995d347de8367c7bb1 | \
patch -Np1 --binary'
system 'curl -Ls https://src.fedoraproject.org/rpms/glibc/raw/f30/f/build-locale-archive.c | \
hashpipe sha256 6834e8b8f2a987bf8adfd265c0e01665f102c7115db94b99ec36376b68e9d3fa > fedora/build-locale-archive.c'
system "sed -i 's,/lib/locale,/lib#{CREW_LIB_SUFFIX}/locale,g' fedora/build-locale-archive.c"
system "sed -i 's,/usr/sbin/tzdata-update,/bin/true,g' fedora/build-locale-archive.c"
system "sed -i 's,verbose,locale_verbose,g' fedora/build-locale-archive.c"
system "sed -i 's,be_quiet,locale_be_quiet,g' fedora/build-locale-archive.c"
@googlesource_branch = 'release-R109-15236.B'
system "git clone --depth=1 -b #{@googlesource_branch} https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay googlesource"
# Remove conflicting patches.
FileUtils.rm 'googlesource/sys-libs/glibc/files/local/glibc-2.35/0005-Add-dlopen_with_offset-to-glibc.patch'
FileUtils.rm 'googlesource/sys-libs/glibc/files/local/glibc-2.35/0006-glibc-add-clang-style-FORTIFY.patch'
Dir.glob('googlesource/sys-libs/glibc/files/local/glibc-2.35/*.patch').each do |patch|
puts "patch -Np1 < #{patch} || true" if @opt_verbose
system "patch -Np1 -F 10 -i #{patch} || true"
end
end
def self.build
FileUtils.mkdir_p 'glibc_build'
Dir.chdir 'glibc_build' do
if Gem::Version.new(@libc_version.to_s) >= Gem::Version.new('2.32')
# Optimization flags from https://github.com/InBetweenNames/gentooLTO
case ARCH
when 'armv7l', 'aarch64'
system "CFLAGS='-pipe -O2 -fipa-pta -fno-semantic-interposition -fdevirtualize-at-ltrans' \
LD=ld ../configure \
--prefix=#{CREW_PREFIX} \
--libdir=#{CREW_LIB_PREFIX} \
--with-headers=#{CREW_PREFIX}/include \
--without-gd \
ac_cv_header_cpuid_h=yes \
ac_cv_lib_audit_audit_log_user_avc_message=no \
ac_cv_lib_cap_cap_init=no \
--disable-profile \
--disable-sanity-checks \
--disable-werror \
--enable-bind-now \
--enable-hacker-mode \
--enable-kernel=4.14 \
--enable-shared \
libc_cv_386_tls=yes \
libc_cv_arm_tls=yes \
libc_cv_asm_cfi_directives=yes \
libc_cv_broken_visibility_attribute=no \
libc_cv_c_cleanup=yes \
libc_cv_forced_unwind=yes \
libc_cv_gcc___thread=yes \
libc_cv_hashstyle=no \
libc_cv_mlong_double_128ibm=yes \
libc_cv_mlong_double_128=yes \
libc_cv_predef_fortify_source=no \
libc_cv_visibility_attribute=yes \
libc_cv_x86_64_tls=yes \
libc_cv_z_combreloc=yes \
libc_cv_z_execstack=yes \
libc_cv_z_initfirst=yes \
libc_cv_z_nodelete=yes \
libc_cv_z_nodlopen=yes \
libc_cv_z_relro=yes \
--with-binutils=binutils \
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new \
--without-cvs \
--without-selinux \
"
# install-symbolic-link segfaults on armv7l, but we're deleting
# the libraries anyways, so it doesn't matter.
system "sed -i 's,install-symbolic-link,/bin/true,g' ../Makefile"
system "sed -i 's,symbolic-link-prog := $(elf-objpfx)sln,symbolic-link-prog := /bin/true,g' ../Makerules"
when 'x86_64'
File.write('configparms', "slibdir=#{CREW_LIB_PREFIX}", mode: 'a+')
system "CFLAGS='-pipe -O2 -fipa-pta -fno-semantic-interposition -falign-functions=32 -fdevirtualize-at-ltrans' \
LD=ld ../configure \
--prefix=#{CREW_PREFIX} \
--libdir=#{CREW_LIB_PREFIX} \
--with-headers=#{CREW_PREFIX}/include \
ac_cv_header_cpuid_h=yes \
ac_cv_lib_audit_audit_log_user_avc_message=no \
ac_cv_lib_cap_cap_init=no \
--disable-profile \
--disable-sanity-checks \
--disable-werror \
--enable-bind-now \
--enable-cet \
--enable-hacker-mode \
--enable-kernel=4.14 \
--enable-shared \
libc_cv_386_tls=yes \
libc_cv_arm_tls=yes \
libc_cv_asm_cfi_directives=yes \
libc_cv_broken_visibility_attribute=no \
libc_cv_c_cleanup=yes \
libc_cv_forced_unwind=yes \
libc_cv_gcc___thread=yes \
libc_cv_hashstyle=no \
libc_cv_mlong_double_128ibm=yes \
libc_cv_mlong_double_128=yes \
libc_cv_predef_fortify_source=no \
libc_cv_visibility_attribute=yes \
libc_cv_x86_64_tls=yes \
libc_cv_z_combreloc=yes \
libc_cv_z_execstack=yes \
libc_cv_z_initfirst=yes \
libc_cv_z_nodelete=yes \
libc_cv_z_nodlopen=yes \
libc_cv_z_relro=yes \
--with-binutils=binutils \
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new \
--without-cvs \
--without-gd \
--without-selinux \
"
end
end
system "make PARALLELMFLAGS='-j #{CREW_NPROC}' || make || make PARALLELMFLAGS='-j 1'"
if Gem::Version.new(@libc_version.to_s) >= Gem::Version.new('2.32')
system "gcc -Os -g -static -o build-locale-archive ../fedora/build-locale-archive.c \
../glibc_build/locale/locarchive.o \
../glibc_build/locale/md5.o \
../glibc_build/locale/record-status.o \
-I. -DDATADIR=\\\"#{CREW_PREFIX}/share\\\" -DPREFIX=\\\"#{CREW_PREFIX}\\\" \
-L../glibc_build \
-B../glibc_build/csu/ -lc -lc_nonshared"
end
end
end
def self.install
FileUtils.mkdir_p CREW_DEST_LIB_PREFIX
system "sed 's,/usr/#{ARCH_LIB}/libc_nonshared.a,#{CREW_LIB_PREFIX}/libc_nonshared.a,g' /usr/#{ARCH_LIB}/libc.so > #{CREW_DEST_LIB_PREFIX}/libc.so"
FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/etc"
Dir.chdir 'glibc_build' do
system 'touch', "#{CREW_DEST_PREFIX}/etc/ld.so.conf"
case ARCH
when 'aarch64', 'armv7l'
system "make -j1 DESTDIR=#{CREW_DEST_DIR} install || true" # "sln elf/symlink.list" fails on armv7l
when 'x86_64'
system "make -j1 DESTDIR=#{CREW_DEST_DIR} install"
end
if Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.32')
system "install -Dt #{CREW_DEST_PREFIX}/bin -m755 build-locale-archive"
system "make -j1 DESTDIR=#{CREW_DEST_DIR} localedata/install-locales"
end
Dir.chdir CREW_DEST_LIB_PREFIX do
puts "System glibc version is #{LIBC_VERSION}.".lightblue
puts 'Creating symlinks to system glibc version to prevent breakage.'.lightblue
@crew_libc_version = @libc_version
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 = %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 @crew_libc_version.to_f >= 2.35
@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_DEST_LIB_PREFIX, File.basename(k))
end
end
end
end
# Only save libnsl.so.2, since libnsl.so.1 is provided by perl
# For this to work, build on a M107 or newer container.
FileUtils.ln_sf File.realpath("#{CREW_DEST_LIB_PREFIX}/libnsl.so.1"), "#{CREW_DEST_LIB_PREFIX}/libnsl.so.2"
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so"
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so.1"
# Remove libmount.so since it conflicts with the one from util_linux.
FileUtils.rm Dir.glob("#{CREW_DEST_LIB_PREFIX}/libmount.so*")
end
def self.check
# Dir.chdir 'glibc_build' do
# system 'make -j1 check'
# end
end
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/)
@crew_libc_version = @crew_libcvertokens[@crew_libcvertokens.find_index('version') + 1].sub!(/[[:punct:]]?$/, '')
puts "Package glibc version is #{@crew_libc_version}.".lightblue
else
@crew_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')
Dir.chdir CREW_LIB_PREFIX do
puts "System glibc version is #{@crew_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
return unless Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.32') && Gem::Version.new(CREW_KERNEL_VERSION.to_s) >= Gem::Version.new('5.10')
puts 'Paring locales to a minimal set.'.lightblue
system 'localedef --list-archive | grep -v -i -e ^en -e ^cs -e ^de -e ^es -e ^fa -e ^fe -e ^it -e ^ja -e ^ru -e ^tr -e ^zh -e ^C| xargs localedef --delete-from-archive',
exception: false
FileUtils.mv "#{CREW_LIB_PREFIX}/locale/locale-archive", "#{CREW_LIB_PREFIX}/locale/locale-archive.tmpl"
unless File.file?('')
downloader "https://raw.githubusercontent.com/bminor/glibc/release/#{@crew_libc_version}/master/intl/locale.alias",
'SKIP', "#{CREW_PREFIX}/share/locale/locale.alias"
end
if @opt_verbose
system 'build-locale-archive'
else
system 'build-locale-archive', %i[out err] => File::NULL
end
FileUtils.rm "#{CREW_LIB_PREFIX}/locale/locale-archive.tmpl"
# minimum set of locales -> #{CREW_LIB_PREFIX}/locale/locale-archive
# We just whitelist certain locales and delete everything else like other distributions do, e.g.
# for dir in locale i18n; do
# find #{CREW_PREFIX}/usr/share/${dir} -mindepth 1 -maxdepth 1 -type d -not \( -name "${KEEPLANG}" -o -name POSIX \) -exec rm -rf {} +
# done
# This is the array of locales to save:
@locales = %w[C cs_CZ de_DE en es_MX fa_IR fr_FR it_IT ja_JP ru_RU tr_TR zh]
@localedirs = %W[#{CREW_PREFIX}/share/locale #{CREW_PREFIX}/share/i18n/locales]
@filelist = File.readlines("#{CREW_META_PATH}/glibc_build235.filelist")
@localedirs.each do |localedir|
Dir.chdir localedir do
Dir['*'].each do |f|
next if @locales.any? { |s| File.basename(f).include?(s) }
FileUtils.rm_f f
@fpath = "#{localedir}/#{f}"
@filelist.reject! { |e| e.include?(@fpath) }
end
end
end
puts 'Updating glibc package filelist...'.lightblue
File.open("#{CREW_META_PATH}/glibc_build235.filelist", 'w+') do |f|
f.puts(@filelist)
end
end
end

View File

@@ -1,332 +0,0 @@
require 'package'
class Glibc_build237 < Package
description 'The GNU C Library project provides the core libraries for GNU/Linux systems.'
homepage 'https://www.gnu.org/software/libc/'
version '2.37-2'
license 'LGPL-2.1+, BSD, HPND, ISC, inner-net, rc, and PCRE'
# @libc_version = LIBC_VERSION
@libc_version = '2.37'
compatibility 'aarch64 armv7l x86_64'
min_glibc version.split('-').first
max_glibc version.split('-').first
source_url 'https://github.com/bminor/glibc.git'
# git_hashtag 'glibc-2.37'
# From the release/2.37/master/ branch...
git_hashtag 'f82e0922de82ccee60c15d5ffd9e7165ced00a83'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '41389ad4ecc6183fca15e2335e20b1617585ea068eed0e280d05dec5aebd9e10',
armv7l: '41389ad4ecc6183fca15e2335e20b1617585ea068eed0e280d05dec5aebd9e10',
x86_64: '476d322fca4f023479303c2a39e638d1bfaf12b78693e3b3a96dbece93a76df2'
})
depends_on 'gawk' => :build
depends_on 'filecmd' # L Fixes creating symlinks on a fresh install.
depends_on 'libidn2' => :build
depends_on 'texinfo' => :build
depends_on 'patchelf' # L
conflicts_ok
no_env_options
# strip breaks libc.so.6
no_strip
no_upstream_update
# These are the only locales we want.
@locales = %w[C cs_CZ de_DE en es_MX fa_IR fr_FR it_IT ja_JP ru_RU tr_TR zh].to_set
def self.patch
FileUtils.mkdir 'fedora'
# Patch to enable build-local-archive
downloader 'https://src.fedoraproject.org/rpms/glibc/raw/f30/f/glibc-fedora-locarchive.patch', '0acccf57d8c6e7de82871c61ccb845f7a1ae13ae1fbc65995d347de8367c7bb1'
system 'patch -Np1 -i glibc-fedora-locarchive.patch'
downloader 'https://src.fedoraproject.org/rpms/glibc/raw/f30/f/build-locale-archive.c', '6834e8b8f2a987bf8adfd265c0e01665f102c7115db94b99ec36376b68e9d3fa', 'fedora/build-locale-archive.c'
system "sed -i 's,/lib/locale,/lib#{CREW_LIB_SUFFIX}/locale,g' fedora/build-locale-archive.c"
system "sed -i 's,/usr/sbin/tzdata-update,/bin/true,g' fedora/build-locale-archive.c"
system "sed -i 's,verbose,locale_verbose,g' fedora/build-locale-archive.c"
system "sed -i 's,be_quiet,locale_be_quiet,g' fedora/build-locale-archive.c"
# Reverse Fix name space violation in fortify wrappers (bug 32052)
# https://github.com/bminor/glibc/commit/6e642a47fa483f1f571a7ca68d8f6517b259cd21
# It causes this error:
# ../wcsmbs/bits/wchar2.h:248:10: error: implicit declaration of function __vswprintf_alias; did you mean __swprintf_alias? [-Wimplicit-function-declaration]
downloader 'https://github.com/bminor/glibc/commit/6e642a47fa483f1f571a7ca68d8f6517b259cd21.diff', '6e9fd773c1ad1be331ea2a6d81452bc2e97f6e70942a670c98fd07d356f76dc9'
puts 'Reversing patch: Fix name space violation in fortify wrappers (bug 32052)'
system 'patch -Np1 -R -i 6e642a47fa483f1f571a7ca68d8f6517b259cd21.diff'
@googlesource_branch = 'release-R129-16002.B'
system "git clone --depth=1 -b #{@googlesource_branch} https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay googlesource"
# We need to avoid this patch to preserve float128. Otherwise strtof128,
# strfromf128, and __strtof128_nan, are not available in our glibc.
# This still requires hackery to avoid issues, as handled below by
# renaming our libc.so.6 to libC.so.6 and using patchelf to add
# needs for our libm.so.6 as well as the system provided libc.so.6.
# gcc_lib's stdc++.so.6 also needs to be told to need our glibc's
# renamed libC.so.6. Additionally, packages on these systems need to
# be built with CREW_LINKER_FLAGS=' /usr/local/lib64/libC.so.6 ' set.
#
FileUtils.rm 'googlesource/sys-libs/glibc/files/local/glibc-2.37/0003-Disable-float128-support-for-x86_64-x86.patch'
# Please submit suggestions for less hacky workarounds.
#
Dir.glob('googlesource/sys-libs/glibc/files/local/glibc-2.37/*.patch').each do |patch|
puts "patch -Np1 < #{patch} || true" if @opt_verbose
system "patch -Np1 -F 10 -i #{patch} || true"
end
return unless Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.32')
# These are the only locales we want.
@locales = %w[C cs_CZ de_DE en es_MX fa_IR fr_FR it_IT ja_JP ru_RU tr_TR zh].to_set
puts 'Paring locales to a minimal set before build.'.lightblue
localetypes = `awk -F '/' '{print $2}' localedata/SUPPORTED | sort -u | awk '{print $1}'`.split.flat_map(&:split)
localetypes_sed = localetypes.join('|')
Dir['localedata/{*.in,locales/*}'].compact.each do |f|
g = File.basename(f).gsub(/.UTF-8.*.in/, '').gsub(/.ISO-8859-.*.in/, '')
h = g.gsub(/_.*/, '')
locale_test = [g, h].uniq
# Just check to see if the set difference is smaller than the
# original set of locales.
if (@locales - locale_test).length < @locales.length
puts "Saving locale: #{f}"
else
# FileUtils.rm(f)
system "sed -i -r '/^[[:space:]]#{g}.*(#{localetypes_sed}).*\\\\/d' localedata/Makefile", exception: false
system "sed -i -r '/^#{g}.*(#{localetypes_sed}).*\\\\/d' localedata/SUPPORTED", exception: false
end
end
end
def self.build
FileUtils.mkdir_p 'glibc_build'
Dir.chdir 'glibc_build' do
if Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.32')
# Optimization flags from https://github.com/InBetweenNames/gentooLTO
case ARCH
when 'armv7l', 'aarch64'
system "CFLAGS='-fuse-ld=mold -pipe -O2 -fipa-pta \
-fno-semantic-interposition -fdevirtualize-at-ltrans' \
../configure \
--prefix=#{CREW_PREFIX} \
--libdir=#{CREW_LIB_PREFIX} \
--with-headers=#{CREW_PREFIX}/include \
--without-gd \
ac_cv_header_cpuid_h=yes \
ac_cv_lib_audit_audit_log_user_avc_message=no \
ac_cv_lib_cap_cap_init=no \
--disable-profile \
--disable-sanity-checks \
--disable-werror \
--enable-bind-now \
--enable-hacker-mode \
--enable-kernel=5.10 \
--enable-shared \
libc_cv_386_tls=yes \
libc_cv_arm_tls=yes \
libc_cv_asm_cfi_directives=yes \
libc_cv_broken_visibility_attribute=no \
libc_cv_c_cleanup=yes \
libc_cv_forced_unwind=yes \
libc_cv_gcc___thread=yes \
libc_cv_hashstyle=no \
libc_cv_mlong_double_128ibm=yes \
libc_cv_mlong_double_128=yes \
libc_cv_predef_fortify_source=no \
libc_cv_visibility_attribute=yes \
libc_cv_x86_64_tls=yes \
libc_cv_z_combreloc=yes \
libc_cv_z_execstack=yes \
libc_cv_z_initfirst=yes \
libc_cv_z_nodelete=yes \
libc_cv_z_nodlopen=yes \
libc_cv_z_relro=yes \
--with-binutils=binutils \
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new \
--without-cvs \
--without-selinux \
"
# install-symbolic-link segfaults on armv7l, but we're deleting
# the libraries anyways, so it doesn't matter.
system "sed -i 's,install-symbolic-link,/bin/true,g' ../Makefile"
system "sed -i 's,symbolic-link-prog := $(elf-objpfx)sln,symbolic-link-prog := /bin/true,g' ../Makerules"
when 'x86_64'
# https://source.chromium.org/chromiumos/_/chromium/chromiumos/overlays/chromiumos-overlay/+/a73162d56fd689b26812282c3f9bc4f2b5a67530:sys-libs/glibc/glibc-2.37.ebuild
File.write('configparms', "slibdir=#{CREW_LIB_PREFIX}", mode: 'a+')
system "CFLAGS='-fuse-ld=mold -pipe -O2 -fipa-pta \
-fno-semantic-interposition -falign-functions=32 \
-fdevirtualize-at-ltrans -mstackrealign' \
../configure \
--prefix=#{CREW_PREFIX} \
--libdir=#{CREW_LIB_PREFIX} \
--with-headers=#{CREW_PREFIX}/include \
ac_cv_header_cpuid_h=yes \
ac_cv_lib_audit_audit_log_user_avc_message=no \
ac_cv_lib_cap_cap_init=no \
--disable-profile \
--disable-sanity-checks \
--disable-werror \
--enable-bind-now \
--enable-cet \
--enable-hacker-mode \
--enable-kernel=5.10 \
--enable-shared \
libc_cv_386_tls=yes \
libc_cv_arm_tls=yes \
libc_cv_asm_cfi_directives=yes \
libc_cv_broken_visibility_attribute=no \
libc_cv_c_cleanup=yes \
libc_cv_forced_unwind=yes \
libc_cv_gcc___thread=yes \
libc_cv_hashstyle=no \
libc_cv_mlong_double_128ibm=yes \
libc_cv_mlong_double_128=yes \
libc_cv_predef_fortify_source=no \
libc_cv_visibility_attribute=yes \
libc_cv_x86_64_tls=yes \
libc_cv_z_combreloc=yes \
libc_cv_z_execstack=yes \
libc_cv_z_initfirst=yes \
libc_cv_z_nodelete=yes \
libc_cv_z_nodlopen=yes \
libc_cv_z_relro=yes \
--with-binutils=binutils \
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new \
--without-cvs \
--without-gd \
--without-selinux \
"
end
end
system "make PARALLELMFLAGS='-j #{CREW_NPROC}' || make || make PARALLELMFLAGS='-j 1'"
if Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.32')
system "gcc -Os -g -static -o build-locale-archive ../fedora/build-locale-archive.c \
../glibc_build/locale/locarchive.o \
../glibc_build/locale/md5.o \
../glibc_build/locale/record-status.o \
-I. -DDATADIR=\\\"#{CREW_PREFIX}/share\\\" -DPREFIX=\\\"#{CREW_PREFIX}\\\" \
-L../glibc_build \
-B../glibc_build/csu/ -lc -lc_nonshared"
end
end
end
def self.install
FileUtils.mkdir_p CREW_DEST_LIB_PREFIX
system "sed 's,/usr/#{ARCH_LIB}/libc_nonshared.a,#{CREW_LIB_PREFIX}/libc_nonshared.a,g' /usr/#{ARCH_LIB}/libc.so > #{CREW_DEST_LIB_PREFIX}/libc.so"
FileUtils.mkdir_p "#{CREW_DEST_PREFIX}/etc"
Dir.chdir 'glibc_build' do
system 'touch', "#{CREW_DEST_PREFIX}/etc/ld.so.conf"
case ARCH
when 'aarch64', 'armv7l'
system "make -j1 DESTDIR=#{CREW_DEST_DIR} install || true" # "sln elf/symlink.list" fails on armv7l
when 'i686', 'x86_64'
system "make -j1 DESTDIR=#{CREW_DEST_DIR} install || make -j1 DESTDIR=#{CREW_DEST_DIR} install || true"
end
if Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.32')
system "install -Dt #{CREW_DEST_PREFIX}/bin -m755 build-locale-archive"
system "make -j1 DESTDIR=#{CREW_DEST_DIR} localedata/install-locales || make -j1 DESTDIR=#{CREW_DEST_DIR} localedata/install-locales"
end
Dir.chdir CREW_DEST_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 '/lib/ld-linux-armhf.so.3', 'ld-linux-armhf.so.3'
when 'x86_64'
FileUtils.ln_sf '/lib64/ld-linux-x86-64.so.2', 'ld-linux-x86-64.so.2'
FileUtils.ln_sf '/lib64/ld-linux-x86-64.so.2', 'ld-lsb-x86-64.so.3'
end
# newer x86_64 ChromeOS glibc lacks strtof128, strfromf128
# and __strtof128_nan
if ARCH == 'x86_64' && Gem::Version.new(@libc_version.to_s) >= Gem::Version.new('2.37')
# Save our copy of libc.so.6
FileUtils.cp File.join(CREW_DEST_LIB_PREFIX, 'libc.so.6'), File.join(CREW_DEST_LIB_PREFIX, 'libC.so.6')
FileUtils.cp "/#{ARCH_LIB}/libc.so.6", File.join(CREW_DEST_LIB_PREFIX, 'libc.so.6.tmp')
# Patching the running libc.so.6 breaks.
Kernel.system 'patchelf --add-needed libC.so.6 libc.so.6.tmp'
FileUtils.cp File.join(CREW_DEST_LIB_PREFIX, 'libc.so.6.tmp'), File.join(CREW_DEST_LIB_PREFIX, 'libc.so.6')
FileUtils.rm File.join(CREW_DEST_LIB_PREFIX, 'libc.so.6.tmp')
# Copy over the system lib[c,m].so.6
# FileUtils.cp "/#{ARCH_LIB}/libc.so.6", File.join(CREW_DEST_LIB_PREFIX, 'libc.so.6')
# FileUtils.cp "/#{ARCH_LIB}/libm.so.6", File.join(CREW_DEST_LIB_PREFIX, 'libm.so.6')
# Link our libm to also require our renamed libC.so.6
# which provides the float128 functions strtof128, strfromf128,
# and __strtof128_nan.
# For some reason handling libc.so.6 here isn't working.
libc_patch_libraries = %w[libm.so.6]
libc_patch_libraries.each do |lib|
FileUtils.cp lib, "#{lib}.tmp"
Kernel.system "patchelf --add-needed libC.so.6 #{lib}.tmp"
Kernel.system "patchelf --remove-needed libc.so.6 #{lib}.tmp", exception: false
FileUtils.mv lib, "#{lib}.old"
FileUtils.cp "#{lib}.tmp", lib
FileUtils.rm "#{lib}.tmp"
FileUtils.rm "#{lib}.old"
puts "#{lib} patched for use with Chromebrew's glibc.".lightgreen
end
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.37')
@libraries -= ['libc'] if Gem::Version.new(@libc_version.to_s) >= Gem::Version.new('2.37') && ARCH == 'x86_64'
# Also save our copy of libm.so.6 since it has the float128 functions
@libraries -= ['libm'] if Gem::Version.new(@libc_version.to_s) >= Gem::Version.new('2.37') && ARCH == 'x86_64'
@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.reject { |f| File.directory?(f) }.each do |f|
@filetype = `file #{f}`.chomp
puts "f: #{@filetype}" if @opt_verbose
if ['shared object', 'symbolic link'].any? { |type| @filetype.include?(type) }
g = File.basename(f)
FileUtils.ln_sf f.to_s, "#{CREW_DEST_LIB_PREFIX}/#{g}"
elsif @opt_verbose
puts "#{f} excluded because #{@filetype}"
end
end
end
end
end
# Only save libnsl.so.2, since libnsl.so.1 is provided by perl
# For this to work, build on a M107 or newer container.
FileUtils.ln_sf File.realpath("/#{ARCH_LIB}/libnsl.so.1"), "#{CREW_DEST_LIB_PREFIX}/libnsl.so.2" if LIBC_VERSION.to_f >= 2.35
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so"
FileUtils.rm_f "#{CREW_DEST_LIB_PREFIX}/libnsl.so.1"
# Remove libmount.so since it conflicts with the one from util_linux.
FileUtils.rm Dir.glob("#{CREW_DEST_LIB_PREFIX}/libmount.so*")
locale_keeps = @locales.map { |i| "-e ^#{i}" }.join(' ')
system "localedef --list-archive --prefix=#{CREW_DEST_PREFIX}| grep -v -i #{locale_keeps}| xargs localedef --delete-from-archive --prefix=#{CREW_DEST_PREFIX}",
exception: false
end
def self.postinstall
return unless Gem::Version.new(@libc_version.to_s) > Gem::Version.new('2.32') && Gem::Version.new(CREW_KERNEL_VERSION.to_s) >= Gem::Version.new('5.10')
FileUtils.mv "#{CREW_LIB_PREFIX}/locale/locale-archive", "#{CREW_LIB_PREFIX}/locale/locale-archive.tmpl"
downloader "https://raw.githubusercontent.com/bminor/glibc/release/#{@libc_version}/master/intl/locale.alias",
'SKIP', "#{CREW_PREFIX}/share/locale/locale.alias"
# minimum set of locales -> #{CREW_LIB_PREFIX}/locale/locale-archive
# We just whitelist certain locales and delete everything else like other distributions do, e.g.
# for dir in locale i18n; do
# find #{CREW_PREFIX}/usr/share/${dir} -mindepth 1 -maxdepth 1 -type d -not \( -name "${KEEPLANG}" -o -name POSIX \) -exec rm -rf {} +
# done
if CREW_VERBOSE
system "build-locale-archive --install-langs=#{@locales.join(':')}", exception: false
else
system "build-locale-archive --install-langs=#{@locales.join(':')}", %i[out err] => File::NULL, exception: false
end
FileUtils.rm "#{CREW_LIB_PREFIX}/locale/locale-archive.tmpl"
end
end

View File

@@ -1,21 +0,0 @@
require 'package'
Package.load_package("#{__dir__}/glibc_standalone.rb")
class Glibc_dev < Package
description 'glibc: everything except what is in glibc_lib'
homepage Glibc_standalone.homepage
license Glibc_standalone.license
source_url 'SKIP'
is_fake
if LIBC_VERSION <= '2.41'
version Glibc_standalone.version
compatibility Glibc_standalone.compatibility
depends_on 'glibc_standalone'
else
version LIBC_VERSION
compatibility 'aarch64 armv7l x86_64'
depends_on 'glibc_fallthrough'
end
end

View File

@@ -1,42 +0,0 @@
require 'package'
Package.load_package("#{__dir__}/glibc_build235.rb")
class Glibc_dev235 < Package
description 'glibc: everything except what is in glibc_lib'
homepage Glibc_build235.homepage
version '2.35'
license Glibc_build235.license
compatibility 'aarch64 armv7l x86_64'
min_glibc version.split('-').first
max_glibc version.split('-').first
source_url 'SKIP'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '18779266ab02bc47f080a3d12d710f6fca9539ce9d7d96d824bbb8d51294d530',
armv7l: '18779266ab02bc47f080a3d12d710f6fca9539ce9d7d96d824bbb8d51294d530',
x86_64: '79fecb7302d1e7e1da24f6ddec16c672cc3d21e93c549930e48c5290f5a31939'
})
depends_on 'glibc_build235' => :build
depends_on 'glibc_lib235' # R
no_upstream_update
def self.install
puts 'Installing Glibc_build to pull files for build...'.lightblue
@filelist_path = File.join(CREW_META_PATH, 'glibc_build235.filelist')
abort 'File list for Glibc_build does not exist!'.lightred unless File.file?(@filelist_path)
@filelist = File.readlines(@filelist_path, chomp: true).sort
@filelist.each do |filename|
next if filename.include?('.so') || filename.include?('bin/')
@destpath = File.join(CREW_DEST_DIR, filename)
# next unless File.file?(filename)
@filename_target = File.realpath(filename)
FileUtils.install @filename_target, @destpath
end
end
end

View File

@@ -1,46 +0,0 @@
require 'package'
Package.load_package("#{__dir__}/glibc_build237.rb")
class Glibc_dev237 < Package
description 'glibc: everything except what is in glibc_lib'
homepage Glibc_build237.homepage
version '2.37-patchelf2'
license Glibc_build237.license
compatibility 'aarch64 armv7l x86_64'
min_glibc version.split('-').first
max_glibc version.split('-').first
source_url 'SKIP'
binary_compression 'tar.zst'
binary_sha256({
aarch64: 'd30575a011326b56ff235078aeb881c2a3d24619cb1697f7eed9b71bd9a33b42',
armv7l: 'd30575a011326b56ff235078aeb881c2a3d24619cb1697f7eed9b71bd9a33b42',
x86_64: '9689db1bfc8580b61409cc9b23591c1560b3651a2f1474815aab301611866553'
})
depends_on 'glibc_build237' => :build
depends_on 'glibc_lib237' # R
conflicts_ok
no_shrink
no_source_build
no_strip
no_upstream_update
def self.install
puts 'Installing Glibc_build to pull files for build...'.lightblue
@filelist_path = File.join(CREW_META_PATH, 'glibc_build237.filelist')
abort 'File list for Glibc_build does not exist!'.lightred unless File.file?(@filelist_path)
@filelist = File.readlines(@filelist_path, chomp: true).sort
@filelist.each do |filename|
next if filename.include?('.so') || filename.include?('bin/')
@destpath = File.join(CREW_DEST_DIR, filename)
# next unless File.file?(filename)
@filename_target = File.realpath(filename)
FileUtils.install @filename_target, @destpath
end
end
end

View File

@@ -1,58 +0,0 @@
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'
depends_on 'gawk' => :build
depends_on 'filecmd' # L 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

View File

@@ -1,21 +0,0 @@
require 'package'
Package.load_package("#{__dir__}/glibc_standalone.rb")
class Glibc_lib < Package
description 'glibc libraries'
homepage Glibc_standalone.homepage
license Glibc_standalone.license
source_url 'SKIP'
is_fake
if LIBC_VERSION <= '2.41'
version Glibc_standalone.version
compatibility Glibc_standalone.compatibility
depends_on 'glibc_standalone'
else
version LIBC_VERSION
compatibility 'aarch64 armv7l x86_64'
depends_on 'glibc_fallthrough'
end
end

View File

@@ -1,40 +0,0 @@
require 'package'
Package.load_package("#{__dir__}/glibc_build235.rb")
class Glibc_lib235 < Package
description 'glibc libraries'
homepage Glibc_build235.homepage
version '2.35' # Do not use @_ver here, it will break the installer.
license Glibc_build235.license
compatibility 'aarch64 armv7l x86_64'
min_glibc version.split('-').first
max_glibc version.split('-').first
source_url 'SKIP'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '877f6ce14ccdbf7ca103a0e131d40a1f91654183599812b4917eae7cfce37550',
armv7l: '877f6ce14ccdbf7ca103a0e131d40a1f91654183599812b4917eae7cfce37550',
x86_64: '66d0971a2fbf1b69c7030ba7a8bde986baeef38870ee13606d16f381f16a551a'
})
depends_on 'glibc_build235' => :build
conflicts_ok
no_upstream_update
def self.install
puts 'Installing Glibc_build235 to pull files for build...'.lightblue
@filelist_path = File.join(CREW_META_PATH, 'glibc_build235.filelist')
abort 'File list for Glibc_build235 does not exist!'.lightred unless File.file?(@filelist_path)
@filelist = File.readlines(@filelist_path, chomp: true).sort
@filelist.each do |filename|
next unless filename.include?('.so') || filename.include?('bin/')
@destpath = File.join(CREW_DEST_DIR, filename)
@filename_target = File.realpath(filename)
FileUtils.install @filename_target, @destpath
end
end
end

View File

@@ -1,86 +0,0 @@
require 'package'
Package.load_package("#{__dir__}/glibc_build237.rb")
class Glibc_lib237 < Package
description 'glibc libraries'
homepage Glibc_build237.homepage
version '2.37-patchelf2' # Do not use @_ver here, it will break the installer.
license Glibc_build237.license
compatibility 'aarch64 armv7l x86_64'
min_glibc version.split('-').first
max_glibc version.split('-').first
source_url 'SKIP'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '5c704c9649dca04ddd8a3b3c3a46a81cdf95a162e07362b64992452876297545',
armv7l: '5c704c9649dca04ddd8a3b3c3a46a81cdf95a162e07362b64992452876297545',
x86_64: 'd83b21de790dbf7e33418ad86dd44fb2af933cc811985f2482c8fad696654220'
})
depends_on 'glibc_build237' => :build
conflicts_ok
no_source_build
# strip breaks libc.so.6
no_strip
no_upstream_update
def self.install
puts 'Installing Glibc_build237 to pull files for build...'.lightblue
@filelist_path = File.join(CREW_META_PATH, 'glibc_build237.filelist')
abort 'File list for Glibc_build237 does not exist! Please run: crew reinstall glibc_build237'.lightred unless File.file?(@filelist_path)
@filelist = File.readlines(@filelist_path, chomp: true).sort
@filelist.each do |filename|
next unless (filename.include?('.so') || filename.include?('bin/')) && File.file?(filename)
@destpath = File.join(CREW_DEST_DIR, filename)
@filename_target = File.realpath(filename)
FileUtils.install @filename_target, @destpath
end
if ARCH == 'x86_64'
puts 'Skipping creating symlinks from system Glibc libraries...'.orange
else
# Create symlinks to system glibc libraries.
glibc_libs = %w[libanl.so.1 libc_malloc_debug.so.0 libdl.so.2
libmvec.so.1 libnss_dns.so.2 libnss_files.so.2 libpthread.so.0
libresolv.so.2 librt.so.1 libthread_db.so.1 libutil.so.1]
glibc_libs.delete_if { |lib| lib == 'libc.so.6' } if (ARCH == 'x86_64') && (Gem::Version.new(LIBC_VERSION) >= Gem::Version.new('2.37'))
glibc_libs.each do |lib|
# Do not replace libraries that have been patched for our glibc libC.so.6.
next if Kernel.system("patchelf --print-needed #{File.join(CREW_LIB_PREFIX, lib)} | grep -q libC.so.6")
puts "Creating symlink of system Glibc's /#{ARCH_LIB}/#{lib} into #{CREW_DEST_LIB_PREFIX}/#{lib}...".orange
FileUtils.ln_sf "/#{ARCH_LIB}/#{lib}", "#{CREW_DEST_LIB_PREFIX}/#{lib}"
end
end
end
def self.postinstall
return unless (ARCH == 'x86_64') && (Gem::Version.new(LIBC_VERSION) >= Gem::Version.new('2.37'))
puts "patchelf is needed. Please run: 'crew install patchelf ; crew postinstall #{name}'".lightred unless File.file?(File.join(CREW_PREFIX, 'bin/patchelf'))
# Link the system libc.so.6 to also require our renamed libC.so.6
# which provides the float128 functions strtof128, strfromf128,
# and __strtof128_nan.
libc_patch_libraries = %w[libc.so.6 libm.so.6 libstdc++.so.6]
libc_patch_libraries.keep_if { |lib| File.file?(File.join(CREW_LIB_PREFIX, lib)) }
libc_patch_libraries.delete_if { |lib| Kernel.system "patchelf --print-needed #{File.join(CREW_LIB_PREFIX, lib)} | grep -q libC.so.6" }
return if libc_patch_libraries.empty?
if File.file?(File.join(CREW_LIB_PREFIX, 'libC.so.6'))
Dir.chdir(CREW_LIB_PREFIX) do
libc_patch_libraries.each do |lib|
FileUtils.cp lib, "#{lib}.tmp"
Kernel.system "patchelf --add-needed libC.so.6 #{lib}.tmp" and Kernel.system "patchelf --remove-needed libc.so.6 #{lib}.tmp"
FileUtils.mv "#{lib}.tmp", lib
puts "#{lib} patched for use with Chromebrew's glibc.".lightgreen
end
end
end
end
end

View File

@@ -1,125 +0,0 @@
require 'package'
class Glibc_standalone < Package
description 'The GNU C Library project provides the core libraries for GNU/Linux systems.'
homepage 'https://www.gnu.org/software/libc/'
version '2.41-3'
license 'LGPL-2.1+, BSD, HPND, ISC, inner-net, rc, and PCRE'
compatibility 'all'
source_url "https://ftpmirror.gnu.org/glibc/glibc-#{version.partition('-')[0]}.tar.xz"
source_sha256 'a5a26b22f545d6b7d7b3dd828e11e428f24f4fac43c934fb071b6a7d0828e901'
binary_compression 'tar.zst'
binary_sha256({
aarch64: '4f76c7f82ad0dcf4e31ea3a8a8904228600eeffbf0c4444b06a8460cf33ff859',
armv7l: '4f76c7f82ad0dcf4e31ea3a8a8904228600eeffbf0c4444b06a8460cf33ff859',
i686: '9191a782dce9f5600dc9145e1beb0e0de9c1aca583ab7ddcbedd72b83b454b67',
x86_64: '2ad34bffe4dae0bea47e1ae0a3ca36e48babf91cc152efc88f9ed72a988029a7'
})
depends_on 'gawk' => :build
depends_on 'filecmd' # L Fixes creating symlinks on a fresh install.
depends_on 'libidn2' => :build
depends_on 'llvm' => :build
depends_on 'texinfo' => :build
depends_on 'libxcrypt' # Latest glibc removed libcrypt.so, add this for backward compatibility
depends_on 'patchelf' # L
depends_on 'glibc' # R
conflicts_ok
no_env_options
no_shrink
print_source_bashrc
def self.patch
system "git clone --depth=1 https://github.com/chromebrew/crew-package-glibc -b #{version}"
system 'filefix'
Dir.glob('crew-package-glibc/patches/*.patch') do |patch|
puts "Applying #{patch}...".yellow
system 'patch', '-p1', '-i', patch
end
end
def self.build
cc_macro_list = %W[
-DCREW_AUDIT=\\"#{CREW_GLIBC_PREFIX}/crew-audit.so\\"
-DCREW_PREFIX=\\"#{CREW_PREFIX}\\"
-DCREW_GLIBC_PREFIX=\\"#{CREW_GLIBC_PREFIX}\\"
-DCREW_GLIBC_VERSION=\\"#{version.partition('-')[0]}\\"
-DCREW_LD_LIBRARY_PATH=\\"#{CREW_GLIBC_PREFIX}:#{ENV.fetch('LD_LIBRARY_PATH', nil)}\\"
]
build_env = {
CFLAGS: "-O3 -pipe -fPIC -fno-lto -fuse-ld=lld #{cc_macro_list.join(' ')}",
CXXFLAGS: "-O3 -pipe -fPIC -fno-lto -fuse-ld=lld #{cc_macro_list.join(' ')}",
LDFLAGS: '-fno-lto -fuse-ld=lld',
LD: 'ld.lld' # use lld here as mold will segfault
}
config_opts = %W[
--prefix=#{CREW_PREFIX}
--libdir=#{CREW_GLIBC_PREFIX}
--libexecdir=#{CREW_PREFIX}/libexec
--mandir=#{CREW_MAN_PREFIX}
--with-headers=#{CREW_PREFIX}/include
--with-bugurl=https://github.com/chromebrew/chromebrew/issues/new
--enable-bind-now
--enable-fortify-source
--enable-kernel=3.2
--enable-shared
--disable-nscd
--disable-profile
--disable-sanity-checks
--disable-werror
--without-cvs
--without-selinux
]
config_opts << '--enable-cet' unless ARCH == 'i686'
FileUtils.mkdir_p 'builddir'
Dir.chdir('builddir') do
File.write 'configparms', <<~EOF
slibdir=#{CREW_GLIBC_PREFIX}
rtlddir=#{CREW_GLIBC_PREFIX}
sbindir=#{CREW_PREFIX}/bin
rootsbindir=#{CREW_PREFIX}/bin
EOF
system build_env.transform_keys(&:to_s), '../configure', *config_opts
system "make PARALLELMFLAGS='-j #{CREW_NPROC}'"
end
# compile crew-audit with system's glibc version, as we want it to work on system's glibc also
system "cc #{CREW_COMMON_FLAGS.sub(/-L[^\s]+/, '')} #{cc_macro_list.join(' ')} -shared crew-audit.c -o crew-audit.so", chdir: 'crew-package-glibc'
end
def self.install
FileUtils.mkdir_p %W[#{CREW_DEST_PREFIX}/etc/env.d #{CREW_DEST_PREFIX}/etc/ld.so.conf.d]
system "make DESTDIR=#{CREW_DEST_DIR} install", chdir: 'builddir'
system "make DESTDIR=#{CREW_DEST_DIR} localedata/install-locales", chdir: 'builddir'
File.write "#{CREW_DEST_PREFIX}/etc/ld.so.conf", <<~EOF
# ld.so.conf autogenerated by Chromebrew
# DO NOT put your changes here. Instead, put them in
# #{CREW_PREFIX}/etc/ld.so.conf.d/ instead.
include #{CREW_PREFIX}/etc/ld.so.conf.d/*.conf
#{CREW_GLIBC_PREFIX}
#{CREW_LIB_PREFIX}
include /etc/ld.so.conf
EOF
# install crew-audit
FileUtils.install 'crew-package-glibc/crew-audit.so', File.join(CREW_DEST_DIR, CREW_GLIBC_PREFIX, 'crew-audit.so'), mode: 0o755
File.write "#{CREW_DEST_PREFIX}/etc/env.d/10-glibc", "# LD_AUDIT=#{File.join(CREW_GLIBC_PREFIX, 'crew-audit.so')}\nLD_AUDIT=\n"
end
def self.postinstall
puts "Please immediately run: 'source ~/.bashrc && crew upgrade'".lightgreen
# update search cache for ld.so
system "source ~/.bashrc && LD_AUDIT= #{CREW_PREFIX}/bin/ldconfig", %i[out err] => File::NULL
end
end

View File

@@ -36,7 +36,6 @@ class Graphicsmagick < Package
depends_on 'brotli' # R
depends_on 'bzip2' # R
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'highway' # R
depends_on 'icu4c' # R

View File

@@ -30,7 +30,6 @@ class Gstreamer < Meson
depends_on 'flac' # R
depends_on 'gcc_lib' # R
depends_on 'gdk_pixbuf' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
depends_on 'gmp' # R

View File

@@ -25,7 +25,6 @@ class Handbrake < Package
depends_on 'fribidi' # R
depends_on 'gcc_lib' # R
depends_on 'gdk_pixbuf' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
depends_on 'graphene' # R

View File

@@ -31,7 +31,6 @@ class Inkscape < CMake
depends_on 'gdk_pixbuf' # R
depends_on 'glib' # R
depends_on 'glibc' # R
depends_on 'glibc_lib' # R
depends_on 'glibmm_2_4' # R
depends_on 'graphicsmagick' # R
depends_on 'gsl' # R

View File

@@ -17,8 +17,6 @@ class Lha < Package
x86_64: 'b5ac02857046c1673acdb928c7a189ee350d9b0babdaaea1661c39fc81328590'
})
depends_on 'glibc_lib' # R
def self.build
system 'autoreconf -sif'
system "./configure #{CREW_CONFIGURE_OPTIONS}"

View File

@@ -19,7 +19,6 @@ class Libavif < CMake
depends_on 'dav1d' # R
depends_on 'gcc_lib' # R
depends_on 'gdk_pixbuf' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
depends_on 'libaom' # R

View File

@@ -19,7 +19,6 @@ class Libheif < Package
depends_on 'dav1d' # R
depends_on 'gcc_lib' # R
depends_on 'gdk_pixbuf' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
depends_on 'graphviz' => :build # Only needed for dot.

View File

@@ -19,7 +19,6 @@ class Libpng < Package
depends_on 'zlib'
depends_on 'glibc' # R
depends_on 'glibc_lib' # R
gnome

View File

@@ -38,7 +38,6 @@ class Libssp < Package
depends_on 'ccache' => :build
depends_on 'dejagnu' => :build # for test
depends_on 'glibc' # R
depends_on 'glibc_lib' # R
@gcc_name = 'libssp'

View File

@@ -17,8 +17,6 @@ class Liburing < Autotools
x86_64: '0ae8f0068aae43c33cb71cc7a8e3c7080979fd2b980e4a689a67b728317010e0'
})
depends_on 'glibc_lib' # R
# liburing has a configure script that mimics an autotools one, but we can still treat it mostly like normal.
# It doesn't have any other build system anyways, so this is the best we've got.
def self.build

View File

@@ -17,7 +17,6 @@ class Libyuv < CMake
})
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'libjpeg_turbo' # R

View File

@@ -21,7 +21,6 @@ class Lmstudio < Package
depends_on 'gdk_pixbuf' # R
depends_on 'glib' # R
depends_on 'glibc' # R
depends_on 'glibc_lib' # R
depends_on 'gtk2' # R
depends_on 'gtk3' # R
depends_on 'libdrm' # R

View File

@@ -20,7 +20,6 @@ class Localsearch < Meson
depends_on 'gcc_lib' => :build
depends_on 'gexiv2' # R
depends_on 'giflib' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
depends_on 'gstreamer' # R

View File

@@ -21,7 +21,6 @@ class Mesa < Meson
depends_on 'expat' # R
depends_on 'gcc_dev' => :build
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glslang' => :build
depends_on 'libclc' => :build

View File

@@ -19,7 +19,6 @@ class Mpv < Meson
depends_on 'alsa_lib' # R
depends_on 'ffmpeg' # R
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glslang' # R
depends_on 'jack' # R

View File

@@ -21,7 +21,6 @@ class Musecore < CMake
depends_on 'freetype'
depends_on 'gcc_lib' # R
depends_on 'glibc' # R
depends_on 'glibc_lib' # R
depends_on 'libopusenc'
depends_on 'libsndfile'
depends_on 'openssl' # R

View File

@@ -16,7 +16,6 @@ class Mysql < CMake
depends_on 'boost' => :build
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'icu4c', '== 75.1'
depends_on 'libcyrussasl' => :build
depends_on 'libedit' # R

View File

@@ -28,7 +28,6 @@ class Nautilus < Meson
depends_on 'gcc_lib' => :build
depends_on 'gdk_pixbuf' # R
depends_on 'gexiv2' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
depends_on 'gnome_autoar' # R

View File

@@ -20,7 +20,6 @@ class Nlopt < CMake
})
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'guile' => :build
depends_on 'octave' # R
depends_on 'py3_numpy' => :build

View File

@@ -17,7 +17,6 @@ class Parted < Autotools
x86_64: '6c90b4c01a6275e5f09438a80c7f973042834fb801bd18cbd6dade603a843a9f'
})
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'lvm2' # R
depends_on 'ncurses' # R

View File

@@ -25,7 +25,6 @@ class Pulseaudio < Meson
depends_on 'elogind' # R
depends_on 'eudev' # R
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
# depends_on 'gsettings_desktop_schemas' # L

View File

@@ -19,7 +19,6 @@ class Py3_pyicu < Pip
depends_on 'python3' => :build
depends_on 'gcc_lib' # R
depends_on 'glibc' # R
depends_on 'glibc_lib' # R
depends_on 'icu4c' # R
no_source_build

View File

@@ -19,7 +19,6 @@ class Qbittorrent < CMake
depends_on 'cmake' => :build
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'libtorrent' # R
depends_on 'openssl' # R

View File

@@ -28,7 +28,6 @@ class Qemu < Package
depends_on 'fontconfig' # R
depends_on 'gcc_lib' # R
depends_on 'gdk_pixbuf' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
depends_on 'gnutls' # R

View File

@@ -29,7 +29,6 @@ class Qt5_base < Package
depends_on 'freetype' # R
depends_on 'gcc_lib' # R
depends_on 'gdk_pixbuf' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
depends_on 'gstreamer' => :build

View File

@@ -3,7 +3,7 @@ require 'buildsystems/meson'
class Rhythmbox < Meson
description 'Rhythmbox is a music playing application for GNOME.'
homepage 'https://wiki.gnome.org/Apps/Rhythmbox'
version '3.4.7'
version '3.4.8'
license 'GPL-2'
compatibility 'aarch64 armv7l x86_64'
min_glibc '2.29'
@@ -12,8 +12,9 @@ class Rhythmbox < Meson
binary_compression 'tar.zst'
binary_sha256({
aarch64: '5475faf35fc7ae052c92442cf6b7fd1382764b8807b2cef9d77ee98c0abac8f3',
armv7l: '5475faf35fc7ae052c92442cf6b7fd1382764b8807b2cef9d77ee98c0abac8f3'
aarch64: 'f3e0c1bc99067da738d8b193ae61c0b1b8296a9b856cb4d7d9c764c2aa159d32',
armv7l: 'f3e0c1bc99067da738d8b193ae61c0b1b8296a9b856cb4d7d9c764c2aa159d32',
x86_64: '09045b8d107c88fa7c42540850906e4df4d645a9b5325bf20c663aadf25b6799'
})
depends_on 'at_spi2_core' # R
@@ -21,7 +22,6 @@ class Rhythmbox < Meson
depends_on 'desktop_file_utils' => :build
depends_on 'gcc_lib' # R
depends_on 'gdk_pixbuf' # R
depends_on 'glibc_lib' # R
depends_on 'glib' # R
depends_on 'gobject_introspection' # R
depends_on 'gstreamer' # R
@@ -35,8 +35,10 @@ class Rhythmbox < Meson
depends_on 'libx11' # R
depends_on 'libxml2' # R
depends_on 'pango' # R
depends_on 'py3_itstool' => :build
depends_on 'tdb' # R
depends_on 'totem_pl_parser' # R
depends_on 'zlib' # R
gnome

View File

@@ -18,7 +18,6 @@ class Sccache < Package
})
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'openssl' # R
depends_on 'rust' => :build

View File

@@ -20,7 +20,6 @@ class Spirv_tools < CMake
depends_on 'gcc_lib' # R
depends_on 'glibc' # R
# depends_on 'spirv_headers' => :build
depends_on 'glibc_lib' # R
# https://github.com/KhronosGroup/SPIRV-Tools/issues/5728
def self.patch

View File

@@ -20,7 +20,6 @@ class Squid < Autotools
depends_on 'e2fsprogs' # R
depends_on 'expat' # R
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'gnutls' # R
depends_on 'krb5' # R
depends_on 'libcap' # R

View File

@@ -18,7 +18,6 @@ class Stellarium < CMake
})
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'nlopt' # R
depends_on 'qt5_base' # R
depends_on 'qt5_charts' # R

View File

@@ -17,7 +17,6 @@ class Texinfo < Autotools
x86_64: 'e1f4f26cc112d9368f3f050a504a073c1f730b123600c3517e162dff1e89f070'
})
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'libunistring' # R
depends_on 'ncurses' # R

View File

@@ -20,7 +20,6 @@ class Tinysparql < Meson
depends_on 'dbus' => :build
depends_on 'docbook_xml' => :build
depends_on 'gcc_lib' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
depends_on 'gobject_introspection' => :build

View File

@@ -25,7 +25,6 @@ class Webkit2gtk_4_1 < Package
depends_on 'freetype' # R
depends_on 'gcc_lib' # R
depends_on 'gdk_pixbuf' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
depends_on 'gobject_introspection' => :build

View File

@@ -27,7 +27,6 @@ class Webkitgtk_6 < Package
depends_on 'gcc10' => :build
depends_on 'gcc_lib' # R
depends_on 'gdk_pixbuf' # R
depends_on 'glibc_lib' # R
depends_on 'glibc' # R
depends_on 'glib' # R
depends_on 'gobject_introspection' => :build