pinentry: add gui multi-valued variant (#24717)

This commit is contained in:
Adam J. Stewart 2021-07-09 07:26:02 -05:00 committed by GitHub
parent 4a44f023e8
commit ace28e2ef5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -20,27 +20,35 @@ class Pinentry(AutotoolsPackage):
version('1.1.1', sha256='cd12a064013ed18e2ee8475e669b9f58db1b225a0144debdb85a68cecddba57f')
version('1.1.0', sha256='68076686fa724a290ea49cdf0d1c0c1500907d1b759a3bcbfbec0293e8f56570')
supported_guis = [
'curses', 'tty', 'emacs', 'efl', 'gtk2', 'gnome3', 'qt', 'qt5', 'tqt', 'fltk'
]
# Default to 'tty' as it has no additional dependencies
variant('gui', default='tty', description='GUI to use for passphrase entry',
values=supported_guis, multi=True)
depends_on('libgpg-error@1.16:')
depends_on('libassuan@2.1.0:')
# Optional GUI dependencies
depends_on('ncurses', when='gui=curses')
depends_on('emacs', when='gui=emacs')
# depends_on('efl@1.18:', when='gui=efl') # Enlightenment
depends_on('gtkplus@2:', when='gui=gtk2')
# depends_on('gnome@3:', when='gui=gnome3') # GNOME
depends_on('qt@4.4.0:', when='gui=qt')
depends_on('qt@5.0:5.999', when='gui=qt5')
# depends_on('tqt', when='gui=tqt') # Trinity QT
depends_on('fltk@1.3:', when='gui=fltk')
# TODO: add packages for these optional GUIs
conflicts('gui=efl')
conflicts('gui=gnome3')
conflicts('gui=tqt')
def configure_args(self):
return [
'--enable-static',
'--enable-shared',
# Autotools automatically enables these if dependencies found
# TODO: add variants for these
'--disable-pinentry-curses',
'--disable-pinentry-emacs',
'--disable-pinentry-gtk2',
'--disable-pinentry-gnome3',
'--disable-pinentry-qt',
'--disable-pinentry-qt5',
'--disable-pinentry-tqt',
'--disable-pinentry-fltk',
# No dependencies, simplest installation
'--enable-pinentry-tty',
args = [
# Disable extra features
'--disable-fallback-curses',
'--disable-inside-emacs',
@ -50,3 +58,27 @@ def configure_args(self):
'--with-gpg-error-prefix=' + self.spec['libgpg-error'].prefix,
'--with-libassuan-prefix=' + self.spec['libassuan'].prefix,
]
if 'gui=curses' in self.spec:
args.append('--with-ncurses-include-dir=' +
self.spec['ncurses'].headers.directories[0])
for gui in self.supported_guis:
if 'gui=' + gui in self.spec:
args.append('--enable-pinentry-' + gui)
else:
args.append('--disable-pinentry-' + gui)
return args
def test(self):
kwargs = {
'exe': self.prefix.bin.pinentry,
'options': ['--version'],
'expected': [str(self.version)],
}
self.run_test(**kwargs)
for gui in self.supported_guis:
if 'gui=' + gui in self.spec:
kwargs['exe'] = self.prefix.bin.pinentry + '-' + gui
self.run_test(**kwargs)