django / django-box

VM to run the Django test suite. ARCHIVED Please use https://github.com/django/django-docker-box

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot run on ubuntu 16.04

LilyFoote opened this issue · comments

I tried to run this on ubuntu 16.04 with the default versions of vagrant (1.8.1+dfsg-1) and virtualbox (5.0.24-dfsg-0ubuntu1.16.04.1) and got this error when I ran vagrant up:

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'djangoproject/django-box-1.11'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'djangoproject/django-box-1.11' is up to date...
==> default: Setting the name of the VM: django-box_default_1473795778940_68676
==> default: Pruning invalid NFS exports. Administrator privileges will be required...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

/sbin/ifdown eth1 2> /dev/null

Stdout from the command:



Stderr from the command:

mesg: ttyname failed: Inappropriate ioctl for device

This appears to be related to a vagrant bug, which suggests I should upgrade to the latest version of vagrant (1.8.5). This gets further, but still fails with a similar error:

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'djangoproject/django-box-1.11' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Exporting NFS shared folders...
==> default: Preparing to edit /etc/exports. Administrator privileges will be required...
● nfs-server.service - NFS server and services
   Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
   Active: active (exited) since Tue 2016-09-13 20:38:51 BST; 13min ago
 Main PID: 2903 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nfs-server.service

Sep 13 20:38:51 quartic-XPS13-9333 systemd[1]: Starting NFS server and services...
Sep 13 20:38:51 quartic-XPS13-9333 exportfs[2899]: exportfs: Failed to stat /home/quartic/dev/django: No such file or directory
Sep 13 20:38:51 quartic-XPS13-9333 systemd[1]: Started NFS server and services.
exportfs: /home/quartic/dev/django does not support NFS export
==> default: Mounting NFS shared folders...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

set -e
mkdir -p /django
mount -o vers=3,udp 1.2.3.1:/home/quartic/dev/django /django
if command -v /sbin/init && /sbin/init --version | grep upstart; then
  /sbin/initctl emit --no-wait vagrant-mounted MOUNTPOINT=/django
fi


Stdout from the command:



Stderr from the command:

mesg: ttyname failed: Inappropriate ioctl for device
mount.nfs: access denied by server while mounting 1.2.3.1:/home/quartic/dev/django

I finally tried to use the latest version of virtualbox (5.1.6-110634Ubuntuxenial amd64), but this also failed:

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Checking if box 'djangoproject/django-box-1.11' is up to date...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default: 
    default: Guest Additions Version: 5.0.20
    default: VirtualBox Version: 5.1
==> default: Setting hostname...
==> default: Configuring and enabling network interfaces...
==> default: Exporting NFS shared folders...
==> default: Preparing to edit /etc/exports. Administrator privileges will be required...
● nfs-server.service - NFS server and services
   Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
   Active: active (exited) since Tue 2016-09-13 20:38:51 BST; 19min ago
 Main PID: 2903 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nfs-server.service

Sep 13 20:38:51 quartic-XPS13-9333 systemd[1]: Starting NFS server and services...
Sep 13 20:38:51 quartic-XPS13-9333 exportfs[2899]: exportfs: Failed to stat /home/quartic/dev/django: No such file or directory
Sep 13 20:38:51 quartic-XPS13-9333 systemd[1]: Started NFS server and services.
exportfs: /home/quartic/dev/django does not support NFS export
==> default: Mounting NFS shared folders...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

set -e
mkdir -p /django
mount -o vers=3,udp 1.2.3.1:/home/quartic/dev/django /django
if command -v /sbin/init && /sbin/init --version | grep upstart; then
  /sbin/initctl emit --no-wait vagrant-mounted MOUNTPOINT=/django
fi


Stdout from the command:



Stderr from the command:

mesg: ttyname failed: Inappropriate ioctl for device
mount.nfs: access denied by server while mounting 1.2.3.1:/home/quartic/dev/django

That last error looks like it's failing to setup the NFS mount correctly. I can only guess, but the warning about guest additions being different hint that shared folders can fail to work in some cases. I've used a relatively old version of virtualbox to build this image (5.0.20) which isn't the best choice. I'll upgrade my virtualbox and push another fix tomorrow when I've got access to decent upload bandwidth.

Can you try editing the vagrantfile and removing the nfs declaration?

# from
config.vm.synced_folder "../django", "/django", nfs: utilize_nfs
# to
config.vm.synced_folder "../django", "/django"

That should allow virtualbox/vagrant to auto select the type of share it creates. Whether or not that ends up being NFS I'm not sure. I've made this change locally and it boots fine, but performance is incredibly bad especially when running runtests-docs.

If it builds correctly without NFS at least that gives us a good place to go hunting for problems/solutions.

