Archive for uWSGI

Compiling a custom uwsgi for the Rascal

This post is just a note to myself about how to modify the uwsgi source code, recompile uwsgi and install it on a Rascal. Here are the steps:

1. Create a uwsgi source code tarball on

I have the uwsgi source code in a directory (/home/mikegoelzer/ After modifying the C code, I can use these commands to build a new tarball that bitbake will fetch in the next step:

cd /home/mikegoelzer/
tar cvzf uwsgi-1.2.3.tar.gz uwsgi-1.2.3/
md5sum uwsgi-1.2.3.tar.gz && shasum -a 256 uwsgi-1.2.3.tar.gz

The tarball is now accessible at The above command also prints two hashes of the tar file that will be used below.

2. Update the OE uwsgi recipe

On the OE build system, I modify the bitbake recipe for uwsgi in recipes/uwsgi/

DESCRIPTION = "uWSGI is a WSGI web server for Python web applications"
SECTION = "net"
PRIORITY = "optional"
SRCNAME = "uwsgi"
PR = "r0"

SRC_URI = " \
file://editor.ini \
file://public.ini \


Here’s the full recipe as a backup. And a shell script used to rebuild uwsgi.

Also, the last two lines of the file should be updated with the hash values computed in step 1.

3. Rebuild uwsgi using bitbake:

rm oe_sources/uwsgi-1.2.3.tar.gz*
bitbake -c clean uwsgi
bitbake -b

4. SCP and install the newly built opkg

From the Rascal:

rm uwsgi_1.2.3-r0.6_armv5te.ipk
opkg remove uwsgi
scp .
opkg install uwsgi_1.2.3-r0.6_armv5te.ipk
/etc/init.d/ reload

To see the uwsgi logs:

cat /var/log/uwsgi/public.log

Leave a Comment

Building uWSGI on Ubuntu 11.xx

uWSGI is the HTTP server included with the Rascal. I want to fiddle with its source code and extend it, so I started by building the stock distribution on an x86 Ubuntu 11.04 box. This is how I did it.

0. I had to first install some packages for the build to succeed:

sudo apt-get install libxml2 libxml2-dev python-dev

1. Download the current tarball listed under

2. Untar and then follow the instructions from

tar xzvf uwsgi-
cd uwsgi-

3. The compile should complete successfully with the last line reading like this:

*** uWSGI is ready, launch it with ./uwsgi ***

4. Start it like this:

./uwsgi --http :80

In future posts, I’ll look at modifying the uWSGI source code to support Python-programmed user mode interrupt handlers.

Leave a Comment