Skip to contentSkip to conversation

package/guile: New package

PATCH Superseded Pedro Aguilar 2 participants 14 messages Nov 6, 2014 – Nov 23, 2014

v4 of 5 Superseded Latest is v5 →

lore
Share & tools
lore
#0 lore raw

v4 cover package/guile: New package

This patch fixes the suggestion made by Jerzy Grzegorek in guile and bdwgc.

The patch adds the following:
- libatomic_ops: Add host-autotools-package
- libunistring: Add host-autotools-package
- bdwgc: New package. A garbage collector library for C/C++
- Guile: New package. A progamming language similar to Lisp.

Pedro Aguilar (4):
libatomic_ops: Add host-autotools-package
bdwgc: new package
libunistring: Add host-autotools-package
guile: new package

 package/Config.in                                  |  2 ++
 package/bdwgc/Config.in                            | 10 ++++++
 package/bdwgc/bdwgc.mk                             | 20 ++++++++++++
 package/guile/Config.in                            | 15 +++++++++
 package/guile/guile-01-fix_arm_endianness.patch    | 25 +++++++++++++++
 .../guile/guile-02-calculate-csqrt_manually.patch  | 16 ++++++++++
 package/guile/guile-03-remove_unused_funcs.patch   | 36 ++++++++++++++++++++++
 package/guile/guile.mk                             | 25 +++++++++++++++
 package/libatomic_ops/libatomic_ops.mk             |  1 +
 package/libunistring/libunistring.mk               |  1 +
 10 files changed, 151 insertions(+)
 create mode 100644 package/bdwgc/Config.in
 create mode 100644 package/bdwgc/bdwgc.mk
 create mode 100644 package/guile/Config.in
 create mode 100644 package/guile/guile-01-fix_arm_endianness.patch
 create mode 100644 package/guile/guile-02-calculate-csqrt_manually.patch
 create mode 100644 package/guile/guile-03-remove_unused_funcs.patch
 create mode 100644 package/guile/guile.mk
Signature · 1 line
1.9.1
#1 lore raw

PATCH v4 1/4 libatomic_ops: Add host-autotools-package

The host-libatomic_ops is needed by host-bdwgc that is needed in turn by guile.

bdwgc bundles its own version of libatomic_ops, but it's prefered to use the external one that is the default.

---
Changes v1 -> v2:
- Add host-libatomic_ops (suggested by Yann Morin)

---
 package/libatomic_ops/libatomic_ops.mk | 1 +
 1 file changed, 1 insertion(+)
package/libatomic_ops/libatomic_ops.mk +1 -0
index d473901..6a26775 100644
@@ -20,3 +20,4 @@ LIBATOMIC_OPS_LICENSE_FILES = doc/LICENSING.txt COPYING
 LIBATOMIC_OPS_INSTALL_STAGING = YES
 
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 1 line
1.9.1
#2 lore raw

PATCH v4 1/4 libatomic_ops: Add host-autotools-package

Pedro, All,

Eventually, I get to review this... ;-)

On 2014-11-06 22:48 +0100, Pedro Aguilar spake thusly:

Quoted 5 lines

The host-libatomic_ops is needed by host-bdwgc that is needed in turn by guile.

bdwgc bundles its own version of libatomic_ops, but it's prefered to use the external one that is the default.

That sentence is not obvious for who hasn;t followed the previous iterations of the series. Also, it is related to bdwgc, so is not needed in that patch. Let;s just remove it.

Quoted 1 line

With the second sentence removed from the commit log:

Quoted 5 lines

---
Changes v1 -> v2:
- Add host-libatomic_ops (suggested by Yann Morin)

That second SoB line is superfluous, and will be ignored by git. Basically, all that is below the '---' line (included) gets ignored by git when applying a patch.

Regards,
Yann E. MORIN.

Quoted 20 lines
---
 package/libatomic_ops/libatomic_ops.mk | 1 +
 1 file changed, 1 insertion(+)
package/libatomic_ops/libatomic_ops.mk +1 -0
index d473901..6a26775 100644
@@ -20,3 +20,4 @@ LIBATOMIC_OPS_LICENSE_FILES = doc/LICENSING.txt COPYING
 LIBATOMIC_OPS_INSTALL_STAGING = YES
 
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 6 lines
1.9.1

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#3 lore raw

PATCH v4 2/4 bdwgc: new package

In reply to Pedro Aguilar

bdwgc is a garbage collector for C and C++. The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C 'malloc' or C++ 'new'.

---
Changes v3 -> v4:
- Fix formatting issues
(Suggested by Jerzy Grzegorek)

Changes v2 -> v3:
- bdwgc belongs to Libraries/Other
- Fix license file name
- Comment options properly
- Fix a formatting issue
(All changes suggested by Arnout Vandecappelle)

Changes v1 -> v2:
- Add external default dependency on libatomic_ops
- Fix several formatting issues
(All changes suggested by Yann Morin)

---
 package/Config.in       |  1 +
 package/bdwgc/Config.in | 10 ++++++++++
 package/bdwgc/bdwgc.mk  | 20 ++++++++++++++++++++
 3 files changed, 31 insertions(+)
 create mode 100644 package/bdwgc/Config.in
 create mode 100644 package/bdwgc/bdwgc.mk
package/Config.in +1 -0
index 28cf703..1354c27 100644
@@ -848,6 +848,7 @@ menu "Other"
 	source "package/apr-util/Config.in"
 	source "package/argp-standalone/Config.in"
 	source "package/armadillo/Config.in"
