libuv: remove frameworks

It’s not a good idea to rely on apple’s sdk for such a core library in
Nixpkgs. I have made a patch to libuv to make these frameworks
optional. There is also a pull request here:

https://github.com/libuv/libuv/pull/1909
This commit is contained in:
Matthew Bauer 2018-07-04 15:02:07 -04:00
parent d7591c44f0
commit 1dca19f057
3 changed files with 180 additions and 6 deletions

View File

@ -1,5 +1,4 @@
{ stdenv, lib, fetchFromGitHub, autoconf, automake, libtool, pkgconfig
, ApplicationServices, CoreServices }:
{ stdenv, lib, fetchFromGitHub, autoconf, automake, libtool, pkgconfig }:
stdenv.mkDerivation rec {
version = "1.20.3";
@ -12,6 +11,8 @@ stdenv.mkDerivation rec {
sha256 = "1a8a679wni560z7x6w5i431vh2g0f34cznflcn52klx1vwcggrg7";
};
patches = [ ./make-apple-frameworks-optional.patch ];
postPatch = let
toDisable = [
"getnameinfo_basic" "udp_send_hang_loop" # probably network-dependent
@ -27,7 +28,6 @@ stdenv.mkDerivation rec {
'';
nativeBuildInputs = [ automake autoconf libtool pkgconfig ];
buildInputs = stdenv.lib.optionals stdenv.isDarwin [ ApplicationServices CoreServices ];
preConfigure = ''
LIBTOOLIZE=libtoolize ./autogen.sh

View File

@ -0,0 +1,176 @@
From 6d03644817fb263489dc9fdf550bf1fac274fd8f Mon Sep 17 00:00:00 2001
From: Matthew Bauer <mjbauer95@gmail.com>
Date: Wed, 4 Jul 2018 14:49:33 -0400
Subject: [PATCH] Make apple frameworks optional
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Previously, you had to have the apple sdk frameworks downloaded to
build on “Darwin”. There are certain cases where this is not desired,
so an Autoconf conditional is added to check for their availability.
When they are not available, proctitle & fsevents are unavailable.
These frameworks are proprietary- owned and developed by Apple Inc.
They have never been released publically so we should not make
everyone use it in a core library like libuv.
---
configure.ac | 2 ++
src/unix/darwin-proctitle.c | 8 +++-----
src/unix/fsevents.c | 6 +++---
test/test-list.h | 12 ++++++++++++
4 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/configure.ac b/configure.ac
index c3a6a779..2df943c0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -69,4 +69,6 @@ AS_CASE([$host_os],[mingw*], [
AS_CASE([$host_os], [netbsd*], [AC_CHECK_LIB([kvm], [kvm_open])])
AC_CHECK_HEADERS([sys/ahafs_evProds.h])
AC_CONFIG_FILES([Makefile libuv.pc])
+AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h)
+AC_CHECK_HEADERS(CoreServices/CoreServices.h)
AC_OUTPUT
diff --git a/src/unix/darwin-proctitle.c b/src/unix/darwin-proctitle.c
index dabde223..f5506a32 100644
--- a/src/unix/darwin-proctitle.c
+++ b/src/unix/darwin-proctitle.c
@@ -26,9 +26,7 @@
#include <stdlib.h>
#include <string.h>
-#include <TargetConditionals.h>
-
-#if !TARGET_OS_IPHONE
+#if HAVE_APPLICATIONSERVICES_APPLICATIONSERVICES_H
# include <CoreFoundation/CoreFoundation.h>
# include <ApplicationServices/ApplicationServices.h>
#endif
@@ -58,7 +56,7 @@ static int uv__pthread_setname_np(const char* name) {
int uv__set_process_title(const char* title) {
-#if TARGET_OS_IPHONE
+#if !HAVE_APPLICATIONSERVICES_APPLICATIONSERVICES_H
return uv__pthread_setname_np(title);
#else
CFStringRef (*pCFStringCreateWithCString)(CFAllocatorRef,
@@ -205,5 +203,5 @@ out:
dlclose(application_services_handle);
return err;
-#endif /* !TARGET_OS_IPHONE */
+#endif /* !HAVE_APPLICATIONSERVICES_APPLICATIONSERVICES_H */
}
diff --git a/src/unix/fsevents.c b/src/unix/fsevents.c
index ee45299b..3135e738 100644
--- a/src/unix/fsevents.c
+++ b/src/unix/fsevents.c
@@ -21,7 +21,7 @@
#include "uv.h"
#include "internal.h"
-#if TARGET_OS_IPHONE
+#if !HAVE_CORESERVICES_CORESERVICES_H
/* iOS (currently) doesn't provide the FSEvents-API (nor CoreServices) */
@@ -38,7 +38,7 @@ int uv__fsevents_close(uv_fs_event_t* handle) {
void uv__fsevents_loop_delete(uv_loop_t* loop) {
}
-#else /* TARGET_OS_IPHONE */
+#else /* !HAVE_CORESERVICES_CORESERVICES_H */
#include <dlfcn.h>
#include <assert.h>
@@ -916,4 +916,4 @@ int uv__fsevents_close(uv_fs_event_t* handle) {
return 0;
}
-#endif /* TARGET_OS_IPHONE */
+#endif /* !HAVE_CORESERVICES_CORESERVICES_H */
diff --git a/test/test-list.h b/test/test-list.h
index e59c6b65..160f6b36 100644
--- a/test/test-list.h
+++ b/test/test-list.h
@@ -229,7 +229,9 @@ TEST_DECLARE (get_passwd)
TEST_DECLARE (handle_fileno)
TEST_DECLARE (homedir)
TEST_DECLARE (tmpdir)
+#if !__APPLE__
TEST_DECLARE (hrtime)
+#endif
TEST_DECLARE (getaddrinfo_fail)
TEST_DECLARE (getaddrinfo_fail_sync)
TEST_DECLARE (getaddrinfo_basic)
@@ -306,6 +308,7 @@ TEST_DECLARE (fs_futime)
TEST_DECLARE (fs_file_open_append)
TEST_DECLARE (fs_stat_missing_path)
TEST_DECLARE (fs_read_file_eof)
+#if !__APPLE__ || HAVE_CORESERVICES_CORESERVICES_H
TEST_DECLARE (fs_event_watch_dir)
TEST_DECLARE (fs_event_watch_dir_recursive)
#ifdef _WIN32
@@ -327,6 +330,7 @@ TEST_DECLARE (fs_event_close_in_callback)
TEST_DECLARE (fs_event_start_and_close)
TEST_DECLARE (fs_event_error_reporting)
TEST_DECLARE (fs_event_getpath)
+#endif
TEST_DECLARE (fs_scandir_empty_dir)
TEST_DECLARE (fs_scandir_non_existent_dir)
TEST_DECLARE (fs_scandir_file)
@@ -426,9 +430,11 @@ TEST_DECLARE (fork_socketpair)
TEST_DECLARE (fork_socketpair_started)
TEST_DECLARE (fork_signal_to_child)
TEST_DECLARE (fork_signal_to_child_closed)
+#if !__APPLE__ || HAVE_CORESERVICES_CORESERVICES_H
TEST_DECLARE (fork_fs_events_child)
TEST_DECLARE (fork_fs_events_child_dir)
TEST_DECLARE (fork_fs_events_file_parent_child)
+#endif
#ifndef __MVS__
TEST_DECLARE (fork_threadpool_queue_work_simple)
#endif
@@ -721,7 +727,9 @@ TASK_LIST_START
TEST_ENTRY (tmpdir)
+#if !__APPLE__
TEST_ENTRY (hrtime)
+#endif
TEST_ENTRY_CUSTOM (getaddrinfo_fail, 0, 0, 10000)
TEST_ENTRY_CUSTOM (getaddrinfo_fail_sync, 0, 0, 10000)
@@ -851,6 +859,7 @@ TASK_LIST_START
TEST_ENTRY (fs_stat_missing_path)
TEST_ENTRY (fs_read_file_eof)
TEST_ENTRY (fs_file_open_append)
+#if !__APPLE__ || HAVE_CORESERVICES_CORESERVICES_H
TEST_ENTRY (fs_event_watch_dir)
TEST_ENTRY (fs_event_watch_dir_recursive)
#ifdef _WIN32
@@ -872,6 +881,7 @@ TASK_LIST_START
TEST_ENTRY (fs_event_start_and_close)
TEST_ENTRY (fs_event_error_reporting)
TEST_ENTRY (fs_event_getpath)
+#endif
TEST_ENTRY (fs_scandir_empty_dir)
TEST_ENTRY (fs_scandir_non_existent_dir)
TEST_ENTRY (fs_scandir_file)
@@ -921,9 +931,11 @@ TASK_LIST_START
TEST_ENTRY (fork_socketpair_started)
TEST_ENTRY (fork_signal_to_child)
TEST_ENTRY (fork_signal_to_child_closed)
+#if !__APPLE__ || HAVE_CORESERVICES_CORESERVICES_H
TEST_ENTRY (fork_fs_events_child)
TEST_ENTRY (fork_fs_events_child_dir)
TEST_ENTRY (fork_fs_events_file_parent_child)
+#endif
#ifndef __MVS__
TEST_ENTRY (fork_threadpool_queue_work_simple)
#endif
--
2.17.1

View File

@ -10683,9 +10683,7 @@ with pkgs;
then darwin.libunwind
else callPackage ../development/libraries/libunwind { };
libuv = callPackage ../development/libraries/libuv {
inherit (darwin.apple_sdk.frameworks) ApplicationServices CoreServices;
};
libuv = callPackage ../development/libraries/libuv { };
libv4l = lowPrio (v4l_utils.override {
withUtils = false;