From patchwork Tue Sep 17 03:58:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matt Weber X-Patchwork-Id: 1163162 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.133; helo=hemlock.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=rockwellcollins.com Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46XTqW3nfZz9sNk for ; Tue, 17 Sep 2019 13:58:30 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 6168F875BC; Tue, 17 Sep 2019 03:58:28 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id u8y7yqPK1hXI; Tue, 17 Sep 2019 03:58:27 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id 9F28687526; Tue, 17 Sep 2019 03:58:27 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id F0E471BF4E2 for ; Tue, 17 Sep 2019 03:58:26 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 8F35587526 for ; Tue, 17 Sep 2019 03:58:26 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Xmrg8YtdEARW for ; Tue, 17 Sep 2019 03:58:23 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from da1vs04.rockwellcollins.com (smtpimr.rockwellcollins.com [205.175.227.52]) by hemlock.osuosl.org (Postfix) with ESMTPS id 149548751C for ; Tue, 17 Sep 2019 03:58:22 +0000 (UTC) Received: from ofwda1n02.rockwellcollins.com (HELO ciulimr02.rockwellcollins.com) ([205.175.227.14]) by da1vs04.rockwellcollins.com with ESMTP; 16 Sep 2019 22:58:22 -0500 X-Received: from biscuits.rockwellcollins.lab (biscuits.rockwellcollins.lab [10.148.119.137]) by ciulimr02.rockwellcollins.com (Postfix) with ESMTP id 836FC20084; Mon, 16 Sep 2019 22:58:21 -0500 (CDT) From: Matt Weber To: buildroot@buildroot.org Date: Mon, 16 Sep 2019 22:58:14 -0500 Message-Id: <20190917035815.1750-1-matthew.weber@rockwellcollins.com> X-Mailer: git-send-email 2.17.1 Subject: [Buildroot] [PATCH v2 1/2] package/fakeroot: test for SYSV IPC support X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Yann E . MORIN" , Jean-Francois Doyon MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" fakeroot can be built to either use SYSV IPC or TCP for message passing. A bug was discovered where Microsoft Windows 10 Services for Linux doesn't include support for SYSV IPC MsgQ. This patch adds support to detect this case and automatically build fakeroot to use the TCP transport instead (It is assumed a TCP transport would definitely have more overhead then MsgQs so the default wasn't changed to TCP). Fixes https://bugs.busybox.net/show_bug.cgi?id=11366 Cc: Yann E. MORIN Signed-off-by: Jean-Francois Doyon Signed-off-by: Matthew Weber --- Changes v1 -> v2 (Orig http://patchwork.ozlabs.org/patch/1130987/) [Yann - Cleaned up commit log to be clear of the intent of this patch. TCP IPC has other use cases but those don't apply to this fix and don't need to be included. - Verified concurrent use of TCP IPC are using ephemeral ports - Respining the orig patchset including runtime determination of enabling support instead of making it default. --- ...003-Select-TCP-when-lack-of-SYSV-IPC.patch | 77 +++++++++++++++++++ package/fakeroot/fakeroot.mk | 18 ++++- 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 package/fakeroot/0003-Select-TCP-when-lack-of-SYSV-IPC.patch diff --git a/package/fakeroot/0003-Select-TCP-when-lack-of-SYSV-IPC.patch b/package/fakeroot/0003-Select-TCP-when-lack-of-SYSV-IPC.patch new file mode 100644 index 0000000000..07b206b68e --- /dev/null +++ b/package/fakeroot/0003-Select-TCP-when-lack-of-SYSV-IPC.patch @@ -0,0 +1,77 @@ +From 8e9a7a8c72a9fe407d296ec0ffeb56b2cd271959 Mon Sep 17 00:00:00 2001 +From: Matt Weber +Date: Mon, 16 Sep 2019 22:00:29 -0500 +Subject: [PATCH] Select TCP when lack of SYSV IPC + +Update to add a configure test to build and install the TCP IPC version +when detecting SYSV IPC MsgQ support isn't available. + +The issue was initially discovered on Windows Services for Linux +(WSL1.0). WSL does have some SysV IPC, but no message Q's, which is +required by fakeroot/faked by default. + +Fixes: +https://github.com/Microsoft/WSL/issues/2465 + +Additional bug reports: +https://bugs.busybox.net/show_bug.cgi?id=11366 + +Upstream: +https://salsa.debian.org/clint/fakeroot/merge_requests/2 + +Signed-off-by: Jean-Francois Doyon +Signed-off-by: Matthew Weber +--- + configure.ac | 36 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +diff --git a/configure.ac b/configure.ac +index a9189e6..1650f77 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -25,6 +25,42 @@ AC_CACHE_CHECK([which IPC method to use], + [ac_cv_use_ipc], + [ac_cv_use_ipc=sysv]) + ++if test $ac_cv_use_ipc = "sysv"; then ++ AC_MSG_CHECKING([whether SysV IPC message queues are actually working on the host]) ++ ++ AC_LANG_PUSH(C) ++ AC_TRY_RUN([ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++int main() { ++ ++ srandom(time(NULL)+getpid()*33151); ++ key_t msg_key = random(); ++ int msg_get = msgget(msg_key, IPC_CREAT|0600); ++ ++ if (msg_get==-1) { ++ return 1; ++ } else { ++ msgctl(msg_get, IPC_RMID, NULL); ++ return 0; ++ } ++ ++}], [ac_cv_use_ipc=sysv], [ac_cv_use_ipc=tcp]) ++ ++ if test $ac_cv_use_ipc = "tcp"; then ++ AC_MSG_RESULT([No, using TCP]) ++ else ++ AC_MSG_RESULT([Yes]) ++ fi ++ ++ AC_LANG_POP(C) ++fi ++ + AC_ARG_WITH([dbformat], + AS_HELP_STRING([--with-dbformat@<:@=DBFORMAT@:>@], + [database format to use: either inode (default) or path]), +-- +2.17.1 + diff --git a/package/fakeroot/fakeroot.mk b/package/fakeroot/fakeroot.mk index 4aa27a1b0c..2c1e4ea1c5 100644 --- a/package/fakeroot/fakeroot.mk +++ b/package/fakeroot/fakeroot.mk @@ -8,7 +8,7 @@ FAKEROOT_VERSION = 1.20.2 FAKEROOT_SOURCE = fakeroot_$(FAKEROOT_VERSION).orig.tar.bz2 FAKEROOT_SITE = http://snapshot.debian.org/archive/debian/20141005T221953Z/pool/main/f/fakeroot -HOST_FAKEROOT_DEPENDENCIES = host-acl +HOST_FAKEROOT_DEPENDENCIES = host-acl host-automake host-autoconf host-libtool # Force capabilities detection off # For now these are process capabilities (faked) rather than file # so they're of no real use @@ -16,6 +16,22 @@ HOST_FAKEROOT_CONF_ENV = \ ac_cv_header_sys_capability_h=no \ ac_cv_func_capset=no +# We apply a patch to detect the availability of SysV IPC Message Q's via +# autoconf since some hosts may not have that feature implemented, and +# fakeroot defaults to that unless explicitely told otherwise. +# This means we need to run autoreconf after patching. +# The source tree seems to have a custom bootstrap script to do this however +# and it does some non-standard things, so the built-in _AUTORECONF hook does +# not work out of the box. +# Instead, we replicate the useful bits here, and then run the autoreconf hook +# explicitely. +define HOST_FAKEROOT_BOOTSTRAP + test -d $(@D)/build-aux || mkdir $(@D)/build-aux + test -f $(@D)/ltmain.sh || (cd $(@D) && exec $(LIBTOOLIZE) --install --force) + $(AUTORECONF_HOOK) +endef +HOST_FAKEROOT_PRE_CONFIGURE_HOOKS += HOST_FAKEROOT_BOOTSTRAP + FAKEROOT_LICENSE = GPL-3.0+ FAKEROOT_LICENSE_FILES = COPYING From patchwork Tue Sep 17 03:58:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matt Weber X-Patchwork-Id: 1163163 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.136; helo=silver.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=rockwellcollins.com Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 46XTrj4FVYz9sNk for ; Tue, 17 Sep 2019 13:59:33 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 2C7DA20377; Tue, 17 Sep 2019 03:59:30 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zUoKO+NkJSXK; Tue, 17 Sep 2019 03:59:28 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id CF6B92045A; Tue, 17 Sep 2019 03:59:28 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 121891BF20B for ; Tue, 17 Sep 2019 03:59:28 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 088A584D3B for ; Tue, 17 Sep 2019 03:59:28 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3UErRXQ+m1e6 for ; Tue, 17 Sep 2019 03:59:27 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from secvs04.rockwellcollins.com (smtpimr.rockwellcollins.com [205.175.225.130]) by whitealder.osuosl.org (Postfix) with ESMTPS id 0FC8D84D6E for ; Tue, 17 Sep 2019 03:59:26 +0000 (UTC) Received: from ofwgwc03.rockwellcollins.com (HELO ciulimr02.rockwellcollins.com) ([205.175.225.12]) by secvs04.rockwellcollins.com with ESMTP; 16 Sep 2019 22:58:23 -0500 X-Received: from biscuits.rockwellcollins.lab (biscuits.rockwellcollins.lab [10.148.119.137]) by ciulimr02.rockwellcollins.com (Postfix) with ESMTP id 8CB4720084; Mon, 16 Sep 2019 22:58:22 -0500 (CDT) From: Matt Weber To: buildroot@buildroot.org Date: Mon, 16 Sep 2019 22:58:15 -0500 Message-Id: <20190917035815.1750-2-matthew.weber@rockwellcollins.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190917035815.1750-1-matthew.weber@rockwellcollins.com> References: <20190917035815.1750-1-matthew.weber@rockwellcollins.com> Subject: [Buildroot] [PATCH v2 2/2] package/fakeroot: cleaned up check-package git format warning X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Yann E . MORIN" MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" 0002-communicate-check-return-status-of-msgrcv.patch generate your patches with 'git format-patch -N' Cc: Yann E. MORIN Signed-off-by: Matthew Weber --- .../0002-communicate-check-return-status-of-msgrcv.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/fakeroot/0002-communicate-check-return-status-of-msgrcv.patch b/package/fakeroot/0002-communicate-check-return-status-of-msgrcv.patch index 3bb4f9701f..4e81b49122 100644 --- a/package/fakeroot/0002-communicate-check-return-status-of-msgrcv.patch +++ b/package/fakeroot/0002-communicate-check-return-status-of-msgrcv.patch @@ -1,7 +1,7 @@ From a853f21633693f9eefc4949660253a5328d2d2f3 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" Date: Sun, 13 Aug 2017 23:21:54 +0200 -Subject: [PATCH 1/1] communicate: check return status of msgrcv() +Subject: [PATCH] communicate: check return status of msgrcv() msgrcv can return with -1 to indicate an error condition. One such error is to have been interrupted by a signal.