mirror of
https://github.com/kewlfft/ansible-aur.git
synced 2025-09-17 08:30:39 +03:00
Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
dff3cfb450 | ||
![]() |
89e26748da | ||
![]() |
de92aa87cb | ||
![]() |
5d952d26fd | ||
![]() |
026786beb0 | ||
![]() |
c24454a159 | ||
![]() |
63e60fc256 | ||
![]() |
e643e8f450 | ||
![]() |
bd374b15d9 | ||
![]() |
d6d25c6738 | ||
![]() |
672b060fe9 | ||
![]() |
c26e14c8ce | ||
![]() |
74b538db28 |
41
README.md
41
README.md
@@ -3,10 +3,10 @@ Ansible module to use some Arch User Repository (AUR) helpers as well as makepkg
|
|||||||
|
|
||||||
The following helpers are supported and automatically selected, if present, in the order listed below:
|
The following helpers are supported and automatically selected, if present, in the order listed below:
|
||||||
- [yay](https://github.com/Jguer/yay)
|
- [yay](https://github.com/Jguer/yay)
|
||||||
- [aurman](https://github.com/polygamma/aurman)
|
- [pacaur](https://github.com/E5ten/pacaur)
|
||||||
- [pacaur](https://github.com/rmarquis/pacaur)
|
|
||||||
- [trizen](https://github.com/trizen/trizen)
|
- [trizen](https://github.com/trizen/trizen)
|
||||||
- [pikaur](https://github.com/actionless/pikaur)
|
- [pikaur](https://github.com/actionless/pikaur)
|
||||||
|
- [aurman](https://github.com/polygamma/aurman) (discontinued)
|
||||||
|
|
||||||
*makepkg* will be used if no helper was found or if it is explicitly specified:
|
*makepkg* will be used if no helper was found or if it is explicitly specified:
|
||||||
- [makepkg](https://wiki.archlinux.org/index.php/makepkg)
|
- [makepkg](https://wiki.archlinux.org/index.php/makepkg)
|
||||||
@@ -16,10 +16,11 @@ The following helpers are supported and automatically selected, if present, in t
|
|||||||
|--- |--- |--- |--- |---|
|
|--- |--- |--- |--- |---|
|
||||||
|name |no | | |Name or list of names of the package(s) to install or upgrade.|
|
|name |no | | |Name or list of names of the package(s) to install or upgrade.|
|
||||||
|upgrade |no |no |yes, no |Whether or not to upgrade whole system.|
|
|upgrade |no |no |yes, no |Whether or not to upgrade whole system.|
|
||||||
|use |no |auto |auto, yay, aurman, pacaur, trizen, pikaur, makepkg |The helper to use, 'auto' uses the first known helper found and makepkg as a fallback.|
|
|use |no |auto |auto, yay, pacaur, trizen, pikaur, aurman, makepkg |The helper to use, 'auto' uses the first known helper found and makepkg as a fallback.|
|
||||||
|skip_installed |no |no |yes, no |Skip operations if the package is present.|
|
|skip_installed |no |no |yes, no |Skip operations if the package is present.|
|
||||||
|skip_pgp_check |no |no |yes, no |Skip verification of PGP signatures. This is useful when installing packages on a host without GnuPG (properly) configured. Only valid with makepkg.|
|
|aur_only |no |no |yes, no |Limit operation to the AUR. Compatible with yay, pacaur, aurman and trizen.|
|
||||||
|aur_only |no |no |yes, no |Limit operation to the AUR. Compatible with yay, aurman, pacaur and trizen.|
|
|skip_pgp_check |no |no |yes, no |Only valid with makepkg. Skip PGP signatures verification of source file, useful when installing packages without GnuPG properly configured.|
|
||||||
|
|ignore_arch |no |no |yes, no |Only valid with makepkg. Ignore a missing or incomplete arch field, useful when the PKGBUILD does not have the arch=('yourarch') field.|
|
||||||
|
|
||||||
### Note
|
### Note
|
||||||
* Either *name* or *upgrade* is required, both cannot be used together.
|
* Either *name* or *upgrade* is required, both cannot be used together.
|
||||||
@@ -37,9 +38,37 @@ Just clone the *ansible-aur* repository into your user custom-module directory:
|
|||||||
git clone https://github.com/kewlfft/ansible-aur.git ~/.ansible/plugins/modules/aur
|
git clone https://github.com/kewlfft/ansible-aur.git ~/.ansible/plugins/modules/aur
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Ansible Galaxy
|
||||||
|
*ansible-aur* is available in Galaxy which is a hub for sharing Ansible content. To download it, use:
|
||||||
|
```
|
||||||
|
ansible-galaxy install kewlfft.aur
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that if this module is installed from Ansible Galaxy, you will need to list it explicitly in your playbook:
|
||||||
|
```
|
||||||
|
# playbook.yml
|
||||||
|
- hosts: localhost
|
||||||
|
roles:
|
||||||
|
- kewlfft.aur
|
||||||
|
tasks:
|
||||||
|
- aur: name=package_name
|
||||||
|
```
|
||||||
|
|
||||||
|
or in your role:
|
||||||
|
```
|
||||||
|
# meta/main.yml
|
||||||
|
dependencies:
|
||||||
|
- kewlfft.aur
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
# tasks/main.yml
|
||||||
|
- aur: name=package_name
|
||||||
|
```
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
### Notes
|
### Notes
|
||||||
* This module aims to cover the AUR; for package removal or system upgrade with the repositories, it is recommended to use the official *pacman* module.
|
* The scope of this module is installation and update from the AUR; for package removal or system upgrade from the official repositories, it is recommended to use the official *pacman* module.
|
||||||
* The *--needed* parameter of the helper is systematically used, it means if a package is up to date, it is not built and reinstalled.
|
* The *--needed* parameter of the helper is systematically used, it means if a package is up to date, it is not built and reinstalled.
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
@@ -35,7 +35,7 @@ options:
|
|||||||
description:
|
description:
|
||||||
- The helper to use, 'auto' uses the first known helper found and makepkg as a fallback.
|
- The helper to use, 'auto' uses the first known helper found and makepkg as a fallback.
|
||||||
default: auto
|
default: auto
|
||||||
choices: [ auto, yay, aurman, pacaur, trizen, pikaur, makepkg ]
|
choices: [ auto, yay, pacaur, trizen, pikaur, aurman, makepkg ]
|
||||||
|
|
||||||
skip_installed:
|
skip_installed:
|
||||||
description:
|
description:
|
||||||
@@ -45,9 +45,16 @@ options:
|
|||||||
|
|
||||||
skip_pgp_check:
|
skip_pgp_check:
|
||||||
description:
|
description:
|
||||||
- Skip verification of PGP signatures.
|
- Only valid with makepkg.
|
||||||
This is useful when installing packages on a host without GnuPG (properly) configured.
|
Skip PGP signatures verification of source file.
|
||||||
Only valid with makepkg.
|
This is useful when installing packages without GnuPG (properly) configured.
|
||||||
|
type: bool
|
||||||
|
default: no
|
||||||
|
|
||||||
|
ignore_arch:
|
||||||
|
description:
|
||||||
|
- Only valid with makepkg.
|
||||||
|
Ignore a missing or incomplete arch field, useful when the PKGBUILD does not have the arch=('yourarch') field.
|
||||||
type: bool
|
type: bool
|
||||||
default: no
|
default: no
|
||||||
|
|
||||||
@@ -78,14 +85,14 @@ def_lang = ['env', 'LC_ALL=C']
|
|||||||
|
|
||||||
use_cmd = {
|
use_cmd = {
|
||||||
'yay': ['yay', '-S', '--noconfirm', '--needed', '--cleanafter'],
|
'yay': ['yay', '-S', '--noconfirm', '--needed', '--cleanafter'],
|
||||||
'aurman': ['aurman', '-S', '--noconfirm', '--noedit', '--needed', '--skip_news', '--pgp_fetch', '--skip_new_locations'],
|
|
||||||
'pacaur': ['pacaur', '-S', '--noconfirm', '--noedit', '--needed'],
|
'pacaur': ['pacaur', '-S', '--noconfirm', '--noedit', '--needed'],
|
||||||
'trizen': ['trizen', '-S', '--noconfirm', '--noedit', '--needed'],
|
'trizen': ['trizen', '-S', '--noconfirm', '--noedit', '--needed'],
|
||||||
'pikaur': ['pikaur', '-S', '--noconfirm', '--noedit', '--needed'],
|
'pikaur': ['pikaur', '-S', '--noconfirm', '--noedit', '--needed'],
|
||||||
|
'aurman': ['aurman', '-S', '--noconfirm', '--noedit', '--needed', '--skip_news', '--pgp_fetch', '--skip_new_locations'],
|
||||||
'makepkg': ['makepkg', '--syncdeps', '--install', '--noconfirm', '--needed']
|
'makepkg': ['makepkg', '--syncdeps', '--install', '--noconfirm', '--needed']
|
||||||
}
|
}
|
||||||
|
|
||||||
has_aur_option = ['yay', 'aurman', 'pacaur', 'trizen']
|
has_aur_option = ['yay', 'pacaur', 'trizen', 'aurman']
|
||||||
|
|
||||||
|
|
||||||
def package_installed(module, package):
|
def package_installed(module, package):
|
||||||
@@ -101,11 +108,17 @@ def check_packages(module, packages):
|
|||||||
Inform the user what would change if the module were run
|
Inform the user what would change if the module were run
|
||||||
"""
|
"""
|
||||||
would_be_changed = []
|
would_be_changed = []
|
||||||
|
diff = {
|
||||||
|
'before': '',
|
||||||
|
'after': '',
|
||||||
|
}
|
||||||
|
|
||||||
for package in packages:
|
for package in packages:
|
||||||
installed = package_installed(module, package)
|
installed = package_installed(module, package)
|
||||||
if not installed:
|
if not installed:
|
||||||
would_be_changed.append(package)
|
would_be_changed.append(package)
|
||||||
|
if module._diff:
|
||||||
|
diff['after'] += package + "\n"
|
||||||
|
|
||||||
if would_be_changed:
|
if would_be_changed:
|
||||||
status = True
|
status = True
|
||||||
@@ -119,7 +132,7 @@ def check_packages(module, packages):
|
|||||||
message = 'all packages are already installed'
|
message = 'all packages are already installed'
|
||||||
else:
|
else:
|
||||||
message = 'package is already installed'
|
message = 'package is already installed'
|
||||||
module.exit_json(changed=status, msg=message)
|
module.exit_json(changed=status, msg=message, diff=diff)
|
||||||
|
|
||||||
|
|
||||||
def install_with_makepkg(module, package):
|
def install_with_makepkg(module, package):
|
||||||
@@ -133,20 +146,15 @@ def install_with_makepkg(module, package):
|
|||||||
return (1, '', 'package {} not found'.format(package))
|
return (1, '', 'package {} not found'.format(package))
|
||||||
result = result['results'][0]
|
result = result['results'][0]
|
||||||
f = open_url('https://aur.archlinux.org/{}'.format(result['URLPath']))
|
f = open_url('https://aur.archlinux.org/{}'.format(result['URLPath']))
|
||||||
current_path = os.getcwd()
|
|
||||||
with tempfile.TemporaryDirectory() as tmpdir:
|
with tempfile.TemporaryDirectory() as tmpdir:
|
||||||
os.chdir(tmpdir)
|
tar = tarfile.open(mode='r|*', fileobj=f)
|
||||||
tar_file = '{}.tar.gz'.format(result['Name'])
|
tar.extractall(tmpdir)
|
||||||
with open(tar_file, 'wb') as out:
|
|
||||||
out.write(f.read())
|
|
||||||
tar = tarfile.open(tar_file)
|
|
||||||
tar.extractall()
|
|
||||||
tar.close()
|
tar.close()
|
||||||
os.chdir(format(result['Name']))
|
|
||||||
if module.params['skip_pgp_check']:
|
if module.params['skip_pgp_check']:
|
||||||
use_cmd['makepkg'].append('--skippgpcheck')
|
use_cmd['makepkg'].append('--skippgpcheck')
|
||||||
rc, out, err = module.run_command(use_cmd['makepkg'], check_rc=True)
|
if module.params['ignore_arch']:
|
||||||
os.chdir(current_path)
|
use_cmd['makepkg'].append('--ignorearch')
|
||||||
|
rc, out, err = module.run_command(use_cmd['makepkg'], cwd=os.path.join(tmpdir, result['Name']), check_rc=True)
|
||||||
return (rc, out, err)
|
return (rc, out, err)
|
||||||
|
|
||||||
|
|
||||||
@@ -201,6 +209,10 @@ def main():
|
|||||||
'name': {
|
'name': {
|
||||||
'type': 'list',
|
'type': 'list',
|
||||||
},
|
},
|
||||||
|
'ignore_arch': {
|
||||||
|
'default': False,
|
||||||
|
'type': 'bool',
|
||||||
|
},
|
||||||
'upgrade': {
|
'upgrade': {
|
||||||
'default': False,
|
'default': False,
|
||||||
'type': 'bool',
|
'type': 'bool',
|
17
meta/main.yml
Normal file
17
meta/main.yml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
galaxy_info:
|
||||||
|
author: kewlfft
|
||||||
|
role_name: aur
|
||||||
|
description: Ansible module to use some Arch User Repository (AUR) helpers as well as makepkg.
|
||||||
|
license: GPL-3.0-or-later
|
||||||
|
min_ansible_version: 2.0
|
||||||
|
|
||||||
|
# https://galaxy.ansible.com/api/v1/platforms/
|
||||||
|
platforms:
|
||||||
|
- name: ArchLinux
|
||||||
|
versions:
|
||||||
|
- any
|
||||||
|
|
||||||
|
galaxy_tags:
|
||||||
|
- aur
|
||||||
|
|
||||||
|
dependencies: []
|
Reference in New Issue
Block a user