* [Buildroot] [PATCH 1/1] New package: uwsgi @ 2015-12-31 16:02 Andrea Cappelli 2016-02-25 20:21 ` Eelco Chaudron 0 siblings, 1 reply; 6+ messages in thread From: Andrea Cappelli @ 2015-12-31 16:02 UTC (permalink / raw) To: buildroot Signed-off-by: Andrea Cappelli <a.cappelli@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 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 1/1] New package: uwsgi 2015-12-31 16:02 [Buildroot] [PATCH 1/1] New package: uwsgi Andrea Cappelli @ 2016-02-25 20:21 ` Eelco Chaudron 2016-02-25 23:10 ` Arnout Vandecappelle 2016-02-25 23:36 ` Andrea Cappelli 0 siblings, 2 replies; 6+ messages in thread From: Eelco Chaudron @ 2016-02-25 20:21 UTC (permalink / raw) To: buildroot 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@gmail.com> wrote: > > > Signed-off-by: Andrea Cappelli <a.cappelli@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> ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 1/1] New package: uwsgi 2016-02-25 20:21 ` Eelco Chaudron @ 2016-02-25 23:10 ` Arnout Vandecappelle 2016-02-26 8:01 ` Eelco Chaudron 2016-02-25 23:36 ` Andrea Cappelli 1 sibling, 1 reply; 6+ messages in thread From: Arnout Vandecappelle @ 2016-02-25 23:10 UTC (permalink / raw) To: buildroot 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@gmail.com >> <mailto:a.cappelli@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@gmail.com >> <mailto:a.cappelli@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/ >> \ 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@busybox.net> >> http://lists.busybox.net/mailman/listinfo/buildroot > > > > _______________________________________________ > buildroot mailing list > buildroot at busybox.net > 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 G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 1/1] New package: uwsgi 2016-02-25 23:10 ` Arnout Vandecappelle @ 2016-02-26 8:01 ` Eelco Chaudron 2016-02-26 19:45 ` Arnout Vandecappelle 0 siblings, 1 reply; 6+ messages in thread From: Eelco Chaudron @ 2016-02-26 8:01 UTC (permalink / raw) To: buildroot 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@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@gmail.com> >>> <mailto:a.cappelli at gmail.com <mailto:a.cappelli@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@gmail.com> >>> <mailto:a.cappelli at gmail.com <mailto:a.cappelli@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@busybox.net> <mailto:buildroot at busybox.net <mailto:buildroot@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@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@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-0001.html> ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 1/1] New package: uwsgi 2016-02-26 8:01 ` Eelco Chaudron @ 2016-02-26 19:45 ` Arnout Vandecappelle 0 siblings, 0 replies; 6+ messages in thread From: Arnout Vandecappelle @ 2016-02-26 19:45 UTC (permalink / raw) To: buildroot On 02/26/16 09:01, Eelco Chaudron wrote: > 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 Since uClibc _can_ be configured without backtrace, the package must either detect missing backtrace support and work around it, or be disabled completely on uClibc. We can't detect the backtrace support at Kconfig level, so it really has to be conditional in the package configure/make itself. For an example, look at package/clamav/0003-backtrace-uClibc.patch Regards, Arnout > > Cheers, > > Eelco [snip] -- Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 1/1] New package: uwsgi 2016-02-25 20:21 ` Eelco Chaudron 2016-02-25 23:10 ` Arnout Vandecappelle @ 2016-02-25 23:36 ` Andrea Cappelli 1 sibling, 0 replies; 6+ messages in thread From: Andrea Cappelli @ 2016-02-25 23:36 UTC (permalink / raw) To: buildroot 2016-02-25 21:21 GMT+01:00 Eelco Chaudron <echaudron@xiot.nl>: > Hi Andrea, > Hi Eelco > > 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? > I think the main problem is that I didn't have time to rework the patch applying all style recommendations (I only changed the patch according to Thomas suggestion, but i know I miss something) > 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? > I compiled it on tag 2015.11.1 (9f0610c188007ee481508d453b062d77614c153d) because I have some devices in production using that version, and the build was successfull; I didn't see this error before, but I can try to investigate it on my dev board tomorrow Best regards -- Andrea Cappelli -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160226/3d037e55/attachment-0001.html> ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-02-26 19:45 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-12-31 16:02 [Buildroot] [PATCH 1/1] New package: uwsgi Andrea Cappelli 2016-02-25 20:21 ` Eelco Chaudron 2016-02-25 23:10 ` Arnout Vandecappelle 2016-02-26 8:01 ` Eelco Chaudron 2016-02-26 19:45 ` Arnout Vandecappelle 2016-02-25 23:36 ` Andrea Cappelli
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox