diff mbox series

package/fakeroot: use TCP for msg passing

Message ID 20190711193654.2039-1-matthew.weber@rockwellcollins.com
State Changes Requested
Headers show
Series package/fakeroot: use TCP for msg passing | expand

Commit Message

Matt Weber July 11, 2019, 7:36 p.m. UTC
fakeroot can be built to either use SYSV IPC or TCP for message passing.

Cases for which the SYSV IPC version fails or causes problems but for
which fakeroot-tcp has been observed to work well include the items
listed below.

  * Multithreaded applications (using pthread)
  * Running under realtime-preempt kernel
  * Microsoft Windows 10 Services for Linux

Link to readme capturing original upstream bug report #
https://salsa.debian.org/clint/fakeroot/commit/113c6320244c4261f7f7a9ce07cf7b5465573dfe

Fixes
https://bugs.busybox.net/show_bug.cgi?id=11366

Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
---
I can't find a good reason to not make this the new default in the
Buildroot host build of fakeroot.  vs auto detecting which to build
depending on what the host env can support.

For good measure, in-addition to this change, I will submit an upstream
patch for the suggested configure.as update (pending a little cleanup
in that proposed patch). https://bugs.busybox.net/attachment.cgi?id=7791
---
 package/fakeroot/fakeroot.mk | 2 ++
 1 file changed, 2 insertions(+)

Comments

Yann E. MORIN July 14, 2019, 8:33 p.m. UTC | #1
Matt, All,

On 2019-07-11 14:36 -0500, Matt Weber spake thusly:
> fakeroot can be built to either use SYSV IPC or TCP for message passing.
> 
> Cases for which the SYSV IPC version fails or causes problems but for
> which fakeroot-tcp has been observed to work well include the items
> listed below.
> 
>   * Multithreaded applications (using pthread)

I know you used the commit log from upstream, but that was written 12
year ago now. 12 years ago NPTL was still new-ish, and LinuxThreads were
still alive. Is it still true that fakeroot misbehaves when using
pthreads at all nowadays?

>   * Running under realtime-preempt kernel
>   * Microsoft Windows 10 Services for Linux
> 
> Link to readme capturing original upstream bug report #
> https://salsa.debian.org/clint/fakeroot/commit/113c6320244c4261f7f7a9ce07cf7b5465573dfe
> 
> Fixes
> https://bugs.busybox.net/show_bug.cgi?id=11366
> 
> Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
> ---
> I can't find a good reason to not make this the new default in the
> Buildroot host build of fakeroot.  vs auto detecting which to build
> depending on what the host env can support.

I have two questions:

  - can we run two unrelated fakeroot concurrently? E.g. if we have two
    buildsin parallel, which happen to each call their fakeroot at about
    the same time that the two fakeroot will run in parallel, won;t that
    clash? I think it boils down to how fakeroot chooses the port to
    listen on;

  - is there a performance issue? I wonder how it behaves for very big
    rootfs content, when compared to the sysv ipc.

Regards,
Yann E. MORIN.

> For good measure, in-addition to this change, I will submit an upstream
> patch for the suggested configure.as update (pending a little cleanup
> in that proposed patch). https://bugs.busybox.net/attachment.cgi?id=7791
> ---
>  package/fakeroot/fakeroot.mk | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/package/fakeroot/fakeroot.mk b/package/fakeroot/fakeroot.mk
> index 4aa27a1b0c..d8effc955e 100644
> --- a/package/fakeroot/fakeroot.mk
> +++ b/package/fakeroot/fakeroot.mk
> @@ -16,6 +16,8 @@ HOST_FAKEROOT_CONF_ENV = \
>  	ac_cv_header_sys_capability_h=no \
>  	ac_cv_func_capset=no
>  
> +HOST_FAKEROOT_CONF_OPTS = --with-ipc=tcp
> +
>  FAKEROOT_LICENSE = GPL-3.0+
>  FAKEROOT_LICENSE_FILES = COPYING
>  
> -- 
> 2.17.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Matt Weber Sept. 13, 2019, 5:51 p.m. UTC | #2
Yann,


