mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-08 23:18:10 -05:00
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:
30
.github/workflows/Build.yml
vendored
30
.github/workflows/Build.yml
vendored
@@ -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"
|
||||
;;
|
||||
|
||||
30
.github/workflows/Unit-Test.yml
vendored
30
.github/workflows/Unit-Test.yml
vendored
@@ -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"
|
||||
;;
|
||||
|
||||
@@ -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
|
||||
|
||||
23
lib/const.rb
23
lib/const.rb
@@ -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 \
|
||||
|
||||
20
lib/fixup.rb
20
lib/fixup.rb
@@ -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.' },
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
1470
manifest/armv7l/g/glibc.filelist
Normal file
1470
manifest/armv7l/g/glibc.filelist
Normal file
File diff suppressed because it is too large
Load Diff
1480
manifest/i686/g/glibc.filelist
Normal file
1480
manifest/i686/g/glibc.filelist
Normal file
File diff suppressed because it is too large
Load Diff
1481
manifest/x86_64/g/glibc.filelist
Normal file
1481
manifest/x86_64/g/glibc.filelist
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -19,7 +19,6 @@ class Libpng < Package
|
||||
|
||||
depends_on 'zlib'
|
||||
depends_on 'glibc' # R
|
||||
depends_on 'glibc_lib' # R
|
||||
|
||||
gnome
|
||||
|
||||
|
||||
@@ -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'
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user