* [Buildroot] [PATCH 2/7] busybox: let buildroot handle stripping
2011-01-10 14:28 ` [Buildroot] [PATCH 1/7] busybox: unify duplicated build steps Mike Frysinger
@ 2011-01-10 14:28 ` Mike Frysinger
2011-01-11 9:52 ` Peter Korsgaard
2011-01-10 14:28 ` [Buildroot] [PATCH 3/7] toolchain: add a USE_MMU build option Mike Frysinger
` (5 subsequent siblings)
6 siblings, 1 reply; 24+ messages in thread
From: Mike Frysinger @ 2011-01-10 14:28 UTC (permalink / raw)
To: buildroot
For some ABI's (like FLAT), we cannot strip busybox as the file format
does not support it and strip will abort with errors like 'File format
not recognized'. Since the toplevel already takes care of stripping
things, simply disable the busybox step.
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
package/busybox/busybox.mk | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk
index 342819a..38897f7 100644
--- a/package/busybox/busybox.mk
+++ b/package/busybox/busybox.mk
@@ -21,7 +21,8 @@ BUSYBOX_MAKE_OPTS = \
PREFIX="$(TARGET_DIR)" \
EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
- CONFIG_PREFIX="$(TARGET_DIR)"
+ CONFIG_PREFIX="$(TARGET_DIR)" \
+ SKIP_STRIP=y
ifndef BUSYBOX_CONFIG_FILE
BUSYBOX_CONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG))
--
1.7.4.rc1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 3/7] toolchain: add a USE_MMU build option
2011-01-10 14:28 ` [Buildroot] [PATCH 1/7] busybox: unify duplicated build steps Mike Frysinger
2011-01-10 14:28 ` [Buildroot] [PATCH 2/7] busybox: let buildroot handle stripping Mike Frysinger
@ 2011-01-10 14:28 ` Mike Frysinger
2011-01-14 12:29 ` Peter Korsgaard
2011-01-15 13:25 ` Peter Korsgaard
2011-01-10 14:28 ` [Buildroot] [PATCH 4/7] portmap: add nommu support Mike Frysinger
` (4 subsequent siblings)
6 siblings, 2 replies; 24+ messages in thread
From: Mike Frysinger @ 2011-01-10 14:28 UTC (permalink / raw)
To: buildroot
Some packages need to know whether the MMU is in play, so add a toolchain
option to expose the feature to them.
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
toolchain/helpers.mk | 2 ++
toolchain/toolchain-common.in | 7 +++++++
2 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
index eb9d742..db7c7f1 100644
--- a/toolchain/helpers.mk
+++ b/toolchain/helpers.mk
@@ -146,6 +146,7 @@ check_glibc = \
$(call check_glibc_feature,BR2_INET_IPV6,IPv6 support) ;\
$(call check_glibc_feature,BR2_INET_RPC,RPC support) ;\
$(call check_glibc_feature,BR2_ENABLE_LOCALE,Locale support) ;\
+ $(call check_glibc_feature,BR2_USE_MMU,MMU support) ;\
$(call check_glibc_feature,BR2_USE_WCHAR,Wide char support) ;\
$(call check_glibc_feature,BR2_PROGRAM_INVOCATION,Program invocation support)
@@ -187,6 +188,7 @@ check_uclibc = \
exit -1; \
fi; \
UCLIBC_CONFIG_FILE=$${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; \
+ $(call check_uclibc_feature,__ARCH_USE_MMU__,BR2_USE_MMU,$${UCLIBC_CONFIG_FILE},MMU support) ;\
$(call check_uclibc_feature,__UCLIBC_HAS_LFS__,BR2_LARGEFILE,$${UCLIBC_CONFIG_FILE},Large file support) ;\
$(call check_uclibc_feature,__UCLIBC_HAS_IPV6__,BR2_INET_IPV6,$${UCLIBC_CONFIG_FILE},IPv6 support) ;\
$(call check_uclibc_feature,__UCLIBC_HAS_RPC__,BR2_INET_RPC,$${UCLIBC_CONFIG_FILE},RPC support) ;\
diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in
index bdc6e76..f53f630 100644
--- a/toolchain/toolchain-common.in
+++ b/toolchain/toolchain-common.in
@@ -66,6 +66,13 @@ config BR2_NEEDS_GETTEXT_IF_LOCALE
bool
default y if (BR2_NEEDS_GETTEXT && BR2_ENABLE_LOCALE)
+config BR2_USE_MMU
+ bool "Enable MMU support"
+ default y
+ help
+ If your target has a MMU, you should say Y here. If you
+ are unsure, just say Y.
+
config BR2_PREFER_SOFT_FLOAT
bool
default y if BR2_arm || BR2_armeb || BR2_avr32 || BR2_mips || BR2_mipsel
--
1.7.4.rc1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 3/7] toolchain: add a USE_MMU build option
2011-01-10 14:28 ` [Buildroot] [PATCH 3/7] toolchain: add a USE_MMU build option Mike Frysinger
@ 2011-01-14 12:29 ` Peter Korsgaard
2011-01-14 21:27 ` Mike Frysinger
2011-01-15 13:25 ` Peter Korsgaard
1 sibling, 1 reply; 24+ messages in thread
From: Peter Korsgaard @ 2011-01-14 12:29 UTC (permalink / raw)
To: buildroot
>>>>> "Mike" == Mike Frysinger <vapier@gentoo.org> writes:
Mike> Some packages need to know whether the MMU is in play, so add a toolchain
Mike> option to expose the feature to them.
Mike> +++ b/toolchain/toolchain-common.in
Mike> @@ -66,6 +66,13 @@ config BR2_NEEDS_GETTEXT_IF_LOCALE
Mike> bool
Mike> default y if (BR2_NEEDS_GETTEXT && BR2_ENABLE_LOCALE)
Mike> +config BR2_USE_MMU
Mike> + bool "Enable MMU support"
Mike> + default y
Mike> + help
Mike> + If your target has a MMU, you should say Y here. If you
Mike> + are unsure, just say Y.
I think it makes sense to only show this option on archs where nommu
makes sense to not confuse users. - E.G.:
bool "Enable MMU support" if BR2_arm || BR2_armeb ...
What archs currently have working nommu support in uClibc?
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 3/7] toolchain: add a USE_MMU build option
2011-01-14 12:29 ` Peter Korsgaard
@ 2011-01-14 21:27 ` Mike Frysinger
2011-01-14 21:53 ` Peter Korsgaard
0 siblings, 1 reply; 24+ messages in thread
From: Mike Frysinger @ 2011-01-14 21:27 UTC (permalink / raw)
To: buildroot
On Friday, January 14, 2011 07:29:06 Peter Korsgaard wrote:
> >>>>> "Mike" == Mike Frysinger <vapier@gentoo.org> writes:
> Mike> Some packages need to know whether the MMU is in play, so add a
> toolchain Mike> option to expose the feature to them.
>
> Mike> +++ b/toolchain/toolchain-common.in
> Mike> @@ -66,6 +66,13 @@ config BR2_NEEDS_GETTEXT_IF_LOCALE
> Mike> bool
> Mike> default y if (BR2_NEEDS_GETTEXT && BR2_ENABLE_LOCALE)
>
> Mike> +config BR2_USE_MMU
> Mike> + bool "Enable MMU support"
> Mike> + default y
> Mike> + help
> Mike> + If your target has a MMU, you should say Y here. If you
> Mike> + are unsure, just say Y.
>
> I think it makes sense to only show this option on archs where nommu
> makes sense to not confuse users. - E.G.:
>
> bool "Enable MMU support" if BR2_arm || BR2_armeb ...
>
> What archs currently have working nommu support in uClibc?
any arch can be built as "nommu". it simply means certain functions are not
enabled (like fork) while others are not as complicated (like malloc). so
there is no technical limitation that only certain arches support nommu.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20110114/33f46c08/attachment.asc>
^ permalink raw reply [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 3/7] toolchain: add a USE_MMU build option
2011-01-14 21:27 ` Mike Frysinger
@ 2011-01-14 21:53 ` Peter Korsgaard
2011-01-14 22:17 ` Mike Frysinger
0 siblings, 1 reply; 24+ messages in thread
From: Peter Korsgaard @ 2011-01-14 21:53 UTC (permalink / raw)
To: buildroot
>>>>> "Mike" == Mike Frysinger <vapier@gentoo.org> writes:
Hi,
>> What archs currently have working nommu support in uClibc?
Mike> any arch can be built as "nommu". it simply means certain
Mike> functions are not enabled (like fork) while others are not as
Mike> complicated (like malloc). so there is no technical limitation
Mike> that only certain arches support nommu. -mike
Naturally, but which one are used in the wild? E.G. what is supported by
linux-2.6.37 and uClibc-0.9.32-rc1 ?
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 3/7] toolchain: add a USE_MMU build option
2011-01-14 21:53 ` Peter Korsgaard
@ 2011-01-14 22:17 ` Mike Frysinger
0 siblings, 0 replies; 24+ messages in thread
From: Mike Frysinger @ 2011-01-14 22:17 UTC (permalink / raw)
To: buildroot
On Friday, January 14, 2011 16:53:38 Peter Korsgaard wrote:
> >>>>> "Mike" == Mike Frysinger <vapier@gentoo.org> writes:
> Hi,
>
> >> What archs currently have working nommu support in uClibc?
>
> Mike> any arch can be built as "nommu". it simply means certain
> Mike> functions are not enabled (like fork) while others are not as
> Mike> complicated (like malloc). so there is no technical limitation
> Mike> that only certain arches support nommu. -mike
>
> Naturally, but which one are used in the wild? E.G. what is supported by
> linux-2.6.37 and uClibc-0.9.32-rc1 ?
again, you can run any "nommu" userland with a kernel with the mmu running.
if you're asking which arches in mainline linux kernel allow people to build
with CONFIG_MMU disabled, you're talking about arm, blackfin, frv, h8300,
m32r, m68k, microblaze, mips, sh, and xtensa. i dont believe there is any
limitation in uClibc and if there is, that's easy enough to fix. nommu is
merely a subset of mmu functionality from userspace's perspective.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20110114/2753084e/attachment.asc>
^ permalink raw reply [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 3/7] toolchain: add a USE_MMU build option
2011-01-10 14:28 ` [Buildroot] [PATCH 3/7] toolchain: add a USE_MMU build option Mike Frysinger
2011-01-14 12:29 ` Peter Korsgaard
@ 2011-01-15 13:25 ` Peter Korsgaard
1 sibling, 0 replies; 24+ messages in thread
From: Peter Korsgaard @ 2011-01-15 13:25 UTC (permalink / raw)
To: buildroot
>>>>> "Mike" == Mike Frysinger <vapier@gentoo.org> writes:
Mike> Some packages need to know whether the MMU is in play, so add a toolchain
Mike> option to expose the feature to them.
Committed with minor tweaks, thanks.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 4/7] portmap: add nommu support
2011-01-10 14:28 ` [Buildroot] [PATCH 1/7] busybox: unify duplicated build steps Mike Frysinger
2011-01-10 14:28 ` [Buildroot] [PATCH 2/7] busybox: let buildroot handle stripping Mike Frysinger
2011-01-10 14:28 ` [Buildroot] [PATCH 3/7] toolchain: add a USE_MMU build option Mike Frysinger
@ 2011-01-10 14:28 ` Mike Frysinger
2011-01-11 10:29 ` Peter Korsgaard
2011-01-10 14:28 ` [Buildroot] [PATCH 5/7] portmap: respect target CFLAGS Mike Frysinger
` (3 subsequent siblings)
6 siblings, 1 reply; 24+ messages in thread
From: Mike Frysinger @ 2011-01-10 14:28 UTC (permalink / raw)
To: buildroot
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
...0-0001-README-fix-typo-in-tcp-wrapper-doc.patch | 26 +++++
...0002-NO_PIE-make-PIE-support-controllable.patch | 53 ++++++++++
...K-control-usage-of-fork-for-nommu-systems.patch | 110 ++++++++++++++++++++
...ERROR-control-overriding-of-perror-symbol.patch | 46 ++++++++
package/portmap/portmap.mk | 7 +-
5 files changed, 241 insertions(+), 1 deletions(-)
create mode 100644 package/portmap/portmap-6.0-0001-README-fix-typo-in-tcp-wrapper-doc.patch
create mode 100644 package/portmap/portmap-6.0-0002-NO_PIE-make-PIE-support-controllable.patch
create mode 100644 package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch
create mode 100644 package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch
diff --git a/package/portmap/portmap-6.0-0001-README-fix-typo-in-tcp-wrapper-doc.patch b/package/portmap/portmap-6.0-0001-README-fix-typo-in-tcp-wrapper-doc.patch
new file mode 100644
index 0000000..01aa7bf
--- /dev/null
+++ b/package/portmap/portmap-6.0-0001-README-fix-typo-in-tcp-wrapper-doc.patch
@@ -0,0 +1,26 @@
+From af4a27a17bbdbe941f2462e116c2e4c8ade110e3 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 19 Nov 2010 23:35:20 -0500
+Subject: [PATCH 1/4] README: fix typo in tcp wrapper doc
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ README | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/README b/README
+index 0da54cc..916de7e 100644
+--- a/README
++++ b/README
+@@ -18,7 +18,7 @@ There is no "./configure", just use "make".
+
+ Some make variable can be used to control compilation.
+
+- NO_TCP_WRAPPER= if non-empty, doen't use tcp_wrappers
++ NO_TCP_WRAPPER= if non-empty, don't use tcp_wrappers
+ USE_DNS= if set, tcp_wrappers can check peers based on hostname
+ as well as IP address. This should only be used if you
+ are certain that gethostbyname will never trigger a
+--
+1.7.3.1
+
diff --git a/package/portmap/portmap-6.0-0002-NO_PIE-make-PIE-support-controllable.patch b/package/portmap/portmap-6.0-0002-NO_PIE-make-PIE-support-controllable.patch
new file mode 100644
index 0000000..6e544bf
--- /dev/null
+++ b/package/portmap/portmap-6.0-0002-NO_PIE-make-PIE-support-controllable.patch
@@ -0,0 +1,53 @@
+From 087874b15367a04fd482541d1832696d7163d1ac Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 19 Nov 2010 23:35:47 -0500
+Subject: [PATCH 2/4] NO_PIE: make PIE support controllable
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ Makefile | 8 ++++++--
+ README | 1 +
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 5343428..cfcfdbb 100644
+--- a/Makefile
++++ b/Makefile
+@@ -106,6 +106,10 @@ CPPFLAGS += -DIGNORE_SIGCHLD # AIX 4.x, HP-UX 9.x
+ #
+ # LDLIBS += -m
+ # CFLAGS += -arch m68k -arch i386 -arch hppa
++ifeq ($(NO_PIE),)
++CFLAGS_PIE = -fpie
++LDFLAGS_PIE = -pie
++endif
+
+ # Auxiliary libraries that you may have to specify
+ #
+@@ -125,9 +129,9 @@ CFLAGS += -Wall -Wstrict-prototypes
+ all: portmap pmap_dump pmap_set portmap.man
+
+ CPPFLAGS += $(HOSTS_ACCESS)
+-portmap: CFLAGS += -fpie
++portmap: CFLAGS += $(CFLAGS_PIE)
+ portmap: LDLIBS += $(WRAP_LIB)
+-portmap: LDFLAGS += -pie
++portmap: LDFLAGS += $(LDFLAGS_PIE)
+ portmap: portmap.o pmap_check.o from_local.o
+
+ from_local: CPPFLAGS += -DTEST
+diff --git a/README b/README
+index 916de7e..e0b561a 100644
+--- a/README
++++ b/README
+@@ -18,6 +18,7 @@ There is no "./configure", just use "make".
+
+ Some make variable can be used to control compilation.
+
++ NO_PIE= if non-empty, don't build portmap as a PIE
+ NO_TCP_WRAPPER= if non-empty, don't use tcp_wrappers
+ USE_DNS= if set, tcp_wrappers can check peers based on hostname
+ as well as IP address. This should only be used if you
+--
+1.7.3.1
+
diff --git a/package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch b/package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch
new file mode 100644
index 0000000..6f16aa2
--- /dev/null
+++ b/package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch
@@ -0,0 +1,110 @@
+From b3afea5757af1a7356ba30d2e0a7d5909ca18121 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 19 Nov 2010 23:48:20 -0500
+Subject: [PATCH 3/4] NO_FORK: control usage of fork() for nommu systems
+
+nommu systems lack a fork() function, so add a NO_FORK flag to control
+its usage. We don't lose a ton of functionality in doing so, and on an
+embedded system, this is OK.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ Makefile | 5 +++++
+ README | 1 +
+ pmap_check.c | 6 ++++--
+ portmap.c | 6 ++++++
+ 4 files changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index cfcfdbb..9df5574 100644
+--- a/Makefile
++++ b/Makefile
+@@ -27,6 +27,11 @@ MAN_SED += -e 's/USE_DNS/yes/'
+ endif
+ endif
+
++# For no-mmu systems, we have to disable the fork() functions.
++ifneq ($(NO_FORK),)
++CPPFLAGS += -DNO_FORK
++endif
++
+ # Comment out if your RPC library does not allocate privileged ports for
+ # requests from processes with root privilege, or the new portmap will
+ # always reject requests to register/unregister services on privileged
+diff --git a/README b/README
+index e0b561a..bda1707 100644
+--- a/README
++++ b/README
+@@ -18,6 +18,7 @@ There is no "./configure", just use "make".
+
+ Some make variable can be used to control compilation.
+
++ NO_FORK= if non-empty, don't use fork (good for nommu systems)
+ NO_PIE= if non-empty, don't build portmap as a PIE
+ NO_TCP_WRAPPER= if non-empty, don't use tcp_wrappers
+ USE_DNS= if set, tcp_wrappers can check peers based on hostname
+diff --git a/pmap_check.c b/pmap_check.c
+index 6b3e490..983414e 100644
+--- a/pmap_check.c
++++ b/pmap_check.c
+@@ -302,8 +302,10 @@ static void logit(int severity, struct sockaddr_in *addr,
+ * getrpcbynumber() or syslog() does its thing.
+ */
+
+- if (fork() == 0) {
+-
++#ifndef NO_FORK
++ if (fork() == 0)
++#endif
++ {
+ /* Try to map program number to name. */
+
+ if (prognum == 0) {
+diff --git a/portmap.c b/portmap.c
+index 2a98881..94abc64 100644
+--- a/portmap.c
++++ b/portmap.c
+@@ -391,12 +391,14 @@ main(int argc, char **argv)
+ abort();
+ }
+
++#ifndef NO_PERROR
+ /* need to override perror calls in rpc library */
+ void perror(const char *what)
+ {
+
+ syslog(LOG_ERR, "%s: %m", what);
+ }
++#endif
+
+ static struct pmaplist *
+ find_service(u_long prog, u_long vers, u_long prot)
+@@ -753,6 +755,7 @@ static void callit(struct svc_req *rqstp, SVCXPRT *xprt)
+ if ((pml = find_service(a.rmt_prog, a.rmt_vers,
+ (u_long)IPPROTO_UDP)) == NULL)
+ return;
++#ifndef NO_FORK
+ /*
+ * fork a child to do the work. Parent immediately returns.
+ * Child exits upon completion.
+@@ -763,6 +766,7 @@ static void callit(struct svc_req *rqstp, SVCXPRT *xprt)
+ a.rmt_prog);
+ return;
+ }
++#endif
+ port = pml->pml_map.pm_port;
+ get_myaddress(&me);
+ me.sin_port = htons(port);
+@@ -783,7 +787,9 @@ static void callit(struct svc_req *rqstp, SVCXPRT *xprt)
+ clnt_destroy(client);
+ }
+ (void)close(so);
++#ifndef NO_FORK
+ exit(0);
++#endif
+ }
+
+ #ifndef IGNORE_SIGCHLD /* Lionel Cons <cons@dxcern.cern.ch> */
+--
+1.7.3.1
+
diff --git a/package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch b/package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch
new file mode 100644
index 0000000..a5554ea
--- /dev/null
+++ b/package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch
@@ -0,0 +1,46 @@
+From 8cea0778f0fb838a7bd764be08f15e1494e5a0b2 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 19 Nov 2010 23:50:27 -0500
+Subject: [PATCH 4/4] NO_PERROR: control overriding of perror() symbol
+
+Doing static builds of portmap might fail when the C library's perror()
+function is pulled in and collides with portmap's definition. So add a
+flag to control the local override.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ Makefile | 5 +++++
+ README | 1 +
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 9df5574..1635107 100644
+--- a/Makefile
++++ b/Makefile
+@@ -32,6 +32,11 @@ ifneq ($(NO_FORK),)
+ CPPFLAGS += -DNO_FORK
+ endif
+
++# For static builds, we might hit perror() symbol clashes
++ifneq ($(NO_PERROR),)
++CPPFLAGS += -DNO_PERROR
++endif
++
+ # Comment out if your RPC library does not allocate privileged ports for
+ # requests from processes with root privilege, or the new portmap will
+ # always reject requests to register/unregister services on privileged
+diff --git a/README b/README
+index bda1707..05861a8 100644
+--- a/README
++++ b/README
+@@ -19,6 +19,7 @@ There is no "./configure", just use "make".
+ Some make variable can be used to control compilation.
+
+ NO_FORK= if non-empty, don't use fork (good for nommu systems)
++ NO_PERROR= if non-empty, don't override the perror() func
+ NO_PIE= if non-empty, don't build portmap as a PIE
+ NO_TCP_WRAPPER= if non-empty, don't use tcp_wrappers
+ USE_DNS= if set, tcp_wrappers can check peers based on hostname
+--
+1.7.3.1
+
diff --git a/package/portmap/portmap.mk b/package/portmap/portmap.mk
index e83ff1d..4a5fe62 100644
--- a/package/portmap/portmap.mk
+++ b/package/portmap/portmap.mk
@@ -9,8 +9,13 @@ PORTMAP_SOURCE = portmap-$(PORTMAP_VERSION).tgz
PORTMAP_SITE = http://neil.brown.name/portmap
PORTMAP_SBINS = portmap pmap_dump pmap_set
+PORTMAP_FLAGS = NO_TCP_WRAPPER=1 NO_PIE=1 NO_PERROR=1
+ifeq ($(BR2_USE_MMU),)
+PORTMAP_FLAGS += NO_FORK=1
+endif
+
define PORTMAP_BUILD_CMDS
- $(MAKE) CC="$(TARGET_CC)" -C $(@D) NO_TCP_WRAPPER=1
+ $(MAKE) CC="$(TARGET_CC)" -C $(@D) $(PORTMAP_FLAGS)
endef
define PORTMAP_INSTALL_TARGET_CMDS
--
1.7.4.rc1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 4/7] portmap: add nommu support
2011-01-10 14:28 ` [Buildroot] [PATCH 4/7] portmap: add nommu support Mike Frysinger
@ 2011-01-11 10:29 ` Peter Korsgaard
2011-01-11 17:50 ` Mike Frysinger
2011-01-11 18:00 ` [Buildroot] [PATCH 4/7 v2] " Mike Frysinger
0 siblings, 2 replies; 24+ messages in thread
From: Peter Korsgaard @ 2011-01-11 10:29 UTC (permalink / raw)
To: buildroot
>>>>> "Mike" == Mike Frysinger <vapier@gentoo.org> writes:
Hi,
Mike> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Mike> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Mike> ---
Mike> ...0-0001-README-fix-typo-in-tcp-wrapper-doc.patch | 26 +++++
Mike> ...0002-NO_PIE-make-PIE-support-controllable.patch | 53 ++++++++++
Mike> ...K-control-usage-of-fork-for-nommu-systems.patch | 110 ++++++++++++++++++++
Mike> ...ERROR-control-overriding-of-perror-symbol.patch | 46 ++++++++
Mike> package/portmap/portmap.mk | 7 +-
Mike> 5 files changed, 241 insertions(+), 1 deletions(-)
Mike> create mode 100644 package/portmap/portmap-6.0-0001-README-fix-typo-in-tcp-wrapper-doc.patch
Mike> create mode 100644 package/portmap/portmap-6.0-0002-NO_PIE-make-PIE-support-controllable.patch
Mike> create mode 100644 package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch
Mike> create mode 100644 package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch
What's the upstream status of these patches?
Mike> +++ b/package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch
Mike> @@ -0,0 +1,110 @@
Mike> +From b3afea5757af1a7356ba30d2e0a7d5909ca18121 Mon Sep 17 00:00:00 2001
Mike> +From: Mike Frysinger <vapier@gentoo.org>
Mike> +Date: Fri, 19 Nov 2010 23:48:20 -0500
Mike> +Subject: [PATCH 3/4] NO_FORK: control usage of fork() for nommu systems
Mike> +
Mike> +nommu systems lack a fork() function, so add a NO_FORK flag to control
Mike> +its usage. We don't lose a ton of functionality in doing so, and on an
Mike> +embedded system, this is OK.
Mike> +
Mike> +Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Mike> +---
Mike> + Makefile | 5 +++++
Mike> + README | 1 +
Mike> + pmap_check.c | 6 ++++--
Mike> + portmap.c | 6 ++++++
Mike> + 4 files changed, 16 insertions(+), 2 deletions(-)
Mike> +
Mike> +diff --git a/Makefile b/Makefile
Mike> +index cfcfdbb..9df5574 100644
Mike> +--- a/Makefile
Mike> ++++ b/Makefile
Mike> +@@ -27,6 +27,11 @@ MAN_SED += -e 's/USE_DNS/yes/'
Mike> + endif
Mike> + endif
Mike> +
Mike> ++# For no-mmu systems, we have to disable the fork() functions.
Mike> ++ifneq ($(NO_FORK),)
Mike> ++CPPFLAGS += -DNO_FORK
Mike> ++endif
Mike> ++
Mike> + # Comment out if your RPC library does not allocate privileged ports for
Mike> + # requests from processes with root privilege, or the new portmap will
Mike> + # always reject requests to register/unregister services on privileged
Mike> +diff --git a/README b/README
Mike> +index e0b561a..bda1707 100644
Mike> +--- a/README
Mike> ++++ b/README
Mike> +@@ -18,6 +18,7 @@ There is no "./configure", just use "make".
Mike> +
Mike> + Some make variable can be used to control compilation.
Mike> +
Mike> ++ NO_FORK= if non-empty, don't use fork (good for nommu systems)
Mike> + NO_PIE= if non-empty, don't build portmap as a PIE
Mike> + NO_TCP_WRAPPER= if non-empty, don't use tcp_wrappers
Mike> + USE_DNS= if set, tcp_wrappers can check peers based on hostname
Mike> +diff --git a/pmap_check.c b/pmap_check.c
Mike> +index 6b3e490..983414e 100644
Mike> +--- a/pmap_check.c
Mike> ++++ b/pmap_check.c
Mike> +@@ -302,8 +302,10 @@ static void logit(int severity, struct sockaddr_in *addr,
Mike> + * getrpcbynumber() or syslog() does its thing.
Mike> + */
Mike> +
Mike> +- if (fork() == 0) {
Mike> +-
Mike> ++#ifndef NO_FORK
Mike> ++ if (fork() == 0)
Mike> ++#endif
Mike> ++ {
Mike> + /* Try to map program number to name. */
Mike> +
Mike> + if (prognum == 0) {
Mike> +diff --git a/portmap.c b/portmap.c
Mike> +index 2a98881..94abc64 100644
Mike> +--- a/portmap.c
Mike> ++++ b/portmap.c
Mike> +@@ -391,12 +391,14 @@ main(int argc, char **argv)
Mike> + abort();
Mike> + }
Mike> +
Mike> ++#ifndef NO_PERROR
Mike> + /* need to override perror calls in rpc library */
Mike> + void perror(const char *what)
What is this NO_PERROR thing? That belongs in the next patch rather than
here, right?
Mike> +++ b/package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch
Mike> @@ -0,0 +1,46 @@
Mike> +From 8cea0778f0fb838a7bd764be08f15e1494e5a0b2 Mon Sep 17 00:00:00 2001
Mike> +From: Mike Frysinger <vapier@gentoo.org>
Mike> +Date: Fri, 19 Nov 2010 23:50:27 -0500
Mike> +Subject: [PATCH 4/4] NO_PERROR: control overriding of perror() symbol
Mike> +
Mike> +Doing static builds of portmap might fail when the C library's perror()
Mike> +function is pulled in and collides with portmap's definition. So add a
Mike> +flag to control the local override.
Why not simply rename it like the recent issue with getline -> get_line
in kconfig?
Mike> diff --git a/package/portmap/portmap.mk b/package/portmap/portmap.mk
Mike> index e83ff1d..4a5fe62 100644
Mike> --- a/package/portmap/portmap.mk
Mike> +++ b/package/portmap/portmap.mk
Mike> @@ -9,8 +9,13 @@ PORTMAP_SOURCE = portmap-$(PORTMAP_VERSION).tgz
Mike> PORTMAP_SITE = http://neil.brown.name/portmap
Mike> PORTMAP_SBINS = portmap pmap_dump pmap_set
Mike> +PORTMAP_FLAGS = NO_TCP_WRAPPER=1 NO_PIE=1 NO_PERROR=1
Why enforce no PIE?
Mike> +ifeq ($(BR2_USE_MMU),)
Mike> +PORTMAP_FLAGS += NO_FORK=1
Out of interest, what functionaly in portmapper do you miss with
NO_FORK?
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 4/7] portmap: add nommu support
2011-01-11 10:29 ` Peter Korsgaard
@ 2011-01-11 17:50 ` Mike Frysinger
2011-01-11 20:30 ` Peter Korsgaard
2011-01-11 18:00 ` [Buildroot] [PATCH 4/7 v2] " Mike Frysinger
1 sibling, 1 reply; 24+ messages in thread
From: Mike Frysinger @ 2011-01-11 17:50 UTC (permalink / raw)
To: buildroot
On Tuesday, January 11, 2011 05:29:45 Peter Korsgaard wrote:
> What's the upstream status of these patches?
they've been sent multiple times, but upstream portmap hasnt responded to
anyone in a while
> What is this NO_PERROR thing? That belongs in the next patch rather than
> here, right?
yes
> Why not simply rename it like the recent issue with getline -> get_line
> in kconfig?
because perror is a standard, not a gnuism like getline
> Why enforce no PIE?
the better question is why force PIE. for embedded systems, this is almost
always a waste.
> Out of interest, what functionaly in portmapper do you miss with
> NO_FORK?
the forks are only used to speed up responses
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20110111/1374ea85/attachment.asc>
^ permalink raw reply [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 4/7] portmap: add nommu support
2011-01-11 17:50 ` Mike Frysinger
@ 2011-01-11 20:30 ` Peter Korsgaard
2011-01-16 1:20 ` Mike Frysinger
0 siblings, 1 reply; 24+ messages in thread
From: Peter Korsgaard @ 2011-01-11 20:30 UTC (permalink / raw)
To: buildroot
>>>>> "Mike" == Mike Frysinger <vapier@gentoo.org> writes:
Hi,
Mike> On Tuesday, January 11, 2011 05:29:45 Peter Korsgaard wrote:
>> What's the upstream status of these patches?
Mike> they've been sent multiple times, but upstream portmap hasnt
Mike> responded to anyone in a while
Ok, thanks.
>> What is this NO_PERROR thing? That belongs in the next patch rather than
>> here, right?
Mike> yes
Ok.
>> Why not simply rename it like the recent issue with getline -> get_line
>> in kconfig?
Mike> because perror is a standard, not a gnuism like getline
Yes, but why is there a perror() implementation in portmapper in the
first place? It seems like they want
something-looking-like-perror-but-using-syslog, rather than the real
perror?
>> Out of interest, what functionaly in portmapper do you miss with
>> NO_FORK?
Mike> the forks are only used to speed up responses
Ok.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 4/7] portmap: add nommu support
2011-01-11 20:30 ` Peter Korsgaard
@ 2011-01-16 1:20 ` Mike Frysinger
0 siblings, 0 replies; 24+ messages in thread
From: Mike Frysinger @ 2011-01-16 1:20 UTC (permalink / raw)
To: buildroot
On Tuesday, January 11, 2011 15:30:19 Peter Korsgaard wrote:
> >> Why not simply rename it like the recent issue with getline -> get_line
> >> in kconfig?
>
> Mike> because perror is a standard, not a gnuism like getline
>
> Yes, but why is there a perror() implementation in portmapper in the
> first place? It seems like they want
> something-looking-like-perror-but-using-syslog, rather than the real
> perror?
perhaps, but upstream finally got back to me and merged all my patches (the
same ones i proposed here).
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20110115/e8959d5a/attachment.asc>
^ permalink raw reply [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 4/7 v2] portmap: add nommu support
2011-01-11 10:29 ` Peter Korsgaard
2011-01-11 17:50 ` Mike Frysinger
@ 2011-01-11 18:00 ` Mike Frysinger
2011-01-19 21:19 ` Peter Korsgaard
1 sibling, 1 reply; 24+ messages in thread
From: Mike Frysinger @ 2011-01-11 18:00 UTC (permalink / raw)
To: buildroot
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
v2
- tweak perror patch
...0-0001-README-fix-typo-in-tcp-wrapper-doc.patch | 26 ++++++
...0002-NO_PIE-make-PIE-support-controllable.patch | 53 +++++++++++
...K-control-usage-of-fork-for-nommu-systems.patch | 95 ++++++++++++++++++++
...ERROR-control-overriding-of-perror-symbol.patch | 65 +++++++++++++
package/portmap/portmap.mk | 7 ++-
5 files changed, 245 insertions(+), 1 deletions(-)
create mode 100644 package/portmap/portmap-6.0-0001-README-fix-typo-in-tcp-wrapper-doc.patch
create mode 100644 package/portmap/portmap-6.0-0002-NO_PIE-make-PIE-support-controllable.patch
create mode 100644 package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch
create mode 100644 package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch
diff --git a/package/portmap/portmap-6.0-0001-README-fix-typo-in-tcp-wrapper-doc.patch b/package/portmap/portmap-6.0-0001-README-fix-typo-in-tcp-wrapper-doc.patch
new file mode 100644
index 0000000..01aa7bf
--- /dev/null
+++ b/package/portmap/portmap-6.0-0001-README-fix-typo-in-tcp-wrapper-doc.patch
@@ -0,0 +1,26 @@
+From af4a27a17bbdbe941f2462e116c2e4c8ade110e3 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 19 Nov 2010 23:35:20 -0500
+Subject: [PATCH 1/4] README: fix typo in tcp wrapper doc
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ README | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/README b/README
+index 0da54cc..916de7e 100644
+--- a/README
++++ b/README
+@@ -18,7 +18,7 @@ There is no "./configure", just use "make".
+
+ Some make variable can be used to control compilation.
+
+- NO_TCP_WRAPPER= if non-empty, doen't use tcp_wrappers
++ NO_TCP_WRAPPER= if non-empty, don't use tcp_wrappers
+ USE_DNS= if set, tcp_wrappers can check peers based on hostname
+ as well as IP address. This should only be used if you
+ are certain that gethostbyname will never trigger a
+--
+1.7.3.1
+
diff --git a/package/portmap/portmap-6.0-0002-NO_PIE-make-PIE-support-controllable.patch b/package/portmap/portmap-6.0-0002-NO_PIE-make-PIE-support-controllable.patch
new file mode 100644
index 0000000..6e544bf
--- /dev/null
+++ b/package/portmap/portmap-6.0-0002-NO_PIE-make-PIE-support-controllable.patch
@@ -0,0 +1,53 @@
+From 087874b15367a04fd482541d1832696d7163d1ac Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 19 Nov 2010 23:35:47 -0500
+Subject: [PATCH 2/4] NO_PIE: make PIE support controllable
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ Makefile | 8 ++++++--
+ README | 1 +
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 5343428..cfcfdbb 100644
+--- a/Makefile
++++ b/Makefile
+@@ -106,6 +106,10 @@ CPPFLAGS += -DIGNORE_SIGCHLD # AIX 4.x, HP-UX 9.x
+ #
+ # LDLIBS += -m
+ # CFLAGS += -arch m68k -arch i386 -arch hppa
++ifeq ($(NO_PIE),)
++CFLAGS_PIE = -fpie
++LDFLAGS_PIE = -pie
++endif
+
+ # Auxiliary libraries that you may have to specify
+ #
+@@ -125,9 +129,9 @@ CFLAGS += -Wall -Wstrict-prototypes
+ all: portmap pmap_dump pmap_set portmap.man
+
+ CPPFLAGS += $(HOSTS_ACCESS)
+-portmap: CFLAGS += -fpie
++portmap: CFLAGS += $(CFLAGS_PIE)
+ portmap: LDLIBS += $(WRAP_LIB)
+-portmap: LDFLAGS += -pie
++portmap: LDFLAGS += $(LDFLAGS_PIE)
+ portmap: portmap.o pmap_check.o from_local.o
+
+ from_local: CPPFLAGS += -DTEST
+diff --git a/README b/README
+index 916de7e..e0b561a 100644
+--- a/README
++++ b/README
+@@ -18,6 +18,7 @@ There is no "./configure", just use "make".
+
+ Some make variable can be used to control compilation.
+
++ NO_PIE= if non-empty, don't build portmap as a PIE
+ NO_TCP_WRAPPER= if non-empty, don't use tcp_wrappers
+ USE_DNS= if set, tcp_wrappers can check peers based on hostname
+ as well as IP address. This should only be used if you
+--
+1.7.3.1
+
diff --git a/package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch b/package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch
new file mode 100644
index 0000000..41396b6
--- /dev/null
+++ b/package/portmap/portmap-6.0-0003-NO_FORK-control-usage-of-fork-for-nommu-systems.patch
@@ -0,0 +1,95 @@
+From b3afea5757af1a7356ba30d2e0a7d5909ca18121 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 19 Nov 2010 23:48:20 -0500
+Subject: [PATCH 3/4] NO_FORK: control usage of fork() for nommu systems
+
+nommu systems lack a fork() function, so add a NO_FORK flag to control
+its usage. We don't lose a ton of functionality in doing so, and on an
+embedded system, this is OK.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ Makefile | 5 +++++
+ README | 1 +
+ pmap_check.c | 6 ++++--
+ portmap.c | 6 ++++++
+ 4 files changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index cfcfdbb..9df5574 100644
+--- a/Makefile
++++ b/Makefile
+@@ -27,6 +27,11 @@ MAN_SED += -e 's/USE_DNS/yes/'
+ endif
+ endif
+
++# For no-mmu systems, we have to disable the fork() functions.
++ifneq ($(NO_FORK),)
++CPPFLAGS += -DNO_FORK
++endif
++
+ # Comment out if your RPC library does not allocate privileged ports for
+ # requests from processes with root privilege, or the new portmap will
+ # always reject requests to register/unregister services on privileged
+diff --git a/README b/README
+index e0b561a..bda1707 100644
+--- a/README
++++ b/README
+@@ -18,6 +18,7 @@ There is no "./configure", just use "make".
+
+ Some make variable can be used to control compilation.
+
++ NO_FORK= if non-empty, don't use fork (good for nommu systems)
+ NO_PIE= if non-empty, don't build portmap as a PIE
+ NO_TCP_WRAPPER= if non-empty, don't use tcp_wrappers
+ USE_DNS= if set, tcp_wrappers can check peers based on hostname
+diff --git a/pmap_check.c b/pmap_check.c
+index 6b3e490..983414e 100644
+--- a/pmap_check.c
++++ b/pmap_check.c
+@@ -302,8 +302,10 @@ static void logit(int severity, struct sockaddr_in *addr,
+ * getrpcbynumber() or syslog() does its thing.
+ */
+
+- if (fork() == 0) {
+-
++#ifndef NO_FORK
++ if (fork() == 0)
++#endif
++ {
+ /* Try to map program number to name. */
+
+ if (prognum == 0) {
+diff --git a/portmap.c b/portmap.c
+index 2a98881..94abc64 100644
+--- a/portmap.c
++++ b/portmap.c
+@@ -753,6 +755,7 @@ static void callit(struct svc_req *rqstp, SVCXPRT *xprt)
+ if ((pml = find_service(a.rmt_prog, a.rmt_vers,
+ (u_long)IPPROTO_UDP)) == NULL)
+ return;
++#ifndef NO_FORK
+ /*
+ * fork a child to do the work. Parent immediately returns.
+ * Child exits upon completion.
+@@ -763,6 +766,7 @@ static void callit(struct svc_req *rqstp, SVCXPRT *xprt)
+ a.rmt_prog);
+ return;
+ }
++#endif
+ port = pml->pml_map.pm_port;
+ get_myaddress(&me);
+ me.sin_port = htons(port);
+@@ -783,7 +787,9 @@ static void callit(struct svc_req *rqstp, SVCXPRT *xprt)
+ clnt_destroy(client);
+ }
+ (void)close(so);
++#ifndef NO_FORK
+ exit(0);
++#endif
+ }
+
+ #ifndef IGNORE_SIGCHLD /* Lionel Cons <cons@dxcern.cern.ch> */
+--
+1.7.3.1
+
diff --git a/package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch b/package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch
new file mode 100644
index 0000000..665d6a1
--- /dev/null
+++ b/package/portmap/portmap-6.0-0004-NO_PERROR-control-overriding-of-perror-symbol.patch
@@ -0,0 +1,65 @@
+From 8cea0778f0fb838a7bd764be08f15e1494e5a0b2 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 19 Nov 2010 23:50:27 -0500
+Subject: [PATCH 4/4] NO_PERROR: control overriding of perror() symbol
+
+Doing static builds of portmap might fail when the C library's perror()
+function is pulled in and collides with portmap's definition. So add a
+flag to control the local override.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ Makefile | 5 +++++
+ README | 1 +
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 9df5574..1635107 100644
+--- a/Makefile
++++ b/Makefile
+@@ -32,6 +32,11 @@ ifneq ($(NO_FORK),)
+ CPPFLAGS += -DNO_FORK
+ endif
+
++# For static builds, we might hit perror() symbol clashes
++ifneq ($(NO_PERROR),)
++CPPFLAGS += -DNO_PERROR
++endif
++
+ # Comment out if your RPC library does not allocate privileged ports for
+ # requests from processes with root privilege, or the new portmap will
+ # always reject requests to register/unregister services on privileged
+diff --git a/README b/README
+index bda1707..05861a8 100644
+--- a/README
++++ b/README
+@@ -19,6 +19,7 @@ There is no "./configure", just use "make".
+ Some make variable can be used to control compilation.
+
+ NO_FORK= if non-empty, don't use fork (good for nommu systems)
++ NO_PERROR= if non-empty, don't override the perror() func
+ NO_PIE= if non-empty, don't build portmap as a PIE
+ NO_TCP_WRAPPER= if non-empty, don't use tcp_wrappers
+ USE_DNS= if set, tcp_wrappers can check peers based on hostname
+diff --git a/portmap.c b/portmap.c
+index 2a98881..94abc64 100644
+--- a/portmap.c
++++ b/portmap.c
+@@ -391,12 +391,14 @@ main(int argc, char **argv)
+ abort();
+ }
+
++#ifndef NO_PERROR
+ /* need to override perror calls in rpc library */
+ void perror(const char *what)
+ {
+
+ syslog(LOG_ERR, "%s: %m", what);
+ }
++#endif
+
+ static struct pmaplist *
+ find_service(u_long prog, u_long vers, u_long prot)
+--
+1.7.3.1
+
diff --git a/package/portmap/portmap.mk b/package/portmap/portmap.mk
index e83ff1d..4a5fe62 100644
--- a/package/portmap/portmap.mk
+++ b/package/portmap/portmap.mk
@@ -9,8 +9,13 @@ PORTMAP_SOURCE = portmap-$(PORTMAP_VERSION).tgz
PORTMAP_SITE = http://neil.brown.name/portmap
PORTMAP_SBINS = portmap pmap_dump pmap_set
+PORTMAP_FLAGS = NO_TCP_WRAPPER=1 NO_PIE=1 NO_PERROR=1
+ifeq ($(BR2_USE_MMU),)
+PORTMAP_FLAGS += NO_FORK=1
+endif
+
define PORTMAP_BUILD_CMDS
- $(MAKE) CC="$(TARGET_CC)" -C $(@D) NO_TCP_WRAPPER=1
+ $(MAKE) CC="$(TARGET_CC)" -C $(@D) $(PORTMAP_FLAGS)
endef
define PORTMAP_INSTALL_TARGET_CMDS
--
1.7.4.rc1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 5/7] portmap: respect target CFLAGS
2011-01-10 14:28 ` [Buildroot] [PATCH 1/7] busybox: unify duplicated build steps Mike Frysinger
` (2 preceding siblings ...)
2011-01-10 14:28 ` [Buildroot] [PATCH 4/7] portmap: add nommu support Mike Frysinger
@ 2011-01-10 14:28 ` Mike Frysinger
2011-01-19 21:20 ` Peter Korsgaard
2011-01-10 14:28 ` [Buildroot] [PATCH 6/7] portmap: fix clean target to actually clean Mike Frysinger
` (2 subsequent siblings)
6 siblings, 1 reply; 24+ messages in thread
From: Mike Frysinger @ 2011-01-10 14:28 UTC (permalink / raw)
To: buildroot
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
package/portmap/portmap.mk | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/package/portmap/portmap.mk b/package/portmap/portmap.mk
index 4a5fe62..bebafce 100644
--- a/package/portmap/portmap.mk
+++ b/package/portmap/portmap.mk
@@ -15,6 +15,7 @@ PORTMAP_FLAGS += NO_FORK=1
endif
define PORTMAP_BUILD_CMDS
+ CFLAGS="$(TARGET_CFLAGS)" \
$(MAKE) CC="$(TARGET_CC)" -C $(@D) $(PORTMAP_FLAGS)
endef
--
1.7.4.rc1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 6/7] portmap: fix clean target to actually clean
2011-01-10 14:28 ` [Buildroot] [PATCH 1/7] busybox: unify duplicated build steps Mike Frysinger
` (3 preceding siblings ...)
2011-01-10 14:28 ` [Buildroot] [PATCH 5/7] portmap: respect target CFLAGS Mike Frysinger
@ 2011-01-10 14:28 ` Mike Frysinger
2011-01-19 21:21 ` Peter Korsgaard
2011-01-10 14:28 ` [Buildroot] [PATCH 7/7] tcpdump: add patch for nommu systems Mike Frysinger
2011-01-11 9:52 ` [Buildroot] [PATCH 1/7] busybox: unify duplicated build steps Peter Korsgaard
6 siblings, 1 reply; 24+ messages in thread
From: Mike Frysinger @ 2011-01-10 14:28 UTC (permalink / raw)
To: buildroot
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
package/portmap/portmap.mk | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/package/portmap/portmap.mk b/package/portmap/portmap.mk
index bebafce..e996824 100644
--- a/package/portmap/portmap.mk
+++ b/package/portmap/portmap.mk
@@ -19,6 +19,10 @@ define PORTMAP_BUILD_CMDS
$(MAKE) CC="$(TARGET_CC)" -C $(@D) $(PORTMAP_FLAGS)
endef
+define PORTMAP_CLEAN_CMDS
+ $(MAKE) -C $(@D) clean
+endef
+
define PORTMAP_INSTALL_TARGET_CMDS
for sbin in $(PORTMAP_SBINS); do \
$(INSTALL) -D $(@D)/$$sbin $(TARGET_DIR)/sbin/$$sbin; \
--
1.7.4.rc1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 7/7] tcpdump: add patch for nommu systems
2011-01-10 14:28 ` [Buildroot] [PATCH 1/7] busybox: unify duplicated build steps Mike Frysinger
` (4 preceding siblings ...)
2011-01-10 14:28 ` [Buildroot] [PATCH 6/7] portmap: fix clean target to actually clean Mike Frysinger
@ 2011-01-10 14:28 ` Mike Frysinger
2011-01-19 21:52 ` Peter Korsgaard
2011-01-11 9:52 ` [Buildroot] [PATCH 1/7] busybox: unify duplicated build steps Peter Korsgaard
6 siblings, 1 reply; 24+ messages in thread
From: Mike Frysinger @ 2011-01-10 14:28 UTC (permalink / raw)
To: buildroot
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
package/tcpdump/tcpdump-4.1.1-vfork.patch | 128 +++++++++++++++++++++++++++++
1 files changed, 128 insertions(+), 0 deletions(-)
create mode 100644 package/tcpdump/tcpdump-4.1.1-vfork.patch
diff --git a/package/tcpdump/tcpdump-4.1.1-vfork.patch b/package/tcpdump/tcpdump-4.1.1-vfork.patch
new file mode 100644
index 0000000..a6725e6
--- /dev/null
+++ b/package/tcpdump/tcpdump-4.1.1-vfork.patch
@@ -0,0 +1,128 @@
+https://sourceforge.net/tracker/?func=detail&aid=3120897&group_id=53066&atid=469575
+
+From 6f8927c609d1f986a45010b7acae0eb570668642 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Sat, 27 Nov 2010 17:18:05 -0500
+Subject: [PATCH] add support for nommu systems
+
+Rather than hardcode the WIN32 define, add proper fork checks to the
+configure script and check those. This fixes building for nommu systems
+which lack the fork function.
+
+While we're here though, add support for this functionality via vfork
+so that it does work on nommu systems. And fix an old bug where we
+exit properly in the forked child when the exec failed instead of just
+returning to the calling code (which isn't expecting it).
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+
+--- tcpdump-4.0.0/config.h.in
++++ tcpdump-4.0.0/config.h.in
+@@ -151,6 +151,9 @@
+ /* Define to 1 if you have the <fcntl.h> header file. */
+ #undef HAVE_FCNTL_H
+
++/* Define to 1 if you have the `fork' function. */
++#undef HAVE_FORK
++
+ /* Define to 1 if you have the `getnameinfo' function. */
+ #undef HAVE_GETNAMEINFO
+
+@@ -274,6 +277,9 @@
+ /* Define to 1 if you have the <unistd.h> header file. */
+ #undef HAVE_UNISTD_H
+
++/* Define to 1 if you have the `vfork' function. */
++#undef HAVE_VFORK
++
+ /* Define to 1 if you have the `vfprintf' function. */
+ #undef HAVE_VFPRINTF
+
+--- tcpdump-4.0.0/configure
++++ tcpdump-4.0.0/configure
+@@ -7976,7 +7976,7 @@ done
+
+
+
+-for ac_func in strftime
++for ac_func in fork vfork strftime
+ do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ { echo "$as_me:$LINENO: checking for $ac_func" >&5
+diff --git a/tcpdump.c b/tcpdump.c
+index c8da36b..abf3e69 100644
+--- a/tcpdump.c
++++ b/tcpdump.c
+@@ -1250,8 +1250,10 @@ main(int argc, char **argv)
+ (void)setsignal(SIGPIPE, cleanup);
+ (void)setsignal(SIGTERM, cleanup);
+ (void)setsignal(SIGINT, cleanup);
+- (void)setsignal(SIGCHLD, child_cleanup);
+ #endif /* WIN32 */
++#if defined(HAVE_FORK) || defined(HAVE_VFORK)
++ (void)setsignal(SIGCHLD, child_cleanup);
++#endif
+ /* Cooperate with nohup(1) */
+ #ifndef WIN32
+ if ((oldhandler = setsignal(SIGHUP, cleanup)) != SIG_DFL)
+@@ -1464,13 +1466,13 @@ cleanup(int signo _U_)
+ On windows, we do not use a fork, so we do not care less about
+ waiting a child processes to die
+ */
+-#ifndef WIN32
++#if defined(HAVE_FORK) || defined(HAVE_VFORK)
+ static RETSIGTYPE
+ child_cleanup(int signo _U_)
+ {
+ wait(NULL);
+ }
+-#endif /* WIN32 */
++#endif /* HAVE_FORK && HAVE_VFORK */
+
+ static void
+ info(register int verbose)
+@@ -1514,11 +1516,15 @@ info(register int verbose)
+ infoprint = 0;
+ }
+
+-#ifndef WIN32
++#if defined(HAVE_FORK) || defined(HAVE_VFORK)
+ static void
+ compress_savefile(const char *filename)
+ {
++# ifdef HAVE_FORK
+ if (fork())
++# else
++ if (vfork())
++# endif
+ return;
+ /*
+ * Set to lowest priority so that this doesn't disturb the capture
+@@ -1534,15 +1540,20 @@ compress_savefile(const char *filename)
+ zflag,
+ filename,
+ strerror(errno));
++# ifdef HAVE_FORK
++ exit(1);
++# else
++ _exit(1);
++# endif
+ }
+-#else /* WIN32 */
++#else /* HAVE_FORK && HAVE_VFORK */
+ static void
+ compress_savefile(const char *filename)
+ {
+ fprintf(stderr,
+- "compress_savefile failed. Functionality not implemented under windows\n");
++ "compress_savefile failed. Functionality not implemented under your system\n");
+ }
+-#endif /* WIN32 */
++#endif /* HAVE_FORK && HAVE_VFORK */
+
+ static void
+ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
+--
+1.7.3.1
+
--
1.7.4.rc1
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 7/7] tcpdump: add patch for nommu systems
2011-01-10 14:28 ` [Buildroot] [PATCH 7/7] tcpdump: add patch for nommu systems Mike Frysinger
@ 2011-01-19 21:52 ` Peter Korsgaard
0 siblings, 0 replies; 24+ messages in thread
From: Peter Korsgaard @ 2011-01-19 21:52 UTC (permalink / raw)
To: buildroot
>>>>> "Mike" == Mike Frysinger <vapier@gentoo.org> writes:
Mike> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Mike> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Mike> ---
Mike> package/tcpdump/tcpdump-4.1.1-vfork.patch | 128 +++++++++++++++++++++++++++++
Mike> ++#if defined(HAVE_FORK) || defined(HAVE_VFORK)
Mike> +-#else /* WIN32 */
Mike> ++#else /* HAVE_FORK && HAVE_VFORK */
This should be HAVE_FORK || HAVE_VFORK
Mike> ++#endif /* HAVE_FORK && HAVE_VFORK */
Same here.
Other than that it looks good, committed - Thanks.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 24+ messages in thread
* [Buildroot] [PATCH 1/7] busybox: unify duplicated build steps
2011-01-10 14:28 ` [Buildroot] [PATCH 1/7] busybox: unify duplicated build steps Mike Frysinger
` (5 preceding siblings ...)
2011-01-10 14:28 ` [Buildroot] [PATCH 7/7] tcpdump: add patch for nommu systems Mike Frysinger
@ 2011-01-11 9:52 ` Peter Korsgaard
6 siblings, 0 replies; 24+ messages in thread
From: Peter Korsgaard @ 2011-01-11 9:52 UTC (permalink / raw)
To: buildroot
>>>>> "Mike" == Mike Frysinger <vapier@gentoo.org> writes:
Mike> This does set a few more vars in some steps that weren't set before, but
Mike> they should be harmless in the contexts in question. And the resulting
Mike> save in duplication is nice.
Committed, thanks.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 24+ messages in thread