trinity.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/5] Makefile: use grep -c to avoid wc -l
@ 2017-02-05 15:53 Tommi Rantala
  2017-02-05 15:53 ` [PATCH 2/5] Makefile: use findstring to check if we are building in development mode Tommi Rantala
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Tommi Rantala @ 2017-02-05 15:53 UTC (permalink / raw)
  To: davej; +Cc: trinity, Tommi Rantala

---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index b93fc3a..16fafe8 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@ VERSION="1.8pre"
 
 INSTALL_PREFIX ?= $(DESTDIR)
 INSTALL_PREFIX ?= $(HOME)
-NR_CPUS := $(shell grep ^processor /proc/cpuinfo | /usr/bin/wc -l)
+NR_CPUS := $(shell grep -c ^processor /proc/cpuinfo)
 
 ifeq ($(CC),"")
 CC := gcc
-- 
2.9.3

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

* [PATCH 2/5] Makefile: use findstring to check if we are building in development mode
  2017-02-05 15:53 [PATCH 1/5] Makefile: use grep -c to avoid wc -l Tommi Rantala
@ 2017-02-05 15:53 ` Tommi Rantala
  2017-02-05 15:53 ` [PATCH 3/5] Makefile: improve build time with immediate variables Tommi Rantala
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Tommi Rantala @ 2017-02-05 15:53 UTC (permalink / raw)
  To: davej; +Cc: trinity, Tommi Rantala

---
 Makefile | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 16fafe8..8088608 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,11 @@
 VERSION="1.8pre"
 
+ifeq (,$(findstring pre,$(VERSION)))
+DEVEL = 0
+else
+DEVEL = 1
+endif
+
 INSTALL_PREFIX ?= $(DESTDIR)
 INSTALL_PREFIX ?= $(HOME)
 NR_CPUS := $(shell grep -c ^processor /proc/cpuinfo)
@@ -15,10 +21,11 @@ CFLAGS += -Wall -Wextra -g -O2 -I. -Iinclude/ -Wimplicit -D_FORTIFY_SOURCE=2 -D_
 CFLAGS += $(shell if $(CC) -std=gnu11 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-std=gnu11"; else echo "-std=gnu99"; fi)
 
 # Only enabled during development, and on gcc 4.9+
+ifeq ($(DEVEL), 1)
 CPP_MAJOR := $(shell $(CPP) -dumpversion 2>&1 | cut -d'.' -f1)
 CPP_MINOR := $(shell $(CPP) -dumpversion 2>&1 | cut -d'.' -f2)
-DEVEL	:= $(shell grep VERSION Makefile | head -n1 | grep pre | wc -l)
-CFLAGS	+= $(shell if [ $(CPP_MAJOR) -eq 5 -a $(CPP_MINOR) -ge 1 -a $(DEVEL) -eq 1 ] ; then echo "-Werror"; else echo ""; fi)
+CFLAGS	+= $(shell if [ $(CPP_MAJOR) -eq 5 -a $(CPP_MINOR) -ge 1 ] ; then echo "-Werror"; else echo ""; fi)
+endif
 
 ifneq ($(SYSROOT),)
 CFLAGS += --sysroot=$(SYSROOT)
@@ -46,7 +53,9 @@ LDLIBS += -lrt
 ifneq ($(shell $(CC) -v 2>&1 | grep -c "clang"), 1)
 CFLAGS += -Wlogical-op
 CFLAGS += -Wstrict-aliasing=3
-CFLAGS += $(shell if [ $(DEVEL) -eq 0 ]; then echo "-Wno-maybe-uninitialized"; else echo ""; fi)
+ifeq ($(DEVEL), 0)
+CFLAGS += -Wno-maybe-uninitialized
+endif
 endif
 
 # Sometimes useful for debugging. more useful with clang than gcc.
-- 
2.9.3

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

* [PATCH 3/5] Makefile: improve build time with immediate variables
  2017-02-05 15:53 [PATCH 1/5] Makefile: use grep -c to avoid wc -l Tommi Rantala
  2017-02-05 15:53 ` [PATCH 2/5] Makefile: use findstring to check if we are building in development mode Tommi Rantala
@ 2017-02-05 15:53 ` Tommi Rantala
  2017-02-05 15:53 ` [PATCH 4/5] Makefile: -Werror also for gcc 6.x Tommi Rantala
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: Tommi Rantala @ 2017-02-05 15:53 UTC (permalink / raw)
  To: davej; +Cc: trinity, Tommi Rantala

It looks like "CFLAGS += $(shell ..." is a bad idea, as make will repeat the
shell expansion again and again during the build.

