Remove the vagrant tree

This commit is contained in:
Robin Dunn
2019-07-04 12:19:23 -07:00
parent 6b70527fc1
commit dd46b58611
20 changed files with 0 additions and 704 deletions

View File

@@ -1,67 +0,0 @@
wxPython 4 builds on various Linux distros with Vagrant
=======================================================
Vagrant (https://www.vagrantup.com/) is a tool that enables creating and using
automated, relatively lightweight virtual environments. Vagrant and the
Vagrant community provide several base images that are essentially simplistic
bare-bones installs of various operating systems, that can be thought of as a
bare canvas ready for provisioning with the needs of whatever applications
they will be used for. The hosting platform can be Windows, Mac OSX, or Linux.
For wxPython, this means that we can automate the creation and provisioning of
virtual Linux machines with all the packages installed that are needed for
building wxPython 4. The each of the numbered subfolders located here contains
the Vagrant configuration and a bootstrap script for all of the Linux distros
that we currently support. As long as there is an existing vagrant "box"
available then adding support for new configurations is fairly simple.
Setup
-----
The following steps should be followed to set up a computer to be a Vagrant
host:
1. Install VirtualBox: https://www.virtualbox.org/wiki/Downloads
2. Install vagrant: https://www.vagrantup.com/downloads.html
3. Install the vagrant-vbguest plugin to keep the VirtualBox Guest Additions
package installed and up to date. See: https://github.com/dotless-de/vagrant-vbguest
and run::
vagrant plugin install vagrant-vbguest
Building
--------
The Vagrant VMs are provisioned to contain everything they need to build
Phoenix packages, except for two things: the source code and a build script to
do all the work. To make this a little simpler, the VMs are also configured to
share the ``{PhoenixRoot}/dist`` folder, and the
``{PhoenixRoot}/vagrant/scripts`` folder so they can access those two things
as well.
To perform a build there must be a Phoenix source tarball located in the
``{PhoenixRoot}/dist`` folder, which can either be generated with the
``build.py dox etg sip sdist`` command, or one of the source tarballs from a
release or the snapshots server can be used. With that file in place then a
build for a specific distro can be done with just a few vagrant commands, for
example::
cd vagrant/ubuntu-18.04
vagrant up
vagrant ssh -c "scripts/build.sh ubuntu-18.04"
vagrant halt
Please note that currently this will do up to 8 complete builds, one for each
supported version of Python on that distro, for both gtk2 and gtk3. Additional
parameters can be passed to the ``build.sh`` script to narrow the build down to
a specific Python version or port. See ``scripts/build.sh`` for details.
The wheel file(s) generated by the build will be placed in subfolders of
``{PhoenixRoot}/dist/linux``.

View File

@@ -1,28 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Set which Vagrant "box" (base image) to use, and tell it how to set up the
# VM, packages to install, etc.
config.vm.box = "centos/7"
config.vm.provision :shell, path: "bootstrap.sh"
# Additional parameters for the VM
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 4
end
# Share the Phoenix/dist folder so the VM can get the source tarball and has
# a place to put the build results.
config.vm.synced_folder "../../dist", "/home/vagrant/dist"
# And share a folder with the build script
config.vm.synced_folder "../scripts", "/home/vagrant/scripts"
# set auto_update to false, if you do NOT want to check the correct
# additions version when booting this machine
config.vbguest.auto_update = false
end

View File

@@ -1,34 +0,0 @@
#!/bin/bash
# Set up and update package repos
yum -y install yum-utils
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
yum -y update
# Install necessary development tools, libs, etc.
yum -y group install development
yum -y install gtk2 gtk2-devel gtk3 gtk3-devel \
webkitgtk webkitgtk-devel webkitgtk3 webkitgtk3-devel \
libjpeg-turbo-devel libpng-devel libtiff-devel \
SDL SDL-devel gstreamer gstreamer-devel gstreamer-plugins-base-devel \
freeglut freeglut-devel libnotify libnotify-devel libSM-devel \
libXtst-devel
# Install all available Python packages and their dev packages
yum -y install python python-tools python-devel python-virtualenv
yum -y install python34u python34u-tools python34u-devel
yum -y install python35u python35u-tools python35u-devel
yum -y install python36u python36u-tools python36u-devel
# Set up virtual environments for each Python where the Phoenix builds will be
# done. Set them to the vagrant user so the venvs can be updated by pip later.
mkdir venvs
virtualenv --python=python2.7 venvs/Py27
pyvenv-3.4 venvs/Py34
pyvenv-3.5 venvs/Py35
python3.6 -m venv venvs/Py36
chown -R vagrant:vagrant venvs

View File

@@ -1,28 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Set which Vagrant "box" (base image) to use, and tell it how to set up the
# VM, packages to install, etc.
config.vm.box = "debian/jessie64"
config.vm.provision :shell, path: "bootstrap.sh"
# Additional parameters for the VM
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 4
end
# Share the Phoenix/dist folder so the VM can get the source tarball and has
# a place to put the build results.
config.vm.synced_folder "../../dist", "/home/vagrant/dist"
# And share a folder with the build script
config.vm.synced_folder "../scripts", "/home/vagrant/scripts"
# set auto_update to false, if you do NOT want to check the correct
# additions version when booting this machine
config.vbguest.auto_update = false
end

View File

@@ -1,29 +0,0 @@
#!/bin/bash
# Set up and update package repos
apt-get update
# Install necessary development tools, libs, etc.
apt-get install -y build-essential dpkg-dev
apt-get install -y libgtk2.0-dev libgtk-3-dev
apt-get install -y libjpeg-dev libtiff-dev \
libsdl1.2-dev libgstreamer-plugins-base0.10-dev \
libnotify-dev freeglut3 freeglut3-dev libsm-dev \
libwebkitgtk-dev libwebkitgtk-3.0-dev \
libxtst-dev
# Install all available Python packages and their dev packages
apt-get install -y python2.7 python2.7-dev libpython2.7-dev python-virtualenv
apt-get install -y python3.4 python3.4-dev libpython3.4-dev python3.4-venv
#apt-get install -y python3.5 python3.5-dev libpython3.5-dev python3.5-venv
# Set up virtual environments for each Python where the Phoenix builds will be
# done. set them to the vagrant user so the venv's can be updated by pip later.
mkdir venvs
virtualenv --python=python2.7 venvs/Py27
pyvenv-3.4 venvs/Py34
#pyvenv-3.5 venvs/Py35
chown -R vagrant:vagrant venvs

View File

@@ -1,28 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Set which Vagrant "box" (base image) to use, and tell it how to set up the
# VM, packages to install, etc.
config.vm.box = "debian/stretch64"
config.vm.provision :shell, path: "bootstrap.sh"
# Additional parameters for the VM
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 4
end
# Share the Phoenix/dist folder so the VM can get the source tarball and has
# a place to put the build results.
config.vm.synced_folder "../../dist", "/home/vagrant/dist"
# And share a folder with the build script
config.vm.synced_folder "../scripts", "/home/vagrant/scripts"
# set auto_update to false, if you do NOT want to check the correct
# additions version when booting this machine
config.vbguest.auto_update = false
end

View File

@@ -1,27 +0,0 @@
#!/bin/bash
# Set up and update package repos
apt-get update
# Install necessary development tools, libs, etc.
apt-get install -y build-essential dpkg-dev
apt-get install -y libgtk2.0-dev libgtk-3-dev
apt-get install -y libjpeg-dev libtiff-dev \
libsdl1.2-dev libgstreamer-plugins-base1.0-dev \
libnotify-dev freeglut3 freeglut3-dev libsm-dev \
libwebkitgtk-dev libwebkitgtk-3.0-dev\
libxtst-dev
# Install all available Python packages and their dev packages
apt-get install -y python2.7 python2.7-dev libpython2.7-dev python-virtualenv
apt-get install -y python3.5 python3.5-dev libpython3.5-dev python3.5-venv
# Set up virtual environments for each Python where the Phoenix builds will be
# done. set them to the vagrant user so the venv's can be updated by pip later.
mkdir venvs
virtualenv --python=python2.7 venvs/Py27
pyvenv-3.5 venvs/Py35
chown -R vagrant:vagrant venvs

View File

@@ -1,28 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Set which Vagrant "box" (base image) to use, and tell it how to set up the
# VM, packages to install, etc.
config.vm.box = "fedora/26-cloud-base"
config.vm.provision :shell, path: "bootstrap.sh"
# Additional parameters for the VM
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 4
end
# Share the Phoenix/dist folder so the VM can get the source tarball and has
# a place to put the build results.
config.vm.synced_folder "../../dist", "/home/vagrant/dist"
# And share a folder with the build script
config.vm.synced_folder "../scripts", "/home/vagrant/scripts"
# set auto_update to false, if you do NOT want to check the correct
# additions version when booting this machine
config.vbguest.auto_update = false
end

View File

@@ -1,31 +0,0 @@
#!/bin/bash
# Set up and update package repos
dnf -y update
dnf -y install yum-utils
# Install necessary development tools, libs, etc.
dnf -y group install "Development Tools"
dnf -y install gcc-c++
dnf -y install gtk2 gtk2-devel gtk3 gtk3-devel \
webkitgtk webkitgtk-devel webkitgtk3 webkitgtk3-devel \
libjpeg-turbo-devel libpng-devel libtiff-devel \
SDL SDL-devel gstreamer gstreamer-devel gstreamer-plugins-base-devel \
freeglut freeglut-devel libnotify libnotify-devel libSM-devel \
libXtst-devel
# Install all available Python packages and their dev packages
dnf -y install python python-tools python-devel python2-virtualenv
dnf -y install python3 python3-tools python3-devel
dnf -y install python35
# Set up virtual environments for each Python where the Phoenix builds will be
# done. Set them to the vagrant user so the venv's can be updated by pip later.
mkdir venvs
virtualenv --python=python2.7 venvs/Py27
python3.5 -m venv venvs/Py35
python3.6 -m venv venvs/Py36
chown -R vagrant:vagrant venvs

View File

@@ -1,28 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Set which Vagrant "box" (base image) to use, and tell it how to set up the
# VM, packages to install, etc.
config.vm.box = "fedora/27-cloud-base"
config.vm.provision :shell, path: "bootstrap.sh"
# Additional parameters for the VM
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 4
end
# Share the Phoenix/dist folder so the VM can get the source tarball and has
# a place to put the build results.
config.vm.synced_folder "../../dist", "/home/vagrant/dist"
# And share a folder with the build script
config.vm.synced_folder "../scripts", "/home/vagrant/scripts"
# set auto_update to false, if you do NOT want to check the correct
# additions version when booting this machine
config.vbguest.auto_update = false
end

View File

@@ -1,31 +0,0 @@
#!/bin/bash
# Set up and update package repos
dnf -y update
dnf -y install yum-utils
# Install necessary development tools, libs, etc.
dnf -y group install "Development Tools"
dnf -y install gcc-c++
dnf -y install gtk2 gtk2-devel gtk3 gtk3-devel \
webkitgtk4 webkitgtk4-devel \
libjpeg-turbo-devel libpng-devel libtiff-devel \
SDL SDL-devel gstreamer gstreamer-devel gstreamer-plugins-base-devel \
freeglut freeglut-devel libnotify libnotify-devel libSM-devel \
libXtst-devel
# Install all available Python packages and their dev packages
dnf -y install python python-tools python-devel python2-virtualenv
dnf -y install python3 python3-tools python3-devel
dnf -y install python35
# Set up virtual environments for each Python where the Phoenix builds will be
# done. Set them to the vagrant user so the venv's can be updated by pip later.
mkdir venvs
virtualenv --python=python2.7 venvs/Py27
python3.5 -m venv venvs/Py35
python3.6 -m venv venvs/Py36
chown -R vagrant:vagrant venvs

View File

@@ -1,28 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Set which Vagrant "box" (base image) to use, and tell it how to set up the
# VM, packages to install, etc.
config.vm.box = "fedora/28-cloud-base"
config.vm.provision :shell, path: "bootstrap.sh"
# Additional parameters for the VM
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 4
end
# Share the Phoenix/dist folder so the VM can get the source tarball and has
# a place to put the build results.
config.vm.synced_folder "../../dist", "/home/vagrant/dist"
# And share a folder with the build script
config.vm.synced_folder "../scripts", "/home/vagrant/scripts"
# set auto_update to false, if you do NOT want to check the correct
# additions version when booting this machine
config.vbguest.auto_update = false
end

View File

@@ -1,32 +0,0 @@
#!/bin/bash
# Set up and update package repos
dnf -y update
dnf -y install yum-utils
# Install necessary development tools, libs, etc.
dnf -y group install "Development Tools"
dnf -y install gcc-c++
dnf -y install gtk2 gtk2-devel gtk3 gtk3-devel \
webkitgtk4 webkitgtk4-devel \
libjpeg-turbo-devel libpng-devel libtiff-devel \
SDL SDL-devel gstreamer gstreamer-devel gstreamer-plugins-base-devel \
freeglut freeglut-devel libnotify libnotify-devel libSM-devel \
libXtst-devel
# Install all available Python packages and their dev packages
dnf -y install python python-tools python-devel python2-virtualenv
dnf -y install python3 python3-tools python3-devel
dnf -y install python37
# Set up virtual environments for each Python where the Phoenix builds will be
# done. Set them to the vagrant user so the venv's can be updated by pip later.
mkdir venvs
virtualenv --python=python2.7 venvs/Py27
python3.6 -m venv venvs/Py36
python3.7 -m venv venvs/Py37
chown -R vagrant:vagrant venvs

View File

@@ -1,103 +0,0 @@
#!/bin/bash
#--------------------------------------------------------------------------
# This script is run in the Vagrant VMs and performs the actual build of
# Phoenix. It expects to find a source tarball in ../../dist, (which is
# mapped to ~/dist in the VM) and to be given a name on the command-line to
# be used to distinguish this build from the other linux builds.
#--------------------------------------------------------------------------
set -o errexit
NAME=$1
if [ "$NAME" == "" ]; then
echo "ERROR: Build name must be given on the command line."
exit 1
fi
# This is the name of the virtual environment to be built. They should all be
# named like Py27, Py35, etc. If "all" is given then all the environments in
# ~/venvs will be used for a build.
PYENV=$2
if [ "$PYENV" == "" ]; then
PYENV=all
fi
# Either "gtk2", "gtk3" or "all"
PORT=$3
if [ "$PORT" == "" ]; then
PORT=all
fi
TARBALL=$(ls ~/dist/wxPython-*.tar.gz)
if [ "$TARBALL" == "" ]; then
echo "ERROR: Source tarball not found."
exit 1
fi
# This function is called to do each build.
# It is given the virtual environment to be used, a tag (gtk2 or gtk3) to be
# used to help name the target folder, and an optional flag (--gtk3) to be
# passed on the build.py command line.
function do_build {
VENV=$1
TAG=$2
FLAG=$3
rm -rf ~/wxPython-*
# setup
echo "**** do_build $VENV $TAG $FLAG ****"
echo "Using Python from VENV $VENV"
ORIG_PATH=$PATH
export PATH=$VENV/bin:$PATH
echo PYTHON: $(which python)
echo $(python -c "import sys; print(sys.version)")
echo "Unpacking source archive..."
tar xzf $TARBALL
# move into the source tree
cd ~/wxPython-*
# update packages
pip install -U pip
pip install -U -r requirements.txt
# Build wxWidgets, Phoenix and a Wheel
# Since we're using a source tarball we don't need to do all the code
# generation parts, all files should already be present
python build.py $FLAG build_wx build_py bdist_wheel
# copy the results back to the host's shared dist folder
WXPYVER=$(python -c "import buildtools; buildtools.printVersion()")
DEST=~/dist/linux/$TAG/$NAME
mkdir -p $DEST
mv dist/*.whl $DEST
# clean up
cd ~
rm -rf ~/wxPython-*
export PATH=$ORIG_PATH
}
# Do a build for each Python virtual environment in ~/venvs
for VENV in ~/venvs/*; do
if [ $PYENV = all -o $PYENV = $(basename $VENV) ]; then
# build a package for GTK2?
if [ $PORT = all -o $PORT = gtk2 ]; then
do_build $VENV gtk2 --gtk2
fi
# build a package for GTK3?
if [ $PORT = all -o $PORT = gtk3 ]; then
do_build $VENV gtk3 --gtk3
fi
fi
done

View File

@@ -1,28 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Set which Vagrant "box" (base image) to use, and tell it how to set up the
# VM, packages to install, etc.
config.vm.box = "ubuntu/trusty64"
config.vm.provision :shell, path: "bootstrap.sh"
# Additional parameters for the VM
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 4
end
# Share the Phoenix/dist folder so the VM can get the source tarball and has
# a place to put the build results.
config.vm.synced_folder "../../dist", "/home/vagrant/dist"
# And share a folder with the build script
config.vm.synced_folder "../scripts", "/home/vagrant/scripts"
# set auto_update to false, if you do NOT want to check the correct
# additions version when booting this machine
config.vbguest.auto_update = false
end

View File

@@ -1,32 +0,0 @@
#!/bin/bash
# Set up and update package repos
add-apt-repository ppa:deadsnakes/ppa
apt-get update
# Install necessary development tools, libs, etc.
apt-get install -y build-essential dpkg-dev
apt-get install -y libgtk2.0-dev libgtk-3-dev
apt-get install -y libjpeg-dev libtiff-dev \
libsdl1.2-dev libgstreamer-plugins-base0.10-dev \
libnotify-dev freeglut3 freeglut3-dev libsm-dev \
libwebkitgtk-dev libwebkitgtk-3.0-dev libwebkit2gtk-3.0-dev \
libxtst-dev
# Install all available Python packages and their dev packages
apt-get install -y python2.7 python2.7-dev libpython2.7-dev python-virtualenv
apt-get install -y python3.4 python3.4-dev libpython3.4-dev python3.4-venv
apt-get install -y python3.5 python3.5-dev libpython3.5-dev python3.5-venv
apt-get install -y python3.6 python3.6-dev libpython3.6-dev python3.6-venv
# Set up virtual environments for each Python where the Phoenix builds will be
# done. set them to the vagrant user so the venv's can be updated by pip later.
mkdir venvs
virtualenv --python=python2.7 venvs/Py27
python3.4 -m venv venvs/Py34
python3.5 -m venv venvs/Py35
python3.6 -m venv venvs/Py36
chown -R vagrant:vagrant venvs

View File

@@ -1,28 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Set which Vagrant "box" (base image) to use, and tell it how to set up the
# VM, packages to install, etc.
config.vm.box = "ubuntu/xenial64"
config.vm.provision :shell, path: "bootstrap.sh"
# Additional parameters for the VM
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 4
end
# Share the Phoenix/dist folder so the VM can get the source tarball and has
# a place to put the build results.
config.vm.synced_folder "../../dist", "/home/vagrant/dist"
# And share a folder with the build script
config.vm.synced_folder "../scripts", "/home/vagrant/scripts"
# set auto_update to false, if you do NOT want to check the correct
# additions version when booting this machine
config.vbguest.auto_update = false
end

View File

@@ -1,35 +0,0 @@
#!/bin/bash
# Set up and update package repos
add-apt-repository ppa:deadsnakes/ppa
apt-get update
# Install necessary development tools, libs, etc.
apt-get install -y build-essential dpkg-dev
apt-get install -y aptitude mc
apt-get install -y libgtk2.0-dev libgtk-3-dev
apt-get install -y libjpeg-dev libtiff-dev \
libsdl1.2-dev libgstreamer-plugins-base0.10-dev \
libgstreamer-plugins-base1.0-dev \
libnotify-dev freeglut3 freeglut3-dev libsm-dev \
libwebkitgtk-dev libwebkitgtk-3.0-dev libwebkit2gtk-4.0-dev \
libxtst-dev
# Install all available Python packages and their dev packages
apt-get install -y python2.7 python2.7-dev libpython2.7-dev python-virtualenv
apt-get install -y python3.5 python3.5-dev libpython3.5-dev python3.5-venv
apt-get install -y python3.6 python3.6-dev libpython3.6-dev python3.6-venv
apt-get install -y python3.7 python3.7-dev libpython3.7-dev python3.7-venv
# Set up virtual environments for each Python where the Phoenix builds will be
# done. set them to the vagrant user so the venv's can be updated by pip later.
mkdir venvs
virtualenv --python=python2.7 venvs/Py27
pyvenv-3.5 venvs/Py35
python3.6 -m venv venvs/Py36
python3.7 -m venv venvs/Py37
chown -R vagrant:vagrant venvs

View File

@@ -1,28 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Set which Vagrant "box" (base image) to use, and tell it how to set up the
# VM, packages to install, etc.
config.vm.box = "ubuntu/bionic64"
config.vm.provision :shell, path: "bootstrap.sh"
# Additional parameters for the VM
config.vm.provider "virtualbox" do |vb|
vb.memory = 4096
vb.cpus = 4
end
# Share the Phoenix/dist folder so the VM can get the source tarball and has
# a place to put the build results.
config.vm.synced_folder "../../dist", "/home/vagrant/dist"
# And share a folder with the build script
config.vm.synced_folder "../scripts", "/home/vagrant/scripts"
# set auto_update to false, if you do NOT want to check the correct
# additions version when booting this machine
config.vbguest.auto_update = false
end

View File

@@ -1,31 +0,0 @@
#!/bin/bash
# Set up and update package repos
add-apt-repository ppa:deadsnakes/ppa
apt update
# Install necessary development tools, libs, etc.
apt install -y build-essential dpkg-dev
apt install -y aptitude mc
apt install -y libgtk2.0-dev libgtk-3-dev
apt install -y libjpeg-dev libtiff-dev \
libsdl1.2-dev libgstreamer-plugins-base1.0-dev \
libnotify-dev freeglut3 freeglut3-dev libsm-dev \
libwebkitgtk-dev libwebkitgtk-3.0-dev
# Install all available Python packages and their dev packages
apt install -y python2.7 python2.7-dev libpython2.7-dev python-virtualenv
apt install -y python3.6 python3.6-dev libpython3.6-dev python3.6-venv
apt install -y python3.7 python3.7-dev libpython3.7-dev python3.7-venv
# Set up virtual environments for each Python where the Phoenix builds will be
# done. set them to the vagrant user so the venv's can be updated by pip later.
mkdir venvs
virtualenv --python=python2.7 venvs/Py27
python3.6 -m venv venvs/Py36
python3.7 -m venv venvs/Py37
chown -R vagrant:vagrant venvs