[Buildroot] [PATCH 1/1] New package: uwsgi

Eelco Chaudron echaudron at xiot.nl
Thu Feb 25 20:21:58 UTC 2016


Hi Andrea,

I see that your patch has not yet been included in the master branch, and I was wondering if it has anything to do with the failure to compile when using uclibc?

When I add your patch I get the following build error:

[/home/echaudron/buildroot/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabihf-gcc] core/uwsgi.o
core/uwsgi.c: In function ‘uwsgi_backtrace’:
core/uwsgi.c:1786:22: fatal error: execinfo.h: No such file or directory
 #include <execinfo.h>
                      ^
compilation terminated.
Makefile:4: recipe for target 'all' failed
make[2]: *** [all] Error 1

Before I try to make it work, have you (or anyone else) seen/fixed this?

//Eelco

> On 31 Dec 2015, at 17:02, Andrea Cappelli <a.cappelli at gmail.com> wrote:
> 
> 
> Signed-off-by: Andrea Cappelli <a.cappelli at gmail.com>
> ---
> package/Config.in                                  |    1 +
> ...-environment-variables-for-config-scripts.patch |   85 ++++++++++++++++++++
> package/uwsgi/Config.in                            |    6 ++
> package/uwsgi/uwsgi.mk                             |   36 +++++++++
> 4 files changed, 128 insertions(+)
> create mode 100644 package/uwsgi/0001-Added-environment-variables-for-config-scripts.patch
> create mode 100644 package/uwsgi/Config.in
> create mode 100644 package/uwsgi/uwsgi.mk
> 
> diff --git a/package/Config.in b/package/Config.in
> index 9145d15..e018355 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -1457,6 +1457,7 @@ endif
> 	source "package/ulogd/Config.in"
> 	source "package/ushare/Config.in"
> 	source "package/ussp-push/Config.in"
> +	source "package/uwsgi/Config.in"
> 	source "package/vde2/Config.in"
> 	source "package/vnstat/Config.in"
> 	source "package/vpnc/Config.in"
> diff --git a/package/uwsgi/0001-Added-environment-variables-for-config-scripts.patch b/package/uwsgi/0001-Added-environment-variables-for-config-scripts.patch
> new file mode 100644
> index 0000000..a5c79a5
> --- /dev/null
> +++ b/package/uwsgi/0001-Added-environment-variables-for-config-scripts.patch
> @@ -0,0 +1,85 @@
> +Added environment variables to choose right -config script during cross compilation (suggested by Thomas)
> +
> +diff --git a/uwsgiconfig.py b/uwsgiconfig.py
> +index 542d9e7..2695893 100644
> +--- a/uwsgiconfig.py
> ++++ b/uwsgiconfig.py
> +@@ -31,6 +31,9 @@ GCC = os.environ.get('CC', sysconfig.get_config_var('CC'))
> + if not GCC:
> +     GCC = 'gcc'
> + 
> ++PCRE_CONFIG = os.environ.get('PCRE_CONFIG', 'pcre-config')
> ++XML2_CONFIG = os.environ.get('XML2_CONFIG', 'xml2-config')
> ++
> + def get_preprocessor():
> +     if 'clang' in GCC:
> +         return 'clang -xc core/clang_fake.c'
> +@@ -546,6 +549,11 @@ def build_uwsgi(uc, print_only=False, gcll=None):
> +             t.join()
> + 
> +     print("*** uWSGI linking ***")
> ++    try:
> ++        if os.environ['LDFLAGS'] == '':
> ++            ldflags = []
> ++    except:
> ++        pass
> +     ldline = "%s -o %s %s %s %s" % (GCC, bin_name, ' '.join(uniq_warnings(ldflags)),
> +         ' '.join(map(add_o, gcc_list)), ' '.join(uniq_warnings(libs)))
> +     print(ldline)
> +@@ -1017,23 +1025,23 @@ class uConf(object):
> +         # re-enable after pcre fix
> +         if self.get('pcre'):
> +             if self.get('pcre') == 'auto':
> +-                pcreconf = spcall('pcre-config --libs')
> ++                pcreconf = spcall('%s --libs' % PCRE_CONFIG)
> +                 if pcreconf:
> +                     self.libs.append(pcreconf)
> +-                    pcreconf = spcall("pcre-config --cflags")
> ++                    pcreconf = spcall("%s --cflags" % PCRE_CONFIG)
> +                     self.cflags.append(pcreconf)
> +                     self.gcc_list.append('core/regexp')
> +                     self.cflags.append("-DUWSGI_PCRE")
> +                     has_pcre = True
> + 
> +             else:
> +-                pcreconf = spcall('pcre-config --libs')
> ++                pcreconf = spcall('%s --libs' % PCRE_CONFIG)
> +                 if pcreconf is None:
> +                     print("*** libpcre headers unavailable. uWSGI build is interrupted. You have to install pcre development package or disable pcre")
> +                     sys.exit(1)
> +                 else:
> +                     self.libs.append(pcreconf)
> +-                    pcreconf = spcall("pcre-config --cflags")
> ++                    pcreconf = spcall("%s --cflags" % PCRE_CONFIG)
> +                     self.cflags.append(pcreconf)
> +                     self.gcc_list.append('core/regexp')
> +                     self.cflags.append("-DUWSGI_PCRE")
> +@@ -1248,10 +1256,10 @@ class uConf(object):
> + 
> +         if self.get('xml'):
> +             if self.get('xml') == 'auto':
> +-                xmlconf = spcall('xml2-config --libs')
> ++                xmlconf = spcall('%s --libs' % XML2_CONFIG)
> +                 if xmlconf:
> +                     self.libs.append(xmlconf)
> +-                    xmlconf = spcall("xml2-config --cflags")
> ++                    xmlconf = spcall("%s --cflags" % XML2_CONFIG)
> +                     self.cflags.append(xmlconf)
> +                     self.cflags.append("-DUWSGI_XML -DUWSGI_XML_LIBXML2")
> +                     self.gcc_list.append('core/xmlconf')
> +@@ -1262,13 +1270,13 @@ class uConf(object):
> +                     self.gcc_list.append('core/xmlconf')
> +                     report['xml'] = 'expat'
> +             elif self.get('xml') == 'libxml2':
> +-                xmlconf = spcall('xml2-config --libs')
> ++                xmlconf = spcall('%s --libs' % XML2_CONFIG)
> +                 if xmlconf is None:
> +                     print("*** libxml2 headers unavailable. uWSGI build is interrupted. You have to install libxml2 development package or use libexpat or disable XML")
> +                     sys.exit(1)
> +                 else:
> +                     self.libs.append(xmlconf)
> +-                    xmlconf = spcall("xml2-config --cflags")
> ++                    xmlconf = spcall("%s --cflags" % XML2_CONFIG)
> +                     if xmlconf is None:
> +                         print("*** libxml2 headers unavailable. uWSGI build is interrupted. You have to install libxml2 development package or use libexpat or disable XML")
> +                         sys.exit(1)
> diff --git a/package/uwsgi/Config.in b/package/uwsgi/Config.in
> new file mode 100644
> index 0000000..6537d1a
> --- /dev/null
> +++ b/package/uwsgi/Config.in
> @@ -0,0 +1,6 @@
> +config BR2_PACKAGE_UWSGI
> +	bool "uwsgi"
> +    select BR2_PACKAGE_LIBXML2
> +	help
> +        The uWSGI project aims at developing a full stack for building hosting services.
> +        https://uwsgi-docs.readthedocs.org/en/latest/
> \ No newline at end of file
> diff --git a/package/uwsgi/uwsgi.mk b/package/uwsgi/uwsgi.mk
> new file mode 100644
> index 0000000..2d1f11a
> --- /dev/null
> +++ b/package/uwsgi/uwsgi.mk
> @@ -0,0 +1,36 @@
> +################################################################################
> +#
> +# uwsgi
> +#
> +################################################################################
> +
> +UWSGI_VERSION = 2.0.12
> +UWSGI_SOURCE = uwsgi-$(UWSGI_VERSION).tar.gz
> +UWSGI_SITE = https://pypi.python.org/packages/source/u/uWSGI
> +UWSGI_LICENSE = GPLv2
> +UWSGI_LICENSE_FILES = LICENSE
> +
> +UWSGI_DEPENDENCIES = libxml2 host-python
> +
> +UWSGI_ENV = \
> +	PATH=$(BR_PATH) \
> +	CC="$(TARGET_CC)" \
> +	CFLAGS="$(TARGET_CFLAGS)" \
> +	LDFLAGS="$(TARGET_LDFLAGS)" \
> +	LDSHARED="$(TARGET_CROSS)gcc -shared" \
> +	PYTHONPATH="$(if $(BR2_PACKAGE_PYTHON3),$(PYTHON3_PATH),$(PYTHON_PATH))" \
> +	_python_sysroot=$(STAGING_DIR) \
> +	_python_prefix=/usr \
> +	_python_exec_prefix=/usr \
> +	PCRE_CONFIG="$(STAGING_DIR)/usr/bin/pcre-config" \
> +	XML2_CONFIG="$(STAGING_DIR)/usr/bin/xml2-config"
> +
> +define UWSGI_BUILD_CMDS
> +	$(MAKE) $(UWSGI_ENV) -C $(@D)
> +endef
> +
> +define UWSGI_INSTALL_TARGET_CMDS
> +	$(INSTALL) -D -m 755 $(@D)/uwsgi  $(TARGET_DIR)/usr/bin/uwsgi
> +endef
> +
> +$(eval $(generic-package))
> -- 
> 1.7.9.5
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160225/8bd677ee/attachment-0001.html>


More information about the buildroot mailing list