Build AUR packages properly

This commit is contained in:
2024-04-14 18:43:52 +02:00
parent 070ee29aa5
commit 5774b3d61a

View File

@@ -172,46 +172,60 @@
- set_fact: - set_fact:
aur_packages: aur_packages:
# dependency of portfolio
- name: archlinux-java-run
dependencies:
- 'bash'
- 'java-runtime-common'
version: 10-1
arch: any
- name: portfolio - name: portfolio
dependencies: dependencies:
- 'maven' - name: archlinux-java-run
- 'java-environment=17'
- 'gendesk'
- 'webkit2gtk'
version: 0.68.3-1
arch: x86_64
- name: spotify - name: spotify
dependencies:
- 'alsa-lib>=1.0.14'
- 'gtk3'
- 'libxss'
- 'desktop-file-utils'
- 'openssl'
- 'nss'
- 'at-spi2-atk'
- 'libcurl-gnutls'
- 'libsm'
- 'libayatana-appindicator'
version: 1:1.2.31.1205-2
arch: x86_64
preexec: | preexec: |
#!/usr/bin/env bash #!/usr/bin/env bash
curl -sS https://download.spotify.com/debian/pubkey_6224F9941A8AA6D1.gpg | gpg --import - curl -sS https://download.spotify.com/debian/pubkey_6224F9941A8AA6D1.gpg | gpg --import -
- set_fact:
aur_packages: "{{ aur_packages + aur_packages|map(attribute='dependencies', default=[]) | flatten }}"
- name: install dependencies - name: install dependencies
package: shell: |
name: "{{ aur_packages | map(attribute='dependencies') | flatten }}" aur_packages=({{ aur_packages | map(attribute='name') | join(' ') }})
state: present
source pkgbuilds/{{ item.name }}/PKGBUILD
installed=0
dependencies=(${depends[@]} ${makedepends[@]})
for dep in "${dependencies[@]}" ; do
aur=0
for aur_pkg in "${aur_packages[@]}" ; do
if [[ "${aur_pkg}" == "${dep}" ]] ; then
aur=1
break
fi
done
if (( aur )) ; then
continue
fi
if ! pacman -Qq "${dep}" >/dev/null 2>&1 ; then
installed=1
sudo pacman -S --noconfirm --needed "${dep}"
fi
done
if (( installed )) ; then
exit 1
else
exit 0
fi
args:
executable: /bin/bash
register: install_deps
failed_when: install_deps.rc > 1
changed_when: install_deps.rc == 1
become: true become: true
loop: "{{ aur_packages }}"
loop_control:
label: "{{ item.name }}"
- name: check preexec script - name: check preexec script
stat: stat:
@@ -274,18 +288,60 @@
label: "{{ item.1.stat.path }}" label: "{{ item.1.stat.path }}"
- name: build AUR packages - name: build AUR packages
command: shell:
cmd: > cmd: |
env export PKGEXT='.pkg.tar.zst'
PKGEXT='.pkg.tar.zst' export BUILDDIR=/var/lib/makepkg/{{ item.name }}/build/
BUILDDIR=/var/lib/makepkg/{{ item.name }}/build/ export SRCDEST=/var/lib/makepkg/{{ item.name }}/src/
SRCDEST=/var/lib/makepkg/{{ item.name }}/src/ export PKGDEST=/var/lib/makepkg/{{ item.name }}/
PKGDEST=/var/lib/makepkg/{{ item.name }}/
makepkg source ./PKGBUILD
--clean
--nosign for arch in "${arch[@]}" ; do
creates: /var/lib/makepkg/{{ item.name }}/{{ item.name }}-{{ item.version}}-{{ item.arch }}.pkg.tar.zst if [[ "${arch}" == "any" ]] ; then
arch="any"
break
fi
if [[ "${arch}" == "x86_64" ]] ; then
arch="x86_64"
fi
done
if [[ ! "${arch}" ]] ; then
printf 'unsupported arch' >&2
exit 1
fi
if [[ "${epoch}" ]] ; then
version="${epoch}:${pkgver}-${pkgrel}"
else
version="${pkgver}-${pkgrel}"
fi
filename="${PKGDEST%/}/${pkgname}-${version}-${arch}${PKGEXT}"
needs_build=0
if [[ ! -e "${filename}" ]] ; then
needs_build=1
makepkg \
--clean \
--nodeps \
--nosign || exit 2
fi
printf '%s\n' "${filename}"
if (( needs_build )) ; then
exit 1
else
exit 0
fi
args:
executable: /bin/bash
chdir: "pkgbuilds/{{ item.name }}" chdir: "pkgbuilds/{{ item.name }}"
register: aur_build
failed_when: aur_build.rc > 1
changed_when: aur_build.rc == 1
become_user: makepkg become_user: makepkg
become: true become: true
loop: "{{ aur_packages }}" loop: "{{ aur_packages }}"
@@ -307,13 +363,27 @@
label: "{{ item[0].name }}/{{ item[1] }}" label: "{{ item[0].name }}/{{ item[1] }}"
- name: install AUR packages - name: install AUR packages
pacman: shell:
state: installed cmd: |
name: /var/lib/makepkg/{{ item.name }}/{{ item.name }}-{{ item.version }}-{{ item.arch }}.pkg.tar.zst set -x
filename="{{ item }}"
name=$(pacman -Qi --file "${filename}" | grep '^Name' | awk '{print $3}')
version=$(pacman -Qi --file "${filename}" | grep '^Version' | awk '{print $3}')
if [[ "$(pacman -Q "${name}")" == "${name} ${version}" ]] ; then
exit 0
else
pacman --upgrade --needed --noconfirm "$filename"
exit 1
fi
args:
executable: /bin/bash
become: true become: true
loop: "{{ aur_packages }}" register: aur_install
loop_control: changed_when: aur_install.rc == 1
label: "{{ item.name }}" failed_when: aur_install.rc > 1
loop: "{{ aur_build.results|map(attribute='stdout') }}"
tags: ["aur"] tags: ["aur"]
when: distro == 'archlinux' when: distro == 'archlinux'