summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2020-01-17 19:18:04 +0100
committerMarius Bakke <mbakke@fastmail.com>2020-01-22 22:12:33 +0100
commitff5733d186839f32d1558a9e1f049d218613fa1a (patch)
tree98e2f53fa29c3454a48396ab2161217571f4e3fc /gnu
parent26edcd9b8db553bed324149bc039c306a804a2a3 (diff)
downloadguix-ff5733d186839f32d1558a9e1f049d218613fa1a.tar.gz
gnu: libjpeg-turbo: Build with a minimal variant of CMake.
This is necessary to avoid a circular dependency in the next commit.

* gnu/packages/curl.scm (curl-minimal): New public variable.
* gnu/packages/cmake.scm (cmake-minimal-bootstrap): New public variable.
* gnu/packages/image.scm (libjpeg-turbo)[arguments]: Add #:cmake.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/cmake.scm14
-rw-r--r--gnu/packages/curl.scm12
-rw-r--r--gnu/packages/image.scm10
3 files changed, 32 insertions, 4 deletions
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 21f11ac4f0..cf542f12e4 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -232,6 +232,18 @@ and workspaces that can be used in the compiler environment of your choice.")
     (search-paths
      (package-native-search-paths cmake-minimal))))
 
+;; The purpose of this package is to solve a circular dependency between
+;; packages that use cmake-build-system and CMakes own dependencies.
+(define-public cmake-minimal-bootstrap
+  (package
+    (inherit cmake-minimal)
+    (name "cmake-minimal-bootstrap")
+    (native-inputs
+     `(;; cURL depends on ghostscript (via groff and OpenLDAP), which depends on
+       ;; 'cmake-build-system' through libtiff and ultimately libjpeg-turbo.
+       ("curl" ,curl-minimal)
+       ,@(alist-delete "curl" (package-native-inputs cmake-minimal))))))
+
 (define-public emacs-cmake-mode
   (package
     (inherit cmake)
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index b06d01c7d7..9289e2ffd3 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -46,7 +46,8 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages tls)
-  #:use-module (gnu packages web))
+  #:use-module (gnu packages web)
+  #:use-module (srfi srfi-1))
 
 (define-public curl
   (package
@@ -159,6 +160,15 @@ tunneling, and so on.")
                                   "See COPYING in the distribution."))
    (home-page "https://curl.haxx.se/")))
 
+;; This package exists mainly to bootstrap CMake.  It must not depend on
+;; anything that uses cmake-build-system.
+(define-public curl-minimal
+  (hidden-package
+   (package/inherit
+    curl
+    (name "curl-minimal")
+    (inputs (alist-delete "openldap" (package-inputs curl))))))
+
 (define-public kurly
   (package
     (name "kurly")
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 709599fb98..4fef6fe21e 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -46,6 +46,7 @@
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages documentation)
@@ -1504,8 +1505,13 @@ is hereby granted."))))
     (native-inputs
      `(("nasm" ,nasm)))
     (arguments
-     '(#:configure-flags '("-DCMAKE_INSTALL_LIBDIR:PATH=lib"
-                           "-DENABLE_STATIC=0")))
+     `(#:configure-flags '("-DCMAKE_INSTALL_LIBDIR:PATH=lib"
+                           "-DENABLE_STATIC=0")
+       ,@(if (%current-target-system)
+             '()
+             ;; Use a special "bootstrap" CMake for the native build to work
+             ;; around a circular dependency between CMake and this package.
+             `(#:cmake ,cmake-minimal-bootstrap))))
     (home-page "https://libjpeg-turbo.org/")
     (synopsis "SIMD-accelerated JPEG image handling library")
     (description "libjpeg-turbo is a JPEG image codec that accelerates baseline