1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-12 08:30:05 +00:00
CLK/Packaging/main.yml

175 lines
4.8 KiB
YAML

- name: Automatically generate RPMs from CLK git repo
hosts: localhost
vars:
- arch: "amd64"
- deps:
- gcc-c++
- mesa-libGL-devel
- python3-github3py
- python3-scons
- SDL2-devel
- zlib-devel
- github_repo: "CLK"
- github_user: "TomHarte"
- packageName: "{{ github_repo }}"
- releaseURL: "https://github.com/TomHarte/CLK/releases/latest"
- rpmLicense: "MIT"
- rpmSummary: "A latency-hating emulator of 8- and 16-bit platforms: the Acorn Electron, Amstrad CPC, Apple II/II+/IIe and early Macintosh, Atari 2600 and ST, ColecoVision, Commodore Vic-20, MSX 1, Oric 1/Atmos, Sega Master System and Sinclair ZX80/81."
- rpmTools:
- pandoc
- rpm-build
- rpmdevtools
# - version: "head"
- version: "current"
# - version: "2020-05-10"
tasks:
- name: set the date
set_fact:
dateStamp: "{{ lookup('pipe','date \"+%0d %B %Y\"') }}"
- name: install required rpm development tools
package:
name: "{{ item }}"
state: latest
with_items:
- "{{ rpmTools }}"
- "{{ deps }}"
become: yes
- name: create rpm development tree in user home directory
command: rpmdev-setuptree
- name: create temp working directory
tempfile:
state: directory
prefix: "{{ packageName }}."
register: tempdir
- name: Find current release tag
github_release:
user: "{{ github_user }}"
repo: "{{ github_repo }}"
action: latest_release
register: release_data
- name: Fetch HEAD
git:
repo: "https://github.com/{{ github_user }}/{{ github_repo }}.git"
dest: "{{ tempdir.path }}/source"
version: "HEAD"
when: version == "head"
- name: Fetch current release
git:
repo: "https://github.com/{{ github_user }}/{{ github_repo }}.git"
dest: "{{ tempdir.path }}/source"
version: "{{ release_data.tag }}"
when: version == "current"
- name: Fetch named release
git:
repo: "https://github.com/{{ github_user }}/{{ github_repo }}.git"
dest: "{{ tempdir.path }}/source"
version: "{{ version }}"
when: ( version != "current" ) and ( version != "head" )
- name: set the release variable (head)
set_fact:
version: "git{{ ansible_date_time.epoch }}"
when: version == "head"
- name: set the release variable (current)
set_fact:
version: "{{ release_data.tag | regex_replace( '-','' ) }}"
when: version == "current"
- debug:
var: version
- name: convert README.md to text for packaging
command: "pandoc -f markdown -t plain --wrap=none {{ tempdir.path }}/source/README.md -o {{ tempdir.path }}/source/README.txt"
- name: set description from README.txt
slurp:
src: "{{ tempdir.path }}/source/README.txt"
register: readme
- debug:
msg: "{{ readme['content'] | b64decode }}"
- name: create symlink to checkout dir with version
file:
src: "{{ tempdir.path }}/source"
dest: "{{ tempdir.path }}/{{ packageName }}-{{ version }}"
state: link
- name: create the new source archive
archive:
dest: "{{ ansible_env.HOME }}/rpmbuild/SOURCES/{{ packageName }}-{{ version }}.tar"
path: "{{ tempdir.path }}/{{ packageName }}-{{ version }}"
format: tar
- name: template the man page to the sources directory
template:
src: "clksignal.1.j2"
dest: "{{ ansible_env.HOME }}/rpmbuild/SOURCES/clksignal.1"
- name: compress the man page
archive:
path: "{{ ansible_env.HOME }}/rpmbuild/SOURCES/clksignal.1"
dest: "{{ ansible_env.HOME }}/rpmbuild/SOURCES/clksignal.1.gz"
format: gz
remove: Yes
- name: remove existing spec files
file:
path: "{{ ansible_env.HOME }}/rpmbuild/SPECS/{{ packageName }}-{{ version }}.spec"
state: absent
- name: create spec file from template
template:
src: package.spec.j2
dest: "{{ ansible_env.HOME }}/rpmbuild/SPECS/{{ packageName }}-{{ version }}.spec"
- name: build rpm
command: "rpmbuild -bb {{ ansible_env.HOME }}/rpmbuild/SPECS/{{ packageName }}-{{ version }}.spec"
register: rpmbuild
- debug:
var: rpmbuild
- name: register rpmbuild output file variable
set_fact:
rpmBuildOut: "{{ tempdir.path }}/rpmbuild.out"
- name: write output to file
copy:
content: "{{ rpmbuild.stdout }}"
dest: "{{ rpmBuildOut }}"
- name: set the rpm file variable
set_fact:
rpmFile: "{{ lookup( 'pipe', 'egrep ^Wrote:\ ' + rpmBuildOut ) }}"
- debug:
var: rpmFile
- name: update the rpm file variable
set_fact:
rpmFile: "{{ rpmFile | regex_replace('^Wrote: ', '' ) }}"
- debug:
var: rpmFile
- name: install package
package:
name: "{{ rpmFile }}"
state: latest
become: true
# - name: remove temp directory
# file:
# path: "{{ tempdir.path }}"
# state: absent