That got me further.

I tried running runtests-flake8 first and got this:

vagrant@djangobox:~$ runtests-flake8 
ERROR: invocation failed (errno 2), args: ['/django/.tox/flake8/bin/pip', 'freeze'], cwd: /django
Traceback (most recent call last):
  File "/usr/local/bin/tox", line 11, in <module>
    sys.exit(cmdline())
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 39, in main
    retcode = Session(config).runcommand()
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 375, in runcommand
    return self.subcommand_test()
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 540, in subcommand_test
    action=action)
  File "/usr/local/lib/python3.5/dist-packages/tox/venv.py", line 362, in _pcall
    redirect=redirect, ignore_ret=ignore_ret)
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 136, in popen
    stdout=stdout, stderr=STDOUT)
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 224, in _popen
    stdout=stdout, stderr=stderr, env=env)
  File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: '/django/.tox/flake8/bin/pip'

I am able to run runtests35-postgres, after I remembered to update my Django repo.

runtests-isort and runtests-docs fail in a similar way to runtests-flake8:

vagrant@djangobox:~$ runtests-isort 
ERROR: invocation failed (errno 2), args: ['/django/.tox/isort/bin/pip', 'freeze'], cwd: /django
Traceback (most recent call last):
  File "/usr/local/bin/tox", line 11, in <module>
    sys.exit(cmdline())
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 39, in main
    retcode = Session(config).runcommand()
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 375, in runcommand
    return self.subcommand_test()
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 540, in subcommand_test
    action=action)
  File "/usr/local/lib/python3.5/dist-packages/tox/venv.py", line 362, in _pcall
    redirect=redirect, ignore_ret=ignore_ret)
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 136, in popen
    stdout=stdout, stderr=STDOUT)
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 224, in _popen
    stdout=stdout, stderr=stderr, env=env)
  File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: '/django/.tox/isort/bin/pip'


vagrant@djangobox:~$ runtests-docs 

ERROR: invocation failed (errno 2), args: ['/django/.tox/docs/bin/pip', 'freeze'], cwd: /django
Traceback (most recent call last):
  File "/usr/local/bin/tox", line 11, in <module>
    sys.exit(cmdline())
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 39, in main
    retcode = Session(config).runcommand()
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 375, in runcommand
    return self.subcommand_test()
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 540, in subcommand_test
    action=action)
  File "/usr/local/lib/python3.5/dist-packages/tox/venv.py", line 362, in _pcall
    redirect=redirect, ignore_ret=ignore_ret)
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 136, in popen
    stdout=stdout, stderr=STDOUT)
  File "/usr/local/lib/python3.5/dist-packages/tox/session.py", line 224, in _popen
    stdout=stdout, stderr=stderr, env=env)
  File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: '/django/.tox/docs/bin/pip'

mysql and sqlite fail:

