(name . guix-patches@gnu.org)(address . guix-patches@gnu.org)
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
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
Toggle diff (97 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index cfafce9aa3..cddd8ebaf0 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -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
diff --git a/gnu/packages/patches/rust-freetype-sys-0.13-simplify-build.patch b/gnu/packages/patches/rust-freetype-sys-0.13-simplify-build.patch
new file mode 100644
index 0000000000..bb16f3e065
--- /dev/null
+++ b/gnu/packages/patches/rust-freetype-sys-0.13-simplify-build.patch
@@ -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