[Buildroot] [PATCH 1/1] New package: uwsgi
Eelco Chaudron
echaudron at xiot.nl
Fri Feb 26 08:01:56 UTC 2016
Hi Arnout,
For now I fixed it by changing the uclib configuration to include backtrace() support.
+++ uClibc-ng.config
@@ -39,3 +39,4 @@ DEVEL_PREFIX="/usr/"
UCLIBC_HAS_SSP=y
UCLIBC_BUILD_NOW=y
# DOSTRIP is not set
+UCLIBC_HAS_BACKTRACE=y
Cheers,
Eelco
> On 26 Feb 2016, at 00:10, Arnout Vandecappelle <arnout at mind.be> wrote:
>
> On 02/25/16 21:21, Eelco Chaudron wrote:
>> 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
>
> uClibc doesn't have execinfo.h or backtrace(). This should either be made
> configurable, or the package should be disabled on uClibc.
>
>>
>>
>> Before I try to make it work, have you (or anyone else) seen/fixed this?
>
> Probably not, since there was no reaction on the patch. I think you can safely
> take over this patch, unless Andrea reacts within a day or so. If you take over,
> you'll have to keep Andrea's Signed-off-by in addition to your own.
>
> But now that I'm here, I'll also give some review comments. Note that many of
> the things below are explained in the manual, so refer to it for details.
>
>>
>> //Eelco
>>
>>> On 31 Dec 2015, at 17:02, Andrea Cappelli <a.cappelli at gmail.com <mailto:a.cappelli at gmail.com>
>>> <mailto:a.cappelli at gmail.com <mailto:a.cappelli at gmail.com>>> wrote:
>>>
>
> The subject line of the patch should be:
>
> uwsgi: new package
>
> It should also have been sent with --subject-prefix='PATCH v2'.
>
> The body of the commit message should explain why the python infrastructure
> can't be used.
>
>>>
>>> Signed-off-by: Andrea Cappelli <a.cappelli at gmail.com <mailto:a.cappelli at gmail.com>
>>> <mailto:a.cappelli at gmail.com <mailto:a.cappelli at gmail.com>>>
>
> There should be a patch changelog here:
>
> ---
> Changes v2: add patch to specify -config script through environment vars
>
>>> ---
>>> 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)
>
> Since this patch comes out of git, just generate it with 'git format-patch -N'.
>
> The commit message should be formatted as always:
>
> short subject line
>
> body text explaining the details
>
> Signed-off-by: ...
>
>>> +
>>> +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 = []
>
> This should just be:
>
> ldflags = os.environ.get('LDFLAGS')
>
> (adapted so it is a list and supports the default 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"
>
> This should be indented with a tab.
>
>>> + select BR2_PACKAGE_LIBXML2
>>> +help
>
> Here as well.
>
>>> + The uWSGI project aims at developing a full stack for building
>
> Here a tab + 2 spaces and wrap at 72 columns (where the tab counts for 8).
>
>>> hosting services.
>
> Empty line needed here.
>
>>> + https://uwsgi-docs.readthedocs.org/en/latest/ <https://uwsgi-docs.readthedocs.org/en/latest/>
>>> \ No newline at end of file
>
> And a newline at the end.
>
>>> 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)" \
>
> $(TARGET_CONF_OPTS) should be used here.
>
>>> +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))
>
> In addition, there should be a hash file.
>
>
> I've marked this patch as 'Changes Requested' in patchwork, so we will forget
> about it unless a v3 is sent.
>
> Regards,
> Arnout
>
>>> --
>>> 1.7.9.5
>>>
>>> _______________________________________________
>>> buildroot mailing list
>>> buildroot at busybox.net <mailto:buildroot at busybox.net> <mailto:buildroot at busybox.net <mailto:buildroot at busybox.net>>
>>> http://lists.busybox.net/mailman/listinfo/buildroot <http://lists.busybox.net/mailman/listinfo/buildroot>
>>
>>
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net <mailto:buildroot at busybox.net>
>> http://lists.busybox.net/mailman/listinfo/buildroot <http://lists.busybox.net/mailman/listinfo/buildroot>
>>
>
>
> --
> Arnout Vandecappelle arnout at mind be
> Senior Embedded Software Architect +32-16-286500
> Essensium/Mind http://www.mind.be <http://www.mind.be/>
> G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
> LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle <http://www.linkedin.com/in/arnoutvandecappelle>
> GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net <mailto:buildroot at busybox.net>
> http://lists.busybox.net/mailman/listinfo/buildroot <http://lists.busybox.net/mailman/listinfo/buildroot>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160226/9ec24a33/attachment-0002.html>
More information about the buildroot
mailing list