Re: GPGME 1.23.1

Denis Corbin <[email protected]> Thu, 9 Nov 2023 22:17:36 +0100
Newsgroups gmane.comp.sysutils.backup.dar.support
Message-ID <[email protected]>
On 09/11/2023 21:05, Marcin Wieczorek wrote:
> Well the symlink trick worked, details from my os below.
> My backup is being created at the moment, I'll let you know if there are
> any issues when I actually test it.

OK good to know,

[...]

>> You will end with a dar source package that should rely on gpgrt-config on
>> you system and thus be able to detect libgpgme presence... compile and
>> install dar/libdar.
> 
> Unless there is some magic stored in the git repo (and removed from tgz)
> I don't see how using git would turn gpgme-config to gpgrt-config. But I
> don't know your codebase.

There is no more magic if I/you explain/understand the process:

To build the configure script, which is necessary to setup and then 
compile dar/libdar from the source code found in git, you execute the 
script misc/init also found in git:

https://raw.githubusercontent.com/Edrusb/DAR/master/misc/init

This script invokes in particular the autoconf command, which reads the 
dar's configure.ac file in order to build the expected configure script.

autoconf relies on m4 files gathered from the current operating system 
(by mean of 'aclocal -I m4' command). But theses m4 definitions are 
expected to be portable.

When autoconf reads the 'AM_PATH_GPGME' string from dar's configure.ac 
file, it looks for its definition in the m4 files and replaces this 
string by the definition he has found (which today either relies on 
gpgme-config or gpgrt-config), something that comes with the libgpgme 
package.

The resulting configure script should be a portable shell script that 
invokes commands, tests their existence, their output and in 
consequence, defines a set of C macros (#define...) gathered in the 
config.h file.

This config.h file is included everywhere in dar/libdar code and 
depending on the macros existence or value, leads to include or not 
include a particular system header file, activate or not activate a 
given feature: For example bzip2 compression will not be activated if 
"#define HAVE_LIBBZ2" is not set to "1", and the <bzlib.h> file will not 
included at compilation time nor at linking time the "-lbz2" will be used.

So yes, the result is magic: the same dar/libdar code adapts to the 
context and compiles with and without libbz2, zlib, libgpgme, libargon2 
presence.

There is even some more weird things where a given Unix symbol is 
defined in <unistd.h> on some system, in <fcntl.h> and <sys/types.h> on 
some other systems and so on... Sometimes this is even different symbols 
(bcopy vs memcpy) that are present either one here or the other there, 
and even both at time on some Unix system.

Without autoconf to detect and setup all these possibilities dar/libdar 
would not "magically" compile on FreeBSD, Debian, Arch, RedHat, Android, 
VoidLinux, Windows and I probably forget some others... without code 
modification.

> 
> For the record I am the maintainer of the dar package in Arch User
> Repository, which is a community maintained repository of packages for
> the ArchLinux system. 

OK, I understand.

> I have my dar fixed, but that won't help other
> uses. I'll consult the distro docs or IRC to figure out if I can modify
> PATH to fake the symlink (during build). In the meantime if something
> changes upstream about the issue I'd love to know.

I will test the building of the configure file using a more recent 
libgpgme library (the same as the one you were using: version 1.23.1) 
and see if the new macro definition brought by libgpgme is backward 
compatible (Read, if the new macro can work with both gpgme-config and 
gpgrt-config which ever the system has). If so I'll make an updated 
tarball for release 2.7.13. Else, I'm afraid that any package of dar 
code I will produce may not always detect the presence of libgpgme 
depending on the version of libgpgme the system has...

> 
> I kindly thank you for your help.

You're welcome,

> 
> Best regards,
> Marcin Wieczorek
> 
> 

Cheers,
Denis
OpenPGP_signature.asc (application/pgp-signature, 840 B)
-----BEGIN PGP SIGNATURE-----

wsF5BAABCAAjFiEEVeSEpqXFvH9T9/cuqLFBYNNrO6cFAmVNTHAFAwAAAAAACgkQqLFBYNNrO6dE
dA/+OYugwH7cBGn9EUQexxZE5cis6tXtdgXN2Aj0+KLCLwW7ButDFhnimReqKc3gU7baQBkHG7ID
BkNPEhMmketpI1zre1eXqbCDfmFCnPm6QfjNpVH6s/aqmOZKH5hV2mGrGZ1Iia9WIFh3uN/E3bXR
rWY1sJ3cI4ZA3KJs4yoZ+O6WF6gvKFww9mqJ46dB/f6cyYa8dOXM0BdooE1rzF/4AcAD+DpnGecM
x1fLUmwm8rN7Co0SzoTWtU6HrBfupWLEmJ3yVLEIdqXmupkoF618E4gePyOf1s0RlAt1E25OXDHT
PoqI3MF/PPbcFH/Go7GbM4E4QqSPzjOXZ8RghJx6vPndGHXFlLy/X9NLy4A5jkd8odzCT1BdtRiz
RwfgUVMakxRBRgOHJdhIcs0VSpt1uUrc4L7XKVyal+hpOtsgvve0mOlIJ0cxRdwYlqzXBT8CvEYt
BmELQRMzmsxiVSXptl+dNHDLK9z4KZsHRGUPcTEYg6+IqdAlcWUZmR4wD2RaBeaGSpqpeA53zRMW
oimV8lB/VQy9zPiRa/L+54dCHAIT/ogrr5CrbrYrnGymMXj/x26BdixnB3kTRSuPiegSaOXEFFH4
QJs8cNojs1/8DzhBNW4WlFRggoxUZodLI3zdQMILrU1ObDUVhOX0MnqjCNSNp2jS7/UD3hhMU7eP
D3s=
=vJok
-----END PGP SIGNATURE-----