From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id COYLAc39QGMemgAAbAwnHQ (envelope-from ) for ; Sat, 08 Oct 2022 06:34:21 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id cC4LAc39QGP1QQAAauVa8A (envelope-from ) for ; Sat, 08 Oct 2022 06:34:21 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 85CF7F587 for ; Sat, 8 Oct 2022 06:34:20 +0200 (CEST) Received: from localhost ([::1]:43872 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oh1XX-0002kx-N4 for larch@yhetil.org; Sat, 08 Oct 2022 00:34:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39524) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oh1XH-0002kp-2L for guix-patches@gnu.org; Sat, 08 Oct 2022 00:34:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:38797) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oh1XG-0004eC-Gn for guix-patches@gnu.org; Sat, 08 Oct 2022 00:34:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1oh1XG-00077E-0k for guix-patches@gnu.org; Sat, 08 Oct 2022 00:34:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#58341] [PATCH] Add x11vnc recipe Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 08 Oct 2022 04:34:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 58341 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Mehmet Tekman Cc: 58341@debbugs.gnu.org Received: via spool by 58341-submit@debbugs.gnu.org id=B58341.166520363827342 (code B ref 58341); Sat, 08 Oct 2022 04:34:01 +0000 Received: (at 58341) by debbugs.gnu.org; 8 Oct 2022 04:33:58 +0000 Received: from localhost ([127.0.0.1]:37875 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oh1XA-00076s-J3 for submit@debbugs.gnu.org; Sat, 08 Oct 2022 00:33:58 -0400 Received: from mail-qt1-f170.google.com ([209.85.160.170]:36728) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oh1X7-00076e-Op for 58341@debbugs.gnu.org; Sat, 08 Oct 2022 00:33:55 -0400 Received: by mail-qt1-f170.google.com with SMTP id d12so2733220qtp.3 for <58341@debbugs.gnu.org>; Fri, 07 Oct 2022 21:33:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:user-agent:message-id :in-reply-to:date:references:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=of3EpU2/tGJ4gi04RtRbYXRC3/02UcCHy7TWDyUCkQI=; b=AGeFVTD/XdrlAZzY6PIlGYfW4f+zP4kmC8CBjyOoseEZJROZn/MMaz8QP1ZMYEAorW /updPHcwPOslqZIxQvVJcGb0Nr/DPJYiShShltN1LWWc9htaoU2zeoUAj1LGRHe4iZWA DLx2guu5aXtFJ8IieJMh4F7KXlG5lSKgYZE+whQrJk38SCBqe0NLJ6qisKXq8HfEUPLu Kw/B9baikPmOV5On1ngkHOLGftEChQNwGR0kLtignTgp1okYvEVs09fkljrFy/H/IsoK Mdx6x96uWniB3S6+XYfKtCVWzOlj+hkwDd65/1xJ9ylA2chxA9yKcQNIuTUtz/oTXIox ujQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:user-agent:message-id :in-reply-to:date:references:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=of3EpU2/tGJ4gi04RtRbYXRC3/02UcCHy7TWDyUCkQI=; b=SGOMyWqdKUvVsuNkmXGd/QrDYVBGXD6oNYTQU7+YVesYtLr61xJgOasDgTG18WT0wD 1/YEYR1WUuOFhrjD+inoyZecMVSA15X2VJ+NgC1Ifyc1fUV7DBUJoJFl0cVZosGtzANW NJl6BRyBuBlOZBw2Fex7yzTi8dFhwzynCIz5+uZr3l1z60RAKs5mhvBXEjSUV2b8Vltp r/E+UalCS+FOsSIo1x0uQvL+dzcrr7Asz30soEwt89EAN2qT6nROiYKIYEUkgeRm3SG2 SZxdnZ81YFExK3kx/WxejnXHxObBcAr7ox/w2DIzgehntYF9fCg2TBkd16oYLTQ+iyPg EGKg== X-Gm-Message-State: ACrzQf3gFZ0Ie5sdNpXPB82oObLcwZvshbOeiXnQsxnRB2RABZth3xNu VEO27bwNJLY1BAXi1tVYPgVPD1Hjk7t+Kw== X-Google-Smtp-Source: AMsMyM4jZRmijILmtvfMhZfSRpTaPVUGsc24wSQqkb/SajYy3eMueSx9Q258AVpp5QWtH0Zf+Sr2PA== X-Received: by 2002:a05:622a:2c8:b0:391:b8ab:c281 with SMTP id a8-20020a05622a02c800b00391b8abc281mr7055327qtx.188.1665203628019; Fri, 07 Oct 2022 21:33:48 -0700 (PDT) Received: from hurd ([2607:fad8:4:3::1005]) by smtp.gmail.com with ESMTPSA id x4-20020a05620a448400b006cebda00630sm4109195qkp.60.2022.10.07.21.33.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Oct 2022 21:33:47 -0700 (PDT) From: Maxim Cournoyer References: Date: Sat, 08 Oct 2022 00:33:46 -0400 In-Reply-To: (Mehmet Tekman's message of "Thu, 6 Oct 2022 18:05:31 +0200") Message-ID: <874jwf2atx.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1665203660; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=of3EpU2/tGJ4gi04RtRbYXRC3/02UcCHy7TWDyUCkQI=; b=XFMUuOd5jwQEJi4VrxhRO+I8+MXzCQUCWzn55SpFFBNXRkNaF6Qt7h5Mps2FuNOkVgyUNC xflEqJ36l1a156RsEwQEaYBgSPiKAs9D5Wuf0jibfmcuPsUZnEnVpKd9VE+ux0ypBs2tel aNYke4jGGrWKIhZzoKqX+LdZ0ggxI0N6R6ZiEmxQ6k3E0FXzF+iWR1ZDUln7NdXcqoPBRq zIsc+TS5Ev0EehPCk17qiJD/YQfBXXT2km0kamxee1K8QpghHt8xTQMZZKfLt7YYsMRjUF UIhOmKoXEGwYsBrCJEgzUIezptkr8pV9Mh52AbIdCbJG7eSNELneUtsa2ZMNdw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1665203660; a=rsa-sha256; cv=none; b=SLQ/0H5oQAA4tAVcxH6dsXv3lcxk/efrZ0rh3dgfzatFdEQyn7BoE4Wo+6lbOieX3F35RB kMquCN0foKdVVh3kuRdVn9xkSb2dDBI1htq6jba2X7dDyGjPdfnadOKWLXEhoP9hYm1sQS UD6o0rIsWjeqFYQNLoxtrj65XWqkoQr3pwOYV1xLZIJ1kjyXN5+5PENvK/wO7Ip3xo5/PS LqpGz3R/wj9Mrhyd8GUfyNIefAvrBv56/Z82ovCLUAwyCHIJTPrCqd4TMNocaKlU8xHB9G 4FlbxEze0OWdGdgGYVINyCFH7+GSEEhu6UrKWsPjRCiesqbwehX3spu/lrcV3A== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b="AGeFVTD/"; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 6.12 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b="AGeFVTD/"; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 85CF7F587 X-Spam-Score: 6.12 X-Migadu-Scanner: scn1.migadu.com X-TUID: ACYdD7pIUbFA Hello, and thank you for your contribution! Mehmet Tekman writes: > --- > gnu/packages/patches/x11vnc-gcc10-fix.patch | 42 ++++++++++ > ...c-scan-limit-access-to-shared-memory.patch | 22 ++++++ > .../patches/x11vnc-xfc-null-ptr.patch | 29 +++++++ > gnu/packages/x11vnc.scm | 79 +++++++++++++++++++ > 4 files changed, 172 insertions(+) > create mode 100644 gnu/packages/patches/x11vnc-gcc10-fix.patch > create mode 100644 > gnu/packages/patches/x11vnc-scan-limit-access-to-shared-memory.patch > create mode 100644 gnu/packages/patches/x11vnc-xfc-null-ptr.patch > create mode 100644 gnu/packages/x11vnc.scm Would it be possible to send the patch complete with the commit message, as can be produced with 'git format-patch'? You can read 'info "(guix) Submitting Patches". The git commit message should use the GNU ChangeLog format, as mentioned there. You can look at the git history to learn. The patches should be registered in the gnu/local.mk file, in the dist_patch_DATA section. Please mind the sorting in the file. > diff --git a/gnu/packages/patches/x11vnc-gcc10-fix.patch > b/gnu/packages/patches/x11vnc-gcc10-fix.patch > new file mode 100644 > index 0000000000..a32d5785d9 > --- /dev/null > +++ b/gnu/packages/patches/x11vnc-gcc10-fix.patch > @@ -0,0 +1,42 @@ > +From a48b0b1cd887d7f3ae67f525d7d334bd2feffe60 Mon Sep 17 00:00:00 2001 > +From: Alexander Tsoy > +Date: Tue, 28 Jan 2020 22:21:01 +0300 > +Subject: [PATCH] Fix build with -fno-common > + > +GCC 10 defaults to -fno-common > +--- > + src/util.c | 3 +++ > + src/util.h | 6 +++--- > + 2 files changed, 6 insertions(+), 3 deletions(-) > + > +diff --git a/src/util.c b/src/util.c > +index a82a1a42..6a52ebf4 100644 > +--- a/src/util.c > ++++ b/src/util.c > +@@ -47,6 +47,9 @@ int hxl =3D 0; > + #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD > + MUTEX(x11Mutex); > + MUTEX(scrollMutex); > ++MUTEX(clientMutex); > ++MUTEX(inputMutex); > ++MUTEX(pointerMutex); > + #endif > + > + int nfix(int i, int n); > +diff --git a/src/util.h b/src/util.h > +index 35c1afd2..99b5dd1d 100644 > +--- a/src/util.h > ++++ b/src/util.h > +@@ -102,9 +102,9 @@ extern struct timeval _mysleep; > + #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD > + extern MUTEX(x11Mutex); > + extern MUTEX(scrollMutex); > +-MUTEX(clientMutex); > +-MUTEX(inputMutex); > +-MUTEX(pointerMutex); > ++extern MUTEX(clientMutex); > ++extern MUTEX(inputMutex); > ++extern MUTEX(pointerMutex); > + #endif > + > + #define X_INIT INIT_MUTEX(x11Mutex) > diff --git a/gnu/packages/patches/x11vnc-scan-limit-access-to-shared-memo= ry.patch > b/gnu/packages/patches/x11vnc-scan-limit-access-to-shared-memory.patch > new file mode 100644 > index 0000000000..5424094434 > --- /dev/null > +++ b/gnu/packages/patches/x11vnc-scan-limit-access-to-shared-memory.patch > @@ -0,0 +1,22 @@ > +From 69eeb9f7baa14ca03b16c9de821f9876def7a36a Mon Sep 17 00:00:00 2001 > +From: =3D?UTF-8?q?Gu=3DC3=3DA9nal=3D20DAVALAN?=3D > +Date: Wed, 18 Nov 2020 08:40:45 +0100 > +Subject: [PATCH] scan: limit access to shared memory segments to current= user > + > +--- > + src/scan.c | 2 +- > + 1 file changed, 1 insertion(+), 1 deletion(-) > + > +diff --git a/src/scan.c b/src/scan.c > +index 43e00d20..12994d52 100644 > +--- a/src/scan.c > ++++ b/src/scan.c > +@@ -320,7 +320,7 @@ static int shm_create(XShmSegmentInfo *shm, > XImage **ximg_ptr, int w, int h, > + > + #if HAVE_XSHM > + shm->shmid =3D shmget(IPC_PRIVATE, > +- xim->bytes_per_line * xim->height, IPC_CREAT | 0777); > ++ xim->bytes_per_line * xim->height, IPC_CREAT | 0600); > + > + if (shm->shmid =3D=3D -1) { > + rfbErr("shmget(%s) failed.\n", name); > diff --git a/gnu/packages/patches/x11vnc-xfc-null-ptr.patch > b/gnu/packages/patches/x11vnc-xfc-null-ptr.patch > new file mode 100644 > index 0000000000..65f339d716 > --- /dev/null > +++ b/gnu/packages/patches/x11vnc-xfc-null-ptr.patch > @@ -0,0 +1,29 @@ > +From 95a10ab64c2dbbec2c8dad91a5ffb73a0d68474b Mon Sep 17 00:00:00 2001 > +From: Jonathan Liu > +Date: Mon, 16 Mar 2020 20:04:06 +1100 > +Subject: [PATCH] src/cursor: fix xfc NULL pointer dereference > + > +xfc->width and xfc->height for the XFixes cursor image returned from > +XFixesGetCursorImage(dpy) are accessed without first checking that xfc > +is not NULL. This can result in the server sometimes crashing when > +moving a Google Chrome window. > + > +Fixes: 37c946191a0f ("Broken cursor bugfix for 64 bit systems (#49)") > +Signed-off-by: Jonathan Liu > +--- > + src/cursor.c | 2 +- > + 1 file changed, 1 insertion(+), 1 deletion(-) > + > +diff --git a/src/cursor.c b/src/cursor.c > +index 39e73a69..74a08c69 100644 > +--- a/src/cursor.c > ++++ b/src/cursor.c > +@@ -1311,7 +1311,7 @@ static int get_exact_cursor(int init) { > + > + /* retrieve the cursor info + pixels from server: */ > + xfc =3D XFixesGetCursorImage(dpy); > +- { > ++ if (xfc) { > + /* 2017-07-09, Stephan Fuhrmann: This fixes an > implementation flaw for 64 bit systems. > + * The XFixesCursorImage structure says xfc->pixels is > (unsigned long*) in the structure, but > + * the protocol spec says it's 32 bit per pixel > diff --git a/gnu/packages/x11vnc.scm b/gnu/packages/x11vnc.scm > new file mode 100644 > index 0000000000..55c51305b3 Since we are using a recent commit, shouldn't these (upstream?) patches be unnecessary? Perhaps we can use an even newer commit that includes them? > --- /dev/null > +++ b/gnu/packages/x11vnc.scm > @@ -0,0 +1,79 @@ > +;;; GNU Guix --- Functional package management for GNU > +;;; Copyright =C2=A9 2022 Mehmet Tekman > +;;; > +;;; This file is part of GNU Guix. > +;;; > +;;; GNU Guix is free software; you can redistribute it and/or modify it > +;;; under the terms of the GNU General Public License as published by > +;;; the Free Software Foundation; either version 3 of the License, or (at > +;;; your option) any later version. > +;;; > +;;; GNU Guix is distributed in the hope that it will be useful, but > +;;; WITHOUT ANY WARRANTY; without even the implied warranty of > +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +;;; GNU General Public License for more details. > +;;; > +;;; You should have received a copy of the GNU General Public License > +;;; along with GNU Guix. If not, see . > + > + > +(define-module (gnu packages x11vnc) There already is a (gnu packages vnc) module; that'd be a better home. We can group all VNC-related packages there. > + #:use-module (guix packages) > + #:use-module (gnu packages) > + #:use-module (gnu packages perl) > + #:use-module (gnu packages tcl) > + #:use-module (gnu packages pkg-config) > + #:use-module (gnu packages xorg) > + #:use-module (gnu packages tls) > + #:use-module (guix git-download) > + #:use-module (guix build-system gnu) > + #:use-module ((guix licenses) #:prefix license:) > + #:use-module (gnu packages autotools) > + #:use-module (gnu packages avahi) > + #:use-module (gnu packages vnc) > + #:use-module (gnu packages compression) > + #:use-module (gnu packages image)) Imports should be lexicographically sorted. > +(define-public x11vnc When using an unreleased version, it's good to mention why (issues it fixes, a very old release, etc.). > + (let ((commit "4ca006fed80410bd9b061a1519bd5d9366bb0bc8") > + (version "0.9.16") > + (revision "1")) > + (package > + (name "x11vnc") > + (version (git-version version revision commit)) > + (source (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/LibVNC/x11vnc") > + (commit commit))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 > + "1g652mmi79pfq4p5p7spaswa164rpzjhc5rn2phy5pm71lm0vib1"= )) > + (patches > + (search-patches "x11vnc-xfc-null-ptr.patch" > + "x11vnc-gcc10-fix.patch" > + > "x11vnc-scan-limit-access-to-shared-memory.patch")))) Odd blank line here. You can try './pre-inst-env guix style x11vnc' to see how it would do it, else I'd do it like to avoid breaking the 80 chars max width: (search-patches "patch1" "patch2" ...) > + (build-system gnu-build-system) > + (arguments > + '(#:phases > + (modify-phases > + %standard-phases > + (add-before 'bootstrap 'delete-premature-configure > + (lambda _ (substitute* "./autogen.sh" > + ((".*/configure") ""))))))) > + (native-inputs (list > + ;; [optional requirements] > + ;; perl tk > + autoconf automake autobuild pkg-config avahi libvnc > + libx11 libxcomposite libxdamage libxext libxfixes = libxi > + libxinerama libxrandr libxtst > + openssl xdpyinfo zlib libjpeg-turbo xf86-video-dum= my)) The libraries that are used at run time should appear as inputs, not native-inputs. Native-inputs are for build tools or tests. > + (synopsis "VNC server for real X displays") > + (home-page "https://github.com/LibVNC/x11vnc") > + (description > + "x11vnc allows one to view remotely and interact with real X > +displays (i.e. a display corresponding to a physical monitor, keyboard, = and > +mouse) with any VNC viewer. In this way it plays the role for Unix/X11 = that > +WinVNC plays for Windows.") I'd remove the useless comparison with windows, perhaps stress that this provides a VNC *server* in the description as well. > + (license license:gpl2)))) --=20 Thanks, Maxim