Subject: [bug#57043] [PATCH] gnu: rust-freetype-sys-0.13: Unbundle freetype2.

From: Jean Pierre De Jesus DIAZ <[email-masked]>
Date: Mon, 08 Aug 2022 14:37:00 +0000

>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

From a3487eae2c5b7a507929816e60206878c1d2fc0e Mon Sep 17 00:00:00 2001
From: Jean-Pierre De Jesus DIAZ <[email-masked]>
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 <[email-masked]>
 ;;; Copyright © 2022 Marius Bakke <[email-masked]>
 ;;; Copyright © 2022 Evgenii Lepikhin <[email-masked]>
+;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <[email-masked]>
 ;;;
 ;;; 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