+	source "package/bdwgc/Config.in"
 	source "package/boost/Config.in"
 	source "package/clapack/Config.in"
 	source "package/classpath/Config.in"
package/bdwgc/Config.in new file +10 -0
new file mode 100644
index 0000000..b30c218
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_BDWGC
+	bool "bdwgc"
+	depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS
+	select BR2_PACKAGE_LIBATOMIC_OPS
+	help
+	  The Boehm-Demers-Weiser conservative garbage collector can 
+	  be used as a garbage collecting replacement for C 'malloc'
+	  or C++ 'new'.
+
+	  http://www.hboehm.info/gc/
package/bdwgc/bdwgc.mk new file +20 -0
new file mode 100644
index 0000000..76d4ba0
@@ -0,0 +1,20 @@
+################################################################################
+#
+# bdwgc
+#
+################################################################################
+
+BDWGC_VERSION = 7.2f
+BDWGC_SOURCE = gc-$(BDWGC_VERSION).tar.gz
+BDWGC_SITE = http://www.hboehm.info/gc/gc_source
+BDWGC_INSTALL_STAGING = YES
+BDWGC_LICENSE = bdwgc license
+BDWGC_LICENSE_FILES = README.QUICK
+
+# Patching libtool breaks build
+BDWGC_LIBTOOL_PATCH = NO
+
+BDWGC_DEPENDENCIES = host-bdwgc libatomic_ops
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 1 line
1.9.1
#4 lore raw

PATCH v4 2/4 bdwgc: new package

Pedro, All,

On 2014-11-06 22:48 +0100, Pedro Aguilar spake thusly:

Quoted 5 lines

bdwgc is a garbage collector for C and C++. The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C 'malloc' or C++ 'new'.

I've had a cursory look at configure.ac, and it seems it detects C++ and threading model, and does not need LFS.

Regards,
Yann E. MORIN.

Quoted 87 lines

---
Changes v3 -> v4:
- Fix formatting issues
(Suggested by Jerzy Grzegorek)

Changes v2 -> v3:
- bdwgc belongs to Libraries/Other
- Fix license file name
- Comment options properly
- Fix a formatting issue
(All changes suggested by Arnout Vandecappelle)

Changes v1 -> v2:
- Add external default dependency on libatomic_ops
- Fix several formatting issues
(All changes suggested by Yann Morin)

---
 package/Config.in       |  1 +
 package/bdwgc/Config.in | 10 ++++++++++
 package/bdwgc/bdwgc.mk  | 20 ++++++++++++++++++++
 3 files changed, 31 insertions(+)
 create mode 100644 package/bdwgc/Config.in
 create mode 100644 package/bdwgc/bdwgc.mk
package/Config.in +1 -0
index 28cf703..1354c27 100644
@@ -848,6 +848,7 @@ menu "Other"
 	source "package/apr-util/Config.in"
 	source "package/argp-standalone/Config.in"
 	source "package/armadillo/Config.in"
+	source "package/bdwgc/Config.in"
 	source "package/boost/Config.in"
 	source "package/clapack/Config.in"
 	source "package/classpath/Config.in"
package/bdwgc/Config.in new file +10 -0
new file mode 100644
index 0000000..b30c218
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_BDWGC
+	bool "bdwgc"
+	depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS
+	select BR2_PACKAGE_LIBATOMIC_OPS
+	help
+	  The Boehm-Demers-Weiser conservative garbage collector can 
+	  be used as a garbage collecting replacement for C 'malloc'
+	  or C++ 'new'.
+
+	  http://www.hboehm.info/gc/
package/bdwgc/bdwgc.mk new file +20 -0
new file mode 100644
index 0000000..76d4ba0
@@ -0,0 +1,20 @@
+################################################################################
+#
+# bdwgc
+#
+################################################################################
+
+BDWGC_VERSION = 7.2f
+BDWGC_SOURCE = gc-$(BDWGC_VERSION).tar.gz
+BDWGC_SITE = http://www.hboehm.info/gc/gc_source
+BDWGC_INSTALL_STAGING = YES
+BDWGC_LICENSE = bdwgc license
+BDWGC_LICENSE_FILES = README.QUICK
+
+# Patching libtool breaks build
+BDWGC_LIBTOOL_PATCH = NO
+
+BDWGC_DEPENDENCIES = host-bdwgc libatomic_ops
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 6 lines
1.9.1

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#5 lore raw

PATCH v4 2/4 bdwgc: new package

Hi Yann,

Thanks for the review :)

Quoted 11 lines · Yann E. MORIN

Pedro, All,

On 2014-11-06 22:48 +0100, Pedro Aguilar spake thusly:

Quoted 5 lines

bdwgc is a garbage collector for C and C++. The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C 'malloc' or C++ 'new'.

I've had a cursory look at configure.ac, and it seems it detects C++ and threading model, and does not need LFS.

It installs C++ support only with the --enable-cplusplus option that is not enabled by default and not needed by Guile.

Yes, it detects a threading model depending on the platform. Should I add to the Config.in the following?

comment "bdwgc needs a toolchain w/ threads"
depends on BR2_TOOLCHAIN_HAS_THREADS

Thanks.
Regards.

Quoted 93 lines

Regards,
Yann E. MORIN.

Quoted 87 lines

---
Changes v3 -> v4:
- Fix formatting issues
(Suggested by Jerzy Grzegorek)

Changes v2 -> v3:
- bdwgc belongs to Libraries/Other
- Fix license file name
- Comment options properly
- Fix a formatting issue
(All changes suggested by Arnout Vandecappelle)

Changes v1 -> v2:
- Add external default dependency on libatomic_ops
- Fix several formatting issues
(All changes suggested by Yann Morin)

---
  package/Config.in       |  1 +
  package/bdwgc/Config.in | 10 ++++++++++
  package/bdwgc/bdwgc.mk  | 20 ++++++++++++++++++++
  3 files changed, 31 insertions(+)

create mode 100644 package/bdwgc/Config.in
create mode 100644 package/bdwgc/bdwgc.mk

package/Config.in +1 -0
index 28cf703..1354c27 100644
@@ -848,6 +848,7 @@ menu "Other"
  	source "package/apr-util/Config.in"
  	source "package/argp-standalone/Config.in"
  	source "package/armadillo/Config.in"
+	source "package/bdwgc/Config.in"
  	source "package/boost/Config.in"
  	source "package/clapack/Config.in"
  	source "package/classpath/Config.in"
package/bdwgc/Config.in new file +10 -0
new file mode 100644
index 0000000..b30c218
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_BDWGC
+	bool "bdwgc"
+	depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS
+	select BR2_PACKAGE_LIBATOMIC_OPS
+	help
+	  The Boehm-Demers-Weiser conservative garbage collector can
+	  be used as a garbage collecting replacement for C 'malloc'
+	  or C++ 'new'.
+
+	  http://www.hboehm.info/gc/
package/bdwgc/bdwgc.mk new file +20 -1
new file mode 100644
index 0000000..76d4ba0
@@ -0,0 +1,20 @@
+################################################################################
+#
+# bdwgc
+#
+################################################################################
+
+BDWGC_VERSION = 7.2f
+BDWGC_SOURCE = gc-$(BDWGC_VERSION).tar.gz
+BDWGC_SITE = http://www.hboehm.info/gc/gc_source
+BDWGC_INSTALL_STAGING = YES
+BDWGC_LICENSE = bdwgc license
+BDWGC_LICENSE_FILES = README.QUICK
+
+# Patching libtool breaks build
+BDWGC_LIBTOOL_PATCH = NO
+
+BDWGC_DEPENDENCIES = host-bdwgc libatomic_ops
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))
--

1.9.1

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

Signature · 2 lines
Pedro Aguilar
http://paguilar.org
#6 lore raw

PATCH v4 2/4 bdwgc: new package

Pedro, All,

On 2014-11-20 22:47 +0100, Pedro Aguilar spake thusly:

Quoted 13 lines · Yann E. MORIN
Quoted 11 lines

Pedro, All,

On 2014-11-06 22:48 +0100, Pedro Aguilar spake thusly:

Quoted 5 lines

bdwgc is a garbage collector for C and C++. The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C 'malloc' or C++ 'new'.

I've had a cursory look at configure.ac, and it seems it detects C++ and threading model, and does not need LFS.

Quoted 8 lines

It installs C++ support only with the --enable-cplusplus option that is not enabled by default and not needed by Guile.

Yes, it detects a threading model depending on the platform. Should I add to the Config.in the following?

comment "bdwgc needs a toolchain w/ threads"
depends on BR2_TOOLCHAIN_HAS_THREADS

No, that's Ok as-is, because configure detects the presence or abscence of C++ and threads, so we need not depend on _HAS_THREADS or anything else.

If that was wrong, the autobuilders will tell us, since they build a lot of different combinations.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#7 lore raw

PATCH v4 3/4 libunistring: Add host-autotools-package

In reply to Pedro Aguilar

The host-libunistring is needed by guile

---
Changes v1 -> v2:
- Add host-libunistring (suggested by Yann Morin)

---
 package/libunistring/libunistring.mk | 1 +
 1 file changed, 1 insertion(+)
package/libunistring/libunistring.mk +1 -0
index 3234ddc..fd77d12 100644
@@ -17,3 +17,4 @@ LIBUNISTRING_CONF_OPTS += --disable-threads
 endif
 
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 1 line
1.9.1
#8 lore raw

PATCH v4 3/4 libunistring: Add host-autotools-package

Pedro, All,

On 2014-11-06 22:48 +0100, Pedro Aguilar spake thusly:

Quoted 3 lines

The host-libunistring is needed by guile

Regards,
Yann E. MORIN.

Quoted 25 lines

---
Changes v1 -> v2:
- Add host-libunistring (suggested by Yann Morin)

---
 package/libunistring/libunistring.mk | 1 +
 1 file changed, 1 insertion(+)
package/libunistring/libunistring.mk +1 -0
index 3234ddc..fd77d12 100644
@@ -17,3 +17,4 @@ LIBUNISTRING_CONF_OPTS += --disable-threads
 endif
 
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 6 lines
1.9.1

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#9 lore raw

PATCH v4 4/4 guile: new package

In reply to Pedro Aguilar

Guile is an interpreter and compiler for the Scheme programming language, a clean and elegant dialect of Lisp.

---
Changes v3 -> v4:
- Fix formatting issues
(Suggested by Jerzy Grzegorek)

Changes v2 -> v3:
- Improve patches
- Remove unused dependencies
- Fix patches formatting
(All changes suggested by Thomas Petazzoni)

