dist: bionic
language: python
python:
    - 3.6
    - 3.7
    - 3.8
git:
  depth: false
before_install:
  - git tag
install:
  - sudo apt-get -y install libsecp256k1-0
  - pip install -r contrib/requirements/requirements-travis.txt
cache:
  - pip: true
  - directories:
    - /tmp/electrum-build
script:
    - tox
after_success:
    - if [ "$TRAVIS_BRANCH" = "master" ]; then pip install requests && contrib/push_locale; fi
    - coveralls
jobs:
  include:
    - name: "Regtest functional tests"
      language: python
      python: 3.7
      install:
        - sudo add-apt-repository -y ppa:luke-jr/bitcoincore
        - sudo apt-get -qq update
        - sudo apt-get install -yq bitcoind
        - sudo apt-get -y install libsecp256k1-0
        - pip install .[tests]
        - pip install electrumx
      before_script:
          - electrum/tests/regtest/start_bitcoind.sh
          - electrum/tests/regtest/start_electrumx.sh
      script:
        - python -m unittest electrum/tests/regtest.py
      after_success: True
    - name: "Flake8 linter tests"
      language: python
      install: pip install flake8
      script: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
    - stage: binary builds
      if: (branch = master) OR (tag IS present)
      name: "Windows build"
      language: c
      python: false
      env:
        - TARGET_OS=Windows
      services:
        - docker
      before_install:  # we need a newer version of docker; 20.10+ seems to work
        - sudo rm -rf /var/lib/apt/lists/*
        - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
        - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
        - sudo apt-get update
        - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
        - docker version
      install:
        - sudo docker build --no-cache -t electrum-wine-builder-img ./contrib/build-wine/
      script:
        - sudo docker run --name electrum-wine-builder-cont -v $PWD:/opt/wine64/drive_c/electrum --rm --workdir /opt/wine64/drive_c/electrum/contrib/build-wine electrum-wine-builder-img ./build.sh
      after_success: true
    - if: (branch = master) OR (tag IS present)
      name: "Android build"
      language: python
      python: 3.7
      services:
        - docker
      install:
        - pip install requests && ./contrib/pull_locale
        - ./contrib/make_packages
        - sudo docker build --no-cache -t electrum-android-builder-img contrib/android
      script:
        - sudo chown -R 1000:1000 .
        # Output something every minute or Travis kills the job
        - while sleep 60; do echo "=====[ $SECONDS seconds still running ]====="; done &
        - sudo docker run -it -u 1000:1000 --rm --name electrum-android-builder-cont --env CI=true -v $PWD:/home/user/wspace/electrum --workdir /home/user/wspace/electrum electrum-android-builder-img ./contrib/android/make_apk
        # kill background sleep loop
        - kill %1
        - ls -la bin
        - if [ $(ls bin | grep -c Electrum-*) -eq 0 ]; then exit 1; fi
      after_success: true
      # disabled for now as travis started to always time out:
    - if: false AND ((branch = master) OR (tag IS present))
      name: "MacOS build"
      os: osx
      language: c
      env:
        - TARGET_OS=macOS
      python: false
      install:
        - git fetch --all --tags
      script: ./contrib/osx/make_osx
      after_script: ls -lah dist && md5 dist/*
      after_success: true
    - if: (branch = master) OR (tag IS present)
      name: "AppImage build"
      language: c
      python: false
      services:
        - docker
      install:
        - sudo docker build --no-cache -t electrum-appimage-builder-img ./contrib/build-linux/appimage/
      script:
        - sudo docker run --name electrum-appimage-builder-cont -v $PWD:/opt/electrum --rm --workdir /opt/electrum/contrib/build-linux/appimage electrum-appimage-builder-img ./build.sh
      after_success: true
    - if: (branch = master) OR (tag IS present)
      name: "tarball build"
      language: c
      python: false
      services:
        - docker
      before_install:
        # hack: travis already cloned the repo, but we re-clone now, as we need to have umask set BEFORE cloning
        - umask 0022
        - mkdir fresh_clone && cd fresh_clone
        - git clone https://github.com/$TRAVIS_REPO_SLUG.git && cd electrum
        - if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then git fetch origin pull/$TRAVIS_PULL_REQUEST/merge; fi
        - git checkout $TRAVIS_COMMIT
        - echo "Second git clone ready at $PWD"
      install:
        - sudo docker build --no-cache -t electrum-sdist-builder-img ./contrib/build-linux/sdist/
      script:
        - echo "Building sdist at $PWD"
        - sudo docker run --name electrum-sdist-builder-cont -v $PWD:/opt/electrum --rm --workdir /opt/electrum/contrib/build-linux/sdist electrum-sdist-builder-img ./build.sh
      after_success: true
    - stage: release check
      install:
          - git fetch --all --tags
      script:
        - ./contrib/deterministic-build/check_submodules.sh
      after_success: true
      if: tag IS present