Patchwork [3/5] Added the libpth package.

login
register
mail settings
Submitter Stijn Souffriau
Date May 9, 2012, 9:29 p.m.
Message ID <1336598986-9518-3-git-send-email-stijn.souffriau@essensium.com>
Download mbox | patch
Permalink /patch/158047/
State Rejected
Headers show

Comments

Stijn Souffriau - May 9, 2012, 9:29 p.m.
---
 package/Config.in                                  |    1 +
 package/libpth/Config.in                           |    9 +++++
 ...mmited-L-usr-lib-I-usr-include-from-paths.patch |   34 ++++++++++++++++++++
 package/libpth/libpth-0002-dependencyfix.patch     |   25 ++++++++++++++
 .../libpth-0003-fixed-install-dependency.patch     |   34 ++++++++++++++++++++
 package/libpth/libpth.mk                           |   15 +++++++++
 6 files changed, 118 insertions(+), 0 deletions(-)
 create mode 100644 package/libpth/Config.in
 create mode 100644 package/libpth/libpth-0001-ommited-L-usr-lib-I-usr-include-from-paths.patch
 create mode 100644 package/libpth/libpth-0002-dependencyfix.patch
 create mode 100644 package/libpth/libpth-0003-fixed-install-dependency.patch
 create mode 100644 package/libpth/libpth.mk
Gustavo Zacarias - May 10, 2012, 10:43 a.m.
On 2012-05-09 18:29, Stijn Souffriau wrote:

> +++ b/package/libpth/Config.in
> @@ -0,0 +1,9 @@
> +config BR2_PACKAGE_LIBPTH
> +	bool "libpth"
> +	help
> +	  Pth is a very portable POSIX/ANSI-C based library for Unix
> +	  platforms which provides non-preemptive priority-based scheduling
> +	  for multiple threads of execution (aka ``multithreading'')
> +	  inside event-driven applications.
> +
> +	  http://www.gnu.org/software/pth/

depends on BR2_TOOLCHAIN_EXTERNAL_GLIBC || BR2_TOOLCHAIN_CTNG_glibc || 
BR2_TOOLCHAIN_CTNG_eglibc
pth doesn't work with uClibc...
Regards.
Arnout Vandecappelle - May 11, 2012, 10:52 p.m.
On 05/10/12 12:43, Gustavo Zacarias wrote:
>> +++ b/package/libpth/Config.in
>> @@ -0,0 +1,9 @@
>> +config BR2_PACKAGE_LIBPTH
>> +    bool "libpth"
>> +    help
>> +      Pth is a very portable POSIX/ANSI-C based library for Unix
>> +      platforms which provides non-preemptive priority-based scheduling
>> +      for multiple threads of execution (aka ``multithreading'')
>> +      inside event-driven applications.
>> +
>> + http://www.gnu.org/software/pth/

  Since the upstream package is called pth, it makes sense to give the buildroot
package the same name, rather than libpth.

>
> depends on BR2_TOOLCHAIN_EXTERNAL_GLIBC || BR2_TOOLCHAIN_CTNG_glibc || BR2_TOOLCHAIN_CTNG_eglibc
> pth doesn't work with uClibc...

  Why do you say that?  I've just tried it with a default uClibc-0.9.33.1 config
on i486 and the pth tests run fine.

  It probably won't work on NOMMU, however: I see some fork calls in there that
are not configured out.

  Regards,
  Arnout
Gustavo Zacarias - May 11, 2012, 11:11 p.m.
On 2012-05-11 19:52, Arnout Vandecappelle wrote:

>> depends on BR2_TOOLCHAIN_EXTERNAL_GLIBC || BR2_TOOLCHAIN_CTNG_glibc 
>> || BR2_TOOLCHAIN_CTNG_eglibc
>> pth doesn't work with uClibc...
>
>  Why do you say that?  I've just tried it with a default
> uClibc-0.9.33.1 config
> on i486 and the pth tests run fine.
>
>  It probably won't work on NOMMU, however: I see some fork calls in
> there that
> are not configured out.
>
>  Regards,
>  Arnout

Because it only works for i386 uclibc, see pth_mctx.c lines 464-485, 
snip:

