Skip to contentSkip to conversation

package/guile: New package

PATCH Superseded Pedro Aguilar 2 participants 7 messages Nov 4, 2014 – Nov 6, 2014

v3 of 5 Superseded Latest is v5 →

lore
Share & tools
lore
#0 lore raw

v3 cover package/guile: New package

This patch should fix all the suggestions made by Thomas and Arnout for guile and bdwgc, respectively.

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                            | 11 +++++++
 package/bdwgc/bdwgc.mk                             | 21 +++++++++++++
 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                             | 26 ++++++++++++++++
 package/libatomic_ops/libatomic_ops.mk             |  1 +
 package/libunistring/libunistring.mk               |  1 +
 10 files changed, 154 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 v3 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 v3 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 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 | 11 +++++++++++
 package/bdwgc/bdwgc.mk  | 21 +++++++++++++++++++++
 3 files changed, 33 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 +11 -0
new file mode 100644
index 0000000..6f3878e
@@ -0,0 +1,11 @@
+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 +21 -0
new file mode 100644
index 0000000..a8fde66
@@ -0,0 +1,21 @@
+################################################################################
+#
+# 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
#3 lore raw

PATCH v3 2/4 bdwgc: new package

Hi Pedro,

Quoted 74 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'.

---
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 | 11 +++++++++++
  package/bdwgc/bdwgc.mk  | 21 +++++++++++++++++++++
  3 files changed, 33 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 +11 -0
new file mode 100644
index 0000000..6f3878e
@@ -0,0 +1,11 @@
+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 +11 -0
new file mode 100644
index 0000000..a8fde66
@@ -0,0 +1,21 @@
+################################################################################
+#
+# 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

package/bdwgc/bdwgc.mk line 21

Quoted 10 lines
package/bdwgc/bdwgc.mk new file +10 -0
+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))
+

This trailing empty line is not needed. Same in patch 4/4.

Regards,
Jerzy

#4 lore raw

PATCH v3 2/4 bdwgc: new package

Hi Jerzy,

I just fixed it. I'm sending the patch.

Thanks.

Quoted 95 lines · Jerzy Grzegorek

Hi Pedro,

Quoted 76 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'.

---
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 | 11 +++++++++++
  package/bdwgc/bdwgc.mk  | 21 +++++++++++++++++++++
  3 files changed, 33 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 +11 -0
new file mode 100644
index 0000000..6f3878e
@@ -0,0 +1,11 @@
+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 +11 -0
new file mode 100644
index 0000000..a8fde66
@@ -0,0 +1,21 @@
+################################################################################
 
+#
+# 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

package/bdwgc/bdwgc.mk line 21

Quoted 10 lines
package/bdwgc/bdwgc.mk new file +10 -0
+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))
+

This trailing empty line is not needed. Same in patch 4/4.

Regards,
Jerzy

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

PATCH v3 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
#6 lore raw

PATCH v3 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 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                             | 26 ++++++++++++++++
 6 files changed, 119 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 +26 -0
new file mode 100644
index 0000000..c8d81d2
@@ -0,0 +1,26 @@
+################################################################################
+#
+# 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