Use immediate variables where we can to avoid the issue.

make -j4 before this patch:
real	0m10.774s
user	0m24.541s
sys	0m10.676s

make -j4 with this patch:
real	0m8.173s
user	0m20.817s
sys	0m7.632s
---
 Makefile | 74 +++++++++++++++++++++++++++++++++-------------------------------
 1 file changed, 38 insertions(+), 36 deletions(-)

diff --git a/Makefile b/Makefile
index 8088608..8a061b1 100644
--- a/Makefile
+++ b/Makefile
@@ -18,13 +18,15 @@ LD := $(CROSS_COMPILE)$(LD)
 
 CFLAGS += -Wall -Wextra -g -O2 -I. -Iinclude/ -Wimplicit -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D__linux__
 
-CFLAGS += $(shell if $(CC) -std=gnu11 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-std=gnu11"; else echo "-std=gnu99"; fi)
+CCSTD := $(shell if $(CC) -std=gnu11 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-std=gnu11"; else echo "-std=gnu99"; fi)
+CFLAGS += $(CCSTD)
 
 # Only enabled during development, and on gcc 4.9+
 ifeq ($(DEVEL), 1)
 CPP_MAJOR := $(shell $(CPP) -dumpversion 2>&1 | cut -d'.' -f1)
 CPP_MINOR := $(shell $(CPP) -dumpversion 2>&1 | cut -d'.' -f2)
-CFLAGS	+= $(shell if [ $(CPP_MAJOR) -eq 5 -a $(CPP_MINOR) -ge 1 ] ; then echo "-Werror"; else echo ""; fi)
+WERROR	:= $(shell if [ $(CPP_MAJOR) -eq 5 -a $(CPP_MINOR) -ge 1 ] ; then echo "-Werror"; else echo ""; fi)
+CFLAGS	+= $(WERROR)
 endif
 
 ifneq ($(SYSROOT),)
@@ -75,40 +77,40 @@ test:
 	@if [ ! -f config.h ]; then  echo "^[[1;31mRun configure.sh first.^[[0m" ; exit; fi
 
 
-MACHINE		= $(shell $(CC) -dumpmachine)
-SYSCALLS_ARCH	= $(shell case "$(MACHINE)" in \
-		  (sh*) echo syscalls/sh/*.c ;; \
-		  (ia64*) echo syscalls/ia64/*.c ;; \
-		  (ppc*|powerpc*) echo syscalls/ppc/*.c ;; \
-		  (sparc*) echo syscalls/sparc/*.c ;; \
-		  (x86_64*) echo syscalls/x86/*.c \
-				 syscalls/x86/i386/*.c \
-				 syscalls/x86/x86_64/*.c;; \
-		  (i?86*) echo syscalls/x86/*.c \
-			       syscalls/x86/i386/*.c;; \
-		  esac)
-
-HEADERS		= $(patsubst %.h,%.h,$(wildcard *.h)) $(patsubst %.h,%.h,$(wildcard syscalls/*.h)) $(patsubst %.h,%.h,$(wildcard ioctls/*.h))
-
-SRCS		= $(wildcard *.c) \
-		  $(wildcard childops/*.c) \
-		  $(wildcard fds/*.c) \
-		  $(wildcard ioctls/*.c) \
-		  $(wildcard mm/*.c) \
-		  $(wildcard net/*.c) \
-		  $(wildcard rand/*.c) \
-		  $(wildcard syscalls/*.c) \
-		  $(SYSCALLS_ARCH)
-
-OBJS		= $(sort $(patsubst %.c,%.o,$(wildcard *.c))) \
-		  $(sort $(patsubst %.c,%.o,$(wildcard childops/*.c))) \
-		  $(sort $(patsubst %.c,%.o,$(wildcard fds/*.c))) \
-		  $(sort $(patsubst %.c,%.o,$(wildcard ioctls/*.c))) \
-		  $(sort $(patsubst %.c,%.o,$(wildcard mm/*.c))) \
-		  $(sort $(patsubst %.c,%.o,$(wildcard net/*.c))) \
-		  $(sort $(patsubst %.c,%.o,$(wildcard rand/*.c))) \
-		  $(sort $(patsubst %.c,%.o,$(wildcard syscalls/*.c))) \
-		  $(sort $(patsubst %.c,%.o,$(SYSCALLS_ARCH)))
+MACHINE		:= $(shell $(CC) -dumpmachine)
+SYSCALLS_ARCH	:= $(shell case "$(MACHINE)" in \
+		   (sh*) echo syscalls/sh/*.c ;; \
+		   (ia64*) echo syscalls/ia64/*.c ;; \
+		   (ppc*|powerpc*) echo syscalls/ppc/*.c ;; \
+		   (sparc*) echo syscalls/sparc/*.c ;; \
+		   (x86_64*) echo syscalls/x86/*.c \
+				  syscalls/x86/i386/*.c \
+				  syscalls/x86/x86_64/*.c;; \
+		   (i?86*) echo syscalls/x86/*.c \
+			        syscalls/x86/i386/*.c;; \
+		   esac)
+
+HEADERS		:= $(patsubst %.h,%.h,$(wildcard *.h)) $(patsubst %.h,%.h,$(wildcard syscalls/*.h)) $(patsubst %.h,%.h,$(wildcard ioctls/*.h))
+
+SRCS		:= $(wildcard *.c) \
+		   $(wildcard childops/*.c) \
+		   $(wildcard fds/*.c) \
+		   $(wildcard ioctls/*.c) \
+		   $(wildcard mm/*.c) \
+		   $(wildcard net/*.c) \
+		   $(wildcard rand/*.c) \
+		   $(wildcard syscalls/*.c) \
+		   $(SYSCALLS_ARCH)
+
+OBJS		:= $(sort $(patsubst %.c,%.o,$(wildcard *.c))) \
+		   $(sort $(patsubst %.c,%.o,$(wildcard childops/*.c))) \
+		   $(sort $(patsubst %.c,%.o,$(wildcard fds/*.c))) \
+		   $(sort $(patsubst %.c,%.o,$(wildcard ioctls/*.c))) \
+		   $(sort $(patsubst %.c,%.o,$(wildcard mm/*.c))) \
+		   $(sort $(patsubst %.c,%.o,$(wildcard net/*.c))) \
+		   $(sort $(patsubst %.c,%.o,$(wildcard rand/*.c))) \
+		   $(sort $(patsubst %.c,%.o,$(wildcard syscalls/*.c))) \
+		   $(sort $(patsubst %.c,%.o,$(SYSCALLS_ARCH)))
 
 DEPDIR= .deps
 
-- 
2.9.3

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

* [PATCH 4/5] Makefile: -Werror also for gcc 6.x
  2017-02-05 15:53 [PATCH 1/5] Makefile: use grep -c to avoid wc -l Tommi Rantala
  2017-02-05 15:53 ` [PATCH 2/5] Makefile: use findstring to check if we are building in development mode Tommi Rantala
  2017-02-05 15:53 ` [PATCH 3/5] Makefile: improve build time with immediate variables Tommi Rantala
@ 2017-02-05 15:53 ` Tommi Rantala
  2017-02-05 15:53 ` [PATCH 5/5] btrfs/ioctl.h is not really needed Tommi Rantala
  2017-02-07 10:05 ` [PATCH 1/5] Makefile: use grep -c to avoid wc -l Michael Ellerman
  4 siblings, 0 replies; 8+ messages in thread
From: Tommi Rantala @ 2017-02-05 15:53 UTC (permalink / raw)
  To: davej; +Cc: trinity, Tommi Rantala

---
 Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 8a061b1..1fc8799 100644
--- a/Makefile
+++ b/Makefile
@@ -21,11 +21,11 @@ CFLAGS += -Wall -Wextra -g -O2 -I. -Iinclude/ -Wimplicit -D_FORTIFY_SOURCE=2 -D_
 CCSTD := $(shell if $(CC) -std=gnu11 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-std=gnu11"; else echo "-std=gnu99"; fi)
 CFLAGS += $(CCSTD)
 
-# Only enabled during development, and on gcc 4.9+
+# -Werror only enabled during development, and on gcc 5.1+
 ifeq ($(DEVEL), 1)
 CPP_MAJOR := $(shell $(CPP) -dumpversion 2>&1 | cut -d'.' -f1)
 CPP_MINOR := $(shell $(CPP) -dumpversion 2>&1 | cut -d'.' -f2)
-WERROR	:= $(shell if [ $(CPP_MAJOR) -eq 5 -a $(CPP_MINOR) -ge 1 ] ; then echo "-Werror"; else echo ""; fi)
+WERROR	:= $(shell if [ $(CPP_MAJOR) -eq 5 -a $(CPP_MINOR) -ge 1 ] || [ $(CPP_MAJOR) -ge 6 ] ; then echo "-Werror"; else echo ""; fi)
 CFLAGS	+= $(WERROR)
 endif
 
-- 
2.9.3

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

* [PATCH 5/5] btrfs/ioctl.h is not really needed
  2017-02-05 15:53 [PATCH 1/5] Makefile: use grep -c to avoid wc -l Tommi Rantala
                   ` (2 preceding siblings ...)
  2017-02-05 15:53 ` [PATCH 4/5] Makefile: -Werror also for gcc 6.x Tommi Rantala
@ 2017-02-05 15:53 ` Tommi Rantala
  2017-02-07 10:05 ` [PATCH 1/5] Makefile: use grep -c to avoid wc -l Michael Ellerman
  4 siblings, 0 replies; 8+ messages in thread
From: Tommi Rantala @ 2017-02-05 15:53 UTC (permalink / raw)
  To: davej; +Cc: trinity, Tommi Rantala

<linux/btrfs.h> has the ioctl definitions we want, so I see no reason for
checking for <btrfs/ioctl.h>.
---
 configure      | 1 -
 ioctls/btrfs.c | 7 +++----
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/configure b/configure
index dc09317..dff66d3 100755
--- a/configure
+++ b/configure
@@ -255,7 +255,6 @@ check_header linux/if_alg.h USE_IF_ALG
 check_header linux/rds.h USE_RDS
 check_header linux/vfio.h USE_VFIO
 check_header linux/btrfs.h USE_BTRFS
-check_header btrfs/ioctl.h USE_BTRFS_IOCTL
 check_header drm/drm.h USE_DRM
 check_header drm/exynos_drm.h USE_DRM_EXYNOS
 check_header sound/compress_offload.h USE_SNDDRV_COMPRESS_OFFLOAD
diff --git a/ioctls/btrfs.c b/ioctls/btrfs.c
index 374baa6..fd9c4b4 100644
--- a/ioctls/btrfs.c
+++ b/ioctls/btrfs.c
@@ -1,9 +1,8 @@
 #include "config.h"
-#ifdef USE_BTRFS_IOCTL
+#ifdef USE_BTRFS
 #include <stdio.h>
 #include <linux/fs.h>
-
-#include <btrfs/ioctl.h>
+#include <linux/btrfs.h>
 #include "ioctls.h"
 #include "shm.h"
 #include "utils.h"
@@ -122,4 +121,4 @@ static const struct ioctl_group btrfs_grp = {
 };
 
 REG_IOCTL_GROUP(btrfs_grp)
-#endif /* USE_BTRFS_IOCTL */
+#endif /* USE_BTRFS */
-- 
2.9.3

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

* Re: [PATCH 1/5] Makefile: use grep -c to avoid wc -l
  2017-02-05 15:53 [PATCH 1/5] Makefile: use grep -c to avoid wc -l Tommi Rantala
                   ` (3 preceding siblings ...)
  2017-02-05 15:53 ` [PATCH 5/5] btrfs/ioctl.h is not really needed Tommi Rantala
@ 2017-02-07 10:05 ` Michael Ellerman
  2017-02-07 14:14   ` Dave Jones
  4 siblings, 1 reply; 8+ messages in thread
From: Michael Ellerman @ 2017-02-07 10:05 UTC (permalink / raw)
  To: Tommi Rantala, davej; +Cc: trinity, Tommi Rantala

Tommi Rantala <tt.rantala@gmail.com> writes:

> ---
>  Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Makefile b/Makefile
> index b93fc3a..16fafe8 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -2,7 +2,7 @@ VERSION="1.8pre"
>  
>  INSTALL_PREFIX ?= $(DESTDIR)
>  INSTALL_PREFIX ?= $(HOME)
> -NR_CPUS := $(shell grep ^processor /proc/cpuinfo | /usr/bin/wc -l)
> +NR_CPUS := $(shell grep -c ^processor /proc/cpuinfo)

Or you could just use nproc(1) ?

It's in coreutils, but maybe that's not sufficiently portable?

cheers

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

* Re: [PATCH 1/5] Makefile: use grep -c to avoid wc -l
  2017-02-07 10:05 ` [PATCH 1/5] Makefile: use grep -c to avoid wc -l Michael Ellerman
@ 2017-02-07 14:14   ` Dave Jones
  2017-02-08  3:52     ` Michael Ellerman
  0 siblings, 1 reply; 8+ messages in thread
From: Dave Jones @ 2017-02-07 14:14 UTC (permalink / raw)
  To: Michael Ellerman; +Cc: Tommi Rantala, trinity

On Tue, Feb 07, 2017 at 09:05:45PM +1100, Michael Ellerman wrote:
 > Tommi Rantala <tt.rantala@gmail.com> writes:
 > 
 > > ---
 > >  Makefile | 2 +-
 > >  1 file changed, 1 insertion(+), 1 deletion(-)
 > >
 > > diff --git a/Makefile b/Makefile
 > > index b93fc3a..16fafe8 100644
 > > --- a/Makefile
 > > +++ b/Makefile
 > > @@ -2,7 +2,7 @@ VERSION="1.8pre"
 > >  
 > >  INSTALL_PREFIX ?= $(DESTDIR)
 > >  INSTALL_PREFIX ?= $(HOME)
 > > -NR_CPUS := $(shell grep ^processor /proc/cpuinfo | /usr/bin/wc -l)
 > > +NR_CPUS := $(shell grep -c ^processor /proc/cpuinfo)
 > 
 > Or you could just use nproc(1) ?

Is that in ancient coreutils from crusty old enterprise distros ?
Judging by user reports, I think we need to support back as far as
RHEL6 for now.

 > It's in coreutils, but maybe that's not sufficiently portable?

Portability to non-Linux OS's hasn't been a concern so far. 
I had 1-2 people email me about BSD support but the patches they've sent
have been about 1% of the work actually necessary so I've just rejected
them.

It's way easier to just extend iknowthis (or possibly syzkaller)
than to retrofit it into Trinity at this point.

I admit to having a morbid curiousity to know just how well the various
BSD's would hold up under a targetted fuzzing run, but the likelyhood of
me finding time to work on it, or even support it, is practically nil.

	Dave


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

* Re: [PATCH 1/5] Makefile: use grep -c to avoid wc -l
  2017-02-07 14:14   ` Dave Jones
@ 2017-02-08  3:52     ` Michael Ellerman
  0 siblings, 0 replies; 8+ messages in thread
From: Michael Ellerman @ 2017-02-08  3:52 UTC (permalink / raw)
  To: Dave Jones; +Cc: Tommi Rantala, trinity

Dave Jones <davej@codemonkey.org.uk> writes:

> On Tue, Feb 07, 2017 at 09:05:45PM +1100, Michael Ellerman wrote:
>  > Tommi Rantala <tt.rantala@gmail.com> writes:
>  > > diff --git a/Makefile b/Makefile
>  > > index b93fc3a..16fafe8 100644
>  > > --- a/Makefile
>  > > +++ b/Makefile
>  > > @@ -2,7 +2,7 @@ VERSION="1.8pre"
>  > >  
>  > >  INSTALL_PREFIX ?= $(DESTDIR)
>  > >  INSTALL_PREFIX ?= $(HOME)
>  > > -NR_CPUS := $(shell grep ^processor /proc/cpuinfo | /usr/bin/wc -l)
>  > > +NR_CPUS := $(shell grep -c ^processor /proc/cpuinfo)
>  > 
>  > Or you could just use nproc(1) ?
>
> Is that in ancient coreutils from crusty old enterprise distros ?
> Judging by user reports, I think we need to support back as far as
> RHEL6 for now.

Good point. It's there on my RHEL 6.8 box, which is the oldest I have
lying around, and looks like it first existed in ~2009. But may not be
worth the potential breakage.

>  > It's in coreutils, but maybe that's not sufficiently portable?
>
> Portability to non-Linux OS's hasn't been a concern so far. 
> I had 1-2 people email me about BSD support but the patches they've sent
> have been about 1% of the work actually necessary so I've just rejected
> them.
>
> It's way easier to just extend iknowthis (or possibly syzkaller)
> than to retrofit it into Trinity at this point.
>
> I admit to having a morbid curiousity to know just how well the various
> BSD's would hold up under a targetted fuzzing run, but the likelyhood of
> me finding time to work on it, or even support it, is practically nil.

I know the feeling, there's another operating system it would be fun to
run on too, but likewise I will never get the time :)

cheers

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

end of thread, other threads:[~2017-02-08  3:52 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-05 15:53 [PATCH 1/5] Makefile: use grep -c to avoid wc -l Tommi Rantala
2017-02-05 15:53 ` [PATCH 2/5] Makefile: use findstring to check if we are building in development mode Tommi Rantala
2017-02-05 15:53 ` [PATCH 3/5] Makefile: improve build time with immediate variables Tommi Rantala
2017-02-05 15:53 ` [PATCH 4/5] Makefile: -Werror also for gcc 6.x Tommi Rantala
2017-02-05 15:53 ` [PATCH 5/5] btrfs/ioctl.h is not really needed Tommi Rantala
2017-02-07 10:05 ` [PATCH 1/5] Makefile: use grep -c to avoid wc -l Michael Ellerman
2017-02-07 14:14   ` Dave Jones
2017-02-08  3:52     ` Michael Ellerman

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 NNTP newsgroup(s).