From f6e75b0db28bf3ba0e402069b0fc173411d414af Mon Sep 17 00:00:00 2001 From: Danny Milosavljevic Date: Thu, 26 Apr 2018 02:15:59 +0200 Subject: [PATCH] gnu: adb: Use android-ndk-build-system. * gnu/packages/android.scm (adb)[build-system]: Switch to android-ndk-build-system. [arguments]<#:tests?>: Disable. [arguments]<#:phases>[create-Makefile]: Delete phase. [arguments]<#:phases>[fix-clang]: Delete phase. [arguments]<#:phases>[fix-main]: Delete phase. [arguments]<#:phases>[make-libs-available]: New phase. [arguments]<#:phases>[install-headers]: New phase. [arguments]<#:make-flags]: Add CFLAGS, CXXFLAGS. [inputs]: Add liblog. [source]: Add patch "adb-add-libraries.patch". * gnu/packages/patches/adb-add-libraries.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/android.scm | 87 +++++--------------- gnu/packages/patches/adb-add-libraries.patch | 19 +++++ 3 files changed, 39 insertions(+), 68 deletions(-) create mode 100644 gnu/packages/patches/adb-add-libraries.patch diff --git a/gnu/local.mk b/gnu/local.mk index cacc146e4a..0e1d686a6c 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -553,6 +553,7 @@ dist_patch_DATA = \ %D%/packages/patches/abiword-black-drawing-with-gtk322.patch \ %D%/packages/patches/acl-fix-perl-regex.patch \ %D%/packages/patches/acl-hurd-path-max.patch \ + %D%/packages/patches/adb-add-libraries.patch \ %D%/packages/patches/aegis-constness-error.patch \ %D%/packages/patches/aegis-perl-tempdir1.patch \ %D%/packages/patches/aegis-perl-tempdir2.patch \ diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm index 09426058e4..085bf41aeb 100644 --- a/gnu/packages/android.scm +++ b/gnu/packages/android.scm @@ -201,82 +201,33 @@ various Android core host applications.") (inherit (android-platform-system-core version)) (patches (search-patches "libbase-use-own-logging.patch" - "libbase-fix-includes.patch")))) - (build-system gnu-build-system) + "libbase-fix-includes.patch" + "adb-add-libraries.patch")))) + (build-system android-ndk-build-system) (arguments - `(#:phases + `(#:tests? #f ; TODO. + #:make-flags + (list "CFLAGS=-Wno-error" + "CXXFLAGS=-fpermissive -Wno-error -std=gnu++14 -D_Nonnull= -D_Nullable= -I ." + (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib " + "-Wl,-rpath=" (assoc-ref %build-inputs "openssl") "/lib -L .")) + #:phases (modify-phases %standard-phases (add-after 'unpack 'enter-source (lambda _ (chdir "adb") #t)) - (add-before 'build 'fix-clang - (lambda _ - ;; adb_client.h contains _Nonnull and _Nullable attributes, that - ;; are not understood by gcc. - (substitute* "adb_client.h" - (("_Nonnull") "") - (("_Nullable") "")) + (add-after 'enter-source 'make-libs-available + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "Android.mk" + (("libcrypto_static") "libcrypto")) #t)) - (add-before 'build 'fix-main - (lambda _ - ;; main.cpp used to be adb_main.cpp in the current directory - ;; rather than in its own subdirectory, but it was not fixed. - ;; This leads to some header files not being found anymore. - (copy-file "client/main.cpp" "adb_main.cpp") - #t)) - (add-after 'enter-source 'create-Makefile - (lambda* (#:key outputs #:allow-other-keys) - ;; No useful makefile is shipped, so we create one. - (with-output-to-file "Makefile" - (lambda _ - (display - (string-append - ;; Common for all components. - "CXXFLAGS += -std=gnu++14 -fpermissive\n" - "CPPFLAGS += -I../include -I../base/include -I. -DADB_HOST=1 " - "-DADB_REVISION='\"" ,version "\"' -fPIC\n" - "LDFLAGS += -lcrypto -lpthread -lbase -lcutils -L. -ladb\n" - - ;; Libadb specifics. - "LIBADB_SOURCES = adb.cpp adb_auth.cpp adb_io.cpp " - "adb_listeners.cpp adb_trace.cpp adb_utils.cpp fdevent.cpp " - "sockets.cpp transport.cpp transport_local.cpp transport_usb.cpp " - "get_my_path_linux.cpp sysdeps_unix.cpp usb_linux.cpp " - "adb_auth_host.cpp diagnose_usb.cpp services.cpp " - "shell_service_protocol.cpp bugreport.cpp line_printer.cpp\n" - - "LIBADB_LDFLAGS += -shared -Wl,-soname,libadb.so.0 " - "-lcrypto -lpthread -lbase\n" - - ;; Adb specifics. - "ADB_SOURCES = adb_main.cpp console.cpp commandline.cpp " - "adb_client.cpp file_sync_client.cpp\n" - "ADB_LDFLAGS += -Wl,-rpath=" (assoc-ref outputs "out") "/lib\n" - - "build: libadb $(ADB_SOURCES)\n" - " $(CXX) $(ADB_SOURCES) -o adb $(CXXFLAGS) $(CPPFLAGS) " - "$(ADB_LDFLAGS) $(LDFLAGS)\n" - - "libadb: $(LIBADB_SOURCES)\n" - " $(CXX) $^ -o libadb.so.0 $(CXXFLAGS) $(CPPFLAGS) " - "$(LIBADB_LDFLAGS)\n" - " ln -sv libadb.so.0 libadb.so\n")) - #t)))) - (delete 'configure) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib")) - (bin (string-append out "/bin"))) - (install-file "libadb.so.0" lib) - (install-file "adb" bin) - (with-directory-excursion lib - (symlink "libadb.so.0" "libadb.so")) - #t)))) - ;; Test suite must be run with attached devices - #:tests? #f)) + (add-after 'install 'install-headers + (lambda* (#:key inputs outputs #:allow-other-keys) + (install-file "diagnose_usb.h" (string-append (assoc-ref outputs "out") "/include")) + #t))))) (inputs `(("libbase" ,libbase) ("libcutils" ,libcutils) + ("liblog" ,liblog) ("openssl" ,openssl))) (home-page "https://developer.android.com/studio/command-line/adb.html") (synopsis "Android Debug Bridge") diff --git a/gnu/packages/patches/adb-add-libraries.patch b/gnu/packages/patches/adb-add-libraries.patch new file mode 100644 index 0000000000..06b3ec3764 --- /dev/null +++ b/gnu/packages/patches/adb-add-libraries.patch @@ -0,0 +1,19 @@ +--- a/adb/Android.mk 2018-04-25 23:23:29.527198350 +0200 ++++ b/adb/Android.mk 2018-04-25 23:24:25.558632573 +0200 +@@ -226,7 +226,7 @@ + LOCAL_SRC_FILES := test_track_devices.cpp + LOCAL_SANITIZE := $(adb_host_sanitize) + LOCAL_SHARED_LIBRARIES := libbase +-LOCAL_STATIC_LIBRARIES := libadb libcrypto_static libcutils ++LOCAL_STATIC_LIBRARIES := libadb libbase libcrypto_static libcutils + LOCAL_LDLIBS += -lrt -ldl -lpthread + include $(BUILD_HOST_EXECUTABLE) + endif +@@ -278,6 +278,7 @@ + LOCAL_SANITIZE := $(adb_host_sanitize) + LOCAL_STATIC_LIBRARIES := \ + libadb \ ++ libcutils \ + libbase \ + libcrypto_static \ + libdiagnose_usb \