*****
intern int pth_mctx_set(
     pth_mctx_t *mctx, void (*func)(void), char *sk_addr_lo, char 
*sk_addr_hi)
{
     pth_mctx_save(mctx);
#if defined(__GLIBC__) && defined(__GLIBC_MINOR__) \
     && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 0 && defined(JB_PC) && 
defined(JB_SP)
     mctx->jb[0].__jmpbuf[JB_PC] = (int)func;
     mctx->jb[0].__jmpbuf[JB_SP] = (int)sk_addr_hi;
#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__) \
     && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 0 && defined(__mc68000__)
     mctx->jb[0].__jmpbuf[0].__aregs[0] = (long int)func;
     mctx->jb[0].__jmpbuf[0].__sp = (int *)sk_addr_hi;
#elif defined(__GNU_LIBRARY__) && defined(__i386__)
     mctx->jb[0].__jmpbuf[0].__pc = (char *)func;
     mctx->jb[0].__jmpbuf[0].__sp = sk_addr_hi;
#else
#error "Unsupported Linux (g)libc version and/or platform"
#endif
     sigemptyset(&mctx->sigs);
     mctx->error = 0;
     return TRUE;
}
*****

Regards.

Patch

diff --git a/package/Config.in b/package/Config.in
index d71136d..3035aaf 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -398,6 +398,7 @@  source "package/libffi/Config.in"
 source "package/libglib2/Config.in"
 source "package/libical/Config.in"
 source "package/libnspr/Config.in"
+source "package/libpth/Config.in"
 source "package/libsigc/Config.in"
 source "package/libtpl/Config.in"
 source "package/liburcu/Config.in"
