From 64d9f64834e2d67dfd858e9c6407a7c943511d35 Mon Sep 17 00:00:00 2001 From: Vladimir Still <git@vstill.eu> Date: Thu, 19 Nov 2020 17:15:05 +0100 Subject: [PATCH] ansible: Add (partial) configuration for eval-haskell --- ansible/eval-haskell.fi.muni.cz | 259 ++++++++++++++++++++++++ ansible/roles/common_deb/tasks/main.yml | 1 + 2 files changed, 260 insertions(+) create mode 100644 ansible/eval-haskell.fi.muni.cz diff --git a/ansible/eval-haskell.fi.muni.cz b/ansible/eval-haskell.fi.muni.cz new file mode 100644 index 0000000..5f311b6 --- /dev/null +++ b/ansible/eval-haskell.fi.muni.cz @@ -0,0 +1,259 @@ +- name: eval-ib015 + hosts: eval-ib015.fi.muni.cz + vars: + dhcpcd: False + ghc_version: 8.10.2 + ghc_prefix: '/opt/ghc/{{ghc_version}}' + + tasks: + - import_role: + name: runner_install + tags: + - install + + - block: + - import_role: + name: common_deb + + - name: Install frag requisites + apt: + pkg: + - darcs + - clang + - libcurl4-gnutls-dev + - libexpat1-dev + - libldap2-dev + - libacl1-dev + - libcap-dev + + - name: Postgres key + apt_key: + data: | + -----BEGIN PGP PUBLIC KEY BLOCK----- + + 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 + =DA1T + -----END PGP PUBLIC KEY BLOCK----- + + + - name: Postgres repo + apt_repository: + repo: deb http://apt.postgresql.org/pub/repos/apt buster-pgdg main + filename: postgres + + - name: Postgres + apt: + pkg: + - postgresql-client-12 + - libpq-dev + default_release: buster-pgdg + + + - name: Frag dir + file: + state: directory + path: /var/frag + owner: root + group: systemd-journal + mode: 02755 + + - name: frag checkout exits? + stat: + path: /var/frag/frag/_darcs + register: frag_chekout + + - name: Checkout frag + command: + chdir: /var/frag + cmd: darcs get https://paradise.fi.muni.cz/~xstill/src/frag/ + when: not frag_chekout.stat.exists + + - name: Update frag + command: + chdir: /var/frag/frag + cmd: '{{item}}' + loop: + - darcs pull -a + - env CXX=clang++ PWD=/var/frag/frag make +# - /var/frag/frag/frag-teacher init --subject ib015 --daemon eval --eval-count 8 + + - name: Builder user + user: + name: builder + create_home: True + shell: /bin/bash + system: True + + - name: GHC requisites + apt: + pkg: + - libtinfo-dev + - libtinfo5 + - libgmp-dev + - libgmp10 + + - name: GHC target dir + file: + state: directory + path: '{{ghc_prefix}}' + + - name: GHC installed? + stat: + path: '/opt/ghc/{{ghc_version}}/bin/ghc' + register: ghc_bin + + - block: + - name: GHC bootstrap directory + file: + state: directory + path: /home/builder/ghc-bootstrap + + - name: Download GHC bootstrap + get_url: + url: 'https://downloads.haskell.org/~ghc/{{ghc_version}}/ghc-{{ghc_version}}-x86_64-deb9-linux.tar.xz' + dest: /home/builder/ghc-bootstrap/ghc.tar.xz + + - name: Extract GHC bootstrap + unarchive: + src: /home/builder/ghc-bootstrap/ghc.tar.xz + dest: /home/builder/ghc-bootstrap/ + remote_src: True + + - name: Build GHC bootstrap + shell: + chdir: '/home/builder/ghc-bootstrap/ghc-{{ghc_version}}' + cmd: '{{item}}' + loop: + - './configure --prefix=/home/builder/ghc-bootstrap' + - make install -j8 + + - name: Download GHC + get_url: + url: 'https://downloads.haskell.org/~ghc/{{ghc_version}}/ghc-{{ghc_version}}-src.tar.xz' + dest: /home/builder/ghc.tar.xz + + - name: Extract GHC + unarchive: + src: /home/builder/ghc.tar.xz + dest: /home/builder/ + remote_src: True + + - name: Build GHC + shell: + chdir: '/home/builder/ghc-{{ghc_version}}' + cmd: 'env PATH=/home/builder/ghc-bootstrap/bin:$PATH {{item}}' + loop: + - ./boot + - './configure --prefix={{ghc_prefix}} --disable-large-address-space --with-system-libffi --with-ffi-includes=$(pkg-config --variable=includedir libffi)' + - make -j8 + + become_user: builder + become: true + when: not ghc_bin.stat.exists + + - name: Install ghc + shell: + chdir: '/home/builder/ghc-{{ghc_version}}' + cmd: '{{item}}' + loop: + - make install + when: not ghc_bin.stat.exists + + - name: Symlink GHC to /usr/local/bin + file: + src: '/opt/ghc/{{ghc_version}}/bin/{{item}}' + dest: '/usr/local/bin/{{item}}' + state: link + loop: + - 'ghc' + - 'ghc-{{ghc_version}}' + - 'ghc-pkg' + - 'ghc-pkg-{{ghc_version}}' + - 'ghci' + - 'ghci-{{ghc_version}}' + - 'haddock' + - 'haddock-ghc-{{ghc_version}}' + - 'hp2ps' + - 'hpc' + - 'hsc2hs' + - 'runghc' + - 'runghc-{{ghc_version}}' + - 'runhaskell' + + + tags: + - deploy + +# vim: shiftwidth=2 tabstop=2 softtabstop=2 ft=yaml.ansible diff --git a/ansible/roles/common_deb/tasks/main.yml b/ansible/roles/common_deb/tasks/main.yml index 3d2fe5f..04a4d03 100644 --- a/ansible/roles/common_deb/tasks/main.yml +++ b/ansible/roles/common_deb/tasks/main.yml @@ -189,6 +189,7 @@ - bash-completion - python3-pip - libffi-dev + - autoconf - pv - name: monitoring -- GitLab