vagrant@djangobox:~$ runtests35-mysql
py35-mysql create: /django/.tox/py35-mysql
py35-mysql installdeps: -rtests/requirements/py3.txt, -rtests/requirements/mysql.txt
ERROR: invocation failed (exit code 1), logfile: /django/.tox/py35-mysql/log/py35-mysql-1.log
ERROR: actionid: py35-mysql
msg: getenv
cmdargs: [local('/django/.tox/py35-mysql/bin/pip'), 'install', '-rtests/requirements/py3.txt', '-rtests/requirements/mysql.txt']
env: {'PATH': '/django/.tox/py35-mysql/bin:/home/vagrant/bin:/home/vagrant/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games', 'DISPLAY': ':99', 'USER': 'vagrant', 'LANG': 'en_US.UTF-8', 'SSH_CONNECTION': '10.0.2.2 46866 10.0.2.15 22', 'SHELL': '/bin/bash', 'SSH_AUTH_SOCK': '/tmp/ssh-zc5FFCFmaP/agent.2719', 'XDG_RUNTIME_DIR': '/run/user/900', 'MAIL': '/var/mail/vagrant', 'PYTHONHASHSEED': '3057015228', 'LESSOPEN': '| /usr/bin/lesspipe %s', 'SSH_TTY': '/dev/pts/0', 'SHLVL': '1', 'VIRTUAL_ENV': '/django/.tox/py35-mysql', 'XDG_SESSION_ID': '2', 'LOGNAME': 'vagrant', 'SSH_CLIENT': '10.0.2.2 46866 22', 'LANGUAGE': 'en_US.UTF-8', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:', 'HOME': '/home/vagrant', 'PYTHONDONTWRITEBYTECODE': '1', 'LC_ALL': 'en_US.UTF-8', 'PYTHONPATH': '/home/vagrant/djangodata/', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'TERM': 'xterm', '_': '/usr/local/bin/tox', 'PWD': '/home/vagrant'}

Collecting argon2-cffi>=16.1.0 (from -r tests/requirements/base.txt (line 1))
Collecting bcrypt (from -r tests/requirements/base.txt (line 2))
  Using cached bcrypt-3.1.1-cp35-cp35m-manylinux1_x86_64.whl
Collecting docutils (from -r tests/requirements/base.txt (line 3))
  Using cached docutils-0.12-py3-none-any.whl
Collecting geoip2 (from -r tests/requirements/base.txt (line 4))
  Using cached geoip2-2.4.0-py2.py3-none-any.whl
Collecting jinja2>=2.7 (from -r tests/requirements/base.txt (line 5))
  Using cached Jinja2-2.8-py2.py3-none-any.whl
Collecting numpy (from -r tests/requirements/base.txt (line 6))
  Using cached numpy-1.11.1-cp35-cp35m-manylinux1_x86_64.whl
Collecting Pillow (from -r tests/requirements/base.txt (line 7))
  Using cached Pillow-3.3.1-cp35-cp35m-manylinux1_x86_64.whl
Collecting PyYAML (from -r tests/requirements/base.txt (line 8))
Collecting pylibmc (from -r tests/requirements/base.txt (line 10))
  Using cached pylibmc-1.5.1.tar.gz
Collecting pytz>dev (from -r tests/requirements/base.txt (line 11))
  Using cached pytz-2016.6.1-py2.py3-none-any.whl
Collecting selenium (from -r tests/requirements/base.txt (line 12))
  Using cached selenium-2.53.6-py2.py3-none-any.whl
Collecting sqlparse (from -r tests/requirements/base.txt (line 13))
Collecting tblib (from -r tests/requirements/base.txt (line 14))
  Using cached tblib-1.3.0-py2.py3-none-any.whl
Collecting python3-memcached (from -r tests/requirements/py3.txt (line 2))
Collecting mysqlclient>=1.3.7 (from -r tests/requirements/mysql.txt (line 2))
  Using cached mysqlclient-1.3.7.tar.gz
Collecting six (from argon2-cffi>=16.1.0->-r tests/requirements/base.txt (line 1))
  Using cached six-1.10.0-py2.py3-none-any.whl
Collecting cffi>=1.0.0 (from argon2-cffi>=16.1.0->-r tests/requirements/base.txt (line 1))
  Using cached cffi-1.8.3-cp35-cp35m-manylinux1_x86_64.whl
Collecting maxminddb>=1.2.1 (from geoip2->-r tests/requirements/base.txt (line 4))
Collecting requests>=2.9 (from geoip2->-r tests/requirements/base.txt (line 4))
  Using cached requests-2.11.1-py2.py3-none-any.whl
Collecting MarkupSafe (from jinja2>=2.7->-r tests/requirements/base.txt (line 5))
Collecting pycparser (from cffi>=1.0.0->argon2-cffi>=16.1.0->-r tests/requirements/base.txt (line 1))
Building wheels for collected packages: pylibmc, mysqlclient
  Running setup.py bdist_wheel for pylibmc: started
  Running setup.py bdist_wheel for pylibmc: finished with status 'error'
  Complete output from command /django/.tox/py35-mysql/bin/python3.5 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-2qcp8xuu/pylibmc/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d /tmp/tmpauc838zwpip-wheel- --python-tag cp35:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.5
  creating build/lib.linux-x86_64-3.5/pylibmc
  copying src/pylibmc/__main__.py -> build/lib.linux-x86_64-3.5/pylibmc
  copying src/pylibmc/test.py -> build/lib.linux-x86_64-3.5/pylibmc
  copying src/pylibmc/consts.py -> build/lib.linux-x86_64-3.5/pylibmc
  copying src/pylibmc/pools.py -> build/lib.linux-x86_64-3.5/pylibmc
  copying src/pylibmc/client.py -> build/lib.linux-x86_64-3.5/pylibmc
  copying src/pylibmc/__init__.py -> build/lib.linux-x86_64-3.5/pylibmc
  warning: build_py: byte-compiling is disabled, skipping.

  running build_ext
  building '_pylibmc' extension
  creating build/temp.linux-x86_64-3.5
  creating build/temp.linux-x86_64-3.5/src
  x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DUSE_ZLIB -I/usr/include/python3.5m -I/django/.tox/py35-mysql/include/python3.5m -c src/_pylibmcmodule.c -o build/temp.linux-x86_64-3.5/src/_pylibmcmodule.o -fno-strict-aliasing -std=c99
  In file included from src/_pylibmcmodule.c:34:0:
  src/_pylibmcmodule.h:42:36: fatal error: libmemcached/memcached.h: No such file or directory
  compilation terminated.
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

  ----------------------------------------
  Failed building wheel for pylibmc
  Running setup.py clean for pylibmc
  Running setup.py bdist_wheel for mysqlclient: started
  Running setup.py bdist_wheel for mysqlclient: finished with status 'done'
  Stored in directory: /home/vagrant/.cache/pip/wheels/09/64/5e/8f66e5b5ddef002da639a9b16b32ecedd4d56c51e6358e4e0b
Successfully built mysqlclient
Failed to build pylibmc
Installing collected packages: six, pycparser, cffi, argon2-cffi, bcrypt, docutils, maxminddb, requests, geoip2, MarkupSafe, jinja2, numpy, Pillow, PyYAML, pylibmc, pytz, selenium, sqlparse, tblib, python3-memcached, mysqlclient
  Running setup.py install for pylibmc: started
    Running setup.py install for pylibmc: finished with status 'error'
    Complete output from command /django/.tox/py35-mysql/bin/python3.5 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-2qcp8xuu/pylibmc/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-u4679nxf-record/install-record.txt --single-version-externally-managed --compile --install-headers /django/.tox/py35-mysql/include/site/python3.5/pylibmc:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.5
    creating build/lib.linux-x86_64-3.5/pylibmc
    copying src/pylibmc/__main__.py -> build/lib.linux-x86_64-3.5/pylibmc
    copying src/pylibmc/test.py -> build/lib.linux-x86_64-3.5/pylibmc
    copying src/pylibmc/consts.py -> build/lib.linux-x86_64-3.5/pylibmc
    copying src/pylibmc/pools.py -> build/lib.linux-x86_64-3.5/pylibmc
    copying src/pylibmc/client.py -> build/lib.linux-x86_64-3.5/pylibmc
    copying src/pylibmc/__init__.py -> build/lib.linux-x86_64-3.5/pylibmc
    warning: build_py: byte-compiling is disabled, skipping.

    running build_ext
    building '_pylibmc' extension
    creating build/temp.linux-x86_64-3.5
    creating build/temp.linux-x86_64-3.5/src
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DUSE_ZLIB -I/usr/include/python3.5m -I/django/.tox/py35-mysql/include/python3.5m -c src/_pylibmcmodule.c -o build/temp.linux-x86_64-3.5/src/_pylibmcmodule.o -fno-strict-aliasing -std=c99
    In file included from src/_pylibmcmodule.c:34:0:
    src/_pylibmcmodule.h:42:36: fatal error: libmemcached/memcached.h: No such file or directory
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

    ----------------------------------------
Command "/django/.tox/py35-mysql/bin/python3.5 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-2qcp8xuu/pylibmc/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-u4679nxf-record/install-record.txt --single-version-externally-managed --compile --install-headers /django/.tox/py35-mysql/include/site/python3.5/pylibmc" failed with error code 1 in /tmp/pip-build-2qcp8xuu/pylibmc/

ERROR: could not install deps [-rtests/requirements/py3.txt, -rtests/requirements/mysql.txt]; v = InvocationError('/django/.tox/py35-mysql/bin/pip install -rtests/requirements/py3.txt -rtests/requirements/mysql.txt (see /django/.tox/py35-mysql/log/py35-mysql-1.log)', 1)
_______________________________________________________ summary _______________________________________________________
ERROR:   py35-mysql: could not install deps [-rtests/requirements/py3.txt, -rtests/requirements/mysql.txt]; v = InvocationError('/django/.tox/py35-mysql/bin/pip install -rtests/requirements/py3.txt -rtests/requirements/mysql.txt (see /django/.tox/py35-mysql/log/py35-mysql-1.log)', 1)

libmemcached-dev needs to be installed as of django/django@5d978c4.

That makes sense, but the runserver35-postgres I ran first installed successfully. I'm having the failure with all other (database) commands though, even other postgres runs.

Maybe the postgres virtualenv was created before Django was updated to include that commit. Are the requirements updated on every test run?

That seems to be the problem - deleting django/.tox to remove the postgres 35 virtualenv causes the same failure to appear there too.

Deleting django/.tox has also resolved the flake8 / isort / docs failures I had.

Sigh - I just built and published a new version earlier today too. I should have thought to refresh django before doing so. This experience highlights that the compiled version isn't very flexible with regards to changes in dependencies. Luckily we don't change or add them very often so it's probably something we can live with.

I'll test a new version and push it tomorrow.

@Ian-Foote I've just released a new version 1.11.2 https://atlas.hashicorp.com/djangoproject/boxes/django-box-1.11/versions/1.11.2

Can you run vagrant box update then vagrant up, and see if that works for you? Hopefully no more niggles.

Everything appears to work correctly now. 👍