Changes v1 -> v2:
- Add all needed dependencies
- Explain GUILE_CONF_ENV arguments
- Remove PKG_CONFIG_HOST_BINARY
- Fix patches formatting
- Add thread comments in Config.in
(All changes suggested by Yann Morin)

---
 package/Config.in                                  |  1 +
 package/guile/Config.in                            | 15 +++++++++
 package/guile/guile-01-fix_arm_endianness.patch    | 25 +++++++++++++++
 .../guile/guile-02-calculate-csqrt_manually.patch  | 16 ++++++++++
 package/guile/guile-03-remove_unused_funcs.patch   | 36 ++++++++++++++++++++++
 package/guile/guile.mk                             | 25 +++++++++++++++
 6 files changed, 118 insertions(+)
 create mode 100644 package/guile/Config.in
 create mode 100644 package/guile/guile-01-fix_arm_endianness.patch
 create mode 100644 package/guile/guile-02-calculate-csqrt_manually.patch
 create mode 100644 package/guile/guile-03-remove_unused_funcs.patch
 create mode 100644 package/guile/guile.mk
package/Config.in +1 -0
index 1354c27..d45495d 100644
@@ -391,6 +391,7 @@ endmenu
 menu "Interpreter languages and scripting"
 	source "package/enscript/Config.in"
 	source "package/erlang/Config.in"
+	source "package/guile/Config.in"
 	source "package/haserl/Config.in"
 	source "package/jamvm/Config.in"
 	source "package/jimtcl/Config.in"