diff --git a/package/libpth/Config.in b/package/libpth/Config.in
new file mode 100644
index 0000000..38a5837
--- /dev/null
+++ b/package/libpth/Config.in
@@ -0,0 +1,9 @@ 
+config BR2_PACKAGE_LIBPTH
+	bool "libpth"
+	help
+	  Pth is a very portable POSIX/ANSI-C based library for Unix 
+	  platforms which provides non-preemptive priority-based scheduling
+	  for multiple threads of execution (aka ``multithreading'')
+	  inside event-driven applications.
+
+	  http://www.gnu.org/software/pth/
diff --git a/package/libpth/libpth-0001-ommited-L-usr-lib-I-usr-include-from-paths.patch b/package/libpth/libpth-0001-ommited-L-usr-lib-I-usr-include-from-paths.patch
new file mode 100644
index 0000000..846a454
--- /dev/null
+++ b/package/libpth/libpth-0001-ommited-L-usr-lib-I-usr-include-from-paths.patch
@@ -0,0 +1,34 @@ 
+From 92f49db9b1c74691ac82b1f52429ca9b6f98d6f4 Mon Sep 17 00:00:00 2001
+From: Stijn Souffriau <stijn.souffriau@essensium.com>
+Date: Thu, 29 Mar 2012 19:55:02 +0200
+Subject: [PATCH] ommited -L/usr/lib -I/usr/include from paths
+
+---
+ pth-config.in |    8 ++++++--
+ 1 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/pth-config.in b/pth-config.in
+index 24a93d7..802770d 100644
+--- a/pth-config.in
++++ b/pth-config.in
+@@ -109,11 +109,15 @@ do
+             output="$output $pth_acdir"
+             ;;
+         --cflags)
+-            output="$output -I$pth_includedir"
++	    if [[ $pth_includedir != "/usr/include" ]]; then
++		output="$output -I$pth_includedir"
++	    fi
+             output_extra="$output_extra $pth_cflags"
+             ;;
+         --ldflags)
+-            output="$output -L$pth_libdir"
++	    if [[ $pth_libdir != "/usr/lib" ]]; then
++            	output="$output -L$pth_libdir"
++	    fi
+             output_extra="$output_extra $pth_ldflags"
+             ;;
+         --libs)
+-- 
+1.7.0.4
+
diff --git a/package/libpth/libpth-0002-dependencyfix.patch b/package/libpth/libpth-0002-dependencyfix.patch
new file mode 100644
index 0000000..a1eefe1
--- /dev/null
+++ b/package/libpth/libpth-0002-dependencyfix.patch
@@ -0,0 +1,25 @@ 
+From 92f862503bb934252e9df1d19d7184b5ed57d7aa Mon Sep 17 00:00:00 2001
+From: Stijn Souffriau <stijn.souffriau@essensium.com>
+Date: Mon, 2 Apr 2012 16:00:53 +0200
+Subject: [PATCH] Added prerequisite to rule needed for parallel building
+
+---
+ Makefile.in |    2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 477ed81..750ec9f 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -162,6 +162,8 @@ all-normal: $(TARGET_ALL)
+ all-for-install: $(TARGET_ALL)
+ 	@touch .done-all >/dev/null 2>&1 || $(TRUE)
+ 
++$(HSRCS): pth_p.h
++
+ #   build the private shared header file
+ pth_p.h: $(S)pth_p.h.in
+ 	$(SHTOOL) scpp -o pth_p.h -t $(S)pth_p.h.in -Dcpp -Cintern -M '==#==' $(HSRCS)
+-- 
+1.7.0.4
+
diff --git a/package/libpth/libpth-0003-fixed-install-dependency.patch b/package/libpth/libpth-0003-fixed-install-dependency.patch
new file mode 100644
index 0000000..e1d7d50
--- /dev/null
+++ b/package/libpth/libpth-0003-fixed-install-dependency.patch
@@ -0,0 +1,34 @@ 
+From f2079abd360d2f1c531927e8ff7aa034d51aac66 Mon Sep 17 00:00:00 2001
+From: Stijn Souffriau <stijn.souffriau@essensium.com>
+Date: Tue, 3 Apr 2012 13:49:38 +0200
+Subject: [PATCH] fixed install dependency
+
+---
+ Makefile.in |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.in b/Makefile.in
+index 750ec9f..f5f3c9c 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -229,7 +229,7 @@ install-dirs:
+ 	$(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(mandir)/man1
+ 	$(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(mandir)/man3
+ 	$(SHTOOL) mkdir -f -p -m 755 $(DESTDIR)$(datadir)/aclocal
+-install-pth:
++install-pth: install-dirs
+ 	$(SHTOOL) install -c -m 755 pth-config $(DESTDIR)$(bindir)/pth-config
+ 	$(SHTOOL) install -c -m 644 $(S)pth-config.1 $(DESTDIR)$(mandir)/man1/pth-config.1
+ 	$(SHTOOL) install -c -m 644 $(S)pth.3 $(DESTDIR)$(mandir)/man3/pth.3
+@@ -237,7 +237,7 @@ install-pth:
+ 	$(SHTOOL) install -c -m 644 pth.h $(DESTDIR)$(includedir)/pth.h
+ 	@umask 022; $(LIBTOOL) --mode=install \
+ 	$(SHTOOL) install -c libpth.la $(DESTDIR)$(libdir)/libpth.la
+-install-pthread:
++install-pthread: install-dirs
+ 	$(SHTOOL) install -c -m 755 pthread-config $(DESTDIR)$(bindir)/pthread-config
+ 	$(SHTOOL) install -c -m 644 $(S)pthread-config.1 $(DESTDIR)$(mandir)/man1/pthread-config.1
+ 	$(SHTOOL) install -c -m 644 pthread.h $(DESTDIR)$(includedir)/pthread.h
+-- 
+1.7.0.4
+
diff --git a/package/libpth/libpth.mk b/package/libpth/libpth.mk
new file mode 100644
index 0000000..07c5c61
--- /dev/null
+++ b/package/libpth/libpth.mk
@@ -0,0 +1,15 @@ 
+#############################################################
+#
+# libpth
+#
+#############################################################
+
+LIBPTH_VERSION = 2.0.6
+LIBPTH_SOURCE = pth-$(LIBPTH_VERSION).tar.gz
+LIBPTH_SITE = ftp://ftp.gnu.org/gnu/pth/
+LIBPTH_INSTALL_STAGING = YES
+
+LIBPTH_CONF_OPT = \
+	--disable-optimization
+
+$(eval $(call AUTOTARGETS))