mirror of
https://github.com/TomHarte/CLK.git
synced 2024-12-11 15:49:38 +00:00
175 lines
4.8 KiB
YAML
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
|