package/guile/Config.in new file +15 -0
new file mode 100644
index 0000000..85671e0
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_GUILE
+	bool "guile"
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	select BR2_PACKAGE_LIBUNISTRING
+	select BR2_PACKAGE_LIBFFI
+	select BR2_PACKAGE_GMP
+	select BR2_PACKAGE_BDWGC
+	help
+	  Guile is an interpreter and compiler for the Scheme 
+	  programming language, a clean and elegant dialect of Lisp.
+
+	  http://www.gnu.org/software/guile
+
+comment "guile needs a toolchain w/ threads"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS
package/guile/guile-01-fix_arm_endianness.patch new file +25 -0
new file mode 100644
index 0000000..a30a241
@@ -0,0 +1,25 @@
+Fix support for ARM endianness, otherwise it gives the error
+"unknown CPU endianness"
+
+Signed-off-by: Pedro Aguilar <[email protected]>
+
+diff -Nau guile-2.0.11.orig/module/system/base/target.scm guile-2.0.11/module/system/base/target.scm
+--- guile-2.0.11.orig/module/system/base/target.scm	2013-02-28 09:42:45.000000000 +0100
++++ guile-2.0.11/module/system/base/target.scm	2014-11-03 23:05:01.789338997 +0100
+@@ -70,7 +70,15 @@
+             ((member cpu '("sparc" "sparc64" "powerpc" "powerpc64" "spu"
+                            "mips" "mips64"))
+              (endianness big))
+-            ((string-match "^arm.*el" cpu)
++           ((string-match "^arm.*el" cpu)
++             (endianness little))
++            ((string-match "^arm.*eb" cpu)
++             (endianness big))
++            ((string-prefix? "arm" cpu)          ;ARMs are LE by default
++             (endianness little))
++            ((string-match "^aarch64.*be" cpu)
++             (endianness big))
++            ((string=? "aarch64" cpu)
+              (endianness little))
+             (else
+              (error "unknown CPU endianness" cpu)))))
package/guile/guile-02-calculate-csqrt_manually.patch new file +16 -0
new file mode 100644
index 0000000..98bb0b6
@@ -0,0 +1,16 @@
+Avoid using scm_from_complex_double(csqrt()) when building with uclibc.
+
+Signed-off-by: Pedro Aguilar <[email protected]>
+
+diff -Nau guile-2.0.11.orig/configure.ac guile-2.0.11/configure.ac
+--- guile-2.0.11.orig/configure.ac	2014-03-12 14:36:02.000000000 +0100
++++ guile-2.0.11/configure.ac	2014-11-03 23:59:51.897267207 +0100
+@@ -862,7 +862,7 @@
+ }]])],
+     [guile_cv_use_csqrt=yes],
+     [guile_cv_use_csqrt="no, glibc 2.3 bug"],
+-    [guile_cv_use_csqrt="yes, hopefully (cross-compiling)"])])
++    [guile_cv_use_csqrt="no (cross-compiling)"])])
+   case $guile_cv_use_csqrt in
+     yes*)
+       AC_DEFINE([HAVE_USABLE_CSQRT], 1, [Define to 1 if csqrt is bug-free])
package/guile/guile-03-remove_unused_funcs.patch new file +36 -0
new file mode 100644
index 0000000..3d70ee9
@@ -0,0 +1,36 @@
+Remove unused static inline functions str_upcase_l() and 
+str_downcase_l() that cause the compilation error:
+'dereferencing pointer to incomplete type'.
+
+Signed-off-by: Pedro Aguilar <[email protected]>
+
+diff -Nau guile-2.0.11.orig/libguile/i18n.c guile-2.0.11/libguile/i18n.c
+--- guile-2.0.11.orig/libguile/i18n.c	2014-01-21 22:25:11.000000000 +0100
++++ guile-2.0.11/libguile/i18n.c	2014-11-04 23:18:52.675435613 +0100
+@@ -851,26 +851,6 @@
+   *dst = '\0';
+ }
+ 
+-#ifdef USE_GNU_LOCALE_API
+-static inline void
+-str_upcase_l (register char *dst, register const char *src,
+-	      scm_t_locale locale)
+-{
+-  for (; *src != '\0'; src++, dst++)
+-    *dst = toupper_l (*src, locale);
+-  *dst = '\0';
+-}
+-
+-static inline void
+-str_downcase_l (register char *dst, register const char *src,
+-		scm_t_locale locale)
+-{
+-  for (; *src != '\0'; src++, dst++)
+-    *dst = tolower_l (*src, locale);
+-  *dst = '\0';
+-}
+-#endif
+-
+ 
+ SCM_DEFINE (scm_string_locale_lt, "string-locale<?", 2, 1, 0,
+ 	    (SCM s1, SCM s2, SCM locale),
package/guile/guile.mk new file +25 -0
new file mode 100644
index 0000000..e0d7e80
@@ -0,0 +1,25 @@
+################################################################################
+#
+# guile
+#
+################################################################################
+
+GUILE_VERSION = 2.0.11
+GUILE_SOURCE = guile-$(GUILE_VERSION).tar.xz
+GUILE_SITE = $(BR2_GNU_MIRROR)/guile
+GUILE_INSTALL_STAGING = YES
+GUILE_LICENSE = LGPLv3+
+GUILE_LICENSE_FILES = LICENSE COPYING COPYING.LESSER
+GUILE_DEPENDENCIES = host-guile libunistring libffi gmp bdwgc
+
+HOST_GUILE_DEPENDENCIES = host-libunistring host-libffi host-gmp host-bdwgc host-flex host-libtool
+
+# The HAVE_GC* CFLAGS specify that we wil use internal callbacks instead 
+# of the ones provided by bdwgc. Eg. HAVE_GC_SET_FINALIZER_NOTIFIER specifies 
+# that we won't use bdwgc's GC_finalizer_notifier callback.
+# Trying to use these specific bdwgc's callbacks breaks guile's building.
+GUILE_CONF_ENV += GUILE_FOR_BUILD=$(HOST_DIR)/usr/bin/guile \
+	CFLAGS="$(TARGET_CFLAGS) -DHAVE_GC_SET_FINALIZER_NOTIFIER -DHAVE_GC_GET_HEAP_USAGE_SAFE -DHAVE_GC_GET_FREE_SPACE_DIVISOR -DHAVE_GC_SET_FINALIZE_ON_DEMAND"
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 1 line
1.9.1
#10 lore raw

PATCH v4 4/4 guile: new package

Pedro, All,

On 2014-11-06 22:48 +0100, Pedro Aguilar spake thusly:

Quoted 4 lines

Guile is an interpreter and compiler for the Scheme programming language, a clean and elegant dialect of Lisp.

[--SNIP--]

package/guile/Config.in line 7

Quoted 13 lines
package/guile/Config.in new file +7 -0
new file mode 100644
index 0000000..85671e0
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_GUILE
+	bool "guile"
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	select BR2_PACKAGE_LIBUNISTRING
+	select BR2_PACKAGE_LIBFFI
+	select BR2_PACKAGE_GMP
+	select BR2_PACKAGE_BDWGC

Since you select bdwgc, you must also inherot from its dependencies:

depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS # bdwgc

[--SNIP--]

package/guile/guile-01-fix_arm_endianness.patch line 4

Quoted 10 lines
package/guile/guile-01-fix_arm_endianness.patch new file +4 -0
new file mode 100644
index 0000000..a30a241
@@ -0,0 +1,25 @@
+Fix support for ARM endianness, otherwise it gives the error
+"unknown CPU endianness"
+
+Signed-off-by: Pedro Aguilar <[email protected]>

Did you try to send that patch upstream?

package/guile/guile-01-fix_arm_endianness.patch line 14

Quoted 9 lines
package/guile/guile-01-fix_arm_endianness.patch new file +9 -0
+diff -Nau guile-2.0.11.orig/module/system/base/target.scm guile-2.0.11/module/system/base/target.scm
+--- guile-2.0.11.orig/module/system/base/target.scm	2013-02-28 09:42:45.000000000 +0100
++++ guile-2.0.11/module/system/base/target.scm	2014-11-03 23:05:01.789338997 +0100
+@@ -70,7 +70,15 @@
+             ((member cpu '("sparc" "sparc64" "powerpc" "powerpc64" "spu"
+                            "mips" "mips64"))
+              (endianness big))
+-            ((string-match "^arm.*el" cpu)
++           ((string-match "^arm.*el" cpu)

Nit-picking: that replacement line is not properly aligned.

[--SNIP--]

Quoted 9 lines
package/guile/guile-02-calculate-csqrt_manually.patch new file +3 -0
new file mode 100644
index 0000000..98bb0b6
@@ -0,0 +1,16 @@
+Avoid using scm_from_complex_double(csqrt()) when building with uclibc.
+
+Signed-off-by: Pedro Aguilar <[email protected]>

package/guile/guile-02-calculate-csqrt_manually.patch line 13

Quoted 10 lines
package/guile/guile-02-calculate-csqrt_manually.patch new file +10 -0
+
+diff -Nau guile-2.0.11.orig/configure.ac guile-2.0.11/configure.ac
+--- guile-2.0.11.orig/configure.ac	2014-03-12 14:36:02.000000000 +0100
++++ guile-2.0.11/configure.ac	2014-11-03 23:59:51.897267207 +0100
+@@ -862,7 +862,7 @@
+ }]])],
+     [guile_cv_use_csqrt=yes],
+     [guile_cv_use_csqrt="no, glibc 2.3 bug"],
+-    [guile_cv_use_csqrt="yes, hopefully (cross-compiling)"])])
++    [guile_cv_use_csqrt="no (cross-compiling)"])])