On Sun, Jul 14, 2019 at 3:33 PM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
>
> Matt, All,
>
> On 2019-07-11 14:36 -0500, Matt Weber spake thusly:
> > fakeroot can be built to either use SYSV IPC or TCP for message passing.
> >
> > Cases for which the SYSV IPC version fails or causes problems but for
> > which fakeroot-tcp has been observed to work well include the items
> > listed below.
> >
> >   * Multithreaded applications (using pthread)
>
> I know you used the commit log from upstream, but that was written 12
> year ago now. 12 years ago NPTL was still new-ish, and LinuxThreads were
> still alive. Is it still true that fakeroot misbehaves when using
> pthreads at all nowadays?

Unsure.  Maybe better to just refer to the project readme instead of
stating it in the commit?

>
> >   * Running under realtime-preempt kernel
> >   * Microsoft Windows 10 Services for Linux
> >
> > Link to readme capturing original upstream bug report #
> > https://salsa.debian.org/clint/fakeroot/commit/113c6320244c4261f7f7a9ce07cf7b5465573dfe
> >
> > Fixes
> > https://bugs.busybox.net/show_bug.cgi?id=11366
> >
> > Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
> > ---
> > I can't find a good reason to not make this the new default in the
> > Buildroot host build of fakeroot.  vs auto detecting which to build
> > depending on what the host env can support.
>
> I have two questions:
>
>   - can we run two unrelated fakeroot concurrently? E.g. if we have two
>     buildsin parallel, which happen to each call their fakeroot at about
>     the same time that the two fakeroot will run in parallel, won;t that
>     clash? I think it boils down to how fakeroot chooses the port to
>     listen on;

Oh good point, I looked and it seems they are letting the system pick
the port on the server side and then publishing it to the client.  So
we should be good with concurrent builds/fs assembly.

>
>   - is there a performance issue? I wonder how it behaves for very big
>     rootfs content, when compared to the sysv ipc.

I'm guessing there are definitely more context switches as the data
would hit the IP stack.  This really feels like something that should
be only enabled when the host build system doesn't support SYSV IPC.

Regards,
Matt
Matt Weber Sept. 13, 2019, 7:10 p.m. UTC | #3
Yann,

On Fri, Sep 13, 2019 at 12:51 PM Matthew Weber
<matthew.weber@rockwellcollins.com> wrote:
>
> Yann,
>
>
> On Sun, Jul 14, 2019 at 3:33 PM Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> >
> > Matt, All,
> >
> > On 2019-07-11 14:36 -0500, Matt Weber spake thusly:
> > > fakeroot can be built to either use SYSV IPC or TCP for message passing.
> > >
> > > Cases for which the SYSV IPC version fails or causes problems but for
> > > which fakeroot-tcp has been observed to work well include the items
> > > listed below.
> > >
> > >   * Multithreaded applications (using pthread)
> >
> > I know you used the commit log from upstream, but that was written 12
> > year ago now. 12 years ago NPTL was still new-ish, and LinuxThreads were
> > still alive. Is it still true that fakeroot misbehaves when using
> > pthreads at all nowadays?
>
> Unsure.  Maybe better to just refer to the project readme instead of
> stating it in the commit?

I forgot to note, I was able to find a upstream for this one.  I
emailed Clint Adams at debian and he pointed me at doing a pull
request here: https://salsa.debian.org/clint/fakeroot/tree/upstream
I'll get something started this weekend so the configure time check of
sysv ipc is upstream.

Matt
diff mbox series

Patch

diff --git a/package/fakeroot/fakeroot.mk b/package/fakeroot/fakeroot.mk
index 4aa27a1b0c..d8effc955e 100644
--- a/package/fakeroot/fakeroot.mk
+++ b/package/fakeroot/fakeroot.mk
@@ -16,6 +16,8 @@  HOST_FAKEROOT_CONF_ENV = \
 	ac_cv_header_sys_capability_h=no \
 	ac_cv_func_capset=no
 
+HOST_FAKEROOT_CONF_OPTS = --with-ipc=tcp
+
 FAKEROOT_LICENSE = GPL-3.0+
 FAKEROOT_LICENSE_FILES = COPYING