all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#57043] [PATCH] gnu: rust-freetype-sys-0.13: Unbundle freetype2.
@ 2022-08-07 18:39 Jean Pierre De Jesus DIAZ via Guix-patches via
  2022-08-07 21:59 ` Maxime Devos
  2022-08-08 14:37 ` Jean Pierre De Jesus DIAZ via Guix-patches via
  0 siblings, 2 replies; 3+ messages in thread
From: Jean Pierre De Jesus DIAZ via Guix-patches via @ 2022-08-07 18:39 UTC (permalink / raw)
  To: 57043

[-- Attachment #1: Type: text/plain, Size: 228 bytes --]

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

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-rust-freetype-sys-0.13-Unbundle-freetype2.patch --]
[-- Type: text/x-patch; name=0001-gnu-rust-freetype-sys-0.13-Unbundle-freetype2.patch, Size: 4349 bytes --]

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

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


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [bug#57043] [PATCH] gnu: rust-freetype-sys-0.13: Unbundle freetype2.
  2022-08-07 18:39 [bug#57043] [PATCH] gnu: rust-freetype-sys-0.13: Unbundle freetype2 Jean Pierre De Jesus DIAZ via Guix-patches via
@ 2022-08-07 21:59 ` Maxime Devos
  2022-08-08 14:37 ` Jean Pierre De Jesus DIAZ via Guix-patches via
  1 sibling, 0 replies; 3+ messages in thread
From: Maxime Devos @ 2022-08-07 21:59 UTC (permalink / raw)
  To: Jean Pierre De Jesus DIAZ, 57043


[-- Attachment #1.1.1: Type: text/plain, Size: 836 bytes --]


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.


[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 929 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [bug#57043] [PATCH] gnu: rust-freetype-sys-0.13: Unbundle freetype2.
  2022-08-07 18:39 [bug#57043] [PATCH] gnu: rust-freetype-sys-0.13: Unbundle freetype2 Jean Pierre De Jesus DIAZ via Guix-patches via
  2022-08-07 21:59 ` Maxime Devos
@ 2022-08-08 14:37 ` Jean Pierre De Jesus DIAZ via Guix-patches via
  1 sibling, 0 replies; 3+ messages in thread
From: Jean Pierre De Jesus DIAZ via Guix-patches via @ 2022-08-08 14:37 UTC (permalink / raw)
  To: 57043@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 1330 bytes --]

>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.

Thought that the pkg-config `if' block was for Android only, my mistake.

Probably influenced by the compilation error caused by not building
without the freetype2 directory, because `pkg-config' was not present.

>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.

This reminds me of also fixing `rust-bzip2-sys-0.1' in the future because
it also doesn't specify the linker search path because the default build
script was removed like I did in this case.

See:

https://github.com/alexcrichton/bzip2-rs/blob/bzip2-sys-0.1.9/bzip2-sys/build.rs#L12-L23

I don't know our stance on this though, or if there's a policy that
mandates removing compilation support for bundled code or to leave it as
is as long as the code compiles. I'd leave it as it though to make
maintenance easier and less modifications to the original source code.

Thanks for the review!

—
Jean-Pierre De Jesus DIAZ

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-rust-freetype-sys-0.13-Unbundle-freetype2.patch --]
[-- Type: text/x-patch; name=0001-gnu-rust-freetype-sys-0.13-Unbundle-freetype2.patch, Size: 1977 bytes --]

From a3487eae2c5b7a507929816e60206878c1d2fc0e Mon Sep 17 00:00:00 2001
From: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
Date: Mon, 8 Aug 2022 16:33:16 +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.
  [arguments]: Remove `#:skip-build? #t'.
  [native-inputs]: Add pkg-config.
  [inputs]: Add freetype.
---
 gnu/packages/crates-io.scm | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index cfafce9aa3..b5d4dc7c61 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,20 @@ (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"))
+       (modules '((guix build utils)))
+       (snippet
+         '(delete-file-recursively "freetype2"))))
     (build-system cargo-build-system)
     (arguments
-     `(#:skip-build? #t
-       #:cargo-inputs
+     `(#:cargo-inputs
        (("rust-cmake" ,rust-cmake-0.1)
         ("rust-libc" ,rust-libc-0.2)
         ("rust-pkg-config" ,rust-pkg-config-0.3))))
+    (native-inputs
+      (list pkg-config))
+    (inputs
+      (list freetype))
     (home-page "https://github.com/PistonDevelopers/freetype-sys")
     (synopsis "Low level binding for FreeType font library")
     (description
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-08-08 14:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-07 18:39 [bug#57043] [PATCH] gnu: rust-freetype-sys-0.13: Unbundle freetype2 Jean Pierre De Jesus DIAZ via Guix-patches via
2022-08-07 21:59 ` Maxime Devos
2022-08-08 14:37 ` Jean Pierre De Jesus DIAZ via Guix-patches via

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.