Not OK: it is possible to be cross-compiling with glibc, in which case the result should be 'yes'.

Quoted 9 lines
package/guile/guile-02-calculate-csqrt_manually.patch new file +3 -0
+   case $guile_cv_use_csqrt in
+     yes*)
+       AC_DEFINE([HAVE_USABLE_CSQRT], 1, [Define to 1 if csqrt is bug-free])
package/guile/guile-03-remove_unused_funcs.patch new file +0 -0
new file mode 100644
index 0000000..3d70ee9

package/guile/guile-03-remove_unused_funcs.patch line 5

Quoted 5 lines
package/guile/guile-03-remove_unused_funcs.patch new file +5 -0
@@ -0,0 +1,36 @@
+Remove unused static inline functions str_upcase_l() and 
+str_downcase_l() that cause the compilation error:
+'dereferencing pointer to incomplete type'.
+
+Signed-off-by: Pedro Aguilar <[email protected]>

Indeed, those functions are never called. WTF... :-/

[--SNIP--]

Quoted 18 lines
package/guile/guile.mk new file +12 -0
new file mode 100644
index 0000000..e0d7e80
@@ -0,0 +1,25 @@
+################################################################################
+#
+# guile
+#
+################################################################################
+
+GUILE_VERSION = 2.0.11
+GUILE_SOURCE = guile-$(GUILE_VERSION).tar.xz
+GUILE_SITE = $(BR2_GNU_MIRROR)/guile
+GUILE_INSTALL_STAGING = YES
+GUILE_LICENSE = LGPLv3+
+GUILE_LICENSE_FILES = LICENSE COPYING COPYING.LESSER

package/guile/guile.mk line 22

Quoted 10 lines
package/guile/guile.mk new file +10 -0
+GUILE_DEPENDENCIES = host-guile libunistring libffi gmp bdwgc
+
+HOST_GUILE_DEPENDENCIES = host-libunistring host-libffi host-gmp host-bdwgc host-flex host-libtool
+
+# The HAVE_GC* CFLAGS specify that we wil use internal callbacks instead 
+# of the ones provided by bdwgc. Eg. HAVE_GC_SET_FINALIZER_NOTIFIER specifies 
+# that we won't use bdwgc's GC_finalizer_notifier callback.
+# Trying to use these specific bdwgc's callbacks breaks guile's building.
+GUILE_CONF_ENV += GUILE_FOR_BUILD=$(HOST_DIR)/usr/bin/guile \
+	CFLAGS="$(TARGET_CFLAGS) -DHAVE_GC_SET_FINALIZER_NOTIFIER -DHAVE_GC_GET_HEAP_USAGE_SAFE -DHAVE_GC_GET_FREE_SPACE_DIVISOR -DHAVE_GC_SET_FINALIZE_ON_DEMAND"

This line is overly long. What about (with tabs, not spaces):

    GUILE_CFLAGS = \
        -DHAVE_GC_SET_FINALIZER_NOTIFIER \
        -DHAVE_GC_GET_HEAP_USAGE_SAFE \
        -DHAVE_GC_GET_FREE_SPACE_DIVISOR \
        -DHAVE_GC_SET_FINALIZE_ON_DEMAND

    GUILE_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) $(GUILE_CFLAGS)"

Regards,
Yann E. MORIN.

Quoted 9 lines
package/guile/guile.mk new file +2 -0
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))
Signature · 6 lines
1.9.1

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#11 lore raw

PATCH v4 4/4 guile: new package

Hi Yann,

On 18/11/2014 22:18, Yann E. MORIN wrote:
[--SNIP--]

Quoted 16 lines

package/guile/Config.in line 7

Quoted 13 lines
package/guile/Config.in new file +7 -0
new file mode 100644
index 0000000..85671e0
@@ -0,0 +1,15 @@
+config BR2_PACKAGE_GUILE
+	bool "guile"
+	depends on BR2_TOOLCHAIN_HAS_THREADS
+	select BR2_PACKAGE_LIBUNISTRING
+	select BR2_PACKAGE_LIBFFI
+	select BR2_PACKAGE_GMP
+	select BR2_PACKAGE_BDWGC

Since you select bdwgc, you must also inherot from its dependencies:

Quoted 1 line

depends on BR2_PACKAGE_LIBATOMIC_ARCH_SUPPORTS # bdwgc

Ok, I'll add it below "depends on BR2_TOOLCHAIN_HAS_THREADS"

[--SNIP--]

Quoted 4 lines
Quoted 4 lines
package/guile/guile-01-fix_arm_endianness.patch new file +0 -1
new file mode 100644
index 0000000..a30a241
--- /dev/null
Quoted 8 lines

package/guile/guile-01-fix_arm_endianness.patch line 4

Quoted 6 lines

+++ b/package/guile/guile-01-fix_arm_endianness.patch

package/guile/guile-01-fix_arm_endianness.patch new file +4 -0
@@ -0,0 +1,25 @@
+Fix support for ARM endianness, otherwise it gives the error
+"unknown CPU endianness"
+
+Signed-off-by: Pedro Aguilar <[email protected]>

