[bug#57043] gnu: rust-freetype-sys-0.13: Unbundle freetype2.
Commit Message
Hello,
This patch removes the bundled freetype2 library on `rust-freetype-sys-0.13'.
Also removes unneeded build dependencies (`pkg-config' and `cmake').
One less bundled dependency ;).
—
Jean-Pierre De Jesus DIAZ
Comments
On 07-08-2022 20:39, Jean Pierre De Jesus DIAZ via Guix-patches via wrote:
> Hello,
>
> This patch removes the bundled freetype2 library on `rust-freetype-sys-0.13'.
>
> Also removes unneeded build dependencies (`pkg-config' and `cmake').
I've noticed this in antioxidant (and fixed it there locally) but didn't
report it yet.
Anyway, this can be done more simple -- all that I needed to do was
deleting the freetype2 subdirectory (in a snippet) and adding 'freetype'
to inputs. Patching the build script or build.rs was not necessary.
Additionally, I noticed that in the modified build.rs, only
rustc-link-lib (-l) is set, but not rustc-link-search (-L). Antioxidant
needs the latter to be set, otherwise dependents will fail to link
because of not finding the freetype library.
Greetings,
Maxime.
Closing since unbundling has been done already and crates-io will be removed.
From f6dec2567dc997a32ef308bd42d259ac60dbbab5 Mon Sep 17 00:00:00 2001
From: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
Date: Sun, 7 Aug 2022 20:36:14 +0200
Subject: [PATCH] gnu: rust-freetype-sys-0.13: Unbundle freetype2.
* gnu/packages/crates-io.scm (rust-freetype-sys-0.13)
[source]: Remove bundled `freetype2' source code and add patch to use
system library.
---
gnu/packages/crates-io.scm | 16 +++---
...ust-freetype-sys-0.13-simplify-build.patch | 53 +++++++++++++++++++
2 files changed, 63 insertions(+), 6 deletions(-)
create mode 100644 gnu/packages/patches/rust-freetype-sys-0.13-simplify-build.patch
@@ -27,6 +27,7 @@
;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2022 Evgenii Lepikhin <e.lepikhin@corp.mail.ru>
+;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22904,14 +22905,17 @@ (define-public rust-freetype-sys-0.13
(uri (crate-uri "freetype-sys" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "06kkds31s6b1i39dyanwmzbnic7laia1kk3gfvx8sqncq08l0zd3"))))
+ (base32 "06kkds31s6b1i39dyanwmzbnic7laia1kk3gfvx8sqncq08l0zd3"))
+ (patches (search-patches "rust-freetype-sys-0.13-simplify-build.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ '(delete-file-recursively "freetype2"))))
(build-system cargo-build-system)
(arguments
- `(#:skip-build? #t
- #:cargo-inputs
- (("rust-cmake" ,rust-cmake-0.1)
- ("rust-libc" ,rust-libc-0.2)
- ("rust-pkg-config" ,rust-pkg-config-0.3))))
+ `(#:cargo-inputs
+ (("rust-libc" ,rust-libc-0.2))))
+ (inputs
+ (list freetype))
(home-page "https://github.com/PistonDevelopers/freetype-sys")
(synopsis "Low level binding for FreeType font library")
(description
new file mode 100644
@@ -0,0 +1,53 @@
+Force freetype-sys to use system libraries, this removes the need for CMake.
+
+The bundled source is still present at the crate package, it should be removed
+through a package snippet.
+
+diff -Naur freetype-sys-0.13.1/Cargo.toml freetype-sys-0.13.1-patch/Cargo.toml > 1.patch
+--- freetype-sys-0.13.1/Cargo.toml 2020-07-05 11:15:43.000000000 +0200
++++ freetype-sys-0.13.1-patch/Cargo.toml 2022-08-07 19:53:57.649678214 +0200
+@@ -24,8 +24,3 @@
+ repository = "https://github.com/PistonDevelopers/freetype-sys.git"
+ [dependencies.libc]
+ version = "0.2.42"
+-[build-dependencies.cmake]
+-version = "0.1.42"
+-
+-[build-dependencies.pkg-config]
+-version = "0.3.11"
+diff -Naur freetype-sys-0.13.1/build.rs freetype-sys-0.13.1-patch/build.rs > 2.patch
+--- freetype-sys-0.13.1/build.rs 2020-05-30 05:59:09.000000000 +0200
++++ freetype-sys-0.13.1-patch/build.rs 2022-08-07 19:54:34.153503846 +0200
+@@ -1,30 +1,4 @@
+-extern crate cmake;
+-extern crate pkg_config;
+-
+-use cmake::Config;
+-use std::env;
+-
+ fn main() {
+- let target = env::var("TARGET").unwrap();
+- if !target.contains("android")
+- && pkg_config::Config::new().atleast_version("18.5.12").find("freetype2").is_ok()
+- {
+- return
+- }
+-
+- let mut config = Config::new("freetype2");
+- if let Ok(s) = env::var("FREETYPE_CMAKE_GENERATOR") {
+- config.generator(s);
+- }
+- let dst = config
+- .define("WITH_BZip2", "OFF")
+- .define("WITH_HarfBuzz", "OFF")
+- .define("WITH_PNG", "OFF")
+- .define("WITH_ZLIB", "OFF")
+- .profile("Release")
+- .build();
+- let out_dir = env::var("OUT_DIR").unwrap();
+- println!("cargo:rustc-link-search=native={}/lib", dst.display());
+- println!("cargo:rustc-link-lib=static=freetype");
++ println!("cargo:rustc-link-lib=freetype");
+- println!("cargo:outdir={}", out_dir);
+ }
++
--
2.36.1