summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2023-05-26 09:35:40 +0100
committerSam James <sam@gentoo.org>2023-05-26 09:36:12 +0100
commit07a5e93c0d31f67d03e534d3bff5e469e3d3f67c (patch)
tree29f27c8210acdd931eb31013dabd05c3021e3cd7
parentsci-libs/gdal: simplify with usev (diff)
downloadgentoo-07a5e93c.tar.gz
gentoo-07a5e93c.tar.bz2
gentoo-07a5e93c.zip
gnome-base/librsvg: backport -Wl,--gc-sections usage
``` * SIZE: 36.28MiB -> 18.79MiB, 22 -> 22 files * ------> ABI(nodebug) SIZE(-48.21%) ``` Bug: https://gitlab.gnome.org/GNOME/librsvg/-/issues/965 Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r--gnome-base/librsvg/files/librsvg-2.56.0-gc-sections-shrink.patch53
-rw-r--r--gnome-base/librsvg/librsvg-2.56.0-r1.ebuild419
2 files changed, 472 insertions, 0 deletions
diff --git a/gnome-base/librsvg/files/librsvg-2.56.0-gc-sections-shrink.patch b/gnome-base/librsvg/files/librsvg-2.56.0-gc-sections-shrink.patch
new file mode 100644
index 000000000000..d20909f4eaa5
--- /dev/null
+++ b/gnome-base/librsvg/files/librsvg-2.56.0-gc-sections-shrink.patch
@@ -0,0 +1,53 @@
+https://gitlab.gnome.org/GNOME/librsvg/-/issues/965
+https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/832
+https://github.com/rust-lang/rust/issues/111593
+
+From 61bba147f65019eab2a42148065798bc568169ab Mon Sep 17 00:00:00 2001
+From: Federico Mena Quintero <federico@gnome.org>
+Date: Thu, 18 May 2023 17:57:01 -0600
+Subject: [PATCH] (#965): Shrink the shared library by telling the linker to
+ omit unused code
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Thanks to Sebastian Dröge for spotting this.
+
+Fixes https://gitlab.gnome.org/GNOME/librsvg/-/issues/965
+
+Part-of: <https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/832>
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -217,12 +217,24 @@ librsvg_@RSVG_API_MAJOR_VERSION@_la_CPPFLAGS = $(AM_CPPFLAGS)
+
+ librsvg_@RSVG_API_MAJOR_VERSION@_la_CFLAGS = $(AM_CFLAGS)
+
+-librsvg_@RSVG_API_MAJOR_VERSION@_la_LDFLAGS = \
+- $(BSYMBOLIC_LDFLAG) \
+- -version-info @RSVG_LT_VERSION_INFO@ \
+- -export-dynamic \
+- -no-undefined \
+- -export-symbols-regex "^rsvg_.*" \
++# This is not strictly needed, but since we are telling Cargo to build a staticlib, it puts in
++# all of Rust's standard library and code from dependencies even when it is not needed.
++# With the following, we shrink the final .so size; see issue #965.
++#
++# This will no longer be needed when we switch to cargo-cbuild, which does this automatically.
++if OS_DARWIN
++gc_linked_library_args="-Wl,-dead_strip"
++else
++gc_linked_library_args="-Wl,--gc-sections"
++endif
++
++librsvg_@RSVG_API_MAJOR_VERSION@_la_LDFLAGS = \
++ $(BSYMBOLIC_LDFLAG) \
++ -version-info @RSVG_LT_VERSION_INFO@ \
++ -export-dynamic \
++ -no-undefined \
++ -export-symbols-regex "^rsvg_.*" \
++ $(gc_linked_library_args) \
+ $(AM_LDFLAGS)
+
+ if OS_DARWIN
+--
+GitLab
diff --git a/gnome-base/librsvg/librsvg-2.56.0-r1.ebuild b/gnome-base/librsvg/librsvg-2.56.0-r1.ebuild
new file mode 100644
index 000000000000..b4089d7d636c
--- /dev/null
+++ b/gnome-base/librsvg/librsvg-2.56.0-r1.ebuild
@@ -0,0 +1,419 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{10..11} )
+GNOME2_EAUTORECONF=yes
+CRATES="
+ adler-1.0.2
+ aho-corasick-0.7.20
+ android_system_properties-0.1.5
+ anes-0.1.6
+ anstyle-0.3.4
+ anyhow-1.0.69
+ approx-0.5.1
+ assert_cmd-2.0.10
+ atty-0.2.14
+ autocfg-1.1.0
+ base-x-0.2.11
+ bit-set-0.5.3
+ bit-vec-0.6.3
+ bitflags-1.3.2
+ block-0.1.6
+ bstr-1.3.0
+ bumpalo-3.12.0
+ bytemuck-1.13.1
+ byteorder-1.4.3
+ cc-1.0.79
+ cairo-rs-0.17.0
+ cairo-sys-rs-0.17.0
+ cast-0.3.0
+ cfg-expr-0.11.0
+ cfg-if-1.0.0
+ chrono-0.4.23
+ chrono-0.4.24
+ ciborium-0.2.0
+ ciborium-io-0.2.0
+ ciborium-ll-0.2.0
+ clap-2.34.0
+ clap-3.2.23
+ clap-4.1.9
+ clap_complete-4.1.5
+ clap_derive-4.1.9
+ clap_lex-0.2.4
+ clap_lex-0.3.3
+ codespan-reporting-0.11.1
+ const-cstr-0.3.0
+ const_fn-0.4.9
+ convert_case-0.4.0
+ core-foundation-sys-0.8.3
+ crc32fast-1.3.2
+ criterion-0.4.0
+ criterion-plot-0.5.0
+ crossbeam-channel-0.5.7
+ crossbeam-deque-0.8.3
+ crossbeam-epoch-0.9.14
+ crossbeam-utils-0.8.15
+ cssparser-0.29.6
+ cssparser-macros-0.6.0
+ cxx-1.0.92
+ cxx-build-1.0.92
+ cxxbridge-flags-1.0.92
+ cxxbridge-macro-1.0.92
+ data-url-0.2.0
+ derive_more-0.99.17
+ difflib-0.4.0
+ discard-1.0.4
+ dlib-0.5.0
+ doc-comment-0.3.3
+ dtoa-0.4.8
+ dtoa-short-0.3.3
+ either-1.8.1
+ encoding-0.2.33
+ encoding-index-japanese-1.20141219.5
+ encoding-index-korean-1.20141219.5
+ encoding-index-simpchinese-1.20141219.5
+ encoding-index-singlebyte-1.20141219.5
+ encoding-index-tradchinese-1.20141219.5
+ encoding_index_tests-0.1.4
+ errno-0.2.8
+ errno-dragonfly-0.1.2
+ fastrand-1.9.0
+ flate2-1.0.25
+ float-cmp-0.9.0
+ fnv-1.0.7
+ form_urlencoded-1.1.0
+ futf-0.1.5
+ futures-channel-0.3.27
+ futures-core-0.3.27
+ futures-executor-0.3.27
+ futures-io-0.3.27
+ futures-macro-0.3.27
+ futures-task-0.3.27
+ futures-util-0.3.27
+ fxhash-0.2.1
+ gdk-pixbuf-0.17.0
+ gdk-pixbuf-sys-0.17.0
+ getrandom-0.1.16
+ getrandom-0.2.8
+ gio-0.17.4
+ gio-sys-0.17.4
+ glib-0.17.5
+ glib-macros-0.17.5
+ glib-sys-0.17.4
+ gobject-sys-0.17.4
+ half-1.8.2
+ hashbrown-0.12.3
+ heck-0.4.1
+ hermit-abi-0.1.19
+ hermit-abi-0.2.6
+ hermit-abi-0.3.1
+ iana-time-zone-0.1.53
+ iana-time-zone-haiku-0.1.1
+ idna-0.3.0
+ indexmap-1.9.2
+ instant-0.1.12
+ io-lifetimes-1.0.7
+ is-terminal-0.4.4
+ itertools-0.10.5
+ itoa-1.0.6
+ js-sys-0.3.61
+ language-tags-0.3.2
+ lazy_static-1.4.0
+ libc-0.2.140
+ libloading-0.7.4
+ libm-0.2.6
+ link-cplusplus-1.0.8
+ linked-hash-map-0.5.6
+ linux-raw-sys-0.1.4
+ locale_config-0.3.0
+ lock_api-0.4.9
+ log-0.4.17
+ lopdf-0.29.0
+ mac-0.1.1
+ malloc_buf-0.0.6
+ markup5ever-0.10.1
+ markup5ever-0.11.0
+ matches-0.1.10
+ matrixmultiply-0.3.2
+ memchr-2.5.0
+ memoffset-0.8.0
+ miniz_oxide-0.6.2
+ nalgebra-0.32.2
+ nalgebra-macros-0.2.0
+ new_debug_unreachable-1.0.4
+ nodrop-0.1.14
+ normalize-line-endings-0.3.0
+ num-complex-0.4.3
+ num-integer-0.1.45
+ num-rational-0.4.1
+ num-traits-0.2.15
+ num_cpus-1.15.0
+ objc-0.2.7
+ objc-foundation-0.1.1
+ objc_id-0.1.1
+ once_cell-1.17.1
+ oorandom-11.1.3
+ os_str_bytes-6.4.1
+ pango-0.17.4
+ pango-sys-0.17.0
+ pangocairo-0.17.0
+ pangocairo-sys-0.17.3
+ parking_lot-0.12.1
+ parking_lot_core-0.9.7
+ paste-1.0.12
+ percent-encoding-2.2.0
+ phf-0.8.0
+ phf-0.10.1
+ phf_codegen-0.8.0
+ phf_codegen-0.10.0
+ phf_generator-0.8.0
+ phf_generator-0.10.0
+ phf_macros-0.10.0
+ phf_shared-0.8.0
+ phf_shared-0.10.0
+ pin-project-lite-0.2.9
+ pin-utils-0.1.0
+ pkg-config-0.3.26
+ plotters-0.3.4
+ plotters-backend-0.3.4
+ plotters-svg-0.3.3
+ png-0.17.7
+ pom-3.2.0
+ ppv-lite86-0.2.17
+ precomputed-hash-0.1.1
+ predicates-2.1.5
+ predicates-3.0.1
+ predicates-core-1.0.6
+ predicates-tree-1.0.9
+ proc-macro-crate-1.3.1
+ proc-macro-error-1.0.4
+ proc-macro-error-attr-1.0.4
+ proc-macro-hack-0.5.20+deprecated
+ proc-macro2-0.4.30
+ proc-macro2-1.0.52
+ proptest-1.1.0
+ quick-error-1.2.3
+ quick-error-2.0.1
+ quote-1.0.26
+ rand-0.7.3
+ rand-0.8.5
+ rand_chacha-0.2.2
+ rand_chacha-0.3.1
+ rand_core-0.5.1
+ rand_core-0.6.4
+ rand_hc-0.2.0
+ rand_pcg-0.2.1
+ rand_xorshift-0.3.0
+ rawpointer-0.2.1
+ rayon-1.7.0
+ rayon-core-1.11.0
+ rctree-0.5.0
+ redox_syscall-0.2.16
+ regex-1.7.1
+ regex-automata-0.1.10
+ regex-syntax-0.6.28
+ remove_dir_all-0.5.3
+ rgb-0.8.36
+ rustc_version-0.2.3
+ rustc_version-0.4.0
+ rusty-fork-0.3.0
+ rustix-0.36.9
+ ryu-1.0.13
+ safe_arch-0.6.0
+ same-file-1.0.6
+ scratch-1.0.5
+ scopeguard-1.1.0
+ selectors-0.24.0
+ semver-0.9.0
+ semver-1.0.17
+ semver-parser-0.7.0
+ serde-1.0.156
+ serde_derive-1.0.156
+ serde_json-1.0.94
+ servo_arc-0.2.0
+ sha1-0.6.1
+ sha1_smol-1.0.0
+ simba-0.8.0
+ siphasher-0.3.10
+ slab-0.4.8
+ smallvec-1.10.0
+ stable_deref_trait-1.2.0
+ standback-0.2.17
+ stdweb-0.4.20
+ stdweb-derive-0.5.3
+ stdweb-internal-macros-0.2.9
+ stdweb-internal-runtime-0.1.5
+ string_cache-0.8.7
+ string_cache_codegen-0.5.2
+ strsim-0.10.0
+ syn-1.0.109
+ system-deps-6.0.3
+ tempfile-3.4.0
+ tendril-0.4.3
+ termcolor-1.2.0
+ termtree-0.4.1
+ textwrap-0.16.0
+ thiserror-1.0.39
+ thiserror-impl-1.0.39
+ time-0.1.44
+ time-0.2.27
+ time-macros-0.1.1
+ time-macros-impl-0.1.2
+ tinytemplate-1.2.1
+ tinyvec-1.6.0
+ tinyvec_macros-0.1.1
+ toml-0.5.11
+ toml_edit-0.19.7
+ toml_datetime-0.6.1
+ typenum-1.16.0
+ unarray-0.1.4
+ unicode-bidi-0.3.11
+ unicode-ident-1.0.8
+ unicode-normalization-0.1.22
+ unicode-width-0.1.10
+ url-2.3.1
+ utf-8-0.7.6
+ version-compare-0.1.1
+ version_check-0.9.4
+ wait-timeout-0.2.0
+ walkdir-2.3.3
+ wasi-0.9.0+wasi-snapshot-preview1
+ wasi-0.11.0+wasi-snapshot-preview1
+ wasm-bindgen-0.2.84
+ wasm-bindgen-backend-0.2.84
+ wasm-bindgen-macro-0.2.84
+ wasm-bindgen-macro-support-0.2.84
+ wasm-bindgen-shared-0.2.84
+ web-sys-0.3.61
+ weezl-0.1.7
+ wide-0.7.8
+ winapi-0.3.9
+ winapi-i686-pc-windows-gnu-0.4.0
+ winapi-util-0.1.5
+ winapi-x86_64-pc-windows-gnu-0.4.0
+ windows-sys-0.42.0
+ windows-sys-0.45.0
+ windows-targets-0.42.2
+ windows_aarch64_gnullvm-0.42.2
+ windows_aarch64_msvc-0.42.2
+ windows_i686_gnu-0.42.2
+ windows_i686_msvc-0.42.2
+ windows_x86_64_gnu-0.42.2
+ windows_x86_64_gnullvm-0.42.2
+ windows_x86_64_msvc-0.42.2
+ winnow-0.3.6
+ xml5ever-0.17.0
+ yeslogic-fontconfig-sys-4.0.1
+"
+
+inherit cargo gnome2 multilib-minimal python-any-r1 rust-toolchain vala
+
+DESCRIPTION="Scalable Vector Graphics (SVG) rendering library"
+HOMEPAGE="https://wiki.gnome.org/Projects/LibRsvg https://gitlab.gnome.org/GNOME/librsvg"
+SRC_URI+=" $(cargo_crate_uris ${CRATES})"
+
+LICENSE="Apache-2.0 BSD CC0-1.0 LGPL-2.1+ MIT MPL-2.0 Unicode-DFS-2016"
+
+SLOT="2"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~sparc ~x86"
+
+IUSE="gtk-doc +introspection +vala"
+REQUIRED_USE="
+ gtk-doc? ( introspection )
+ vala? ( introspection )
+"
+RESTRICT="test" # Lots of issues on 32bit builds, 64bit build seems to get into an infinite compilation sometimes, etc.
+
+RDEPEND="
+ >=x11-libs/cairo-1.16.0[glib,svg(+),${MULTILIB_USEDEP}]
+ >=media-libs/freetype-2.9:2[${MULTILIB_USEDEP}]
+ >=x11-libs/gdk-pixbuf-2.20:2[introspection?,${MULTILIB_USEDEP}]
+ >=dev-libs/glib-2.50.0:2[${MULTILIB_USEDEP}]
+ >=media-libs/harfbuzz-2.0.0:=[${MULTILIB_USEDEP}]
+ >=dev-libs/libxml2-2.9.1-r4:2[${MULTILIB_USEDEP}]
+ >=x11-libs/pango-1.48.11[${MULTILIB_USEDEP}]
+
+ introspection? ( >=dev-libs/gobject-introspection-0.10.8:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ >=virtual/rust-1.64.0[${MULTILIB_USEDEP}]
+ x11-libs/gdk-pixbuf
+ ${PYTHON_DEPS}
+ $(python_gen_any_dep 'dev-python/docutils[${PYTHON_USEDEP}]')
+ gtk-doc? ( dev-util/gi-docgen )
+ virtual/pkgconfig
+ vala? ( $(vala_depend) )
+
+ dev-libs/gobject-introspection-common
+ dev-libs/vala-common
+"
+# dev-libs/gobject-introspection-common, dev-libs/vala-common needed by eautoreconf
+
+QA_FLAGS_IGNORED="
+ usr/bin/rsvg-convert
+ usr/lib.*/librsvg.*
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.56.0-gc-sections-shrink.patch
+)
+
+src_prepare() {
+ use vala && vala_setup
+ gnome2_src_prepare
+}
+
+multilib_src_configure() {
+ local myconf=(
+ --disable-static
+ --disable-debug
+ $(multilib_native_use_enable gtk-doc)
+ $(multilib_native_use_enable introspection)
+ $(multilib_native_use_enable vala)
+ --enable-pixbuf-loader
+ )
+
+ if ! multilib_is_native_abi; then
+ myconf+=(
+ # Set the rust target, which can differ from CHOST
+ RUST_TARGET="$(rust_abi)"
+ # RUST_TARGET is only honored if cross_compiling, but non-native ABIs aren't cross as
+ # far as C parts and configure auto-detection are concerned as CHOST equals CBUILD
+ cross_compiling=yes
+ )
+ fi
+
+ ECONF_SOURCE=${S} \
+ gnome2_src_configure "${myconf[@]}"
+
+ if multilib_is_native_abi; then
+ ln -s "${S}"/doc/html doc/html || die
+ fi
+}
+
+multilib_src_compile() {
+ gnome2_src_compile
+}
+
+multilib_src_install() {
+ gnome2_src_install
+}
+
+multilib_src_install_all() {
+ find "${ED}" -name '*.la' -delete || die
+
+ if use gtk-doc; then
+ mkdir -p "${ED}"/usr/share/gtk-doc/html/ || die
+ mv "${ED}"/usr/share/doc/Rsvg-2.0 "${ED}"/usr/share/gtk-doc/html/ || die
+ fi
+}
+
+pkg_postinst() {
+ multilib_foreach_abi gnome2_pkg_postinst
+}
+
+pkg_postrm() {
+ multilib_foreach_abi gnome2_pkg_postrm
+}