Did you try to send that patch upstream?

They already fixed it in git, but there isn't any stable release with this fix.

Quoted 11 lines

package/guile/guile-01-fix_arm_endianness.patch line 14

Quoted 9 lines
package/guile/guile-01-fix_arm_endianness.patch new file +9 -0
+diff -Nau guile-2.0.11.orig/module/system/base/target.scm guile-2.0.11/module/system/base/target.scm
+--- guile-2.0.11.orig/module/system/base/target.scm	2013-02-28 09:42:45.000000000 +0100
++++ guile-2.0.11/module/system/base/target.scm	2014-11-03 23:05:01.789338997 +0100
+@@ -70,7 +70,15 @@
+             ((member cpu '("sparc" "sparc64" "powerpc" "powerpc64" "spu"
+                            "mips" "mips64"))
+              (endianness big))
+-            ((string-match "^arm.*el" cpu)
++           ((string-match "^arm.*el" cpu)

Nit-picking: that replacement line is not properly aligned.

Ok, fixed.

Quoted 15 lines

[--SNIP--]

Quoted 14 lines
package/guile/guile-02-calculate-csqrt_manually.patch new file +8 -0
new file mode 100644
index 0000000..98bb0b6
@@ -0,0 +1,16 @@
+Avoid using scm_from_complex_double(csqrt()) when building with uclibc.
+
+Signed-off-by: Pedro Aguilar <[email protected]>
+
+diff -Nau guile-2.0.11.orig/configure.ac guile-2.0.11/configure.ac
+--- guile-2.0.11.orig/configure.ac	2014-03-12 14:36:02.000000000 +0100
++++ guile-2.0.11/configure.ac	2014-11-03 23:59:51.897267207 +0100
+@@ -862,7 +862,7 @@
Quoted 8 lines

package/guile/guile-02-calculate-csqrt_manually.patch line 13

Quoted 5 lines
package/guile/guile-02-calculate-csqrt_manually.patch new file +5 -0
+ }]])],
+     [guile_cv_use_csqrt=yes],
+     [guile_cv_use_csqrt="no, glibc 2.3 bug"],
+-    [guile_cv_use_csqrt="yes, hopefully (cross-compiling)"])])
++    [guile_cv_use_csqrt="no (cross-compiling)"])])

Not OK: it is possible to be cross-compiling with glibc, in which case the result should be 'yes'.

Using csqrt() is OK only for some versions of glib. If we use the fallback code, we're sure that it will work properly even with recent versions of glib.

Quoted 8 lines
Quoted 8 lines
package/guile/guile-02-calculate-csqrt_manually.patch new file +3 -0
+   case $guile_cv_use_csqrt in
+     yes*)
+       AC_DEFINE([HAVE_USABLE_CSQRT], 1, [Define to 1 if csqrt is bug-free])
package/guile/guile-03-remove_unused_funcs.patch new file +0 -0
new file mode 100644
index 0000000..3d70ee9
Quoted 8 lines

package/guile/guile-03-remove_unused_funcs.patch line 5

Quoted 6 lines
package/guile/guile-03-remove_unused_funcs.patch new file +5 -0
@@ -0,0 +1,36 @@
+Remove unused static inline functions str_upcase_l() and
+str_downcase_l() that cause the compilation error:
+'dereferencing pointer to incomplete type'.
+
+Signed-off-by: Pedro Aguilar <[email protected]>

Indeed, those functions are never called. WTF... :-/

I'll send a patch for this :)

Quoted 32 lines

[--SNIP--]

Quoted 18 lines
package/guile/guile.mk new file +12 -0
new file mode 100644
index 0000000..e0d7e80
@@ -0,0 +1,25 @@
+################################################################################
+#
+# guile
+#
+################################################################################
+
+GUILE_VERSION = 2.0.11
+GUILE_SOURCE = guile-$(GUILE_VERSION).tar.xz
+GUILE_SITE = $(BR2_GNU_MIRROR)/guile
+GUILE_INSTALL_STAGING = YES
+GUILE_LICENSE = LGPLv3+
+GUILE_LICENSE_FILES = LICENSE COPYING COPYING.LESSER

package/guile/guile.mk line 22

Quoted 10 lines
package/guile/guile.mk new file +10 -0
+GUILE_DEPENDENCIES = host-guile libunistring libffi gmp bdwgc
+
+HOST_GUILE_DEPENDENCIES = host-libunistring host-libffi host-gmp host-bdwgc host-flex host-libtool
+
+# The HAVE_GC* CFLAGS specify that we wil use internal callbacks instead
+# of the ones provided by bdwgc. Eg. HAVE_GC_SET_FINALIZER_NOTIFIER specifies
+# that we won't use bdwgc's GC_finalizer_notifier callback.
+# Trying to use these specific bdwgc's callbacks breaks guile's building.
+GUILE_CONF_ENV += GUILE_FOR_BUILD=$(HOST_DIR)/usr/bin/guile \
+	CFLAGS="$(TARGET_CFLAGS) -DHAVE_GC_SET_FINALIZER_NOTIFIER -DHAVE_GC_GET_HEAP_USAGE_SAFE -DHAVE_GC_GET_FREE_SPACE_DIVISOR -DHAVE_GC_SET_FINALIZE_ON_DEMAND"

