# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing,
#   software distributed under the License is distributed on an
#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#   KIND, either express or implied.  See the License for the
#   specific language governing permissions and limitations
#   under the License.

# apt-get update
- name: update apt cache
  apt:
    update_cache: yes

- name: Update all packages to the latest version
  apt:
    upgrade: dist

- name: install auxiliary packages
  apt: name={{item}} state=present
  with_items:
  - apt-transport-https
  - curl
  - git
  - pkg-config
  - python
  - python-pip
  - python-requests
  - sudo
  - zip

# dependencies for make couch, except erlang
- name: install packages required to build CouchDB
  apt: name={{item}} state=present install_recommends=no
  with_items:
  - build-essential
  - ca-certificates
  - libcurl4-openssl-dev
  - libicu-dev
  - libnspr4-dev
  - shunit2

# required for make docs
- name: install packages required to build CouchDB docs
  apt: name={{item}} state=present install_recommends=no
  with_items:
  - help2man
  - python-sphinx

# Fix broken sphinx on ubuntu 12.04 only
# Hack, but prevents needing a unique debian/ dir for this dist
- name: install up to date version of sphinx via pip
  shell: pip install docutils==0.13.1 sphinx==1.5.3
  when: ansible_distribution == "Ubuntu" and ansible_distribution_version == "12.04"

# dependencies for Debian/Ubuntu package building
- name: install packages required to build Debian pkgs
  apt: name={{item}} state=present install_recommends=no
  with_items:
  - curl
  - debhelper
  - dh-exec
  - devscripts
  - dialog
  - lintian
  - libwww-perl
  - devscripts
  - quilt

# Hooray deMorgan's theorem
- name: install dh-systemd package, if available
  apt: name=dh-systemd state=present install_recommends=no
  when: ansible_distribution != "Ubuntu" or ansible_distribution_version != "12.04"

# convenience packages for interactive work
- name: install convenience packages 
  apt: name={{item}} state=present install_recommends=no
  with_items:
  - vim-tiny
  - screen
