From fcd7e3d2acc50be1488855d79c0e194ce3e31e70 Mon Sep 17 00:00:00 2001 From: Jimmy McCrory Date: Fri, 11 Mar 2016 14:15:14 -0800 Subject: [PATCH] Install packages necessary to build Python wheels Include additional tasks to install apt packages necessary to build Python wheels required by OpenStack-Ansible. These packages were formerly installed by the repo_server role. Since lxc-dev is installed as a requirement for building lxc-python2, an lxc-net override file is dropped to prevent the lxcbr0 bridge and dnsmasq service from starting and potentially causing issues. Change-Id: I03d5c061ec506a9dc142ff55a50fb3ecb18c238f Partial-Bug: #1550418 --- defaults/main.yml | 23 ++++++++++++++++++ tasks/main.yml | 2 +- tasks/repo_build_install.yml | 40 ++++++++++++++++++++++++------- tasks/repo_pre_build.yml | 13 ++++++++++ templates/manual-init.override.j2 | 9 +++++++ 5 files changed, 78 insertions(+), 9 deletions(-) create mode 100644 templates/manual-init.override.j2 diff --git a/defaults/main.yml b/defaults/main.yml index a87dbaf..b1e3422 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -26,6 +26,29 @@ repo_build_pool_dir: "/var/www/repo/pools" repo_build_release_tag: "untagged" +## APT Cache options +cache_timeout: 600 + +repo_build_apt_packages: + - build-essential + - cmake + - git + - liberasurecode-dev # required to build pyeclib + - libffi-dev # required to build xattr + - libjpeg-dev # required to build pillow + - libkrb5-dev # required to build pykerberos + - libldap2-dev # required to build python-ldap + - libmariadbclient-dev # required to build MySQL-python + - libpq-dev # required to build psycopg2 + - libsasl2-dev # required to build python-ldap + - libsqlite3-dev # required to build pysqlite + - libssl-dev # required to build cryptography + - libvirt-dev # required to build libvirt-python + - libxslt1-dev # required to build lxml + - lxc-dev # required to build lxc-python2 + - python-dev + - swig + repo_build_pip_default_index: "https://pypi.python.org/simple" repo_build_pip_extra_index: "https://pypi.python.org/simple" diff --git a/tasks/main.yml b/tasks/main.yml index 821f1f7..da309f7 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -14,8 +14,8 @@ # limitations under the License. # Wheel building -- include: repo_clone_git.yml - include: repo_build_install.yml +- include: repo_clone_git.yml - include: repo_set_facts.yml - include: repo_pre_build.yml - include: repo_build.yml diff --git a/tasks/repo_build_install.yml b/tasks/repo_build_install.yml index d745d62..e1f48c5 100644 --- a/tasks/repo_build_install.yml +++ b/tasks/repo_build_install.yml @@ -13,17 +13,41 @@ # See the License for the specific language governing permissions and # limitations under the License. +- name: Drop lxc-net override file + template: + src: manual-init.override.j2 + dest: /etc/init/lxc-net.override + owner: root + group: root + mode: 0644 + tags: + - repo-build-apt-packages -- name: Install pip packages - pip: - name: "{{ item }}" +#TODO(evrardjp): Replace the next 2 tasks by a standard apt with cache +#when https://github.com/ansible/ansible-modules-core/pull/1517 is merged +#in 1.9.x or we move to 2.0 (if tested working) +- name: Check apt last update file + stat: + path: /var/cache/apt + register: apt_cache_stat + tags: + - repo-build-apt-packages + +- name: Update apt if needed + apt: + update_cache: yes + when: "ansible_date_time.epoch|float - apt_cache_stat.stat.mtime > {{cache_timeout}}" + tags: + - repo-build-apt-packages + +- name: Install apt packages + apt: + pkg: "{{ item }}" state: present - extra_args: "--constraint {{ repo_build_git_dir }}/requirements/upper-constraints.txt {{ pip_install_options|default('') }}" register: install_packages until: install_packages|success retries: 5 - delay: 5 - with_items: repo_pip_packages + delay: 2 + with_items: repo_build_apt_packages tags: - - repo-pip-packages - + - repo-build-apt-packages diff --git a/tasks/repo_pre_build.yml b/tasks/repo_pre_build.yml index 4f3ccfe..f64705b 100644 --- a/tasks/repo_pre_build.yml +++ b/tasks/repo_pre_build.yml @@ -13,6 +13,19 @@ # See the License for the specific language governing permissions and # limitations under the License. +- name: Install pip packages + pip: + name: "{{ item }}" + state: present + extra_args: "--constraint {{ repo_build_git_dir }}/requirements/upper-constraints.txt {{ pip_install_options|default('') }}" + register: install_packages + until: install_packages|success + retries: 5 + delay: 5 + with_items: repo_pip_packages + tags: + - repo-pip-packages + - name: Ensure workspace files are cleaned up file: path: "{{ item }}" diff --git a/templates/manual-init.override.j2 b/templates/manual-init.override.j2 new file mode 100644 index 0000000..306c937 --- /dev/null +++ b/templates/manual-init.override.j2 @@ -0,0 +1,9 @@ +# {{ ansible_managed }} + +pre-start script + echo "pass" +end script + +post-stop script + echo "pass" +end script