This line is overly long. What about (with tabs, not spaces):

Quoted 7 lines
     GUILE_CFLAGS = \
         -DHAVE_GC_SET_FINALIZER_NOTIFIER \
         -DHAVE_GC_GET_HEAP_USAGE_SAFE \
         -DHAVE_GC_GET_FREE_SPACE_DIVISOR \
         -DHAVE_GC_SET_FINALIZE_ON_DEMAND

     GUILE_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) $(GUILE_CFLAGS)"

Fixed it. I'll send the patch shortly.

Thanks!

Regards.

Signature · 2 lines
Pedro Aguilar
http://paguilar.org
#12 lore raw

PATCH v4 4/4 guile: new package

Pedro, All,

On 2014-11-21 00:02 +0100, Pedro Aguilar spake thusly:

Quoted 1 line · Yann E. MORIN

[--SNIP--]

Quoted 13 lines
Quoted 4 lines
Quoted 4 lines
package/guile/guile-01-fix_arm_endianness.patch new file +0 -1
new file mode 100644
index 0000000..a30a241
--- /dev/null
Quoted 8 lines

package/guile/guile-01-fix_arm_endianness.patch line 4

Quoted 6 lines

+++ b/package/guile/guile-01-fix_arm_endianness.patch

package/guile/guile-01-fix_arm_endianness.patch new file +4 -0
@@ -0,0 +1,25 @@
+Fix support for ARM endianness, otherwise it gives the error
+"unknown CPU endianness"
+
+Signed-off-by: Pedro Aguilar <[email protected]>

Did you try to send that patch upstream?

Quoted 2 lines

They already fixed it in git, but there isn't any stable release with this fix.

Ah, so this is a patch that you back-ported from upstream, then?

In this case, just add a pointer to the upstream patch.

Quoted 10 lines
Quoted 10 lines
Quoted 9 lines
package/guile/guile-01-fix_arm_endianness.patch new file +9 -0
+diff -Nau guile-2.0.11.orig/configure.ac guile-2.0.11/configure.ac
+--- guile-2.0.11.orig/configure.ac	2014-03-12 14:36:02.000000000 +0100
++++ guile-2.0.11/configure.ac	2014-11-03 23:59:51.897267207 +0100
+@@ -862,7 +862,7 @@
+ }]])],
+     [guile_cv_use_csqrt=yes],
+     [guile_cv_use_csqrt="no, glibc 2.3 bug"],
+-    [guile_cv_use_csqrt="yes, hopefully (cross-compiling)"])])
++    [guile_cv_use_csqrt="no (cross-compiling)"])])
Quoted 6 lines
Quoted 2 lines

Not OK: it is possible to be cross-compiling with glibc, in which case the result should be 'yes'.

Using csqrt() is OK only for some versions of glib. If we use the fallback code, we're sure that it will work properly even with recent versions of glib.

/me gets confused...
glib or glibc?

But even if the fallback code works in all cases, I gues we still want to use the normal code whenever possible. That is, we want to detect that csqrt() is available before using it.

But OK, we can live with the fallback code in Buildroot.

Maybe you could try to push a patch upstream to add a check whether csqrt() is present and useable in the C library? That would allow us to drop one patch when we update guile when the next release is out.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#13 lore raw

PATCH v4 4/4 guile: new package

Hi Yann,

On 23/11/2014 16:29, Yann E. MORIN wrote:
[--SNIP--]

Quoted 8 lines
Quoted 4 lines
Quoted 1 line

Did you try to send that patch upstream?

They already fixed it in git, but there isn't any stable release with this fix.

Ah, so this is a patch that you back-ported from upstream, then?

In this case, just add a pointer to the upstream patch.

Ok, the following patch series will include the commit pointer.

Quoted 13 lines
Quoted 13 lines
Quoted 12 lines

package/guile/guile-02-calculate-csqrt_manually.patch line 13

Quoted 9 lines
package/guile/guile-02-calculate-csqrt_manually.patch new file +9 -0
+diff -Nau guile-2.0.11.orig/configure.ac guile-2.0.11/configure.ac
+--- guile-2.0.11.orig/configure.ac	2014-03-12 14:36:02.000000000 +0100
++++ guile-2.0.11/configure.ac	2014-11-03 23:59:51.897267207 +0100
+@@ -862,7 +862,7 @@
+ }]])],
+     [guile_cv_use_csqrt=yes],
+     [guile_cv_use_csqrt="no, glibc 2.3 bug"],
+-    [guile_cv_use_csqrt="yes, hopefully (cross-compiling)"])])
++    [guile_cv_use_csqrt="no (cross-compiling)"])])

Not OK: it is possible to be cross-compiling with glibc, in which case the result should be 'yes'.

Quoted 6 lines
Quoted 3 lines

Using csqrt() is OK only for some versions of glib. If we use the fallback code, we're sure that it will work properly even with recent versions of glib.

/me gets confused...
glib or glibc?

glibc :)

Quoted 9 lines

But even if the fallback code works in all cases, I gues we still want to use the normal code whenever possible. That is, we want to detect that csqrt() is available before using it.

But OK, we can live with the fallback code in Buildroot.

Maybe you could try to push a patch upstream to add a check whether csqrt() is present and useable in the C library? That would allow us to drop one patch when we update guile when the next release is out.

I'll send the patch to them shortly.

Thanks.

Signature · 2 lines
Pedro Aguilar
http://paguilar.org