unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#56664] [PATCH] gnu: Add qtscrcpy.
@ 2022-07-20 13:20 phodina via Guix-patches via
  2022-07-20 13:48 ` Maxime Devos
  0 siblings, 1 reply; 7+ messages in thread
From: phodina via Guix-patches via @ 2022-07-20 13:20 UTC (permalink / raw)
  To: 56664


[-- Attachment #1.1: Type: text/plain, Size: 370 bytes --]

Hi,

this patch adds support for screen mirroring Android phones on the desktops.

There are 2 remarks:

- The Android part scrcpy-server is prebuild due to Guix not supporting gradle and Android builds. Without this the tool does not work.

-  I've currently hardcoded the x86 architecture in the install phase. Not sure how to make it architecture agnostic.

----
Petr

[-- Attachment #1.2: Type: text/html, Size: 861 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-qtscrcpy.patch --]
[-- Type: text/x-patch; name=0001-gnu-Add-qtscrcpy.patch, Size: 7071 bytes --]

From 3ec453db1bc1c6b5d75242ae2491f0bd36f5a26a Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Tue, 11 Jan 2022 03:14:03 +0100
Subject: [PATCH] gnu: Add qtscrcpy.

* gnu/packages/android.scm (qtscrcpy): New variable.

diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index 04dc4b6499..15f96ba294 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Sergey Trofimov <sarg@sarg.org.ru>
 ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
-;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -34,6 +34,7 @@ (define-module (gnu packages android)
   #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system android-ndk)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system python)
@@ -49,7 +50,9 @@ (define-module (gnu packages android)
   #:use-module (gnu packages image)
   #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages pcre)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
@@ -61,6 +64,7 @@ (define-module (gnu packages android)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages video)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml))
@@ -1133,6 +1137,90 @@ (define-public python-miio
 for communicating with Xiaomi smart appliances over miIO and MIoT protocols.")
     (license license:gpl3+)))
 
+(define-public qtscrcpy
+  ;; this tracks the QtScrcpyCore submodule
+  (let ((commit "3004e63935fe8a3e57b91e117a91c1a6aa68ae42")
+        (revision "1"))
+    (package
+      (name "qtscrcpy")
+      (version "2.0.1")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/barry-ran/QtScrcpy")
+                      (commit (string-append "v" version))))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1l3l6z4snzfljzzywf6yxw0fc1c0kkkcw3477rmfkrd7rapwxndl"))))
+      (build-system cmake-build-system)
+      (arguments
+       (list #:tests? #f
+             #:phases #~(modify-phases %standard-phases
+                          (add-after 'unpack 'download-qtscrcpycore
+                            (lambda* _
+                              (copy-recursively (string-append #$(origin
+                                                                   (method
+                                                                    git-fetch)
+                                                                   (uri (git-reference
+                                                                         (url
+                                                                          "https://github.com/barry-ran/QtScrcpyCore")
+                                                                         (commit
+                                                                          commit)))
+                                                                   (file-name (git-file-name
+                                                                               name
+                                                                               version))
+                                                                   (sha256 (base32
+                                                                            "0x57vv1la27m67dgvbll24h7amqmxjs8xik4qyizx5qjxhylw93c")))
+                                                               "/")
+                                                "QtScrcpy/QtScrcpyCore")
+                              (substitute* "QtScrcpy/QtScrcpyCore/CMakeLists.txt"
+                                ((".*/src/third_party/adb/linux/adb.*")
+                                 ""))
+                              (delete-file-recursively
+                               "QtScrcpy/QtScrcpyCore/src/third_party/adb")
+                              (delete-file-recursively
+                               "QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg")))
+                          (add-after 'unpack 'fix-adb-path
+                            (lambda* (#:key inputs #:allow-other-keys)
+                              (substitute* "QtScrcpy/main.cpp"
+                                (("\"\\..*linux/adb")
+                                 (string-append "\""
+                                                (assoc-ref inputs "adb")
+                                                "/bin/adb")))))
+                          (replace 'install
+                            (lambda* (#:key outputs #:allow-other-keys)
+                              (let* ((bin (string-append #$output "/bin"))
+                                     (build (string-append (getenv "PWD")
+                                             "/source/output/x64/RelWithDebInfo"))
+                                     (qtscrcpy (string-append build
+                                                              "/QtScrcpy"))
+                                     (scrcpy-server (string-append build
+                                                     "/scrcpy-server"))
+                                     (config (string-append #$output
+                                                            "/etc/qtscrcpy"))
+                                     (ini (string-append (getenv "PWD")
+                                           "/source/config/config.ini")))
+                                (mkdir-p bin)
+                                (mkdir-p config)
+                                (install-file qtscrcpy bin)
+                                (install-file scrcpy-server bin)
+                                (install-file ini config)))))))
+      (native-inputs (list qttools pkg-config))
+      (inputs (list adb
+                    ffmpeg
+                    qtx11extras
+                    qtmultimedia
+                    qtbase-5
+                    zlib))
+      (synopsis "Android real-time display control software")
+      (description
+       "This package provides QtScrcpy which connects to Android
+devices via USB (or via TCP/IP) for display and control.  It does NOT require
+the root privileges.  Supports up to 16 Android device connections at the same time.")
+      (home-page "https://github.com/DanielOgorchock/joycond")
+      (license license:asl2.0))))
+
 (define-public fdroidserver
   (package
     (name "fdroidserver")
-- 
2.37.0


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

end of thread, other threads:[~2022-07-20 15:35 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-20 13:20 [bug#56664] [PATCH] gnu: Add qtscrcpy phodina via Guix-patches via
2022-07-20 13:48 ` Maxime Devos
2022-07-20 15:03   ` phodina via Guix-patches via
2022-07-20 15:10     ` Maxime Devos
2022-07-20 15:18       ` Maxime Devos
2022-07-20 15:17     ` Maxime Devos
2022-07-20 15:32       ` phodina via Guix-patches via

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).