Copyright (C) 1991-2013 Free Software Foundation, Inc.
Copyright (C) 2000-2001 Werner Koch
- Copyright (C) 2001-2021 g10 Code GmbH
+ Copyright (C) 2001-2023 g10 Code GmbH
Copyright (C) 2002 Klarälvdalens Datakonsult AB
Copyright (C) 2004-2008 Igor Belyi
Copyright (C) 2002 John Goerzen
src/stpcpy.c, src/w32-ce.c.
g10 Code GmbH <code@g10code.com>
- - All stuff since mid march 2001.
+ - All stuff since mid March 2001.
Werner Koch <wk@gnupg.org>
- Design and most stuff.
-2022-08-10 Werner Koch <wk@gnupg.org>
-
- Release 1.18.0.
- + commit 26ff163bd6912fa7e8cb522d0799e17095ac1efb
-
-
- tests: Make t-edit-sign more robust.
- + commit 9ee74b68e688b474881768a5ae59d857397c8fbf
- * tests/gpg/t-edit-sign.c (interact_fnc): Provide the default answer.
-
-2022-08-10 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add missing include.
- + commit 5d91182c955d128c8ff7cdd29189fc3ae06201d9
- * lang/qt/tests/t-revokekey.cpp: Include QDebug.
-
-2022-08-09 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add job to set the primary user ID of OpenPGP keys.
- + commit db7d79063f57c6e0ccf382fdf1cf47d514e12f6e
- * lang/qt/src/qgpgmesetprimaryuseridjob.cpp,
- lang/qt/src/qgpgmesetprimaryuseridjob.h,
- lang/qt/src/setprimaryuseridjob.h: New.
- * lang/qt/src/protocol.h (class Protocol): Add pure virtual member
- function setPrimaryUserIDJob.
- * lang/qt/src/protocol_p.h (Protocol::setPrimaryUserIDJob): New.
- * lang/qt/src/job.cpp, lang/qt/src/Makefile.am: Update accordingly.
-
- * lang/qt/tests/t-setprimaryuserid.cpp: New.
- * lang/qt/tests/Makefile.am: Add new test.
-
- cpp: Add support for gpgme_op_set_uid_flag.
- + commit 125867f268f2a49ff060a7adc859500500b77025
- * lang/cpp/src/context.cpp, lang/cpp/src/context.h
- (Context::setPrimaryUid, Context::startSetPrimaryUid): New.
-
-2022-08-09 NIIBE Yutaka <gniibe@fsij.org>
-
- python: Don't call __del__ from __exit__ method.
- + commit f8d99bb9e4a7f6229c19c4fbd951ccad6fa97bde
- * lang/python/src/core.py (Context, Data): Don't call __del__
- from __exit__ method, as the object may be still in use.
- * lang/python/tests/t-idiomatic.py: Fix the test.
-
-2022-08-05 NIIBE Yutaka <gniibe@fsij.org>
-
- python: Don't access gpgme with wrapped=None.
- + commit 180899c7c313335128606bfff738da00dce4f5c9
- * lang/python/src/core.py (GpgmeWrapper, Context): Check self.wrapped
- is valid.
-
-2022-08-05 Jasper Spaans <jasper@startmail.com>
-
- python: Reset passphrase callback correctly.
- + commit b2f224a471fecce566443bf0f0e554de6f567f4e
- * lang/python/src/core.py (Context(GpgmeWrapper)): Reset passphrase
- callback correctly, for encrypt, decrypt, create_key, and
- create_subkey methods.
-
-2022-08-04 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Remove job for refreshing OpenPGP keys.
- + commit c3b183831db5a2a490ba49bf4804730679eb59d0
- * lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp,
- lang/qt/src/qgpgmerefreshopenpgpkeysjob.h,
- lang/qt/src/refreshopenpgpkeysjob.h: Remove.
- * lang/qt/src/Makefile.am, lang/qt/src/job.cpp: Update accordingly.
- * lang/qt/src/protocol.h (class Protocol): Remove pure virtual member
- function refreshOpenPGPKeysJob.
- * lang/qt/src/protocol_p.h (Protocol::refreshOpenPGPKeysJob): Remove.
-
- * lang/qt/tests/run-refreshkeysjob.cpp (main): Use ReceiveKeysJob for
- OpenPGP keys.
-
-2022-07-21 NIIBE Yutaka <gniibe@fsij.org>
-
- build: Update config.guess and config.sub.
- + commit cc37447b625b45efb5c94c40461084460f03f24a
- * build-aux/config.guess: Update from upstream.
- * build-aux/config.sub: Ditto.
-
- build: Fix for modern Autoconf.
- + commit 16020c5fd96427961734c4a8f5b2b5e901b1bb60
- * m4/glib-2.0.m4: Use AC_RUN_IFELSE and AC_LINK_IFELSE.
-
-2022-07-05 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Allow setting the file name of signed and encrypted data.
- + commit 5436b309fe67dd3c4531f751d99c98128ca66e4d
- * lang/qt/src/Makefile.am (qgpgme_sources): Add signencryptjob.cpp.
- * lang/qt/src/signencryptjob.cpp: New.
- * lang/qt/src/signencryptjob.h (class SignEncryptJob): Add member
- functions setFileName, fileName.
- * lang/qt/src/qgpgmesignencryptjob.cpp (sign_encrypt): Set file name of
- input.
- (sign_encrypt_qba, QGpgMESignEncryptJob::exec,
- QGpgMESignEncryptJob::start): Pass file name to sign_encrypt resp.
- sign_encrypt_qba.
-
- qt: Allow setting the file name of encrypted data.
- + commit bc10169724d2806b38f91beff39ef637b5e52b8d
- * lang/qt/src/Makefile.am (qgpgme_sources): Add encryptjob.cpp.
- * lang/qt/src/encryptjob.cpp: New.
- * lang/qt/src/encryptjob.h (class EncryptJob): Add member functions
- setFileName, fileName.
- * lang/qt/src/qgpgmeencryptjob.cpp (encrypt): Set file name of input.
- (encrypt_qba, QGpgMEEncryptJob::exec, QGpgMEEncryptJob::start): Pass
- file name to encrypt resp. encrypt_qba.
-
-2022-07-04 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Fix filename of cmake config files for w32.
- + commit 31423945d214292f24dd1f700cd8ab53722dd1eb
- * lang/qt/src/Makefile.am (EXTRA_DIST): Add
- QGpgmeConfig-w32.cmake.in.in.
-
-2022-07-04 Laurent Montel <montel@kde.org>
-
- qt: Add #include <QStringList> needed for building against qt6.
- + commit d42323f90213157a5e847bfa89bee55a29ee8df0
- * lang/qt/src/downloadjob.h, lang/qt/src/exportjob.h,
- lang/qt/src/keylistjob.h lang/qt/src/refreshkeysjob.h: in qt6 we need
- to use #include <QStringList>
-
-2022-06-30 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp: Remove obsolete compatibility with KF5 variants.
- + commit 6e45da30ae787dd45836e55d34f7aa4e001b641c
- * lang/cpp/src/GpgmeppConfig-w32.cmake.in.in,
- lang/cpp/src/GpgmeppConfig.cmake.in.in: Remove find_package() call.
-
-2022-06-28 NIIBE Yutaka <gniibe@fsij.org>
-
- build: When no gpg-error-config, not install gpgme-config.
- + commit 02a2f350359013bf33c3957e95c98726273ced8c
- * configure.ac (USE_GPGRT_CONFIG): New.
- * src/Makefile.am [USE_GPGRT_CONFIG]: Conditionalize the install
- of gpgme-config.
-
- build: Update gpg-error.m4.
- + commit aa94b4cee5aabfa9097abd4560fdf002516db82a
- * m4/gpg-error.m4: Update from libgpg-error.
-
-2022-06-14 Ingo Klöcker <dev@ingo-kloecker.de>
-
- tests: Add support for clear text signatures to test runner.
- + commit d59cf1725755f24e79a0ce12ddc59fedc97292c6
- * tests/run-sign.c (show_usage): Add new argument "--clear".
- (main): Handle new argument "--clear".
-
-2022-06-10 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt,tests: Allow 1-day-offset for expiration date.
- + commit fd813f5c3938423137db1fcb02c3c527bd9f58c6
- * lang/qt/tests/t-various.cpp (TestVarious::testSignKeyWithExpiration):
- Assert that the expiration date is either 2106-02-05 or 2106-02-04.
-
- qt: Prevent u32 overflow when calculating expiration date.
- + commit 7870fdbfeff47755138136dbd6648b18f6b4fc76
- * lang/qt/src/qgpgmesignkeyjob.cpp (sign_key): Change maxAllowedDate to
- 2106-02-05. Change log-level from warning to debug.
- * lang/qt/tests/t-various.cpp (TestVarious::testSignKeyWithExpiration):
- Remove check for warning. Adapt assertion.
-
-2022-06-09 Ingo Klöcker <dev@ingo-kloecker.de>
-
- Revert "tests: Avoid problems with local time across a day boundary."
- + commit 918afc809d40e057266ced6dfc98a5b3e5b4d3ee
- This reverts commit 5ba0e454a37c9b0d3badddfc2dad8bcc7c7af874.
-
- core: Handle import status lines during keylist operation.
- + commit 5d19eb4ad5ad9e93c34bf9b03ed6f583c6bf8491
- * src/keylist.c (gpgme_op_keylist_from_data_start): Call
- _gpgme_op_import_init_result.
-
-2022-05-12 Andre Heinecke <aheinecke@gnupg.org>
-
- cpp: Export KeyListModeSaver.
- + commit f3011b5a1918dbe9d2b1316707a2c1034c847507
- * lang/cpp/src/context.h (Context::KeyListModeSaver): Add Export.
-
-2022-05-06 Ingo Klöcker <dev@ingo-kloecker.de>
-
- core: Set SECRET flag of subkeys stored on smart cards.
- + commit f72cf726ca749a138a8950b02c51e7b3a50c6a83
- * src/keylist.c (parse_sec_field15): Set SECRET flag.
-
-2022-05-05 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp: Output more properties of a subkey.
- + commit 306fd9c915cbccddbd146f37ba9bd826f10d2535
- * lang/cpp/src/key.cpp (ostream operator<< for Subkey): Fix wrong output
- of isInvalid and isDisabled flags. Add output of key grip, card serial
- number and the flags isSecret, isQualified, isDeVs, and isCardKey.
-
- cpp,tests: Actually parse the --with-secret option.
- + commit e029fd27350fcbda1b4689bc557e996d749d78ac
- * lang/cpp/tests/run-keylist.cpp (main): Handle --with-secret option.
- Print error for unknown option.
-
- qt: Revert change of result signal of RefreshKeysJob.
- + commit 9e8c8e448ec83c454fb310f80ce0bf9f828a7145
- * lang/qt/src/refreshkeysjob.h (RefreshKeysJob::result): Remove optional
- parameters auditLogAsHtml and auditLogError.
- * lang/qt/tests/run-refreshkeysjob.cpp (main): Update accordingly.
-
- qt: Use lambda instead of std::bind.
- + commit 15a4940aa73019bce002302b14aaa73312da3df4
- * lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp
- (QGpgMERefreshOpenPGPKeysJob::start): Replace std::bind call with a
- lambda.
-
-2022-05-04 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Emit import result when refreshing OpenPGP keys.
- + commit c64a8daf507a2216611861a12f312466b0bae8b2
- * lang/qt/src/refreshopenpgpkeysjob.h: New.
- * lang/qt/src/Makefile.am, lang/qt/src/job.cpp: Update accordingly.
- * lang/qt/src/qgpgmerefreshopenpgpkeysjob.h (class
- QGpgMERefreshOpenPGPKeysJob): Derive from RefreshOpenPGPKeysJob with
- result ImportResult. Remove unused start overload.
- * lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp (locate_external_keys):
- Ignore result of KeyListJob. Return import result.
- (receive_keys): Return import result.
- (refresh_keys): Merge the two import results and return the result.
- * lang/qt/src/protocol.h (class Protocol): Add pure virtual member
- function refreshOpenPGPKeysJob.
- * lang/qt/src/protocol_p.h (Protocol::refreshKeysJob): Return nullptr
- for OpenPGP protocol.
- (Protocol::refreshOpenPGPKeysJob): New.
-
- * lang/qt/tests/run-refreshkeysjob.cpp (main): Use appropriate job
- for the protocol of the key to refresh.
-
- cpp: Allow retrieving import result of key listing with locate mode.
- + commit 3519d6117332f25b601c9c0636878baf4e8cf55b
- * lang/cpp/src/context_p.h (enum Context::Private::Operation): Add
- value KeyListWithImport.
- * lang/cpp/src/context.cpp (Context::startKeyListing, Context::nextKey):
- Set lastop to KeyListWithImport if keylist mode includes Locate.
-
- core: Handle import status lines during keylist operation.
- + commit f3ca57dfd7af19f9b2fd01616a81dc889707a4d3
- * src/import.c (import_status_handler): Rename to ...
- (_gpgme_import_status_handler): this. Make non-static.
- (_gpgme_op_import_init_result): New.
- (_gpgme_op_import_start, _gpgme_op_import_keys_start,
- _gpgme_op_receive_keys_start): Call _gpgme_op_import_init_result.
- * src/keylist.c (keylist_status_handler): Call
- _gpgme_import_status_handler to handle import status lines.
- (gpgme_op_keylist_start, gpgme_op_keylist_ext_start): Call
- _gpgme_op_import_init_result.
- * src/ops.h (_gpgme_op_import_init_result,
- _gpgme_import_status_handler): New prototypes.
-
- cpp: Allow merging the results of two imports.
- + commit d911a1536488a5645f257a48b4d9cf221c0ed6b6
- * lang/cpp/src/importresult.h, lang/cpp/src/importresult.cpp (class
- ImportResult): Add member function mergeWith.
-
-2022-05-02 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Apply compiler hint.
- + commit f1a354fd57d6cc9e34ff33ea60aa4ef0aca382a3
- * lang/qt/tests/t-verify.cpp (VerifyTest::testSignatureKey): Use
- reference type to prevent copying.
-
- qt: Use GpgME::Locate alias.
- + commit 540e7bf3d457a78497b6b7ac33b486b3c5b50857
- * lang/qt/src/protocol_p.h (Protocol::locateKeysJob): Use Locate alias
- instead of Extern|Local.
- * lang/qt/src/qgpgmekeyformailboxjob.cpp (do_work): Ditto.
-
- qt: Add job for refreshing OpenPGP keys.
- + commit e12861f18c6b431b40bfa78eb6f1d149690a5fcd
- * lang/qt/src/qgpgmerefreshopenpgpkeysjob.h,
- lang/qt/src/qgpgmerefreshopenpgpkeysjob.cpp: New.
- * lang/qt/src/Makefile.am: Add new files.
- * lang/qt/src/protocol_p.h (Protocol::refreshKeysJob): Add support for
- OpenPGP protocol.
-
- cpp: Add RAII class for saving/restoring the key list mode.
- + commit 34786132fed0a776d4cd314c44ed62e29ff75328
- * lang/cpp/src/context.h, lang/cpp/src/context.cpp (class Context):
- Add nested class KeyListModeSaver.
-
- qt: Add debug helper for Result classes with output stream operator.
- + commit 99fd565889f3d22459ff82296b206fa228a4c468
- * lang/qt/src/util.h (toLogString): New.
-
- qt: Factor out helper for getting the fingerprints of some keys.
- + commit 0c304beeaab54dc25a8572270704fd5fa90cf836
- * lang/qt/src/util.h, lang/qt/src/util.cpp (toFingerprints): New.
- * lang/qt/src/qgpgmerefreshsmimekeysjob.cpp: Use the helper.
-
-2022-04-29 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Fix connection to readyReadStandardOutput signal.
- + commit 54c4fd16d1832fcce05aa9e471a4acebff0e3269
- * lang/qt/src/qgpgmerefreshsmimekeysjob.h,
- lang/qt/src/qgpgmerefreshsmimekeysjob.cpp
- (QGpgMERefreshSMIMEKeysJob::slotStderr): Remove.
- * lang/qt/src/qgpgmerefreshsmimekeysjob.cpp
- (QGpgMERefreshSMIMEKeysJob::startAProcess): Handle
- readyReadStandardOutput and readyReadStandardError signals with lambdas.
-
- qt: Add test runner for refresh job.
- + commit 9686258bd16707a5e1eb292262a6c28faa581c34
- * lang/qt/tests/run-refreshkeysjob.cpp: New.
- * lang/qt/tests/Makefile.am (run_refreshkeysjob_SOURCES): New.
- (noinst_PROGRAMS): Add new build artifact.
-
- qt: Make RefreshKeysJob result compatible with standard job result.
- + commit f4c35609257156d0e32b8dd7315011b484919f05
- * lang/qt/src/refreshkeysjob.h (RefreshKeysJob::result): Add optional
- parameters auditLogAsHtml and auditLogError.
-
- qt: Allow refreshing a list of keys.
- + commit fd97cbaa44b8e7914089319afac1e776c9a64283
- * lang/qt/src/refreshkeysjob.h (class RefreshKeysJob): Add pure virtual
- member function start taking a list of keys.
- * lang/qt/src/qgpgmerefreshsmimekeysjob.h,
- lang/qt/src/qgpgmerefreshsmimekeysjob.cpp (class
- QGpgMERefreshSMIMEKeysJob): Implement new member function.
-
- qt: Minor refactoring.
- + commit 62e770971786f272ecc079b78b11e798ec699d77
- * lang/qt/src/qgpgmerefreshsmimekeysjob.cpp: Use namespace QGpgME.
-
- qt: Rename QGpgMERefreshKeysJob to QGpgMERefreshSMIMEKeysJob.
- + commit f47bc992ae6ca6a9043d4de5bfc10179e4676256
- * lang/qt/src/qgpgmerefreshkeysjob.h,
- lang/qt/src/qgpgmerefreshkeysjob.cpp: Change name to
- * lang/qt/src/qgpgmerefreshsmimekeysjob.h,
- lang/qt/src/qgpgmerefreshsmimekeysjob.cpp: ... this, and adapt the
- include guard.
- (class QGpgMERefreshKeysJob): Rename to QGpgMERefreshSMIMEKeysJob.
- * lang/qt/src/Makefile.am: Adapt mentioned file names accordingly.
- * lang/qt/src/protocol_p.h (Protocol::refreshKeysJob): Use renamed
- class.
-
-2022-04-28 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp,tests: Verify that requested keylist mode is used.
- + commit 359906c8bcde7e351540708777e3678fee0cc2c1
- * lang/cpp/tests/run-getkey.cpp, lang/cpp/tests/run-keylist.cpp (main):
- Check used keylist mode.
-
-2022-04-27 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp: Support new keylist modes.
- + commit dea872f21ff77cd58bafe0966d89d6331c8d2e07
- * lang/cpp/src/global.h (ForceExtern, LocateExternal, KeyListModeMask):
- New.
- * lang/cpp/src/context.cpp (operator<<): Add check.
- * lang/cpp/src/util.h (gpgme_keylist_mode_t,
- convert_from_gpgme_keylist_mode_t): Handle ForceExtern.
- * lang/cpp/tests/run-getkey.cpp (show_usage, main): Add arguments
- --force-extern and --locate-external.
- * lang/cpp/tests/run-keylist.cpp (show_usage, main): Ditto.
-
- core: Support --locate-external-keys command of gpg.
- + commit aff9aaac68450e76f84d0f9a3feabffe9e82dd7e
- * src/gpgme.h.in (GPGME_KEYLIST_MODE_FORCE_EXTERN): New.
- (GPGME_KEYLIST_MODE_LOCATE_EXTERNAL): New.
- * src/gpgme.c (gpgme_set_keylist_mode): Check for invalid mode.
- * src/engine-gpg.c (gpg_keylist_build_options): Use
- "--locate-external-keys" instead of "--locate-keys" if flag is set.
- * src/gpgme-json.c (op_keylist): New flag "force-extern".
- * src/gpgme-tool.c (gt_get_keylist_mode, cmd_keylist_mode): Handle
- new mode.
-
-2022-04-25 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Rely on the bad passphrase error reported by gpg.
- + commit 512f11b458d82bb8a42b5764f11e11978173f896
- * lang/qt/src/qgpgmedecryptverifyjob.cpp (patch_decryption_result):
- Removed.
- (decrypt_verify): Remove usage of patch_decryption_result.
-
- core: Return BAD_PASSPHRASE error code on symmetric decryption.
- + commit e21c3b559dfb59c61f789572071e72e31bb089bf
- * src/decrypt.c (op_data_t): Add field symdecrypt_failed.
- (parse_status_error): Handle BAD_PASSPHRASE error code.
- (_gpgme_decrypt_status_handler): Consult new field.
-
-2022-04-22 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Report better error if decryption failed because of bad passphrase.
- + commit d8e5871dca9425811873058150677a158235613d
- * lang/qt/src/qgpgmedecryptverifyjob.cpp (patch_decryption_result): New.
- (decrypt_verify): Call patch_decryption_result.
-
- cpp: Allow changing the error of a result.
- + commit 321c8a0254f4729ff1ffe56956fb049555272321
- * lang/cpp/src/result.h (class Result): Add member function setError.
-
-2022-04-05 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp: Handle canceling of an edit operation.
- + commit 28cdbfdccb347e1ef15f794d4afd36f9275f073c
- * lang/cpp/src/editinteractor.cpp
- (CallbackHelper::edit_interactor_callback_impl): Check for error _or_
- canceled state.
-
- cpp: Return actual error if revocation fails.
- + commit db532eca8ebd64536985e7a40af22e803e3b3df9
- * lang/cpp/src/editinteractor.cpp, lang/cpp/src/editinteractor.h
- (EditInteractor::parseStatusError): New.
- * lang/cpp/src/gpgrevokekeyeditinteractor.cpp
- (GpgRevokeKeyEditInteractor::Private::nextState): Handle status
- error.
-
- cpp: Add internal utility function for splitting strings.
- + commit c965b45bcd915ce92943fd4d436b5bd790f0442f
- * lang/cpp/src/util.h (split): New.
-
- cpp: Do not export symbols of the Private class.
- + commit 4beb6f419954b0df475d88bef7fc8b8065848b75
- * lang/cpp/src/gpgrevokekeyeditinteractor.h (class
- GpgRevokeKeyEditInteractor): Mark nested class Private as hidden.
-
-2022-04-05 NIIBE Yutaka <gniibe@fsij.org>
-
- core: Don't use internal __assuan functions.
- + commit a36d71a8e33e817b1cc2fde5d0fd476ddc6ac560
- * configure.ac (nanosleep): Detect.
- * src/assuan-support.c: Don't use __assuan_usleep.
- (my_socketpair): Don't use __assuan_socketpair.
-
- core: Don't keep using deprecated ath_ API.
- + commit 110a375401878b72984241c0dd84cb7fdeaae795
- * src/posix-io.c: Don't include ath.h.
- (_gpgme_io_read): Call read directly.
- (_gpgme_io_write): Call write directly.
- (_gpgme_io_waitpid): Call waitpid directly.
- (_gpgme_io_select_select): Call select directly.
- (_gpgme_io_recvmsg): Call recvmsg directly.
- (_gpgme_io_sendmsg): Call sendmsg directly.
- (_gpgme_io_connect): Call connect directly.
- * src/assuan-support.c: Don't include ath.h.
- (my_waitpid): Call waitpid directly.
-
-2022-03-31 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Check arguments passed to the revoke key job.
- + commit 7f089165e3ae42274e75e0e6fa1c45ca641f4023
- * lang/qt/src/qgpgmerevokekeyjob.cpp (check_arguments): New.
- (QGpgMERevokeKeyJob::start, QGpgMERevokeKeyJob::exec): Call
- check_arguments.
- * lang/qt/tests/t-revokekey.cpp (RevokeKeyJobTest): Add member functions
- testErrorHandling_nullKey, testErrorHandling_invalidReason,
- testErrorHandling_invalidDescription.
-
-2022-03-30 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt,tests: Verify reason code and description of revocation.
- + commit 3856ae8621bb28873123578a64eb81a4a591758e
- * lang/qt/tests/t-revokekey.cpp (RevokeKeyJobTest::testRevokeKeyAsync,
- RevokeKeyJobTest::testRevokeKeySync_noReasonDescription,
- RevokeKeyJobTest::testRevokeKeySync_oneLineReasonDescription,
- RevokeKeyJobTest::testRevokeKeySync_twoLinesReasonDescription): Call
- verifyReason.
- (class RevokeKeyJobTest): Add private member function verifyReason.
-
- qt: Add job to revoke own OpenPGP keys.
- + commit 41297520da32081d0a34ac2799812f210b7a9335
- * lang/qt/src/revokekeyjob.h, lang/qt/src/qgpgmerevokekeyjob.h,
- lang/qt/src/qgpgmerevokekeyjob.cpp: New.
- * lang/qt/src/protocol.h (class Protocol): Add pure virtual member
- function revokeKeyJob.
- * lang/qt/src/protocol_p.h (Protocol::revokeKeyJob): New.
- * lang/qt/src/job.cpp, lang/qt/src/Makefile.am: Update accordingly.
-
- * lang/qt/tests/Makefile.am (the_tests, moc_files, noinst_PROGRAMS):
- Add new test.
- (t_revokekey_SOURCES): New.
- * lang/qt/tests/t-revokekey.cpp: New.
-
- cpp: Add interactor to revoke a key.
- + commit d96e8a7a6bfcaad4587dd2bb648aa764b0d4e1ba
- * lang/cpp/src/global.h (enum class RevocationReason): New.
- * lang/cpp/src/gpgrevokekeyeditinteractor.cpp,
- lang/cpp/src/gpgrevokekeyeditinteractor.h: New.
- * lang/cpp/src/Makefile.am: Add new files.
-
-2022-03-28 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Set default visibility of all symbols to hidden.
- + commit 3b3b36a60749ea5c3b166bb1c8f3f6dda8ce6fcd
- * configure.ac: Add -fvisibility=hidden to GPGME_QT_CFLAGS if gcc
- supports the flag.
-
- cpp: Set default visibility of all symbols to hidden.
- + commit fe588fef0963987b5624dc8c4bc73202ac2c9298
- * configure.ac: Add -fvisibility=hidden to GPGME_CPP_CFLAGS if gcc
- supports the flag.
- * lang/cpp/src/Makefile.am (AM_CPPFLAGS): Add GPGME_CPP_CFLAGS.
- * m4/ax_gcc_func_attribute.m4: New.
-
- cpp: Put local helper function into unnamed namespace.
- + commit 92139e7b6b5fe84015d44d9516f3e1df7a3fc3bc
- lang/cpp/src/context.cpp (to_auditlog_flags): Wrap in unnamed namespace.
-
-2022-03-16 NIIBE Yutaka <gniibe@fsij.org>
-
- core: Support keylist mode for op_keylist_from_data.
- + commit b2a2158384a9f048ff61ee0cebef8346055f0454
- * src/engine-backend.h (keylist_data): Add MODE argument.
- * src/engine-gpg.c (gpg_keylist_data): Add MODE argument.
- * src/engine.c (_gpgme_engine_op_keylist_data): Likewise.
- * src/engine.h (_gpgme_engine_op_keylist_data): Declaration.
- * src/keylist.c (gpgme_op_keylist_from_data_start): Call
- _gpgme_engine_op_keylist_data with ctx->keylist_mode.
-
-2022-03-07 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add missing include of config.h.
- + commit 55861ba9ccc6b1087cb81acd93bed81fc0787208
- * lang/qt/src/util.cpp: Include config.h.
-
-2022-03-06 Werner Koch <wk@gnupg.org>
-
- Post release updates.
- + commit f61a14f189d33ca320f6c4ee6323f1e48c46e4ea
-
-
- Release 1.17.1.
- + commit ee50a38823daaa16b151a549a7dafef34bbd1e81
- * configure.ac: Bump QT LT version to C15/A0/R0.
-
-2022-02-17 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Fix ABI compatibility with 1.16.0.
- + commit ad3aabdd8a64156c7e3a75d695ae1ab2c4bec841
- * lang/qt/src/protocol.h (class Protocol): Move new virtual methods to
- the end of the class.
-
-2022-02-07 Werner Koch <wk@gnupg.org>
-
- Release 1.17.0.
- + commit 72bb46b34f5191f672a5356e2f152e6ad9440554
-
-
- qt: Fix build for older Qt versions.
- + commit 451a42f0d21c5a402d455c78d63eeaaa139e56cc
- * lang/qt/src/util.cpp: Include <functional>.
-
-2022-02-03 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add job to import keys given by key ids.
- + commit ca1c30b6fa29a7a1f18ecda14375b47893a0c1a3
- * lang/qt/src/receivekeysjob.h, lang/qt/src/qgpgmereceivekeysjob.h,
- lang/qt/src/qgpgmereceivekeysjob.cpp: New.
- * lang/qt/src/protocol.h (class Protocol): Add pure virtual member
- function receiveKeysJob.
- * lang/qt/src/protocol_p.h (Protocol::receiveKeysJob): Implement it.
- * lang/qt/src/job.cpp, lang/qt/src/Makefile.am: Update accordingly.
-
- * lang/qt/tests/run-receivekeysjob.cpp: New.
- * lang/qt/tests/Makefile.am: Add new test runner.
-
- qt: Add helper for converting QStringList to vector of strings.
- + commit ec8d1ee13fce21a1f52b084212827914dfcd0db6
- * lang/qt/src/util.h, lang/qt/src/util.cpp: New.
- * lang/qt/src/Makefile.am (qgpgme_sources, private_qgpgme_headers):
- Add new files.
-
- cpp: Allow import of keys given by key ids.
- + commit bbaeeb5b9d5cca99c332cb88c7ae5f14e8745427
- * lang/cpp/src/context.h (class Context): Add overloads of member
- functions importKeys and startKeyImport
- * lang/cpp/src/context.cpp (class Context): ... and implement them.
-
- cpp: Add internal adapter for passing a vector of strings to gpgme.
- + commit 3d7810e8d940229435feb8f9811607ee831abf4b
- * lang/cpp/src/util.h (class StringsToCStrings): New.
- * lang/cpp/src/util.cpp: New.
- * lang/cpp/src/Makefile.am: Add new file.
-
- core: New function gpgme_op_receive_keys.
- + commit 3c2cff74b535422532e1256ee8177fa9c03eaf18
- * src/gpgme.h.in (gpgme_op_receive_keys_start, gpgme_op_receive_keys):
- New.
- * src/gpgme.def, src/libgpgme.vers: Add them.
- * src/engine-backend.h (struct engine_ops): Add arg keyids to field
- 'import'.
- * src/engine.h, src/engine.c (_gpgme_engine_op_import): Add arg keyids.
- * src/engine.c (_gpgme_engine_op_import): Forward new arg keyids.
- * src/import.c: (_gpgme_op_import_start, _gpgme_op_import_keys_start):
- Pass NULL to new arg of _gpgme_op_import_start.
- (_gpgme_op_receive_keys_start, gpgme_op_receive_keys_start,
- gpgme_op_receive_keys): New.
- * src/engine-gpg.c (gpg_import): Add arg keyids. Extend check for
- valid arguments. Build command line if keyids are given.
- * src/engine-gpgsm.c (gpgsm_import): Add arg keyids. Return error if
- keyids is not NULL.
-
- tests/run-receive-keys.c: New.
- tests/Makefile.am (noinst_PROGRAMS): Add new test runner.
-
-2022-01-17 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Remove superfluous include.
- + commit ec71eb1d7d9f1156cc48d1c9959b07981ecd16e5
- * lang/qt/src/importjob.h: Remove include of QByteArray.
-
- qt: Fix build without installed GpgME++ headers.
- + commit 9c03bde06be97403a8c392a3befc6c203bcdce6d
- * lang/qt/src/importjob.h, lang/qt/src/wkdlookupresult.h: Include
- headers of GpgME++ without "gpgme++/" prefix when building QGpgme.
- * lang/qt/src/qgpgmeimportjob.cpp, lang/qt/src/qgpgmewkdlookupjob.cpp,
- lang/qt/src/wkdlookupresult.cpp, lang/qt/tests/t-import.cpp: Include
- headers of GpgME++ without "gpgme++/" prefix.
-
-2022-01-13 Ingo Klöcker <dev@ingo-kloecker.de>
-
- tests: Fix generation of keys without expiration.
- + commit e16729edcbdf2c35e3729b6d54c21b9b27250326
- * tests/run-genkey.c (parse_expire_string): Support default expiration
- and no expiration. Set flag for no expiration.
- (main): Allow update of flags when generating new key.
-
- tests: Remove unsupported option --status from usage help.
- + commit e4625885a851112a15636727388f11146be17f15
- * tests/run-swdb.c (show_usage): Remove option --status.
-
- qt: Add job to add existing subkeys to other keys.
- + commit 4d913a8aa5dad1327bed5987dada89e9d7c5d292
- * lang/qt/src/addexistingsubkeyjob.h,
- lang/qt/src/qgpgmeaddexistingsubkeyjob.cpp,
- lang/qt/src/qgpgmeaddexistingsubkeyjob.h: New.
- * lang/qt/src/protocol.h (class Protocol): Add pure virtual member
- function addExistingSubkeyJob.
- * lang/qt/src/protocol_p.h (Protocol::addExistingSubkeyJob): Implement.
- * lang/qt/src/job.cpp, lang/qt/src/Makefile.am: Update accordingly.
-
- * lang/qt/tests/Makefile.am (the_tests, moc_files, noinst_PROGRAMS):
- Add new test.
- (t_addexistingsubkey_SOURCES): New.
- * lang/qt/tests/t-addexistingsubkey.cpp: New.
- * lang/qt/tests/t-support.h (VERIFY_OR_RETURN_VALUE,
- COMPARE_OR_RETURN_VALUE, VERIFY_OR_OBJECT, COMPARE_OR_OBJECT,
- VERIFY_OR_FALSE, COMPARE_OR_FALSE): New.
- * lang/qt/tests/t-support.h, lang/qt/tests/t-support.cpp
- (class QQGpgMETest): New member function importSecretKeys.
-
- qt,tests: Add helper to hook up the test passphrase provider.
- + commit d308910cdfb31accae7cf790a956eb2f3cc6ae71
- * lang/qt/tests/t-support.h, lang/qt/tests/t-support.cpp
- (class QGpgMETest): Add member function hookUpPassphraseProvider.
- Add member mPassphraseProvider.
- * lang/qt/tests/t-changeexpiryjob.cpp,
- lang/qt/tests/t-encrypt.cpp,
- lang/qt/tests/t-remarks.cpp,
- lang/qt/tests/t-tofuinfo.cpp,
- lang/qt/tests/t-trustsignatures.cpp,
- lang/qt/tests/t-various.cpp: Use new helper.
-
- qt,tests: Add asyncDone signal to base class of all tests.
- + commit a54402fc2d1c1364843d3c88b5b07dbb7fc007d1
- * lang/qt/tests/t-support.h (class QGpgMETest): Add signal asyncDone.
- * lang/qt/tests/t-changeexpiryjob.cpp,
- lang/qt/tests/t-encrypt.cpp,
- lang/qt/tests/t-import.cpp,
- lang/qt/tests/t-keylist.cpp,
- lang/qt/tests/t-keylocate.cpp,
- lang/qt/tests/t-ownertrust.cpp,
- lang/qt/tests/t-remarks.cpp,
- lang/qt/tests/t-tofuinfo.cpp,
- lang/qt/tests/t-trustsignatures.cpp,
- lang/qt/tests/t-various.cpp,
- lang/qt/tests/t-wkdlookup.cpp,
- lang/qt/tests/t-wkspublish.cpp: Remove signal asyncDone from the test
- classes.
-
-2022-01-12 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp: Add interactor to add existing subkeys to other keys.
- + commit a4dcb17486bb42890ffe6453eeb2c6f301dc1fae
- * lang/cpp/src/gpgaddexistingsubkeyeditinteractor.cpp,
- lang/cpp/src/gpgaddexistingsubkeyeditinteractor.h: New.
- * lang/cpp/src/Makefile.am: Add new files.
-
-2022-01-10 Ingo Klöcker <dev@ingo-kloecker.de>
-
- core: Return an error for secret key export operations.
- + commit a527bd7cf58563d07c89bec458c8967ab1b3e60f
- src/export.c (export_status_handler): Handle "export_keys.secret".
-
-2022-01-04 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add factory function for secret subkey export job.
- + commit 04723a6e96be77dbc43bf71c54e268424a1823ba
- * lang/qt/src/protocol.h (class Protocol): Add member function
- secretSubkeyExportJob.
- * lang/qt/src/protocol_p.h (Protocol::secretSubkeyExportJob): Implement.
-
- * lang/qt/tests/run-exportjob.cpp (showUsageAndExitWithCode): Print
- new option.
- (createExportJob): Create secret subkey export job if requested.
- (main): New option --secret-subkey.
-
- cpp: Allow export of secret subkeys.
- + commit e5c7fc3e022841be8f68fad8b9b64dd601b89ba7
- * lang/cpp/src/context.h (enum Context::ExportMode): Add value
- ExportSecretSubkey.
- (class Context): Add member functions exportSecretSubkeys and
- startSecretSubkeyExport.
- * lang/cpp/src/context.cpp (Context::exportPublicKeys,
- Context::startPublicKeyExport): Return error if ExportSecretSubkey
- mode flag is set.
- (Context::exportSecretSubkeys, Context::startSecretSubkeyExport):
- Implement.
-
- qt: Remove obsolete QGpgMESecretKeyExportJob.
- + commit 88ad37ea96e4645a9e23aac9eae0d8da747559b8
- * lang/qt/src/Makefile.am: Remove all occurrences of
- qgpgmesecretkeyexportjob.*.
- * lang/qt/src/qgpgmesecretkeyexportjob.cpp,
- lang/qt/src/qgpgmesecretkeyexportjob.h: Remove.
-
- qt: Use QGpgMEExportJob also for export of secret keys.
- + commit 4e80563fabfdf1d1c136d65252e5353fdd1e9092
- * lang/qt/src/protocol.h (Protocol::secretKeyExportJob): Document
- charset argument as ignored.
- * lang/qt/src/protocol_p.h (Protocol::secretKeyExportJob): Use
- QGpgMEExportJob instead of QGpgMESecretKeyExportJob.
- * lang/qt/src/qgpgmeexportjob.h (class QGpgMEExportJob): Add c'tor
- taking an export mode. Add member m_exportMode. Rename member m_flags to
- m_additionalExportModeFlags.
- (QGpgMEExportJob::~QGpgMEExportJob): Mark as override.
- * lang/qt/src/qgpgmeexportjob.cpp (QGpgMEExportJob::QGpgMEExportJob):
- Delegate to new c'tor. Implement new c'tor.
- (QGpgMEExportJob::~QGpgMEExportJob): Use default.
- (export_qba): Rename argument flags to mode.
- (QGpgMEExportJob::start): Pass combination of export mode and additional
- mode flags to export_qba.
- (QGpgMEExportJob::setExportFlags): Adapt to renaming of member.
-
- * lang/qt/tests/run-exportjob.cpp: New.
-
- cpp: Allow export of secret keys.
- + commit 3da06d1096ee29d70656f07edcabc3bc4351104e
- * lang/cpp/src/context.h (class Context): New member functions
- exportSecretKeys, startSecretKeyExport, exportKeys, startKeyExport.
- (Context::exportPublicKeys, Context::startPublicKeyExport): Rename
- argument flags/export_mode to mode.
- * lang/cpp/src/context.cpp (Context::exportPublicKeys): Return error if
- ExportSecret mode flag is set. Call exportKeys().
- (Context::startPublicKeyExport): Return error if
- ExportSecret mode flag is set. Call startKeyExport().
- (Context::exportSecretKeys, Context::startSecretKeyExport,
- Context::exportKeys, Context::startKeyExport): Implement.
-
- cpp: Mark ExportNoUID flag as obsolete.
- + commit 4888191014c24d5954685814e06c9ff0ee38739f
- * lang/cpp/src/context.h (enum Context::ExportMode): Mark value
- ExportNoUID as obsolete
-
- core: Add new option --secret-subkey to help texts.
- + commit 2752e81f892568a9725fdd8d6a997a1cc80d2f88
- * src/gpgme-tool.c (hlp_export): Add new option.
- * tests/run-export.c (show_usage): Print new option.
-
- cpp: Remove obsolete workaround.
- + commit fa5f1b57cc12f9305d112f11c2c2d95751ed1a25
- * lang/cpp/src/context.cpp (Context::startKeyListing,
- Context::exportPublicKeys, Context::startPublicKeyExport): Remove
- workaround.
-
- core: New export mode to export secret subkeys.
- + commit 0e19c4879193ed7fa61ad5d488f237b2b5b5d1d7
- * src/gpgme.h.in (GPGME_EXPORT_MODE_SECRET_SUBKEY): New.
- * src/export.c (check_mode): Allow new mode and check for invalid
- combinations.
- (export_keys_start): Return error if new mode flag is set.
- * src/engine-gpg.c (export_common): Implement.
- * src/gpgme-tool.c (cmd_export): New option --secret-subkey.
- * tests/run-export.c (main): New option --secret-subkey.
-
- doc: Remove documentation of obsolete export mode flag.
- + commit 414bbdd53c380018621a2a5800e9a9c46869a56e
- * doc/gpgme.texi: Remove GPGME_EXPORT_MODE_NOUID.
-
- core: Check for unsupported export mode flags.
- + commit c710af223cc2476d5f4d46c00d8e0521f6c13211
- src/engine-gpgsm.c (gpgsm_export, gpgsm_export_ext): Return error if an
- unsupported mode flag is set.
-
- core: Check for combination of ssh mode with other mode flags.
- + commit c0581adabe7f5f63c0b96dac449790aa6ac4c291
- * src/export.c (check_mode): Return error if ssh mode is combined with
- another mode flag.
-
- core: Factor out the check for valid export mode flags.
- + commit 326857511587fa7878757d3884f91bf7eb86771c
- * src/export.c (check_mode): New.
- (export_start, export_ext_start): Call check_mode.
-
-2021-12-22 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Detect an import error caused by a wrong password.
- + commit 82f43455e9412d8b4792b35371e0b6704a619d07
- * lang/qt/src/qgpgmeimportjob.cpp (import_qba): Check import statuses of
- import result for bad passphrase errors.
-
- qt,tests: Add test runner for testing the import job.
- + commit f99451e20fd2f84ac653aa6021a475026a9d4dc9
- * lang/qt/tests/Makefile.am (run_importjob_SOURCES): New.
- (noinst_PROGRAMS): Add run-importjob.
- * lang/qt/tests/run-importjob.cpp: New.
-
- cpp: Check fpr of import status for NULL.
- + commit 300776f39165da068757864e9cb3029f06f3be5b
- * lang/cpp/src/importresult.cpp (GpgME::ImportResult::Private): Check
- fpr for NULL.
-
- core: Detect bad passphrase error on certificate import.
- + commit 305d8668ca724982c50fe4e05315c48a20cc33e5
- * src/import.c (gpgme_op_import_result): Check fpr for NULL.
- (parse_error): New.
- (import_status_handler): Handle error status line.
-
- * doc/gpgme.texi (gpgme_import_status_t): Mention that fpr can be NULL.
-
- * tests/gpg/t-import.c (check_result): Check fpr for NULL.
- * tests/run-threaded.c (delete_impres): Check fpr for NULL.
-
-2021-12-22 NIIBE Yutaka <gniibe@fsij.org>
-
- build: Update for newer autoconf.
- + commit 0636e229d7edfcb0a357ffcce62079488be32495
- * configure.ac (AC_PREREQ): Require >= 2.69.
- (AC_CONFIG_HEADERS): Use it instead of AC_CONFIG_HEADER.
-
-2021-12-15 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Allow specifying an import filter when importing keys.
- + commit 619579bb172579d766956b5d1690d18934fd5986
- * lang/qt/src/importjob.cpp (struct ImportJobPrivate): Add member
- m_importFilter.
- * lang/qt/src/importjob.cpp, lang/qt/src/importjob.h (class ImportJob):
- Add member functions setImportFilter and importFilter.
- * lang/qt/src/qgpgmeimportjob.cpp (import_qba): Add arg importFilter
- and adjust the callers. Set import filter context flag.
-
- * lang/qt/tests/t-import.cpp (ImportTest): Add member function
- testImportWithImportFilter.
-
- qt: Avoid test failure when test is run multiple times.
- + commit 3e81a4a336e093d075f83afe3e1bd26493e64cac
- * lang/qt/tests/t-import.cpp (ImportTest): Add member tempGpgHome and
- member function initTestCase.
- (keyFpr, keyData): Move to ImportTest::testImportWithKeyOrigin.
-
- qt: Fix erroneous reuse of JobPrivate objects.
- + commit 3c770013d7233cb0a803251af54c0a2c1fb61e35
- * lang/qt/src/job.cpp (Job::~Job): Destroy JobPrivate object belonging
- to destroyed job.
-
-2021-12-14 Ingo Klöcker <dev@ingo-kloecker.de>
-
- core: Allow setting import filters when importing keys.
- + commit d35d44efaf72f90ee4f92af8382c4bcb9982da3f
- * src/context.h (struct gpgme_context): New field import_filter.
- * src/engine-backend.h (struct engine_ops): Add arg import_filter to
- field 'import'.
- * src/engine-gpg.c (gpg_import): Add arg import_filter and pass option
- --import-filter with argument value to gpg. Adjust all callers.
- * src/engine-gpgsm.c (gpgsm_import): Add dummy arg import_filter.
- * src/gpgme.c (gpgme_release): Free 'import_filter'.
- (gpgme_set_ctx_flag, gpgme_get_ctx_flag): New flag "import-filter".
-
- * tests/run-import.c (main): Add option --import-filter.
-
- qt: Add pattern used for WKD lookup to result.
- + commit af820811ec7d0818f988cd728d745cede88ab45f
- * lang/qt/src/qgpgmewkdlookupjob.cpp (run_wkd_get): Change type of
- arg email.
- (lookup_keys): Add pattern to result.
- * lang/qt/src/wkdlookupresult.h (class WKDLookupResult): Add arg
- pattern to c'tors. Add member function pattern.
- * lang/qt/src/wkdlookupresult.cpp (class WKDLookupResult::Private):
- Add field pattern.
- (WKDLookupResult::WKDLookupResult): Pass pattern to pimpl.
- (WKDLookupResult::pattern): New.
-
- * lang/qt/tests/t-wkdlookup.cpp (testWKDLookupAsync, testWKDLookupSync,
- testLookupWithNoResultAsync): Check pattern.
-
- core: Set --key-origin option only if supported by gpg.
- + commit fd680254dae58a6bf6fb83688bf7c849257688a4
- * src/engine-gpg.c (gpg_import): Do not pass --key-origin option to
- gpg if gpg is too old.
-
- qt: Allow setting key origin when importing keys.
- + commit fd6bec617d8fb6ddcbc622a5d8cf94594a7d5520
- * lang/qt/src/Makefile.am (qgpgme_sources): Add importjob.cpp.
- * lang/qt/src/importjob.cpp: New.
- * lang/qt/src/importjob.h (class ImportJob): Add member functions
- setKeyOrigin, keyOrigin, keyOriginUrl.
- * lang/qt/src/qgpgmeimportjob.cpp (originToString): New.
- (import_qba): Set key origin context flag.
- (QGpgMEImportJob::start, QGpgMEImportJob::exec): Add options to call
- of import_qba.
-
- * lang/qt/tests/Makefile.am (the_tests, moc_files, noinst_PROGRAMS):
- Add new test.
- (t_import_SOURCES): New.
- * lang/qt/tests/t-import.cpp: New.
-
- qt,tests: Skip WKD lookup tests by default.
- + commit 3a43d9dc67970db323c3e49eb964d52c4eb3ac6c
- * lang/qt/tests/t-support.cpp, lang/qt/tests/t-support.h
- (class QGpgMETest): Add member function doOnlineTests.
- * lang/qt/tests/t-wkdlookup.cpp (testWKDLookupAsync, testWKDLookupSync,
- testLookupWithNoResultAsync): Skip tests if online tests are not
- enabled.
-
-2021-12-13 Ingo Klöcker <dev@ingo-kloecker.de>
-
- core: Allow specifiying a key origin when importing keys.
- + commit 60880adafa93e1a1e8e9fecf03c14d56bbd55345
- * src/context.h (struct gpgme_context): New field key_origin.
- * src/engine-backend.h (struct engine_ops): Add arg key_origin to
- field 'import'.
- * src/engine-gpg.c (gpg_import): Add arg key_origin and pass option
- --key-origin with argument value to gpg. Adjust all callers.
- * src/engine-gpgsm.c (gpgsm_import): Add dummy arg key_origin.
- * src/gpgme.c (gpgme_release): Free 'key_origin'.
- (gpgme_set_ctx_flag, gpgme_get_ctx_flag): New flag "key-origin".
-
- * tests/run-import.c (main): Add option --key-origin.
- * tests/gpg/t-import.c (main): Set and verify key origin.
-
- qt: Support WKD lookup without implicit import.
- + commit ed7e7df2e14feb443e84d87e518ff61b1f7aa6d8
- * lang/qt/src/Makefile.am (qgpgme_sources): Add qgpgmewkdlookupjob.cpp,
- wkdlookupresult.cpp.
- (qgpgme_headers): Add wkdlookupjob.h, wkdlookupresult.h.
- (camelcase_headers): Add WKDLookupJob, WKDLookupResult.
- (private_qgpgme_headers): Add qgpgmewkdlookupjob.h.
- (qgpgme_moc_sources): Add qgpgmewkdlookupjob.moc, wkdlookupjob.moc.
- * lang/qt/src/job.cpp: Define c'tor and d'tor of WKDLookupJob.
- * lang/qt/src/protocol.h (Protocol::wkdLookupJob): New.
- * lang/qt/src/protocol_p.h (Protocol::wkdLookupJob): New.
- * lang/qt/src/qgpgmewkdlookupjob.cpp, lang/qt/src/qgpgmewkdlookupjob.h,
- lang/qt/src/wkdlookupjob.h, lang/qt/src/wkdlookupresult.cpp,
- lang/qt/src/wkdlookupresult.h: New.
-
- * lang/qt/tests/Makefile.am (EXTRA_DIST): Add final.test.
- (the_tests): New.
- (TESTS): Remove all t-*. Add $(the_tests) and final.test.
- (moc_files): Add t-wkdlookup.moc.
- (t_wkdlookup_SOURCES): New.
- (noinst_PROGRAMS): Add t-wkdlookup.
- * lang/qt/tests/final.test: New.
- * lang/qt/tests/t-support.h (QTest::toString): New template
- specialization for std::string.
- * lang/qt/tests/t-wkdlookup.cpp: New.
-
- qt: Fix example for using the asynchronous job API.
- + commit 0e70a2313afbbaaec6859a1edb478587ff82a6b5
- * lang/qt/src/protocol.h (class Protocol): Fix API documentation.
-
-2021-12-10 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp,tests: Add test runner for doing a WKD lookup without import.
- + commit f3177d3ee0a1d30e15f33ff226b5e4c96b7610db
- * lang/cpp/tests/Makefile.am (run_wkdlookup_SOURCES, programs_unix):
- New.
- (noinst_PROGRAMS): Add $(programs_unix).
- * lang/cpp/tests/run-wkdlookup.cpp: New.
-
- cpp: Add new supported components to API docs of dirInfo()
- + commit 5f1ba40116199cd77987c3c2797d600f6df018c2
- lang/cpp/src/global.h: Update API doc of dirInfo().
-
- core: Support all components with dirinfo()
- + commit 0ac3679a74505b782388402b3743ee65c271340f
- * src/dirinfo.c (WANT_KEYBOXD_NAME, WANT_AGENT_NAME, WANT_SCDAEMON_NAME,
- WANT_DIRMNGR_NAME, WANT_PINENTRY_NAME): New.
- (dirinfo): Add fields keyboxd_name, agent_name, scdaemon_name,
- dirmngr_name, pinentry_name.
- (parse_output): Support "keyboxd", "gpg-agent", "scdaemon", "dirmngr",
- "pinentry".
- (get_gpgconf_item): Return new components.
-
- tests/t-engine-info.c (main): Add new components to the output.
-
-2021-12-07 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp: Return engine info for engine used by the context.
- + commit 0eddc867c31dd7239a1a9c4196bf8dc1372ea4b1
- lang/cpp/src/context.cpp (Context::engineInfo()): Return engine info
- for protocol of context.
-
- cpp: Factor out common code of GpgME::engineInfo() overloads.
- + commit 1a1e9145877a60632346ae3ab68b1ae9d722a867
- * lang/cpp/src/context.cpp (get_engine_info, get_static_engine_info):
- New.
- (GpgME::engineInfo(GpgME::Protocol), GpgME::engineInfo(GpgME::Engine)):
- Use get_static_engine_info().
-
-2021-11-25 Werner Koch <wk@gnupg.org>
-
- core: Make the gpgconf option parsing of string types more robust.
- + commit b8b49c11e95fd978a8a2eed23f191d087ab056da
- * src/engine-gpgconf.c (gpgconf_parse_option): Skip the string
- indicator if it is not the empty string.
-
- tests: Silence libtool warning on Windows.
- + commit 43de18a292b29436783127bd6c275817f0cd86b7
- * tests/Makefile.am (AM_LDFLAGS): Use --no-fast-install on Windows.
-
- core: Support dirinfo("socketdir")
- + commit eb37d6469e722ae5ff187962c216474b5ec476de
- * src/dirinfo.c (WANT_SOCKETDIR): New.
- (dirinfo): Add field socketdir.
- (parse_output): Support "socketdir".
- (get_gpgconf_item): Return socketdir.
-
- * tests/t-engine-info.c (main): Add socketdir to the output.
-
- * src/w32-util.c (_gpgme_create_process_utf8): Fix indentation.
-
-2021-11-25 NIIBE Yutaka <gniibe@fsij.org>
-
- posix: Use poll instead, when available, removing use of select.
- + commit 8148237cb4ae20755c06a44d71761c7030973c3d
- * configure.ac (HAVE_POLL_H): Add the check.
- * src/ath.c [!HAVE_POLL_H] (ath_select): Enable conditionally.
- * src/posix-io.c [HAVE_POLL_H] (_gpgme_io_select_poll): Use poll.
- * tests/gpg/t-cancel.c [HAVE_POLL_H] (do_select): Use poll.
- * tests/gpg/t-eventloop.c [HAVE_POLL_H] (do_select): Use poll.
-
-2021-11-12 NIIBE Yutaka <gniibe@fsij.org>
-
- gpgme.pc: Fix library dependency and use of includedir, libdir.
- + commit 4583ab77e5af3f0da5b307a169d07b58dddf652f
- * src/gpgme.pc.in (Require): Move gpg-error, libassuan to...
- (Requires.private): ... here.
- (Cflags): Add -I${includedir}.
- (Libs): Add -L${libdir}.
-
-2021-11-12 NIIBE Yutaka <gniibe@fsij.org>
- Ben Kibbey <bjk@luxsci.net>
-
- tests: Build using GPG_ERROR_MT_LIBS for thread use.
- + commit 1cedac2bba246ff411843aaef10ca8ea0a0756cf
- * tests/gpg/Makefile.am (WITH_THREAD_CPPFLAGS): New.
- (WITH_THREAD_LDADD): New.
- (t_thread1_CPPFLAGS, t_thread_keylist_CPPFLAGS)
- (t_thread_keylist_verify_CPPFLAGS)
- (t_cancel_CPPFLAGS): Use WITH_THREAD_CPPFLAGS.
- (t_thread1_LDADD, t_thread_keylist_LDADD)
- (t_thread_keylist_verify_LDADD)
- (t_cancel_LDADD): Use WITH_THREAD_LDADD.
-
-2021-11-11 NIIBE Yutaka <gniibe@fsij.org>
-
- tests: Use GPG_ERROR_MT_LIBS for a test with threads.
- + commit 8cd2fe7b3de4abd2331bcb637b7e2c26ce4faa29
- * tests/Makefile.am (run_threaded_CPPFLAGS): New.
- (run_threaded_LDADD): Replace GPG_ERROR_LIBS to GPG_ERROR_MT_LIBS.
-
-2021-11-10 NIIBE Yutaka <gniibe@fsij.org>
-
- libtool: Link without -flat_namespace for macOS.
- + commit 50daf3d75d666d34fecc0dbecc31c51a7989eda3
- * m4/libtool.m4: Not setting 10.0 to MACOSX_DEPLOYMENT_TARGET when not
- defined. Only specify -flat_namespace to linker for specific
- (older) versions and hosts.
-
-2021-09-13 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Fix build against Qt 5.9.
- + commit ab9bca09eb869b2013c85fee232f1e62aed925f6
- * lang/qt/tests/t-keylist.cpp (KeyListTest::testListAllKeysSync):
- Ensure same type for both arguments of QCOMPARE.
- * lang/qt/tests/t-various.cpp (TestVarious::testSetExpire):
- Ensure same type for both arguments of QCOMPARE.
-
-2021-08-27 Werner Koch <wk@gnupg.org>
-
- build: Fix make distcheck problem.
- + commit aaf448b1e81e7421e539ac2deb9dc9d3d1459016
- * tests/start-stop-agent: Use -f with rm. Also use cat instead of cp.
-
-2021-08-27 Andre Heinecke <aheinecke@gnupg.org>
-
- qt: Expect UTF-8 on stderr on Windows.
- + commit 8fe15462829b5049137b3f631564b72c4f63c5e2
- * lang/qt/src/threadedjobmixin.cpp (stringFromGpgOutput): Expect
- UTF-8.
-
- Add missing files for distribution.
- + commit bc774104bbf461805f875c2bfd2d02aa6dd0945d
- * lang/qt/src/Makefile.am (private_qgpgme_headers): Add job_p.h
- * tests/gpg/Makefile.am (EXTRA_DIST): Add gpg.conf.in
-
-2021-08-13 NIIBE Yutaka <gniibe@fsij.org>
-
- core: Use flexible array member if compiler has support.
- + commit 3c1c98a43413e429459ca7d3615659f8149534b8
- * configure.ac (AC_C_FLEXIBLE_ARRAY_MEMBER): Add.
- * src/engine-gpg.c (struct arg_and_data_s): Use FLEXIBLE_ARRAY_MEMBER.
- (_add_arg): Use offsetof instead of sizeof.
- (add_data): Likewise.
-
-2021-08-03 Ingo Klöcker <dev@ingo-kloecker.de>
-
- core: Fix results returned by gpgme_data_* functions.
- + commit 7cfc93193d535ec5037e48b86544e1b4dbf949f6
- src/debug.h (TRACE_SYSRES_OFF_T, _trace_sysres_off_t,
- TRACE_SYSRES_SSIZE_T, _trace_sysres_ssize_t): New.
- src/data.c (gpgme_data_read, gpgme_data_write, gpgme_data_seek): Use
- appropriate new tracing macros instead of casting the results to int.
-
-2021-07-27 Jiri Kucera <sanczes@gmail.com>
-
- core: Support closefrom also for glibc.
- + commit 4b64774b6d13ffa4f59dddf947a97d61bcfa2f2e
- * src/posix-io.c (_gpgme_io_spawn): Use glibc's closefrom.
-
-2021-07-08 Ingo Klöcker <dev@ingo-kloecker.de>
-
- core: Ensure gpg.conf for tests is recreated if necessary.
- + commit a5662a801fc11a533fb3b1a69a17e119064972a3
- * tests/gpg/gpg.conf.in: New.
- * tests/gpg/Makefile.am (gpg.conf): Copy gpg.conf.in instead of using
- echo to fill gpg.conf.
-
- Make sure expiration time is interpreted as unsigned number.
- + commit 6a79e90dedc19877ae1c520fed875b57089a5425
- * lang/qt/tests/t-various.cpp (testSignKeyWithExpiration): Convert
- expiration time to uint_least32_t.
-
-2021-06-29 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Allow retrieving the default value of a config entry.
- + commit 12006a782900687a7f0158a3f931528cfc5ff451
- * lang/qt/src/cryptoconfig.cpp, lang/qt/src/cryptoconfig.h
- (CryptoConfigEntry::defaultValue): New.
- * lang/qt/src/qgpgmenewcryptoconfig.cpp,
- lang/qt/src/qgpgmenewcryptoconfig.h
- (QGpgMENewCryptoConfigEntry::defaultValue): New.
- * lang/qt/tests/t-config.cpp (CryptoConfigTest::testDefault()):
- Add test of CryptoConfigEntry::defaultValue(). Port away from deprecated
- CryptoConfig::entry overload.
-
-2021-06-28 Ingo Klöcker <dev@ingo-kloecker.de>
-
- Update NEWS.
- + commit d8638ed0aa5bf7f970787155a35d37a4f5d320f8
- * NEWS: Add changes of ChangeExpiryJob.
-
- qt: Fix filenames in copyright headers.
- + commit 9d2b876093c25f604d9efe2775143c8f0361916d
- * lang/qt/src/qgpgmechangeownertrustjob.h,
- lang/qt/tests/t-trustsignatures.cpp: Use correct filenames.
-
- qt: Add test for ChangeExpiryJob.
- + commit 801acd89b234fcd7226f3fb39ec01634460cfa50
- * lang/qt/tests/Makefile.am (TESTS, moc_files, noinst_PROGRAMS): Add
- new test.
- (t_changeexpiryjob_SOURCES): New.
- * lang/qt/tests/t-changeexpiryjob.cpp: New.
-
- qt: Allow changing expiration date of primary key and all subkeys.
- + commit 144d580607dd0b70bb20542e2f457153b9cc4ecb
- * lang/qt/src/Makefile.am (qgpgme_sources): Add changeexpiryjob.cpp.
- * lang/qt/src/changeexpiryjob.cpp: New.
- * lang/qt/src/changeexpiryjob.h (enum ChangeExpiryJob::Option,
- typedef ChangeExpiryJob::Options, ChangeExpiryJob::setOptions,
- ChangeExpiryJob::options): New.
- * lang/qt/src/qgpgmechangeexpiryjob.cpp (change_expiry): Update the
- expiration date of primary key and/or some/all subkeys.
- (QGpgMEChangeExpiryJob::start): Add options to call of change_expiry.
- (ChangeExpiryJob::start): Moved implementation to changeexpiryjob.cpp.
-
- qt: Add mechanism for missing d-pointer in Job.
- + commit 3503816570a19352e4b8a81d1cd0f3a9337b8c55
- * lang/qt/src/job_p.h: New.
- * lang/qt/src/job.cpp (typedef JobPrivateHash, d_func, setJobPrivate,
- getJobPrivate): New.
-
-2021-06-26 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Remove superfluous trailing ';'
- + commit ade95b25ce473a3c9ebcb77b7bd76a2fa6ed2805
- lang/qt/src/signkeyjob.h (class SignKeyJob): Remove trailing ';' from
- inline implemented member functions
-
- core: Fix use-after-free issue in test.
- + commit 81a33ea5e1b86d586b956e893a5b25c4cd41c969
- * tests/gpg/t-edit-sign.c (sign_key, verify_key_signature): New.
- (main): Factored out signing and verifying the result.
-
-2021-06-24 Werner Koch <wk@gnupg.org>
-
- Release 1.16.0.
- + commit 1021c8645555502d914afffaa3707609809c9459
-
-
-2021-06-22 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Extend SignKeyJob to create signatures with expiration date.
- + commit ac4536990a4fed4a45a0851260c029e69d0cadf6
- * lang/qt/src/signkeyjob.h (SignKeyJob::setExpirationDate): New.
- * lang/qt/src/qgpgmesignkeyjob.h, lang/qt/src/qgpgmesignkeyjob.cpp
- (QGpgMESignKeyJob::setExpirationDate): New.
- * lang/qt/src/qgpgmesignkeyjob.cpp (QGpgMESignKeyJob::Private): Add
- member m_expiration.
- (sign_key): Handle expiration date.
- (QGpgMESignKeyJob::start): Pass expiration date to sign_key.
-
- * lang/qt/tests/t-various.cpp
- (TestVarious::testSignKeyWithoutExpiration,
- TestVarious::testSignKeyWithExpiration): New.
- (TestVarious::initTestCase): Add "allow-weak-key-signatures" to
- gpg.conf.
-
- core: Allow specifying an expiration date for key signatures.
- + commit 34d9defc42bacfaf2bb1ce70b2c3f0fdf0a106c3
- * src/context.h (struct gpgme_context): Add 'cert_expire'.
- * src/engine-gpg.c (append_args_from_cert_expire): New.
- (gpg_edit): Set option according to the new flag.
- * src/gpgme.c (gpgme_release): Free 'cert_expire'.
- (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Add "cert-expire".
-
- * tests/gpg/Makefile.am (c_tests): Add new test.
- (gpg.conf): Write "allow-weak-key-signatures" to gpg.conf.
- * tests/gpg/t-edit-sign.c: New.
-
-2021-06-21 Ingo Klöcker <dev@ingo-kloecker.de>
-
- Update NEWS.
- + commit ab1d4ef580794a86da754d516db35091f6997e2c
- * NEWS: Add news for recent changes
-
-2021-06-18 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add missing }
- + commit 5340bb7ccfa7086054823fac48d178e6206d66c0
- * lang/qt/src/qgpgmenewcryptoconfig.cpp (parseURL): Add missing }.
-
-2021-06-17 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add some error logging.
- + commit 72de06417e32bd6573acd0b73a72fcf98232fe81
- * lang/qt/src/qgpgmenewcryptoconfig.cpp (setURLValueList): Log error
- if setting config value failed.
-
- qt: Do not set empty base DN as query of keyserver URL.
- + commit 1dca8c2b3c6d6aa3dfd4215c911207f08a3bf9f1
- * lang/qt/src/qgpgmenewcryptoconfig.cpp (parseURL): Only set non-empty
- base DN as URL query.
-
- qt: Fix API documentation.
- + commit 0d03f31e07e683efbdb206cc3407bf222d71d8fe
- * lang/qt/src/signkeyjob.h (SignKeyJob::start,
- SignKeyJob::setUserIDsToSign, SignKeyJob::setCheckLevel): Fix
- documentation of parameters.
-
-2021-06-14 Werner Koch <wk@gnupg.org>
-
- core: New data flags "io-buffer-size" and "sensitive".
- + commit fde20940b5ca6986dc12215209e8858601bb0c2e
- * src/data.c (_gpgme_data_release): Free buffers.
- (gpgme_data_seek): Adjust from renamed fields.
- (gpgme_data_set_flag): Implement new flags.
- (_gpgme_data_inbound_handler): Allow the use of a malloced buffer.
- (_gpgme_data_outbound_handler): Ditto.
- * src/data.h (BUFFER_SIZE): Move out of the struct definition.
- (struct gpgme_data): Remove pending filed and introduce inbound and
- outbound fields.
-
- * src/conversion.c (_gpgme_wipememory): New. Taken from GnuPG.
- * src/cJSON.c (wipememory): Use this here too.
-
- * tests/run-decrypt.c (main): Add options "--large-buffers" and
- "--sensitive".
-
- core: Also detect AuthEnvelopedData (AEAD for CMS)
- + commit ea290108e4df9f93eda79789d9cde5441d6bdd55
- * src/data-identify.c (basic_detection): Add OID.
-
-2021-06-10 Andre Heinecke <aheinecke@gnupg.org>
-
- qt: Flush output after write for QProcess output.
- + commit b3b75c37e2d3ef313031ceba8063feeccb0583ec
- * lang/qt/src/dataprovider.cpp (QIODeviceDataProvider::write): Call
- waitForBytesWritten.
-
- core,w32: Increase BUFFER_SIZE to 4096.
- + commit ceb8387460b05de5c8cec6e02950176b09c4f38b
- * src/data.h (BUFFER_SIZE): Increase to 4096 for Windows.
-
-2021-06-09 Andre Heinecke <aheinecke@gnupg.org>
-
- qt: Explicitly link libgpg-error.
- + commit e6095e54718fe2463fb54adf5879d55e2fba4fef
- * lang/qt/src/Makefile.am (libqgpgme_la_LIBADD): Explicitly link
- gpg-error.
-
- core: Explicitly add GPG_ERROR_CFLAGS.
- + commit 4041e2c62a10a149776a78e9221de6732693dad9
- * src/Makefile.am (AM_CFLAGS): Add GPG_ERROR_CFLAGS
-
-2021-06-02 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add separate logging category for result of config loading.
- + commit 5bc4e23a57f149c2a7008c1b88ab3d398ce75e9b
- * lang/qt/src/qgpgme_debug.h: Make include guard match file name.
- * lang/qt/src/qgpgme_debug.h, lang/qt/src/qgpgme_debug.cpp
- (QGPGME_CONFIG_LOADING_LOG): New.
- * lang/qt/src/qgpgmenewcryptoconfig.cpp
- (QGpgMENewCryptoConfig::reloadConfiguration): Use new logging category.
-
- core: Fix a few checks for number of fields in keylist result parser.
- + commit 5512133de4e9bca2defb744e2b42e55b5487d72c
- * src/keylist.c (keylist_colon_handler): Check for correct number of
- fields.
-
-2021-06-01 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add support for flags in LDAP server options.
- + commit 27aa7c4a0fc8f7cef6219443cee0d040c2774746
- * lang/qt/src/qgpgmenewcryptoconfig.cpp (parseURL): Handle extended
- LDAP server option syntax.
- (portToString): New.
- (splitURL): Append flags to LDAP server option.
-
-2021-05-28 Werner Koch <wk@gnupg.org>
-
- tests: Improve the output of the run-keylist helper.
- + commit 31eb45f01620d3e8811fe18460c281837bb3359f
- * tests/run-keylist.c (main): Print all infos from the primary key.
-
-2021-05-27 NIIBE Yutaka <gniibe@fsij.org>
-
- build: _DARWIN_C_SOURCE should be 1.
- + commit 367b9e7488601cdf2cbec4d593a235c89f9a4281
- * configure.ac (*-apple-darwin*): Set _DARWIN_C_SOURCE 1.
-
- build: Update gpg-error.m4.
- + commit 792a7e7f04ead7643561439b773e740549340b99
- * m4/gpg-error.m4: Update from libgpg-error.
-
-2021-05-12 Werner Koch <wk@gnupg.org>
-
- core: Allow for older compilers.
- + commit aa98081356b5f7c9ef2422021e05aed01a7e4d46
- * tests/run-verify.c (main): Remove C99-only syntax.
- * tests/run-threaded.c (start_keylistings): Ditto.
-
- core: Make sure to stay ABI compatible.
- + commit 88db69e1a964c9a36989e36fe5d972548432fb5c
- * src/gpgme.h.in (struct _gpgme_key_sig): Move trust_scope to the end
- of the struct.
-
-2021-05-06 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp: Do not close stdout/stderr when destroying EditInteractor.
- + commit 58a217b108e4c4c92306542bf9f2995254809ffb
- * lang/cpp/src/editinteractor.cpp (EditInteractor::Private): Initialize
- members 'state' and 'debug' in-class. Add member 'debugNeedsClosing'.
- (EditInteractor::Private::Private): Remove members initializers.
- Remember if 'debug' needs to be closed.
- (EditInteractor::Private::~Private): Only close 'debug' if it needs to
- be closed.
-
-2021-05-05 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Extend SignKeyJob to create trust signatures.
- + commit f0858e45b0be260730e742643e741547123d4287
- * lang/qt/src/signkeyjob.h (SignKeyJob::setTrustSignature): New.
- * lang/qt/src/qgpgmesignkeyjob.h, lang/qt/src/qgpgmesignkeyjob.cpp
- (QGpgMESignKeyJob::setTrustSignature): New.
- * lang/qt/src/qgpgmesignkeyjob.cpp (sign_key): Handle trust signatures.
- (QGpgMESignKeyJob::start): Pass trust signature attributes to sign_key.
- (QGpgMESignKeyJob::setTrustSignature): New.
-
- qt: Pimpl QGpgMESignKeyJob.
- + commit dae01f8185e0f1bc9c65d93078c7ccda0b79611f
- * lang/qt/src/qgpgmesignkeyjob.h: Remove unneeded includes. Include
- <memory>.
- (QGpgMESignKeyJob): Remove all member variables. Add pimpl pointer.
- * lang/qt/src/qgpgmesignkeyjob.cpp: Include <QString>. Don't include
- <memory>.
- (QGpgMESignKeyJob::Private): New.
- (QGpgMESignKeyJob::QGpgMESignKeyJob): Remove initialization of removed
- members. Initialize d.
- (QGpgMESignKeyJob::start, QGpgMESignKeyJob::setUserIDsToSign,
- QGpgMESignKeyJob::setCheckLevel, QGpgMESignKeyJob::setExportable,
- QGpgMESignKeyJob::setSigningKey, QGpgMESignKeyJob::setNonRevocable,
- QGpgMESignKeyJob::setRemark, QGpgMESignKeyJob::setDupeOk): Adapt to move
- of member variables to pimpl.
-
- cpp: Add support for trust signatures to sign key edit interactor.
- + commit a8d7b9d16796efd6f21abaeb43ccaeb2388eb6e4
- * lang/cpp/src/gpgsignkeyeditinteractor.h,
- lang/cpp/src/gpgsignkeyeditinteractor.cpp
- (GpgSignKeyEditInteractor::setTrustSignatureTrust): New.
- (GpgSignKeyEditInteractor::setTrustSignatureDepth): New.
- (GpgSignKeyEditInteractor::setTrustSignatureScope): New.
- * lang/cpp/src/gpgsignkeyeditinteractor.cpp
- (GpgSignKeyEditInteractor::Private::Private): Initialize new member.
- (makeTable): Add new transition. Fix typos in existing transitions.
- (GpgSignKeyEditInteractor::action): Handle SET_TRUST_VALUE,
- SET_TRUST_DEPTH, and SET_TRUST_REGEXP.
-
- cpp: Add getters for the attributes of a trust signature.
- + commit e391a08c6f96cd2d93c49b888459ee3f42058118
- * lang/cpp/src/key.h (TrustSignatureTrust): New enum.
- * lang/cpp/src/key.h, lang/cpp/src/key.cpp
- (UserID::Signature::isTrustSignature): New.
- (UserID::Signature::trustValue): New.
- (UserID::Signature::trustDepth): New.
- (UserID::Signature::trustScope): New.
-
- core: Extend gpgme_key_sig_t with trust signature members.
- + commit 276187f6b62a73e92b1c20f589510f80ab9e88d2
- * src/gpgme.h.in (struct _gpgme_key_sig): Add fields 'trust_depth',
- 'trust_value', and 'trust_scope'.
- * src/key.c (gpgme_key_unref): Free trust_scope.
- * src/keylist.c (keylist_colon_handler): Set the fields.
- * tests/run-keylist.c (main): Print the fields.
-
-2021-03-11 Werner Koch <wk@gnupg.org>
-
- doc: Add MIT license notice.
- + commit 3ffd7bd4039d90cd15fbf76f8c116814bffdab7c
- * LICENSES: New.
-
- core: New flag GPGME_KEYSIGN_FORCE.
- + commit 0821e2b1495e8944a5a1b5ba20ad5f403dde0dd0
- * src/gpgme.h.in (GPGME_KEYSIGN_FORCE): New.
- * src/engine-gpg.c (gpg_keysign): Implement.
-
- * tests/run-keysign.c (show_usage): Add option --force
-
-2021-03-05 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add method for getting config entries for components by entry name.
- + commit fe900a41bf809b263f05d5df21b6ed7fbfb2bbbc
- * lang/qt/src/cryptoconfig.h, lang/qt/src/cryptoconfig.cpp
- (CryptoConfig::entry): Move implementation to cpp. Add overload not
- requiring a group name.
-
-2021-02-01 Werner Koch <wk@gnupg.org>
-
- core: Remove experimental feature GPGME_EXPORT_MODE_NOUID.
- + commit c8fd8870b3bf089f99156448b7d1e59c1150f994
- * src/export.c (export_start): Remove GPGME_EXPORT_MODE_NOUID check.
- * src/engine-gpg.c (export_common): Ditto.
-
-2021-01-08 Werner Koch <wk@gnupg.org>
-
- Release 1.15.1.
- + commit bb9880778fb16cdb6de83905e45bf6c965770013
-
-
- Make distcheck make target a bit more reliable.
- + commit 133050b3fa28122a4b60dbbde698fb14379ccf95
- * Makefile.am (release): Do not pass --parallel
-
-2021-01-05 Ingo Klöcker <dev@ingo-kloecker.de>
-
- core: Make listing of signatures work if only secret keys are listed.
- + commit 5137d7fc214d0d9dcb947ccdc32fa87979f9a6d0
- * src/engine-gpg.c (gpg_keylist_build_options): Add "--with-sig-check"
- argument if signatures shall be listed.
- * tests/gpg/t-keylist-secret-sig.c: New.
- * tests/gpg/Makefile.am (c_tests): Add new test.
-
-2021-01-04 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp: Add const-overload of UserID::Signature::operator<
- + commit a6220adf3081c9c848f6d0a6fc3774cb168ccf9c
- lang/cpp/src/key.h, lang/cpp/src/key.cpp (UserID::Signature::operator<):
- Add const-overload. Deprecate non-const overload.
-
-2021-01-04 Andre Heinecke <aheinecke@gnupg.org>
-
- Qt: Undeprecate QByteArray based start functs.
- + commit 543e2106386f00ebecf7653e7896fa12a6e828ff
- * lang/qt/src/encryptjob.h, lang/qt/src/signjob.h (start):
- Undeprecate QByteArray based functions.
-
-2020-12-03 NIIBE Yutaka <gniibe@fsij.org>
-
- python: Fix key_export*.
- + commit 7a4fe82a017b751ad756c93d2b9e31d7be045275
- * lang/python/src/core.py (key_export): Just raise an error.
- (key_export_minimal, key_export_secret): Ditto.
-
-2020-11-24 NIIBE Yutaka <gniibe@fsij.org>
-
- core: Call _gpgme_passphrase_status_handler when exporting keys.
- + commit 53ac732bae46e1f883998e987fc84d4cababde12
- * src/export.c (export_status_handler): Call the handler.
-
-2020-11-20 Andre Heinecke <aheinecke@gnupg.org>
-
- Revert "cpp: Use portable off_t size_t"
- + commit a5c4b030258714dd72a2e276114183309cad3ec3
- This reverts commit 88294023c196497cfa6737be262c8b0c09d2a3ce.
-
-2020-11-20 NIIBE Yutaka <gniibe@fsij.org>
-
- m4: Update with newer autoconf constructs.
- + commit 4c6fd361593e22092770d120d68a18b4f70e0bb8
- * src/gpgme.m4: Replace AC_HELP_STRING to AS_HELP_STRING.
-
-2020-11-18 Andre Heinecke <aheinecke@gnupg.org>
-
- cpp: Use portable off_t size_t.
- + commit 88294023c196497cfa6737be262c8b0c09d2a3ce
- * configure.ac: Configure cpp data.h.in
- * lang/cpp/src/Makefile.am: Generate data.h
- * lang/cpp/src/data.cpp, lang/cpp/src/data.h: Use portable
- types.
- * lang/qt/src/Makefile.am: Include build dir.
- * lang/qt/tests/makefile.am: Include build dir.
-
-2020-11-18 Ingo Klöcker <dev@ingo-kloecker.de>
- Daniel Kahn Gillmor
-
- qt: Avoid empty "rem@gnupg.org" signature notations.
- + commit 3c185c2159cdcc23f44773fe1cfb624b27598c80
- * lang/qt/src/qgpgmesignkeyjob.cpp (sign_key): Check remark for being
- an empty string instead of a null QString.
-
-2020-11-18 NIIBE Yutaka <gniibe@fsij.org>
-
- build: Update with newer autoconf constructs.
- + commit 223779dfdeb7808809372587fa135a8cc2616ce8
- * configure.ac: Use AC_USE_SYSTEM_EXTENSIONS instead of AC_GNU_SOURCE.
- Use AS_HELP_STRING instead of AC_HELP_STRING.
- * m4/libtool.m4: Update from libgpg-error.
- * m4/gpg-error.m4: Update from libgpg-error.
- * m4/libassuan.m4: Update from libassuan.
-
-2020-11-12 Andre Heinecke <aheinecke@gnupg.org>
-
- qt: Fix export of qDebug GpgME::Error overload.
- + commit df5a89e6929479dc1bf301974fe7d607d024bc1f
- * lang/qt/src/debug.cpp: Include debug.h to get the export decl.
-
-2020-11-12 Werner Koch <wk@gnupg.org>
-
- build: Use ~/.gnupg-autogen.sh for the release targets.
- + commit 27abdac25dcd4ba57e073a5de2f057830e623282
- * Makefile.am (sign-release): Use global config vars.
-
- Post release updates.
- + commit 01a0d8ec1aa8543dca0986c6dcb5cabc535aae2c
-
-
- Release 1.15.0.
- + commit feea38c89d4ceb40334f884da9ab07cc4b73e757
- * configure.ac: Bump LT versions to c=C35/A24/R0, cpp=C18/A13/R0,
- qt=C12/A5/R0.
-
-2020-11-12 NIIBE Yutaka <gniibe@fsij.org>
- Louis Dupré Bertoni
-
- core: Support exporting secret keys.
- + commit 3382ecb17eb5d2a373cf2eccb301854fff42f6aa
- * src/export.c (export_start): Set command handler for passphrase
- interaction for the case when it's secret keys.
- (export_ext_start): Likewise.
-
-2020-11-12 NIIBE Yutaka <gniibe@fsij.org>
-
- python: Fix a test for newer GnuPG (>= 2.3).
- + commit 7139afc5cdc0d8203dc75d7c91fa94b704b3d64f
- * lang/python/tests/t-quick-subkey-creation.py: Specify RSA.
-
-2020-11-11 Andre Heinecke <aheinecke@gnupg.org>
-
- qt: Add export macro for QDebug operator.
- + commit 81f0dc7293a525af7cfbcb53cce050df718e0f91
- * lang/qt/src/debug.h: Add export macro.
-
-2020-11-11 NIIBE Yutaka <gniibe@fsij.org>
-
- qt: Allow build with older GnuPG (< 2.2.18).
- + commit 276f3390e18b34e6211b4c75876a0ab4c10a5ac9
- * lang/qt/tests/t-remarks.cpp (initTestCase): Check gpg for
- allow-weak-key-signatures option.
-
-2020-11-09 Werner Koch <wk@gnupg.org>
-
- Require at least libgpg-error 1.36.
- + commit eb99e8c483a70764408868602ef322602e9e72ce
- * configure.ac (NEED_GPG_ERROR_VERSION): Require 1.36.
- * src/cJSON.c: Remove code for older version.
- * src/engine.c (gpgme_get_engine_info): Ditto.
- * src/gpgme-json.c: Ditto.
- * src/op-support.c: Ditto.
- * src/util.h: Ditto.
-
-2020-11-04 Ben Kibbey <bjk@luxsci.net>
-
- Parse STATUS_CANCELED_BY_USER.
- + commit 35ca460019ea29ae646d08c954d4d4bf2dc1e8e1
- * src/gpgme.h.in (GPGME_STATUS_CANCELED_BY_USER): New.
- * src/status-table.c (status_table_s): Add "CANCELED_BY_USER".
- * src/passphrase.c (_gpgme_passphrase_status_handler): Return
- GPG_ERR_CANCELED during GPGME_STATUS_CANCELED_BY_USER.
-
-2020-11-03 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Make audit parameters of result signal optional.
- + commit 0fee135997438c63ab30891ec7e662093ec57491
- lang/qt/src/quickjob.h (QuickJob::result): Make parameters
- auditLogAsHtml and audigLogError optional.
-
- cpp: Mark helper functions as static.
- + commit b41f5fec1c42e0113ccbdbb7c258899793631b0a
- lang/cpp/src/key.cpp (find_subkey, verify_subkey, find_uid, verify_uid,
- find_signature, verify_signature): Mark as static.
-
- cpp: Make signatures belonging to the same user ID sortable.
- + commit 6a6d2a27648490f08aaf0759a533aef08b32070d
- lang/cpp/src/key.h, lang/cpp/src/key.cpp (UserID::Signature::operator<):
- New.
- lang/cpp/src/key.cpp (signature_index): New.
-
-2020-10-29 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add support for revoke signature quick command.
- + commit f042739d3a2ed23a90441a81782e4c3ac6ffb1c5
- * lang/qt/src/quickjob.h (QuickJob::startRevokeSignature): New.
- * lang/qt/src/qgpgmequickjob.h, lang/qt/src/qgpgmequickjob.cpp
- (QGpgMEQuickJob::startRevokeSignature): New.
- * lang/qt/src/qgpgmequickjob.cpp (revokeSignatureWorker): New.
-
- qt: Some minor cleanups.
- + commit 60328c4690beb8a82f5a3cc0d35b434e151c6365
- * lang/qt/src/qgpgmequickjob.h: (GpgME::Key, QDateTime, QString):
- Remove superfluous forward declarations.
- (QGpgMEQuickJob): Remove superfluous second template argument. It is
- identical to the default.
- (QGpgMEQuickJob::result): Remove. It is already defined in the base
- class.
-
- cpp: Add support for gpgme_op_revsig.
- + commit 4166d263e421cb4f98c4ca6bef549613c35e149e
- * lang/cpp/src/context.cpp, lang/cpp/src/context.h
- (Context::revokeSignature, Context::startRevokeSignature): New.
- * lang/cpp/src/context.cpp
- (getLFSeparatedListOfStrings, getLFSeparatedListOfUserIds): New.
- (getLFSeparatedListOfFingerprintsFromSubkeys): Extracted second part
- of function to getLFSeparatedListOfStrings.
-
- core: New function gpgme_op_revsig.
- + commit f3407d0ee4e34ed33be18de5f886a4da2affbf9f
- * src/gpgme.h.in (gpgme_op_revsig_start, gpgme_op_revsig): New.
- (GPGME_REVSIG_LFSEP): New.
- * src/context.h (ctx_op_data_id_t): Add OPDATA_REVSIG.
- * src/revsig.c: New.
- * src/Makefile.am (main_sources): Add revsig.
- * src/libgpgme.vers, src/gpgme.def: Add gpgme_op_revsig and
- gpgme_op_revsig_start.
- * src/engine.h, src/engine.c: (_gpgme_engine_op_revsig): New.
- * src/engine-backend.h (engine_ops): Add 'revsig' and adjust all
- engine initializers.
- * src/engine-gpg.c (gpg_revsig): New.
- (_gpgme_engine_ops_gpg): Set revsig to gpg_revsig.
- * doc/gpgme.texi: Document new functions.
- * tests/run-keysign.c: Add option --revoke.
-
-2020-10-28 NIIBE Yutaka <gniibe@fsij.org>
-
- python: Handle the when case __doc__ is None.
- + commit 089164a0c0d6024cbb133327d47a28ca3716cd56
- * lang/python/src/core.py (GpgmeWrapper): Check if None.
-
-2020-10-23 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp: Add support for gpgme_cancel.
- + commit 74c8131d809be49d64f482961fee1e6e0dbe4f4f
- * lang/cpp/src/context.cpp, lang/cpp/context.h
- (Context::cancelPendingOperationImmediately): New.
- * NEWS: Mention added API
-
- Add Assuan transaction that forwards status lines to another object.
- + commit ff23e24063feb9e1628858fd32df37be557072a6
- * lang/cpp/src/Makefile.am: Add new files.
- * lang/cpp/src/interfaces/statusconsumer.h,
- lang/cpp/src/statusconsumerassuantransaction.cpp,
- lang/cpp/src/statusconsumerassuantransaction.h: New.
- * NEWS: Mention new API.
-
- qt: Add QDebug stream operator for GpgME::Error.
- + commit b21cabb311803677104fa98809bc88b21243f358
- * lang/qt/src/Makefile.am: Add new files.
- * lang/qt/src/debug.h, lang/qt/src/debug.cpp: New.
- * NEWS: Mention it.
-
- cpp, qt: Add missing comparison operators for version info comparison.
- + commit c3406462d11b4241d4feee9be08e0ebe4f2e0bfa
- * lang/cpp/src/engineinfo.h (EngineInfo::Version::operator<=,
- EngineInfo::Version::operator>=, EngineInfo::Version::operator!=):
- New.
- * lang/qt/tests/t-various.cpp (TestVarious::testVersion): Add tests for
- new comparison operators.
- * NEWS: Mention added API
-
- cpp, qt: Fix version info comparison.
- + commit 2f53a2f4be86c0829213e2a9f846b7f8f0b106dc
- * lang/cpp/src/engineinfo.h
- (EngineInfo::Version::operator>(const Version &)): Fix logic.
- (EngineInfo::Version::operator>(const char *)): Use Version-overload of
- operator>.
-
- * lang/qt/tests/t-various.cpp: Add test.
-
-2020-10-03 Werner Koch <wk@gnupg.org>
-
- tests: Fix gcc incompatibility.
- + commit 25e2d717f44682f83c483ceba6ba81bad7fc3e97
- * tests/json/t-json.c: Remove var definitions inside a for statement.
-
-2020-10-01 NIIBE Yutaka <gniibe@fsij.org>
-
- gpgsm: Fix leaked fd.
- + commit fd904f87f8d43ad477b9d35d834f384e917b26fd
- * src/engine-gpgsm.c (gpgsm_new): Close gpgsm->diag_cb.server_fd.
-
-2020-09-09 Werner Koch <wk@gnupg.org>
-
- core: Fully implement the inquire callback for assuan_transact.
- + commit e4ee706e270c38937afe26ce9f54d17d037cb86f
- * src/engine-assuan.c (inquire_cb): Implement returning data.
-
- * tests/opassuan/t-command.c (inq_cb): Send some test data.
-
-2020-09-08 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Update the documentation of ListAllKeysJob.
- + commit 973c8116c840b4f1e0c3c80a7956641550c3388d
- * lang/qt/src/listallkeysjob.h (ListAllKeysJob::start): Document that
- the mergeKeys argument is ignored with gpg >= 2.1.
-
- cpp: Update key with --with-secret instead of updating it twice.
- + commit 3dd7377e120f10576b3b4334b6149f027ceec126
- * lang/cpp/src/key.cpp (Key::update): Call Context::key() only once
- with KeyListMode::WithSecret.
-
-2020-09-07 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: List keys once with --with-secret instead of twice.
- + commit 13bcc6680ac2030d45e4f36a64864bcd6a1d42a9
- * lang/qt/src/qgpgmelistallkeysjob.cpp
- (do_list_keys): Rename to do_list_keys_legacy and put into unnamed
- namespace.
- (merge_keys): Put into unnamed namespace.
- (list_keys): Rename to list_keys_legacy and put into unnamed namespace.
- (do_list_keys, list_keys): New.
- * lang/qt/tests/t-keylist.cpp (testListAllKeysSync): New.
-
- cpp: Add keylist mode WithSecret.
- + commit 188cc9e9b553998d2a8ec52bd8282365e22bf400
- * lang/cpp/src/global.h (WithSecret): New.
- * lang/cpp/src/context.cpp (operator<<): Handle WithSecret.
- * lang/cpp/src/util.h (add_to_gpgme_keylist_mode_t,
- convert_from_gpgme_keylist_mode_t): Ditto.
-
- cpp: Add missing keylist modes.
- + commit b714a6bbc8038c1b226bc920dd02ce8fbae7da8a
- * lang/cpp/src/util.h
- (add_to_gpgme_keylist_mode_t): Sort modes as in enum definition and
- add missing modes to check.
- (convert_from_gpgme_keylist_mode_t): Add missing handling of
- GPGME_KEYLIST_MODE_WITH_TOFU and GPGME_KEYLIST_MODE_WITH_KEYGRIP.
-
-2020-09-03 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp: Copy some more subkey properties when merging keys.
- + commit 4d87ea2851ae1156cfb1d754cf32b5c9073d4252
- * lang/cpp/src/key.cpp (Key::mergeWith): Also merge secret flag and
- keygrip
-
-2020-08-28 Werner Koch <wk@gnupg.org>
-
- qt: Fix an rfc2253 parser flaw.
- + commit b088d81cefe45c16409085f1560ad1d4c235a696
- * lang/qt/src/dn.cpp (parse_dn_part): Fix parser.
-
-2020-08-14 Ingo Klöcker <dev@ingo-kloecker.de>
-
- core: Add error handling to setexpire.
- + commit f66f856c89b7c02e368afe2343de7cce50e6109e
- * src/genkey.c (setexpire, gpgme_op_setexpire_start,
- gpgme_op_setexpire): Move to ...
- * src/setexpire.c: New.
- * src/Makefile.am (main_sources): Add that file.
- * src/context.h (ctx_op_data_id_t): Add OPDATA_SETEXPIRE.
-
- * lang/qt/tests/t-various.cpp (testSetExpire): Test error handling.
-
-2020-08-11 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Support changing expiry of subkeys.
- + commit 4f2cd3a0c6a8f3633040ff0e8cca787b2bd61fb2
- * lang/qt/src/changeexpiryjob.h (ChangeExpiryJob::start): New overload
- that accepts subkeys (with empty implementation).
- * lang/qt/src/qgpgmechangeexpiryjob.h,
- lang/qt/src/qgpgmechangeexpiryjob.cpp (QGpgMEChangeExpiryJob::start):
- New overload that accepts subkeys.
-
-2020-08-10 Ingo Klöcker <dev@ingo-kloecker.de>
-
- cpp: Make private helper a file static.
- + commit c813734c9ce0a77f5a9d463a6b16074e522cc2ce
- * lang/cpp/src/context.h, lang/cpp/src/context.cpp
- (Context::getLFSeparatedListOfFingerprintsFromSubkeys): Remove
- from Context; make it a static function instead
-
-2020-08-06 Andre Heinecke <aheinecke@gnupg.org>
-
- cpp: Use cstdlib getenv for portability.
- + commit 0676d41ef57db4da469aa9b733f8965606b667ec
- * lang/cpp/src/editinteractor.cpp (EditInteractor::Private::Private):
- Use std::getenv.
-
-2020-08-05 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Port to new setExpire()
- + commit 89501509134ab9cff87219fcaee9c1a758efa2fe
- * lang/qt/src/qgpgmechangeexpiryjob.cpp (change_expiry): Use new
- setExpire() instead of edit() with GpgSetExpiryTimeEditInteractor
-
-2020-08-04 Ingo Klöcker <dev@ingo-kloecker.de>
-
- qt: Add test for setExpire.
- + commit 84c6b6e2fea1176991bd89ac421af492d4550d6e
- * lang/qt/tests/t-various.cpp (TestVarious::testSetExpire): New.
-
- cpp: Add support for gpgme_op_setexpire.
- + commit aa03205fe5e8a8fa2b0feecb8a142aff2a1b25df
- * lang/cpp/src/context.cpp
- (Context::setExpire, Context::startSetExpire): New.
- (Context::getLFSeparatedListOfFingerprintsFromSubkeys):
- New helper.
- * lang/cpp/src/context.h
- (Context::SetExpireFlags): New enum.
- (Context::setExpire, Context::startSetExpire): Add
- prototypes.
- (Context::getLFSeparatedListOfFingerprintsFromSubkeys):
- Add as private helper.
-
- cpp: Add ostream operator for subkey.
- + commit 197ba151e70c0aef35ee713b119d49e4637c1d05
- * lang/cpp/src/key.cpp (Subkey): Add ostream operator.
- * lang/cpp/src/key.h: Update accordingly.
-
-2020-08-04 Ingo Klöcker <dev@ingo-kloecker.de>
- Andre Heinecke <aheinecke@gnupg.org>
-
- core: New function gpgme_op_setexpire.
- + commit db82e99a8a40c57a237dad030928d0fcf6b03ad7
- * src/gpgme.h.in (gpgme_op_setexpire_start, gpgme_op_setexpire): New.
- * src/libgpgme.vers, src/gpgme.def: Add new functions.
- * src/genkey.c (setexpire): New.
- (gpgme_op_setexpire_start, gpgme_op_setexpire): New.
- * src/engine.h, src/engine.c: (_gpgme_engine_op_setexpire): New.
- * src/engine-backend.h (engine_ops): Add 'setexpire' and adjust all
- engine initializers.
- * src/engine-gpg.c (gpg_setexpire): New.
- (_gpgme_engine_ops_gpg): Set setexpire to gpg_setexpire.
- * doc/gpgme.texi: Document new functions.
- * tests/run-genkey.c: Add option --setexpire.
-
-2020-07-16 Werner Koch <wk@gnupg.org>
-
- Release 1.14.0.
- + commit 6d7bf78ca5af35b0860aa20b12f799ab03752190
- * configure.ac: Bump LT versions to c=C34/A23/R0 cpp=C17/A11/R0
- qt=C11/A4/R0.
-
-2020-07-16 Andre Heinecke <aheinecke@gnupg.org>
-
- qt, cpp: Support export modes.
- + commit 690d967196d9f888e2b7c12d8c77ad752d7e15bf
- * lang/cpp/context.cpp, lang/cpp/context.h
- (Context::startPublicKeyExport, Context::exportPublicKeys): Extend
- with flags paramenter.
- (Context::ExportMode): New.
- * lang/qt/src/exportjob.h (ExportJob::setExportMode): New.
- * lang/qt/src/qgpgmeexportjob.cpp, lang/qt/src/qgpgmeexportjob.h:
- Update accordingly.
-
-2020-07-16 Werner Koch <wk@gnupg.org>
-
- core: Also allow GPGME_EXPORT_MODE_SSH for gpgme_op_export.
- + commit dfeedcc28d0406f5ad8ff8ad397e1ef930676535
- * src/export.c (export_start): Allow that mode.
-
- core: New export mode to export as OpenSSH public key.
- + commit 7f9e0ca57b29cc96bd1ca717d891c11db7435c5a
- * src/gpgme.h.in (GPGME_EXPORT_MODE_SSH): New.
- * src/export.c (export_ext_start): Allow for new mode.
- * src/engine-gpg.c (export_common): Implement.
- * tests/run-export.c (status_cb): New.
- (main): New options --status and --ssh.
-
-2020-07-15 Werner Koch <wk@gnupg.org>
-
- core: Deprecate the non-working trustlist functions.
- + commit 858909168298e8c6fb6f9f9009be2ee2d0d9f0ec
- * src/gpgme.h.in: Clarify that the trustlist function should not be
- used.
- * src/engine.c (_gpgme_engine_op_trustlist): Always return an error.
- * src/engine-backend.h (struct engine_ops): Remove trustlist member.
- * src/engine-gpg.c (gpg_trustlist): Remove.
- (struct engine_ops): Remove that member. Also in all other engines.
- * tests/gpg/t-trustlist.c: Remove.
- * lang/python/tests/t-trustlist.py: Remove.
-
- core: New keylist mode GPGME_KEYLIST_MODE_WITH_KEYGRIP.
- + commit c8048bf8eb988f22b20215197f4739bedafc4264
- * src/gpgme.h.in (GPGME_KEYLIST_MODE_WITH_KEYGRIP): New.
- * src/gpgme-json.c (op_keylist): New flag "keygrip".
- * src/engine-gpg.c (gpg_keylist_build_options): Pass the options.
-
- * lang/cpp/src/global.h (WithKeygrip): New.
- * lang/cpp/src/context.cpp: Add check.
- * lang/cpp/src/key.cpp (Key::update): Handle WithKeygrip.
- * lang/cpp/src/verificationresult.cpp: Ditto.
- * lang/cpp/src/util.h (add_to_gpgme_keylist_mode_t): Ditto.
-
-2020-07-14 Werner Koch <wk@gnupg.org>
-
- python: Workaround for a regression in GnuPG 2.2.21.
- + commit 32b80cf3c7d278ddf27117617a3e95e4a12c28c8
- * lang/python/tests/support.py (is_gpg_version): New.
- * lang/python/tests/t-encrypt-sym.py: Add workaround.
-
-2020-06-09 Andre Heinecke <aheinecke@gnupg.org>
-
- doc: Explain verify_result_t.status == 0 more.
- + commit 88f3202521d422d94bfd79e61bde00707d6f28c9
- * doc/gpgme.texi (gpgme_verify_result_t): Explain
- GPGME_STATUS_NO_ERROR more clearly.
-
-2020-06-05 Werner Koch <wk@gnupg.org>
-
- core: Fix setting of the chain_model signature result.
- + commit 728ead8ebd426307c6b3f1e3794b3a7ab585eebd
- * src/verify.c (parse_trust): Fix detection of "chain" keyword.
-
-2020-05-11 NIIBE Yutaka <gniibe@fsij.org>
-
- tests: Remove/change tests for GnuPG 2.3 with no gpg.keyserver.
- + commit 0cc040e82f9943792a58e73dbc97e20d312858fb
- * lang/qt/tests/t-config.cpp (testKeyserver): Remove.
- * tests/gpg/t-gpgconf.c (main): Test with dirmngr.keyserver.
-
-2020-05-08 Andre Heinecke <aheinecke@gnupg.org>
-
- w32: Explicitly link ws2_32.
- + commit 52f930c1ed7eee6336a41598c90ef3605b7ed02b
- * src/Makefile.am (gpgme_w32_extra_libs): New.
- (libgpgme_la_LIBADD, libgpgme_glib_la_LIBADD): Use it.
-
-2020-05-08 dupgit <olivier.delhomme@free.fr>
-
- GPGME_CREATE_NOEXPIRE is only available since 1.9.0.
- + commit 49c13854f3bf49bc0bf18c6ae6bbf9d66b6625c2
- * doc/gpgme.texi: Fixes version number from 1.8.0 to
- 1.9.0 for GPGME_CREATE_NOEXPIRE.
-
- GnuPG-Bug-Id: T4922
-
-2020-05-08 Werner Koch <wk@gnupg.org>
-
- core: Make sure the keygrip is available in WITH_SECRET mode.
- + commit 004fdf61c8b94f646409f4d5855adf8e43b29627
- * src/engine-gpg.c (gpg_keylist_build_options): Send --with-keygrip
- if --with-secret is used.
-
-2020-05-08 Andre Heinecke <aheinecke@gnupg.org>
-
- tests, json: Do not check for keygrip of pubkeys.
- + commit 5c0d1c7f76c95bad8bce4ad3bafd121ec5101d3c
- * tests/json/t-keylist-secret.out.json: Do not check for keygrip
- of bravo key.
-
-2020-03-27 NIIBE Yutaka <gniibe@fsij.org>
-
- tests: Add ECC key generation for tests/gpgsm.
- + commit 3658e2df65d321e334a8c96b4d252a4be20354bd
- * tests/gpgsm/t-genkey.c (check_result): New.
-
- build: Fix library dependency.
- + commit 71ef398bfd72d505290376d82575eb4f3aece035
- * src/Makefile.am (gpgme_tool_LDADD): Add @GPG_ERROR_LIBS@.
-
-2020-03-17 Werner Koch <wk@gnupg.org>
-
- core: New context flags "include-key-block" and "auto-key-import".
- + commit 3afa534645e3826c95e7c70d7ae61ffa2d63acec
- * src/gpgme.c (gpgme_set_ctx_flag): Add flags "include-key-block" and
- "auto-key-import".
- (gpgme_get_ctx_flag): Ditto.
- * src/context.h (struct gpgme_context): Add flags include_key_block
- and auto_key_import.
- * src/engine-gpg.c (struct engine_gpg): Likewise.
- (gpg_set_engine_flags): Set the flags for gpg versions >= 2.2.20.
- (gpg_decrypt): Set option according to the new flags.
- (gpg_encrypt): Ditto.
- (gpg_encrypt_sign): Ditto.
- (gpg_sign): Ditto.
- (gpg_verify): Ditto.
-
- tests/run-verify: Add option --auto-key-import.
- tests/run-sign: add option --include-key-block.
-
-2020-03-03 Bernhard Reiter <bernhard@intevation.de>
-
- python: fix minor typo in howto.
- + commit 11edc073a3d2bf72e49827e97349cb364612f300
-
-
-2020-02-19 Andre Heinecke <aheinecke@gnupg.org>
-
- qt: Change logging category.
- + commit ec9690cf5ce85f43997ac2a3abd3e728012aee4a
- * lang/qt/src/*: Change logging category to macro to QGPGME_LOG.
-
- qt: Log execution args of gpg-card.
- + commit ba08aadfa7d254f459f51470a7331c6cc2de5199
- * lang/qt/src/qgpgmegpgcardjob.cpp (do_work): Log call.
-
-2020-02-12 Andre Heinecke <aheinecke@gnupg.org>
-
- qt: Add dummy context to make mixin happy.
- + commit 9ca679c15054fbc1cc20e428a6ddf6a67dd0491e
- * lang/qt/qgpgmegpgcardjob.cpp (QGpgMEGpgCardJob): Add context.
-
- qt: Add GpgCardJob following the job pattern.
- + commit 77feaa451074741c2d07051915bc23d8b8377242
- * lang/qt/src/Makefile.am: Add new files.
- * lang/qt/src/job.cpp (GpgCardJob): Add impl stuff.
- * lang/qt/src/protocol.h (gpgCardJob): Get one.
- * lang/qt/src/qgpgmebackend.cpp,
- lang/qt/src/qgpgmebackend.h: Add helpers to get the job.
- * lang/qt/src/qgpgmegpgcardjob.cpp,
- lang/qt/src/gpgcardjob.h,
- lang/qt/src/qgpgmegpgcardjob.h: New.
-
-2020-01-29 Andre Heinecke <aheinecke@gnupg.org>
-
- Do not test for a bug in older GnuPG versions.
- + commit cff600f1f65a2164ab25ff2b039cba008776ce62
- * tests/json/t-keylist-secret.out.json
-
-2020-01-24 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- m4/python: Scan for python 3.8 as well.
- + commit 414938cfedbdb97b83d00e8619dec9502096be22
- * m4/python.m4: Scan for python 3.8 as well.
-
-2020-01-17 Andre Heinecke <aheinecke@gnupg.org>
-
- core: Add MacOS fallbacks to look for binaries.
- + commit 39052913f2154fa8e9575727e27d4101ef8b6460
- * src/posix-util.c (find_executable): New.
- (walk_path_str): Factored out from walk_path.
- (walk_path): Replaced by find_executable.
- (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Use find_executable.
-
-2019-12-13 Andre Heinecke <aheinecke@gnupg.org>
-
- cpp, qt: Use uidhash to select uids for signing.
- + commit 194272dbc3e326cc32c1464bc6fda0c0d10b5559
- * lang/cpp/src/gpgsignkeyeditinteractor.cpp (action):
- Use uidhash instead of number.
- (GpgSignKeyEditInteractor::setKey): New.
- * lang/cpp/src/gpgsignkeyeditinteractor.h: Update accordingly.
- * lang/cpp/src/key.h, lang/cpp/src/key.cpp: Wrap uidhash.
- * lang/qt/src/qgpgmesignkeyjob.cpp: Set the key.
-
-2019-12-13 Werner Koch <wk@gnupg.org>
-
- core: Extend gpgme_user_id_t with uidhash member.
- + commit 5eeae535ee0df981d8ae8b758b5bb0d190c7fd89
- * src/gpgme.h.in (struct _gpgme_user_id): Add field 'uidhash'.
- * src/key.c (gpgme_key_unref): Free it.
- * src/keylist.c (keylist_colon_handler): Set it.
- * tests/run-keylist.c (main): Print it.
-
-2019-12-11 Andre Heinecke <aheinecke@gnupg.org>
-
- Revert "doc: Remove UI Server documentation"
- + commit 7e7eaf43424556c3c25edc7b67e760ab60de55ce
- This reverts commit 1b2ad3b73c37d0583b8e438b4707dca60e26ae7e.
-
-2019-12-06 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- gpg: Avoid error diagnostics with --override-session-key when verifying.
- + commit ae4d7761a15b82eb98b0bcc72af2ae2e8973e1f9
- * src/engine-gpg.c (gpg_decrypt): only send --no-keyring when we are
- not verifying.
-
-2019-12-04 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- gpgme-tool: Fix help text for INCLUDE_CERTS.
- + commit c0c97dbbe6e08d338ba56abec023bd57287e3239
- * src/gpgme-tool.c (hlp_include_certs): added missing newline.
-
-2019-11-27 Werner Koch <wk@gnupg.org>
-
- core,w32: Silence compiler warnings.
- + commit d480a3c8f3a3fff867b84fd8feca9f111ae4adc7
- * src/w32-util.c (_gpgme_w32_cancel_synchronous_io): Add some casts.
-
-2019-11-12 Andre Heinecke <aheinecke@gnupg.org>
-
- doc: Remove UI Server documentation.
- + commit 1b2ad3b73c37d0583b8e438b4707dca60e26ae7e
- * doc/Makefile.am: Remove uiserver.texi
- * doc/gpgme.texi: Remove UI-Server mentions.
- * doc/uiserver.texi: Removed.
-
-2019-11-08 NIIBE Yutaka <gniibe@fsij.org>
-
- qt,tests: Take care for old DSA key using deprecated digest algo.
- + commit c49324200734e8ee8524bc096195e24e8aae87cb
- * lang/qt/tests/t-remarks.cpp (initTestCase): Supply
- allow-weak-key-signatures flag for GnuPG 2.3, which
- normally rejects use of SHA1 digest.
-
-2019-11-06 Andre Heinecke <aheinecke@gnupg.org>
-
- qt, tests: Add check for supported versions.
- + commit e7b5c6405da515101f62acce2837e6c0cc115b76
- * lang/qt/tests/t-encrypt.cpp (decryptSupported): Moved to
- t-support as loopbackSupported.
- * lang/qt/tests/t-remarks.cpp: Check for loopbackSupported.
- * lang/qt/tests/t-support.cpp, lang/qt/tests/t-support.h
- (loopbackSupported): New.
-
- qt, tests: Replace accidentally commited assert.
- + commit 024edbbd3c0059654e13c1c6acf78456450469ab
- * lang/qt/test/t-remarks.cpp (testRemarkReplaceSingleUIDExportable):
- Use QVERIFY instead of assert.
-
- qt,tests: Add test to add an exportable certify.
- + commit a56f6015e9518180237a70b8abc5ab9804212986
- * lang/qt/test/t-remarks.cpp (testRemarkReplaceSingleUIDExportable):
- New.
-
-2019-11-06 NIIBE Yutaka <gniibe@fsij.org>
-
- python: Fix how to generate documentation.
- + commit 1b840a151ad7f9680ec5144da5efb0ee6c1dcf1f
- * lang/python/doc/Makefile.am: Explicitly write rules to generate rst
- and texinfo files.
-
-2019-11-04 Andre Heinecke <aheinecke@gnupg.org>
-
- qt, tests: Add testcase for multiple remarsk.
- + commit 9cf4db1e5271ae1dd6f7ecb11513203cec368bc6
- * lang/qt/tests/t-remarks.cpp (testMultipleRemarks): New.
-
- cpp: Add API to obtain mutliple remarks.
- + commit cb7668caeb71429afce1aded9128334182b233e1
- * lang/cpp/src/key.cpp, lang/cpp/src/key.h (UserID::remarks): New.
- * NEWS: Mention this.
-
- qt,tests: Move remarks test out and extend it.
- + commit db888b1cc05723423a3154fe89e6191812c9c869
- * lang/qt/tests/t-various.cpp (testRemarks): Move out.
- * lang/qt/tests/t-remarks.cpp: New.
- * lang/qt/tests/Makefile.am: Update accordingly.
-
- cpp: Fix dupe_ok state for single uid.
- + commit 08933c183a4c299eb4696092d6d229f607fce985
- * lang/cpp/src/gpgsignkeyeditinteractor.cpp (makeTable):
- Add transition from command to dupe_ok
-
-2019-11-01 Andre Heinecke <aheinecke@gnupg.org>
-
- qt: Allow adding empty remarks.
- + commit d61491dd25d86a2bee54e4be29b715d97840be67
- * lang/qt/src/qgpgmesignkeyjob.cpp (sign_key): Allow empty
- remarks.
-
- cpp: Minor optimization in remark lookup.
- + commit 174caaa6f53e1125724a47dad3a5c991298aee6d
- * lang/cpp/src/key.cpp (UserID::remark): Use C-API.
-
- cpp: Fix adding duplicated sigs on multiple uids.
- + commit 266e05eee859b83d97079c2fbbd2f1da010fa412
- * lang/cpp/src/gpgsignkeyeditinteractor.cpp: Add another
- state DUPE_OK2 to allow gpg looping over all uids.
-
- cpp: Add env var to control editinteractor debug.
- + commit a4d5394b4607382d846e8c156439ac182f9945d7
- * lang/cpp/src/editinteractor.cpp (EditInteractor::Private::Private):
- Read "GPGMEPP_INTERACTOR_DEBUG" env var.
- (EditInteractor::Private::~Private): Close debug file.
-
-2019-10-29 Andre Heinecke <aheinecke@gnupg.org>
-
- core: Fix parsing of userid sigs after a subpkg.
- + commit 1242c6c93ac63383f648dd84cff847b86f4925f9
- * src/keylist.c (keylist_colon_handler): Do not clear
- out the tmp_uid when a subpacket line is encountered.
-
- qt,tests: Add test for remarks.
- + commit 1f3ca698f16465761649d402b999f0e2c9184344
- * lang/qt/tests/t-various.cpp (testRemark): New.
-
- qt: Extend signkeyjob to handle remarks and dups.
- + commit 373acd6923f2fc968fb870d2a8a9b49398cb652f
- * lang/qt/src/qgpgmesignkeyjob.cpp: Handle remarks and
- dupeOK.
- * lang/qt/src/signkeyjob.h (SignKeyJob::setDupeOk),
- (SignKeyJob::setRemark): New.
-
- cpp: Add support for multiple keysigs in edit.
- + commit 36f7f7a478228a64d3d51a4901a264c8f55f90bb
- * lang/cpp/src/gpgsignkeyeditinteractor.cpp
- (GpgSignKeyEditInteractor::setDupeOk): New.
- (makeTable): Add new tansitions.
- (SignKeyState): Add DUPE_OK Status.
- (GpgSignKeyEditInteractor::action): Handle DUPE_OK.
- (GpgSignKeyEditInteractor::Private::Private): Carry flag.
-
- cpp: Add convenience API to obtain remarks.
- + commit 83ecf1686a9a4e7de3a7b176cf272d9f9f640445
- * lang/cpp/src/key.h, lang/cpp/src/key.cpp (UserID::remark): New.
-
- core: Add cert-notation support and extended-edit.
- + commit 0224408c6332648461bdbba562f1a61c947c8ed3
- * src/context.h (gpgme_context): Add new flag for extended-edit.
- * src/engine-gpg.c (append_args_from_sig_notations): Add flags to
- control the kind of notations.
- (gpg_edit): Respect extended-edit and notations.
- (gpg_encrypt_sign, gpg_sign): Update call to
- append_args_from_sig_notations.
- * src/gpgme.c (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Support
- extended-edit.
- * NEWS, doc/gpgme.texi: Mention extended-edit.
-
-2019-10-28 Andre Heinecke <aheinecke@gnupg.org>
-
- core,w32: Initialize dbg_help for socket debugging.
- + commit fe2892618c20cd40c342cce26ffb6ac4644fd3c3
- * src/w32-io.c (_gpgme_io_select): Initialize dbg_help.
-
-2019-08-06 NIIBE Yutaka <gniibe@fsij.org>
-
- json: Fix t-decrypt-verify.out for GnuPG >= 2.3.
- + commit b97434fbf087f3176daf39699ff579d38d265317
- * tests/json/t-decrypt-verify.out.json: Remove check with key of
- 04071FB807287134.
-
-2019-07-16 Andre Heinecke <aheinecke@gnupg.org>
-
- core: Fix arg counting in enginge-gpg.
- + commit 6f4a886b30caaac3a30fcf30a7525d656d7e25ce
- * src/engine-gpg.c (build_argv): Properly check for all
- arguments and allocate memory for them.
-
-2019-07-12 NIIBE Yutaka <gniibe@fsij.org>
-
- python: doc: Remove generated files, put rules in Makefile.
- + commit 36428d8cf153a33faac6a951752cdc76e23f9737
- * lang/python/doc/Makefile.am (EXTRA_DIST): Remove files not
- distributed like files under meta.
- * Add rules to generate .rst and .texi files.
- * lang/python/doc/rst: Remove .rst files to be generated.
- * lang/python/doc/texinfo: Remove .texi files to be generated.
-
- python: doc: Add suffix for org files.
- + commit d9387650ffb159bbd04db74c4a1dba6f94e83116
-
-
-2019-06-13 Werner Koch <wk@gnupg.org>
-
- Release 1.13.1.
- + commit ea11c2a13cd44caf0bab395bd5132bf232318ad8
- * configure.ac: Bump LT versions to c=C33/A22/R1 cpp=C16/A10/R0
- qt=C10/A3/R4.
-
- python: Fix regression in t-decrypt-verify test.
- + commit 7d0a979c07d2a32c1e39a9403f009cbe026f77ff
- * lang/python/tests/t-decrypt-verify.py: Comment recent changes.
-
- python: Set a default-key into gpg.conf for the tests.
- + commit ad1395f210f3a3d5839f482f1933eac80a94d174
- * lang/python/tests/Makefile.am (gpg.conf): Set a default key.
-
- core: At debug levels up to 9 print only an ascii dump.
- + commit 4f11210b21a1914a1daf67474e9b82084b2cac01
- * src/debug.c (_gpgme_debug_buffer): Switch between two output
- formats.
-
-2019-06-06 Werner Koch <wk@gnupg.org>
-
- tests: Minor fix to run-threaded.c.
- + commit f6fd90c99aea8b604d76ae49d29bc5269c236a98
- * tests/run-threaded.c (random_data_close): Correct FD test.
-
- core: Add commented debug helper to posix-io.c.
- + commit f84abcad253ace782708c05760e52793814896f4
- * src/posix-io.c (_gpgme_is_fd_valid): New out-commented function.
-
- core: Fix error return value of _gpgme_run_io_cb.
- + commit 6b9ff1ba391a4364b37cb116748194f3f33b4f12
- * src/wait.c (_gpgme_run_io_cb): Fix return code.
-
-2019-06-06 Andre Heinecke <aheinecke@gnupg.org>
-
- tests: Add option "allow-del" to run-threaded.
- + commit e6f28273062ff26344163e219c1b784ae99de980
- * tests/run-threaded.c (main): Handle allow-del.
- (allow-del): New. Variable to allow deletion of keys.
- (import): Delete key after import if allow-del is set.
- (delete_impres): Delete keys from an import result.
- (delete_fpr): Delete a key by fingerprint.
-
-2019-06-05 Andre Heinecke <aheinecke@gnupg.org>
-
- tests: Implement import in run-threaded.
- + commit 024a7f75d4b8e017b92a13552b23e7fb1d22a5ce
- * tests/run-threaded.c (import): New.
- (do_data_op): Call it.
-
-2019-06-05 Werner Koch <wk@gnupg.org>
-
- core: Prettify _gpgme_io_select debug output again and fix TRACE_SYSRES.
- + commit 0f68c9f16bdae7295cac4cbf3c9a197840989a85
- * src/debug.c (_gpgme_debug): Take better care of NULL userinfo.
- (_gpgme_debug_end): Rework.
- (_trace_sysres): Print ERRNO and not the supplied RES.
-
-2019-06-05 Andre Heinecke <aheinecke@gnupg.org>
-
- tests: Use synced output for error in run-threaded.
- + commit 3a3648e3a56712261bda4fa866bd2419a740cec8
- * tests/run-threaded.c (do_data_op): Use synced out macro.
-
- tests: Avoid variable named the same as a macro.
- + commit 3a11421d0f63b8cb5afa407cd65f763b11033241
- * tests/run-threaded.c (decrypt, verify): Don't use a variable name
- that is also a macro.
-
- tests,w32: Fix thread creation in run-threaded.
- + commit 9bbe15ebbc41533fa219d5b3017a26a75bc72731
- * tests/run-threaded.c (create_thread): Check proper return
- value and not return value of CloseHandle.
-
-2019-06-05 Werner Koch <wk@gnupg.org>
-
- core: Improve the debug messages even more.
- + commit 8f9f3224aac78ce9d54e19e73acf7ab659787168
- * src/debug.c (_gpgme_debug): Add arg LINE. Chnage all callers.
- (_gpgme_debug_begin): Remove.
- * src/debug.h (TRACE_SEQ): Use the LINE arg of _gpgme_debug.
-
- core: Avoid explicit locks in the debug code.
- + commit 856d2e8d64f668855b1c22d3d38fe783904c6c48
- * src/debug.c (debug_lock): Remove. Also remove all users.
- (_gpgme_debug): Use gpgrt_bsprintf to prepare the output and finally
- print using standard fprintf. Reformat to prefix to be narrower.
-
-2019-06-04 Werner Koch <wk@gnupg.org>
-
- json: Print "nan", "-inf", "inf" if needed.
- + commit f56c996318dfa1c9f0d10582b18c2fce10d24668
- * src/cJSON.c (print_number): Print NaN and INF.
-
- json: Improve handling of large exponents in the JSON parsor.
- + commit fabe96126b4ed9c5e07b713813d7db26a02e5e5f
- * src/cJSON.c: Include stdint.h.
- (parse_number): Avoid overflob in SUBSCALE and cap integer values.
-
- core: Implement recpstring option parsing for gpgsm.
- + commit 1024884e07f750ce781fa74dffa62e126bdda622
- * src/engine-gpg.c (append_args_from_recipients_string): Detect bad
- options.
- * src/engine-gpgsm.c (set_recipients_from_string): Implement option
- parsing.
-
- core: Make gpgme_op_encrypt_ext work for CMS.
- + commit e9ca36f876e1066227668981f5a9e1a7f1031d9e
- * src/engine-gpgsm.c (gpgsm_encrypt): Fix argument check.
-
-2019-06-04 NIIBE Yutaka <gniibe@fsij.org>
-
- python: Fix typo in DecryptionError exception.
- + commit 47135ffdb923de66bc275a37e31811ad22c73dd7
- * lang/python/src/errors.py (DecryptionError): Rename from
- DeryptionError.
- (UnsupportedAlgorithm): Use DecryptionError.
-
-2019-06-03 Andre Heinecke <aheinecke@gnupg.org>
-
- Add NEWS for 1.13.1.
- + commit 49883023f661a18d73f9f2c7a3a98902af62ef6b
- * NEWS: Add news for 1.13.1
-
-2019-05-06 Andre Heinecke <aheinecke@gnupg.org>
-
- python: Make EXTRA_DIST files explicit.
- + commit f9c923bb2d87711235312e8085964372d7480ce4
- * configure.ac: Configure new Makefiles.
- * lang/python/Makefile.am: Remove dirs from extra dist and use
- subdirs.
- * lang/python/examples/Makefile.am, lang/python/src/Makefile.am,
- lang/python/doc/Makefile.am: New. Files that list EXTRA_DIST files.
-
- Python, doc: Minor style improvement.
- + commit 63055f13407760c877e5a3a94e564dfb3077dd47
- * lang/python/src/core.py (Context): Retab and shorten
- max line length.
-
- Merge remote-tracking branch 'origin/dkg/fix-T4276'
- + commit f303806a110a9813023a5fd9468a55ab0f7fb39d
-
-
-2019-05-03 Andre Heinecke <aheinecke@gnupg.org>
-
- Always use maintainer mode -Wno cflags.
- + commit 33b13d1c290d7ce35c636cce4265b512fb8e64c3
- * configure.ac (CFLAGS): Move -Wno flags out of the maintainer mode.
-
- cpp: Fix initialization warning.
- + commit 0ed81498147723f0e9282df5ae08b8b8e40edd2f
- * lanc/cpp/src/gpggencardkeyinteractor.cpp
- (GpgGenCardKeyInteractor::Private): Fix initialization warning.
-
-2019-05-03 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- python: stop raising BadSignatures from decrypt(verify=True)
- + commit 4100794e305ba22241ea5a4f7b42bb5189fbd948
- * src/core.py (decrypt): filter out signatures with errors from the
- returned verify_result, but avoid raising BadSignatures
- * tests/t-decrypt-verify.py: ensure that only a single signature is
- returned when evaluating cipher-3.asc, since the other signature is
- unknown.
-
- python/tests: try to decrypt and verify new test data.
- + commit bd2d282e572b5d02669238c9e087259b85638477
- * lang/python/tests/t-decrypt.py: test decryption of cipher-3.asc and
- cipher-no-sig.asc
- * lang/python/tests/t-decrypt-verify.py: test decryption and
- verification of cipher-3.asc and cipher-no-sig.asc
-
- tests: add two new types of encrypted data.
- + commit c5c3a9d10be415ea7bc0cd9730ad6085f16ee7a0
- * tests/gpg/cipher-3.asc: add an encrypted file containing signatures
- (one from a known key, and one from an unknown key)
- * tests/gpg/cipher-no-sig.asc: add an encrypted file containing no
- signatures at all
-
- python: make it easier to run a limited number of tests.
- + commit 30bd1c097544376f257d426d5feb4706fb5d3afd
- * lang/python/tests/Makefile.am: prefer py_tests from the environment
- if present.
-
-2019-05-02 Andre Heinecke <aheinecke@gnupg.org>
-
- tests: Add cms mode to run-import.
- + commit 4746c5c9e2dd9a3ee471a429c19bc1f7fd1d07db
- * tests/run-import.c (show_usage): Add doc for cms / openpgp.
- (main): Handle protocol.
-
-2019-04-24 Andre Heinecke <aheinecke@gnupg.org>
-
- cpp: Add wrapper for gpgme_set_global_flag.
- + commit 7981ec4147f3058d5b56905903456247993dc6f7
- * lang/cpp/src/context.cpp (setGlobalFlag): New.
- * lang/cpp/src/global.h (setGlobalFlag): Export it.
-
-2019-04-19 NIIBE Yutaka <gniibe@fsij.org>
-
- core: Fix duplication of close_notify_handler for gpgsm.
- + commit 7673ef7953482f42cab50dca1810e5c9d10f461e
- * src/engine-gpgsm.c [!USE_DESCRIPTOR_PASSING] (gpgsm_new): Remove
- last call to _gpgme_io_set_close_notify.
-
- core: Fix error return.
- + commit 814f6c8de8006830f19a029a879bd92f9e584789
- * src/engine.c (_gpgme_set_engine_info): Add error return.
-
-2019-04-09 Andre Heinecke <aheinecke@gnupg.org>
-
- core,w32: Fix minor potential memleak.
- + commit 140d694e1fddf16fa3fd2371b9a852ebb14622c8
- * src/w32-util.c (_gpgme_create_process_utf8): Free converted
- startup info strings.
-
- core,w32: Fix new w32-util functions.
- + commit ecbba12b869106ba03e10b7b7dd80f74d086831b
- * src/w32-util.c (_gpgme_access): Respect mode parameter.
- (_gpgme_create_process_utf8): Convert startupinfo, too.
-
- core,w32: Improve handling of Unicode paths.
- + commit a82e3a0ae57a48ba173e282a050680751006c074
- * src/dirinfo.c (get_gpgconf_item): Use _gpgme_access.
- * src/posix-util.c (_gpgme_access): Add forward to normal access.
- * src/sys-util.h (_gpgme_access): New for posix and w32.
- * src/w32-io.c (_gpgme_io_spawn): Use _gpgme_crate_process_utf8.
- * src/w32-util.c (utf8_to_wchar, utf8_to_wchar0): The usual w32 conv.
- (find_program_in_dir): Use _gpgme_access.
- (find_program_at_standard_place): Use wchar API and convert to UTF-8.
- (_gpgme_access): Convert UTF-8 to wchar and use wchar API.
- (_gpgme_create_process_utf8): Convert UTF-8 to wchar and use wchar API.
-
- core,w32: Show w32-spawn warning only once.
- + commit 937adfdcbb22f715c5a331e5e2d4546ac15a1b7e
- * src/w32-io.c (_gpgme_io_spawn): Show MessageBox only once.
-
-2019-03-27 Andre Heinecke <aheinecke@gnupg.org>
-
- core, w32: Fix format string errors on windows.
- + commit 4a4680f8901ecdcb7e8d5ed55f48226ccfccd7c8
- * src/debug.c (_gpgme_debug): Use gpgrt_vasprintf instead of
- vfprintf to have a more portable format.
-
- core: Fix assuan logger-fd hack for windows.
- + commit 19a4c4daa2cfd075b181d5131a4b8b4d54714b8c
- * src/assuan-support.c (my_spawn): Zero is a perfectly fine fd.
-
-2019-03-26 Andre Heinecke <aheinecke@gnupg.org>
-
- core,w32,glib: Fix build of w32-glib-io.c.
- + commit 213c4bc1eb1f45695cc3955cc722ebb363dcbdd0
- * src/w32-glib-io.c (_gpgme_io_pipe, _gpgme_io_connect): Do not
- use TRACE_SUC in a return statement.
-
-2019-03-26 Werner Koch <wk@gnupg.org>
-
- Release GPGME 1.13.0.
- + commit 1b5a6bf27ac9b2e5a1fc4d5e879bd4901fcad5bb
- * configure.ac: Bump LT versions.
- For C to C33/A22/R0.
- For C++ to C15/A9/R0.
- For Qt to C10/A3/R3.
-
-2019-03-26 Andre Heinecke <aheinecke@gnupg.org>
-
- core: Fix a strtoul to strtol.
- + commit 10576dc427b3746e2c3b9bc40efe618a3bd40519
- * src/assuan-support.c (my_spawn): Fix using strtoul for
- a long.
-
- cpp: Fix GenCardKeyInteractor and extend it.
- + commit ffdb75217bc09561cf651dab15cd26e0024d89a7
- * NEWS: Mention interface change.
- * lang/cpp/src/gpggencardkeyinteractor.cpp
- (GpgGenCardKeyInteractor::setAlgo): New.
- (GpgGenCardKeyInteractor::action),
- (GpgGenCardKeyInteractor::nextState: Handle new interface.
-
-2019-03-25 Andre Heinecke <aheinecke@gnupg.org>
-
- core, w32: Add hack to translate diag logger-fd.
- + commit 129def87b262241483ba3a8b6771ad6d07c2e3be
- * src/assuan-support.c (my_spawn): Add hack to
- mark the logger fd for w32spawn translation.
-
-2019-03-20 Andre Heinecke <aheinecke@gnupg.org>
-
- qt: Handle diagnostic audit log for CMS.
- + commit 47369569e23482bdd24a136b071192352b1d1347
- * lang/qt/src/threadedjobmixin.cpp(_detail::audit_log_as_html):
- Handle CMS audit log.
-
-2019-03-19 Werner Koch <wk@gnupg.org>
- Andre Heinecke <aheinecke@gnupg.org>
-
- core: Support GPGME_AUDITLOG_DIAG for gpgsm.
- + commit dd21ec997cf4b6ba18538c63c728478110ad1f60
- * src/engine-gpgsm.c (struct engine_gpgsm): Add fields diag_cb and
- diagnostics.
- (close_notify_handler): Close the diag fd on status fd close.
- Handle diag close.
- (gpgsm_cancel): Handle diag.
- (gpgsm_release): Free DIAGNOSTICS.
- (gpgsm_new): Support the diag feature.
- (start): Set a handler for the diag fd.
- (gpgsm_getauditlog): Support GPGME_AUDITLOG_DIAG.
-
-2019-03-13 Andre Heinecke <aheinecke@gnupg.org>
-
- cpp: Fix Error::hasSystemError.
- + commit c4cc47ee8f0bedc58e58ab416689d7014b0df2e7
- * lang/cpp/src/context.cpp (Error::hasSystemError): Invert logic to
- do what it says.
-
-2019-02-28 Werner Koch <wk@gnupg.org>
-
- json: Fix cosmetic error in the repl.
- + commit 1bdab961c51fc038c33ae8116595aa0213ab1dd5
- * src/gpgme-json.c (native_messaging_repl): Use correct var with sizeof.
-
- tests: Let run-verify print the de-vs flag.
- + commit b159b2eddd9df5df6cc8f29bd999cf1603c56991
- * tests/run-verify.c (print_result): Chack is_de_vs.
- * tests/run-import.c (main): Fix bad parameter for format string.
-
-2019-02-27 Andre Heinecke <aheinecke@gnupg.org>
-
- json: Limit recursion depth.
- + commit 4a117859e7a512458ab78cfedfae0372805196b1
- * src/cJSON.c (MAX_DEPTH): New. Maximum recursion depth.
- (parse_value, parse_array, parse_object): Carry and check
- depth argument.
- (cJSON_ParseWithOpts): Initialize depth.
-
-2019-02-21 Andre Heinecke <aheinecke@gnupg.org>
-
- cpp: Add ostream operators for import result.
- + commit 73b2f40ae5e6881991dea609b0781373b28d7d30
- * lang/cpp/src/importresult.cpp: Add ostream operators.
- * lang/cpp/src/importresult.h: Update accordingly.
-
- cpp: Make GpgME::Data::toKeys really const.
- + commit 6175025c822678102c3f089e37952aa84b19a3ec
- * lang/cpp/src/data.cpp (GpgME::Data::toKeys): Rewind afterards.
-
-2019-02-19 Werner Koch <wk@gnupg.org>
-
- core,w32: Fix missing sentinel in dir name builder.
- + commit 4c49417cc0dbd7f34269aff00fccafba150af744
- * src/w32-util.c (_gpgme_get_gpgconf_path): Add NULL top strconcat.
-
-2019-02-11 Andre Heinecke <aheinecke@gnupg.org>
-
- tests: Fix memleak in run-threaded.
- + commit f8312d7c333193582dcb5816198219b9564023f0
- * tests/run-threaded.c (verify): Free msg.
-
-2019-02-10 Ben McGinnes <ben@adversary.org>
-
- python: examples.
- + commit 302d5ef52e095378231efd54677b5c315354ad78
- * A rather obvious variant of the existing key import examples, except
- directed at Mailvelope's keyserver.
- * Yeah, Werner, I know ... but it exists because I used it and there's
- no harm in sharing.
-
-2019-01-30 Ben McGinnes <ben@adversary.org>
-
- python: docs.
- + commit e005052f4d5b29beda2252f8042dbf5728f5e2aa
- * Version bump in preparation for whenever GPGME 1.13.0 happens.
- * Ran the post_installer.py for docs preparation again.
-
-2019-01-27 Ben McGinnes <ben@adversary.org>
-
- python: post installer script.
- + commit 2de1e599770cdb129b84302d963f65fdd3ddd2a4
- * Removed auto-generated .texi files from doc/src/ so only the
- corrected versions are left.
- * Which means now it is complete, but with the initial work to expand
- it with info file generation later.
-
- python: post installer docs fix script.
- + commit 1e265723653042bc1010b457537b69a2011b43b7
- * Moved post_installer.py into the examples/howto/ directory.
- * Added instructions for its use to the Python Bindings HOWTO.
- * Ran it as intended from the lang/python/ directory in order to both
- prove it works and quickly and easily get the updated howto
- replicated. Also to fix all those .texi files.
-
-2019-01-25 Werner Koch <wk@gnupg.org>
-
- json: Better use gpgme_free.
- + commit ed81892917f47dddc23aa99d88733e3f8f344256
- * src/gpgme-json.c (subkey_to_json): here
-
- json: Fix minor memory leaks.
- + commit 7f2423371964263784252cf839269023b6573bd2
- * src/gpgme-json.c (interactive_repl): Fix memleak.
- (subkey_to_json): Ditto
- (op_config): Delay init of j_comps to avoid a leak on error.
-
-2019-01-16 NIIBE Yutaka <gniibe@fsij.org>
-
- build: With LD_LIBRARY_PATH defined, use --disable-new-dtags.
- + commit 66bcb8acb2452cf19318023ed0ff1ea7d7bb8439
- * configure.ac (LDADD_FOR_TESTS_KLUDGE): New for --disable-new-dtags.
- * tests/Makefile.am (LDADD): Use LDADD_FOR_TESTS_KLUDGE.
- * lang/cpp/tests/Makefile.am, lang/qt/tests/Makefile.am: Likewise.
- * tests/gpg/Makefile.am, tests/gpgsm/Makefile.am: Likewise.
- * tests/json/Makefile.am, tests/opassuan/Makefile.am: Likewise.
-
-2019-01-15 Andre Heinecke <aheinecke@gnupg.org>
-
- tests: Add diagnostic example to run-import.c.
- + commit ce327f994a2888b807b63cf202ddcecc3fb9c685
- * tests/run-import.c (main): Show diagnostics in verbose mode.
-
-2019-01-09 Andre Heinecke <aheinecke@gnupg.org>
-
- qt: Use tofu conflict test keys without expiry.
- + commit 66376f3e206a1aa791d712fb8577bb3490268f60
- * lang/qt/tests/t-tofuinfo.cpp: Use new test keys without
- expiry.
-
-2019-01-02 Ben McGinnes <ben@adversary.org>
-
- python docs: post installer.
- + commit a0dbdfebbb60f0d34dd16894803e95221d8be668
- * Merging post installer script.
- * Included ammended Sphinx config file to try to reduce the
- auto-generated EPUB validation failures it produces.
-
- python: post installer doc fix script.
- + commit a2e7c863c821ca035f1e3f8077bdae3b0f81f5eb
- * Got rid of the bash bit in the comments.
- * Made the final printed instructions far more obvious.
-
- python: examples.
- + commit 207d4289d84971d11ec1824fbe7d4a2be63b56e4
- * Fixed inter-edit.py so it will actually work now.
- * made 3 others executable.
- * Fixed the semantics of assuan.py's instructions.
-
-2018-12-26 Ben McGinnes <ben@adversary.org>
-
- python: examples.
- + commit d406471d4bf9c79140e4bc91de7d316ec7465892
- * Fixed inter-edit.py so it will actually work now.
- * made 3 others executable.
- * Fixed the semantics of assuan.py's instructions.
-
-2018-12-24 Ben McGinnes <ben@adversary.org>
-
- python: docs processing.
- + commit ef9355c2fe8f81ccd73e0ed45ce33e925928f8e1
- * Added some EPUB specific config options to the Sphinx config file
- which might help reduce some of Sphinx's more stupid default errors
- with EPUB validation.
- * Added lang/python/post_installer.py script for automating the
- generation of .texi and .rst "source" files from the real source
- files written in Org mode. Includes recreating the Sphinx Makefile
- which is excluded due to the m4 toolchain in parent directories, it
- also handles the rewriting of the reST index file properly and
- rewrites the .texi files so they don't impale themselves on Unicode.
-
-2018-12-21 Ben McGinnes <ben@adversary.org>
-
- python: docs.
- + commit 06bca0eaa8de8405fafc892ab7864990f8853bcf
- * Found a bug in org-mode's export to texinfo function which will
- require either manual modification of each file or a customs sed run
- over the generated files for all updates.
- * Manually updated the current files for now, but will need to add
- some post-install processing scripts for future use (I already have
- some of these for my specific setup, they just need to be made a
- little more generic and platform independent for here).
-
- python: groups example.
- + commit dc5f416351e47bfafb46a53f8fd8435dd6c231ba
- * Tightened code a little more.
-
-2018-12-17 Ben McGinnes <ben@adversary.org>
-
- python docs: house keeping.
- + commit daded4925489d306f6a65271c2f55101b331187c
- * Dropped the ASCII copyright line, since even MS have conceded their
- battle against Unicode enough to load UTF-8.
- * Fixed the drafts section since there will be less need of multiple
- output format testing from next year.
-
-2018-12-17 Werner Koch <wk@gnupg.org>
-
- core: Silence newer compiler warnings.
- + commit 8b41fb08f00f01fe0dd8b2b5455d3422d97ddc60
- * configure.ac: Add -Wno-format-truncation and
- -Wno-sizeof-pointer-div.
- * src/b64dec.c (_gpgme_b64dec_proc): Add fallthrough annotation.
- * src/cJSON.c (parse_string): Ditto.
- * src/gpgme-json.c (main): Ditto.
-
-2018-12-16 Ben McGinnes <ben@adversary.org>
-
- python: howto and examples.
- + commit fbc298dc1b0fbb51ebc92a9d56c45b78c5e9989d
- * Tightening up both the documentation and some of the example code.
-
-2018-12-13 Ben McGinnes <ben@adversary.org>
-
- python: examples bugfix.
- + commit 4308d172816f3172454fac1dc0771014056764a1
- * Fixed a bug in the ProtonMail importers (pmkey-*.py) where multiple
- keys found for a username would always result in the last email
- address checked being returned in the printed output for all located
- keys.
-
-2018-12-12 Ben McGinnes <ben@adversary.org>
-
- python: new example script.
- + commit 3849b60e22432ef33f0d1d39b88e07922ad7779e
- * Though Keybase really should not be encouraged due to
- disengenuosness and FUD emanating from that souce, this new script
- will obtain a key hosted on that site and import it when supplied
- with the keybase username.
-
- python: what's new summary.
- + commit 3ca7cf07f5d3ec4af89e69ed13ea7ab701e33c03
- * Added a little more detail to the what's new section.
-
- python: advanced howto example.
- + commit 64758a0dac4c7c3b312dccbc1661813e2c3e2888
- * Added Cython requirement to this advanced use case.
-
- python: howto examples equirements.
- + commit 4c324ac1beb710714262af0040dea21232ba87d9
- * Added small requirements.txt file for additional modules not in the
- standard python library and not including the bindings themselves
- and not including Cython, which is for more advanced examples.
-
-2018-12-10 Ben McGinnes <ben@adversary.org>
-
- python: hkp key importer.
- + commit 772b5aae24a2a3a996f399024845de612192fc2f
- * Tweaked it slightly to avoid repetition of key searches when there
- is only one search pattern to check (i.e. usually a single key ID or
- fingerprint).
-
- python: HKP search and import updates.
- + commit 2e7a14c9b369096775a035091c197f2d438142a0
- * Tweaked the code again so that it can also handle the cases where
- someone has included a hexadecimal string in their user ID.
- * Updated the HOWTO to match.
- * Exported to .rst and .texi.
-
- python: key import via HKP example.
- + commit fe7e01d164b64ad5e7f65cb80e4bf13f06d8d3ef
- * Fixed the logic used to search for any given pattern.
- * Added a sensible method of checking whether a pattern is a key ID or
- fingerprint.
-
- python: docs updates.
- + commit 7c63bfe4ab434b61a871aec4bc1d0a05b4c068e6
- * Multiple updates, expanding on the Windows installation issues.
- * Also adding to the new maintenance mode reference document.
- * Includes content relating to the resolution of T4271 and T4191.
-
-2018-12-07 Andre Heinecke <aheinecke@intevation.de>
-
- core: Fix ERR_INV_ARG check in genkey_start.
- + commit 78f6291a3bf56769f53af66fe39718ddd2d74bf2
- * src/genkey.c (gpgme_op_genkey_start): Fix check for
- parms.
-
-2018-12-05 Ben McGinnes <ben@adversary.org>
-
- python: examples.
- + commit dc5600d306f808767068bad5117232fc3d35ac43
- * cut some of then poor len usage.
-
-2018-12-05 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- python: overhaul logic of Context.decrypt()
- + commit 65c28da4e49a8778607fdcf6f51a840166616d9f
- * lang/python/src/core.py (Context.decrypt): simplify and clarify the
- logic behind handling verify=False.
- * lang/python/tests/t-decrypt.py: ensure that we test verify=False
-
- python: ctx.decrypt() has problematic error handling.
- + commit 878a0ad01265dba5b06429276bdcc5c21fedb6f5
- * lang/python/src/core.py (Context.decrypt): document odd
- error-handling behavior as a potential problem to be addressed.
-
- python: Clarify the meaning of ctx.decrypt(verify=[])
- + commit 5d8b4f74891af22379899ccee9e8ee849144eee3
- * lang/python/src/core.py (Context.decrypt): docstring clarification
- of what it means to pass an empty list to the verify argument.
-
- python: gpg.Context.decrypt verify_sigs and sink_result are bools.
- + commit b8fa76a30c02afc3d7f6aad0a59bb613d1b711fc
- Both of these function-internal variables are never used for anything
- other than a binary state. Implement them as the booleans they are.
- Otherwise, casual readers of the code might think that they're
- supposed to represent something other than a flag (e.g. "verify_sigs"
- could mean "the signatures to verify", and "sink_result" could mean
- "the place where we sink the result").
-
- Signed-Off-By: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- python: clarify documentation for verify argument for Context.decrypt()
- + commit 49af6d76e55f348c7b3cece756d6ac643d17ee68
- It's easy to miss that verify can take a list of keys. Make it more
- obvious to the average python dev who reads docstrings.
-
- python: simplify Context.decrypt()
- + commit 2491e6f92f5b562cbd6f7f931df630cb106f6688
- In the course of trying to address https://dev.gnupg.org/T4271, i
- discovered that gpg.Context.decrypt() has a bit of superfluous code.
- This changeset is intended to simplify the code without making any
- functional changes.
-
-2018-12-05 Ben McGinnes <ben@adversary.org>
-
- python: windows c and cython.
- + commit 1dffdcc6e9d249111eb8761d29ef3b35b32a8c3d
- * added warning that he Windows C runtime issues will also affect use
- with Cython and that relying on binary installers would remove that
- possible use case.
-
-2018-12-04 Ben McGinnes <ben@adversary.org>
-
- python: sphinx modification.
- + commit c8a04af676d981b42172c9bdad82eb83f91c8ce6
- * The make.bat file incorrectly triggers the trailing whitespace check
- in the git repo (it doesn't actually have any trailing whitespace,
- but triggers the error on every line).
- * Will need to add a script to handle future org-mode conversions of
- the index page anyway, so will get that script to deal with this
- problem too by generating the make.bat file if the platform is
- detected as Windows.
-
- python: Sphinx support.
- + commit 6d8823b81162c18406d40ec59bd252cfdf1df648
- * Added framework from sphinx-quickstart to lang/python/doc/rst/ so
- that Python developers already using Sphinx can use the generated
- reST files with existing documentation systems.
- * Note that when generating source files from Org-mode, the index page
- will require manual intervention to match the Sphinx requirements.
-
- python: docs update.
- + commit 8613727f1ee985c3cfa2c815523312914f033ffd
- * Expanded the section on issues with Windows installations, with
- greater detail of which versions of Visual Studio are needed
- depending on which version of CPython is to be used.
- * Included a recommendation which is a bit harsh without being totally
- prickish.
- * Updated all files to not link to author's key or related data in
- order to make them all consistent with the changes in commit
- 649b19688132dd315e361c0f5b63ba6d8f45996d.
-
-2018-12-04 NIIBE Yutaka <gniibe@fsij.org>
-
- build: Remove --with-*-prefix, which is no need any more.
- + commit 5dbac555f23bcec4adcfd82de61878f0f23ff272
- * autogen.rc (configure_opts): Remove --with-*-prefix.
-
-2018-12-03 Andre Heinecke <aheinecke@intevation.de>
-
- qt,cpp: Consistently use nullptr and override.
- + commit 1d31420650bfa7ca1d1503cc7431b3360e86022c
- * lang/cpp/src/Makefile.am, lang/qt/src/Makefile.am (AM_CPPFLAGS):
- Add suggest-override and zero-as-null-pointer-constant warnings.
-
- * lang/cpp/src/*, lang/qt/src/*: Consistenly use nullptr and override.
-
-2018-11-30 Ben McGinnes <ben@adversary.org>
-
- python: documentation fixes.
- + commit 2e3a681d0c35bbf6db584fedc9d7f0a010430b51
- * Typographic and whitespace error correction pertaining to the
- previous update.
-
- python: documentation.
- + commit 3b056a01a252bb72df5744409ba494e1a6e54d31
- * Added long description to setup.py.in.
- * Added maintenance mode details with clarification for what type of
- things would be a bug as far as MM is concerned and what wouldn't
- be.
- ** Includes a not too subtle hint directed towards the donations page.
- * Miscellaneous tightening of documentation.
-
-2018-11-28 Andre Heinecke <aheinecke@intevation.de>
-
- tests, json: Make them run on debian stable.
- + commit a9cfb6dad8ac60543bcb06f4d0515f4a64ad897a
- * tests/json/t-json.c (main): Relax version check a bit.
-
-2018-11-26 Ben McGinnes <ben@adversary.org>
-
- python docs: checking key signatures.
- + commit 1c92f3ff55ad0cdda06d05ad0a83193e3a147b7e
- * Added instructions for checking key certifications or key
- signatures (depending on preferred terminology).
- * Added pendulum module to recommended installations, but not to
- requirements.
-
-2018-11-22 Ben McGinnes <ben@adversary.org>
-
- python: docs update.
- + commit c87155e6eba2e97e4e6c6ee7e2591088a5489556
- * Added documentation for the new methods added to gpgme.version.
- * Removed the Flask based advanced use case from the what-is-new
- section as that type of code will not be added here.
-
- python: version as integers.
- + commit de6bb23279796b9ae4dc369d58591cb75f818684
- * lang/python/version.py.in: added gpg.version.versionintlist
- * If gpg.version.versionintlist[2] ever returns -1 then there's a
- serious problem with the build and it should be lodged as a bug if
- it's repeatable. Seeing this should never happen, but checking for
- it is better than not doing so.
-
-2018-11-19 Werner Koch <wk@gnupg.org>
-
- core: Fix format string errors in w32-io.c and use of TRACE_SUC.
- + commit b182838f71d8349d6cd7be9ecfb859b893d09127
- * src/w32-io.c: Fix use of TRACE_SUC. Fix some format strung errors.
-
-2018-11-19 Ben McGinnes <ben@adversary.org>
-
- python: import type.
- + commit fd34415bdd57332424bd5a98d279e2331678a2fb
- * Fixed bug T4242 and tested that dropping "Import" in favour of
- "import_type" does indeed work just fine.
-
- python: import constant.
- + commit f773ad392da57e6be4ade93c44baa5d2057c40b6
- * lang/python/src/constants/__init__.py: dropped use of Import
- capitalisation and renamed lang/python/src/constants/import.py to
- lang/python/src/constants/import_type.py to address bug T4242.
- * lang/python/doc/src/gpgme-python-howto: minor docs updates.
-
-2018-11-16 Werner Koch <wk@gnupg.org>
-
- core: Protect the trace macros for fun and profit.
- + commit 7a1e7006d06fdbab86ea79a197c316744b09d933
- * src/debug.h: Protect macros using.
- (_trace_err, _trace_sysres, _trace_syserr): New helper inline
- functions.
-
- core: Fix a LF problem in the new debug fucntion.
- + commit 7eda50a673d15320022375360fd220e8381b69ab
- * src/debug.c (_gpgme_debug): Print a LF for an empty FORMAT unless we
- are in legacy mode.
-
- core: Remove old debug helper function.
- + commit 94d274a1a33c6fb30981290b127f2c4babc27245
- * src/debug.c (_gpgme_debug): Remove.
- (_gpgme_debugf): Rename to _gpgme_debug.
-
- core: Simplify the trace maros by using variadics.
- + commit 5857491a2aa7d4975100d90f1ad62c08aa345e3e
- * src/debug.h (TRACE_BEG, TRACE_LOG, TRACE_SUC): Use variadic macros
- and remove the TRACE_BEG1 et al. Change all users to always pass a
- format string.
- (TRACE): Ditto.
- * src/debug.c (_gpgme_debugf): New.
- * configure.ac <GCC>: Add -Wno-format-zero-length.
-
-2018-11-15 Andre Heinecke <aheinecke@intevation.de>
-
- tests: Add run-threaded for multithread tests.
- + commit d0402f886b720d03369887c807581bd980ee70cf
- * tests/Makefile.am (run-threaded): Add.
- * tests/run-threaded.c: New.
-
- tests,json: Clean openpgp-revocs.d.
- + commit 004e2cad2f26250cd010684f11dc187f08e6f9e1
- * tests/json/clean-local: Remove revocs.d
-
- tests,json: Move version check into t-json.
- + commit 40d962b43a183070ba8602cac1e83f2292ebf2c3
- * tests/gpg/t-support.h (check_gpg_version, compare_versions),
- (parse_version_string, parse_version_number): Remove version
- check code.
- * tests/json/t-json.c (check_gpg_version, compare_versions),
- (parse_version_string, parse_version_number): Add.
-
-2018-11-14 Andre Heinecke <aheinecke@intevation.de>
-
- tests,json: Add sig-notations test.
- + commit d3dae4a445d950c94c952ddf54e534ef71675bd1
- * tests/json/t-sig-notations.in.json,
- tests/json/t-sig-notations.out.json: New
- * tests/json/Makefile.am (EXTRA_DIST): Add files.
- * tests/json/t-json.c: Register it.
-
- tests,json: Fix distcheck.
- + commit def030e843bd4576597272abe9fe12f846066576
- * tests/json/Makefile.am (EXTRA_DIST): Add inital and final scripts.
- (t_json_SOURCES): Don't use cJSON.o as source.
-
- tests,json: Add more tests.
- + commit d0087d45f0207bf82a4f078d972c28c4d1cd2690
- * t-config-opt.in.json,
- t-config-opt.out.json,
- t-import.in.json,
- t-import.out.json,
- t-sign.in.json,
- t-sign.out.json: New.
-
- tests,json: Add missing files and chunking test.
- + commit 88b7221eb737a3102ec61ea385990b7ea7ef2b30
- * tests/json/Makefile.am, tests/json/final.test,
- tests/json/initial.test: New.
- * tests/json/t-chunking.in.json, tests/json/t-chunking.out.json:
- New test.
- * tests/json/t-json.c: Register new test.
-
- tests,json: Fix match if the first child differs.
- + commit 27ca12e815c0a582d357641a04b889d648b8766e
- * tests/json/t-json.c (test_contains): Try all siblings of
- the haystack child.
-
- tests,json: Add the bulk of tests.
- + commit dd4b80a5f640232bb44eb825ff5a74ec295fad10
- * t-json.c (tests): Register new tests.
- * t-createkey.in.json,
- t-createkey.out.json,
- t-decrypt-verify.in.json,
- t-decrypt-verify.out.json,
- t-decrypt.in.json,
- t-decrypt.out.json,
- t-delete.in.json,
- t-delete.out.json,
- t-encrypt-sign.in.json,
- t-encrypt-sign.out.json,
- t-encrypt.in.json,
- t-encrypt.out.json,
- t-export-secret-info.in.json,
- t-export-secret-info.out.json,
- t-export.in.json,
- t-export.out.json,
- t-json.c,
- t-keylist-secret.in.json,
- t-keylist-secret.out.json,
- t-keylist.in.json,
- t-keylist.out.json,
- t-verify.in.json,
- t-verify.out.json,
- t-version.in.json,
- t-version.out.json: New.
-
- tests,json: Add wildcard string matching.
- + commit 9a31fdcb11d04d47dfcc38a8409b84436c549108
- * tests/json/t-json.c (test_contains): When searching for "*" accept
- every string.
-
- tests,json: Skip tests for older GnuPG versions.
- + commit e55e467d5ffb32c428566a876616d309ef2d15cd
- * tests/json/t-json.c (main): Skip if version is not at least
- 2.2.0
-
- tests,json: Suffix .json to test pattern.
- + commit ca2e2b3d6973b1f942571ba65bd8b57153847777
- * tests/json/t-config.in, tests/json/t-config.out: Renamed.
- * t-json.c (run_test): Use new naming pattern.
-
- tests,gpg: Add version check hlp to t-support.
- + commit 5b61c092e7444749b08e39ac5aa9fb0818e1a076
- * t-support.h (parse_version_number, parse_version_string)
- (compare_versions): New. Copy&Paste from src/version.c
- (check_gpg_version): New helper to check for a gpg version.
-
- tests,json: Improve verbose mode and add verbose 2.
- + commit 9933641cce595ba308d0f3a1f3ae8f13a9743dd1
- * tests/json/t-json.c (main): Handle multiple verbose args.
- (test-contains): Improve verbose output
-
- tests,json: Fix and improve t-json.
- + commit 3e5684d99b881787f9739e53fd8e8c22eadc2146
- * tests/json/t-json.c (run_test): Terminate argv array correctly.
- (run_test): Note and handle empty response.
-
- tests: Add json testrunner.
- + commit 0c31837766e016227b3c8dfd44c476949cd4741e
- * configure.ac: Configure makefile.
- * tests/Makefile.am: Run json tests if gpg tests are run.
- * tests/json/t-json.c: New testrunner for json tests.
- * tests/json/t-config.in, tests/json/t-config.out: First test.
-
-2018-11-13 NIIBE Yutaka <gniibe@fsij.org>
-
- build: Update gpg-error.m4 and libassuan.m4.
- + commit c4aa4af50f3102b251cfff9c9755e2dde8d1bd1f
- * m4/gpg-error.m4: Update from master.
- * m4/libassuan.m4: Update from master.
-
-2018-11-12 NIIBE Yutaka <gniibe@fsij.org>
-
- Fix the previous commit.
- + commit 895176f42af3a1b13614f15dd537a426bb4ac16a
-
-
- build: Make gpgme.m4 use gpgrt-config with *.pc.
- + commit 60828a505a1c74fd34476c181df2a588ea6f9c83
- * src/gpgme.m4 (_AM_PATH_GPGME_CONFIG): Use gpgrt-config with gpgme.pc
- when possible.
- (AM_PATH_GPGME_GLIB): Likewise with gpgme-glib.pc.
-
- build: Provide gpgme-glib.pc too.
- + commit a76e145a1057e11953b71f804cf3a499c3ad5362
- * src/gpgme-glib.pc.in: New.
- * src/gpgme.pc.in (avail_lang): Remove.
-
- build: Provide gpgme.pc, generated by configure.
- + commit f3e60521899e6126229b6efedc9f011b84122e11
- * configure.ac: Generate src/gpgme.pc.
- * src/Makefile.am (pkgconfigdir, pkgconfig_DATA): New.
- (EXTRA_DIST): Add gpgme.pc.in.
- * src/gpgme.pc.in: New.
- * src/gpgme-config.in: Use variables.
-
-2018-11-08 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- spelling: fix misspellings.
- + commit 2557d0ae6ff0336b041129b7bf5c1e3a8c20a805
-
-
-2018-11-06 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings.
- + commit d0a5caf73c2d6b73dd043f62574c31946e4f347d
- * Continued restructuring as part of moving beyond mere;y the HOWTO
- file.
- * Generated the alternative source files for reST and Texinfo.
- * Fixed some errors and updated links after moving the what's new
- section to two new files (yes, two).
-
- python examples: another importer.
- + commit 0cb625da84d7e5deeacad113c404a8bc2154c8e7
- * Fixed a similar type of bug with the non-protonmail importer.
-
- python examples: protonmail hkp scripts.
- + commit 1b9d30db089e9de3ef859195ad58d2164a0231a0
- * fixed a bug in the import try statement for both versions.
-
-2018-11-05 Werner Koch <wk@gnupg.org>
-
- gpg: Avoid error diagnostics with --override-session-key.
- + commit bded8ebc59c7fdad2617f4c9232a58047656834c
- * src/engine-gpg.c (gpg_decrypt): Add --no-keyring.
-
-2018-11-03 Ben McGinnes <ben@adversary.org>
-
- docs: typo.
- + commit 13e09bd21a531b448f2f34b1f075315502b76fb6
- * lang/python/doc/src/gpgme-python-howto: s/Revokinging/Revoking/g
-
-2018-11-02 Werner Koch <wk@gnupg.org>
-
- w32: Fix a few compiler warnings.
- + commit 5262ce0c815193fc901b00a9b4132925ba672df7
- * src/debug.h (TRACE_SYSERR_NR): New.
- * src/w32-io.c: Fix compiler warnings.
-
- w32: Log all errors from CloseHandle and WFSO in w32-io.
- + commit ed3f5ad760a28566fa2571e0c7392467bfc3770d
- * src/w32-io.c (close_handle, _close_handle): New macro and function;
- use in place of all CloseHandle calls.
- (wait_for_single_object, _wait_for_single_object): Likewise.
-
- w32: Don't use CloseHandle on an arbitrary integer.
- + commit 4faa0ccf58c7a0f64f51dcbc8466add660080414
- * src/assuan-support.c (my_waitpid): Do not close the PID = it is not
- a handle.
-
- w32: Revamp the closing of system objects.
- + commit da89528ac39b687bfbed2209ca2637e3bd8e0ac5
- * src/w32-io.c (hddesc_t): New.
- (reader_context_s, writer_context_s): Replace file_sock and file_hd by
- the hddesc_t hdd.
- (fd_table): Ditto. Add want_reader and want_writer.
- (hddesc_lock): New lock variable.
- (new_hddesc, ref_hddesc): New.
- (release_hddesc): New.
- (reader, writer): Call release_hddesc.
- (create_reader, create_writer): Change for new hddesc scheme.
- (destroy_reader, destroy_writer): Replace closing by a call to
- release_hddesc.
- (_gpgme_io_pipe): Change for new hddesc scheme.
- (_gpgme_io_close): Ditto.
- (_gpgme_io_dup): Ditto. Use want_reader and want_writer.
- (_gpgme_io_socket): Change for new hddesc scheme.
-
- core: Print a dump of the I/O data only at level 8.
- + commit 337c10825525d4084f3f437fde5af3806707e6a4
- * src/debug.h (TRACE_SUC3): New.
- (TRACE_LOGBUFX): New.
- * src/posix-io.c: Use TRACE_LOGBUFX instead of TRACE_LOGBUF.
- * src/w32-glib-io.c: Ditto.
-
- w32: Fix and improve CancelSynchronousIo use.
- + commit acef4f775f273bbef63bc81afbad8feaabc7414e
- * src/w32-util.c (_gpgme_w32_cancel_synchronous_io): Fix name of DLL
- and print trace info only on error.
-
-2018-11-01 Werner Koch <wk@gnupg.org>
-
- w32: Use CancelSynchronousIo in destroy_reader.
- + commit 63ba09b541dabbe838253926896e721cb9be564a
- * src/w32-util.c (_gpgme_w32_cancel_synchronous_io): New.
- * src/w32-io.c (destroy_reader): Use it here.
-
- w32: Merge all the object tables of w32-io into one.
- + commit 338e9edfdb9239f1c9d4409f6d08d79a9d6f285b
- * src/w32-io.c (fd_table_size): New. Used in most places instead of
- the MAX_SLAFD constant.
- (reader_table, writer_table, notify_table): Merge them into ...
- (fd_table): this table. Chnage all affected code to take just one
- lock.
-
-2018-10-31 Werner Koch <wk@gnupg.org>
-
- w32: Remove unused arg from two functions.
- + commit 79fc7c0fe825014e75bb825c4966a04a22e78254
- * src/w32-io.c (find_reader, find_writer): Remove unused start_it
- arg. It is always passed as true. Change callers.
-
- w32: Remove all support for WindowsCE.
- + commit 3c04dea3ecebed35208f6b631b2e8b04222ea432
- * configure.ac: Remove WindwosCE support.
- * contrib/: Remove all; it was only used for WindowsCE.
- * src/w32-ce.c, src/w32-ce.h: Remove files.
- * src/Makefile.am (system_components): Remove these files.
- * src/ath.c, src/ath.h: Remove W32CE support.
- * src/data-compat.c (gpgme_data_new_from_filepart): Ditto.
- (gpgme_data_new_from_file): Ditto.
- * src/debug.c (debug_init, _gpgme_debug): Ditto.
- * src/gpgme-tool.c (gpgme_server): Ditto.
- (main): Ditto.
- * src/priv-io.h: Do not include w32-ce.h.
- * src/util.h: Remove WindowsCE support.
- * src/w32-io.c: Ditto.
- * src/w32-util.c: Ditto.
- * src/debug.h (TRACE_SUC4): New.
-
- w32: Remove cruft in w32-io from WindowsME times.
- + commit 2e07d4f89a26bb56a55b2743d39fb37532028ffd
- * src/w32-io.c (set_synchronize): Remove.
- (create_reader, create_writer): No need for set_synchronize.
-
-2018-10-30 Ben McGinnes <ben@adversary.org>
-
- docs: python docs restructure.
- + commit 78be1e2f543667576a49286476e7d66a707dd17e
- * Moved the what's new section out of the HOWTO (mostly), in
- anticipation of expanding the docs to be more than merely a HOWTO.
-
- docs: python.
- + commit d5c22966d5bf397cccfa171095885cd207ef6ae3
- * dropped the ".org" extension and added a mode line for each file as
- this will make scripting format conversions a lot easier.
-
-2018-10-30 Werner Koch <wk@gnupg.org>
-
- w32: Fix previous commit.
- + commit 9eef23fcf39f2b2eb2645afd31a79ba1286d9885
- * src/w32-io.c (_gpgme_io_spawn): Move freeing of TMP_NAME behind its
- use in an error handling.
-
-2018-10-29 Andre Heinecke <aheinecke@intevation.de>
-
- core,w32: Fix memleak of tmp_name in w32-io.
- + commit 7a1b58045f980c4df76daf225a2a1b604e8604d2
- * src/w32-io.c (_gpgme_io_spawn): Free tmp_name.
-
- tests: Add repeat argument to run-verify.
- + commit 681525be003433728d127303d40712803b70cb9c
- * tests/run-verify.c (main): Add repeat argument.
-
- core: Do not crash if CMS plaintext is ignored.
- + commit 8f27511862cabac8fa1dd8f883cb78faebc05ef6
- * src/engine-gpgsm.c (gpgsm_verify): Fix handling both
- plaintext and signed_text as NULL.
-
- cpp,tests: Add another test runner.
- + commit 62c736ba76a19d3b41af69e1f340a53b80f13fe0
- * lang/cpp/tests/run-verify.cpp: New.
- * lang/cpp/tests/Makefile.am: Update accordingly.
-
-2018-10-25 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add some convenience functions.
- + commit 05a0e97f5c12c06082fbeab0fba6f86ddbfbe6b2
- * lang/cpp/src/context.cpp (Context::create): New.
- * lang/cpp/src/context.h: Update accordingly.
- * lang/cpp/src/key.cpp, lang/cpp/src/key.h:
- (Key::isBad, Subkey::isBad, UserID::isBad)
- (UserID::Signature::isBad): Add shorthand for the isX checks.
- * NEWS: Mention it.
-
-2018-10-23 Ben McGinnes <ben@adversary.org>
-
- docs: python howto.
- + commit 04791c896712857feaf9a472a48d7a4c4f287775
- * Fixed a few spelling and grammatical errors.
-
-2018-10-21 Ben McGinnes <ben@adversary.org>
-
- Python: docs tweaks.
- + commit 59e38e3d2c14b40045e15c45b6c2f300e8f097dc
- * Fixed a minor error in how the reST version of the HOWTO is
- generated.
- * Updated the help() in __init__.py with a little more detail as to
- why not to use the lower level functions.
-
-2018-10-20 Ben McGinnes <ben@adversary.org>
-
- python bindings: callback test.
- + commit 651a1afe80bcc421da26f38015e8a322e140f130
- * lang/python/tests/t-callbacks.py: Updated test logic to try
- generating a key which expires in 2099 and if that fails then
- fallback to an expiration in 2037 in an attempt to catch the 32-bit
- systems.
-
-2018-10-18 Werner Koch <wk@gnupg.org>
-
- core: Fix segv in genkey when no endtag is provided.
- + commit fbac11b19d97730494dc9dad3b7f71453ef15581
- * src/genkey.c (get_key_parameter): Provide a fallback ENDTAG.
-
- core: Return an error if NULL is provided for genkey's parms.
- + commit 174af15725d4989a840ff3098996cc8a0568f724
- * src/debug.c (_gpgme_debug_buffer): Bail out of BUF is NULL.
- * src/genkey.c (gpgme_op_genkey): Do no deref a NULL in
- TRACE_LOGBUF.
- (gpgme_op_genkey_start): Ditto. Return an error if PARMS is NULL.
-
-2018-10-18 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- python: do not export HAVE_CXX11 definition.
- + commit 9de1c96ac3cf6fa126325002b61a1b606037ca88
- * lang/python/gpgme.i: ignore HAVE_CXX11 in SWIG interface
-
-2018-10-17 Werner Koch <wk@gnupg.org>
-
- python: Auto-check for all installed python versions.
- + commit ff6ff616aea6f59b7f2ce1176492850ecdf3851e
- * m4/python.m4 (AM_PATH_PYTHON): Add a 4th arg.
- * configure.ac (available_languages): Remove separate python2 and
- python3 and keep just python. Simplify test for pythons. Use an
- explicit list of python versions to test.
-
-2018-10-16 Werner Koch <wk@gnupg.org>
-
- core: Really remove CR from version output.
- + commit d63d6d8b8030ec1dc19f9f66c8af3b2f3288d309
- * src/version.c (_gpgme_get_program_version): Fix test.
-
-2018-10-10 NIIBE Yutaka <gniibe@fsij.org>
-
- build: Let configure create the VERSION file.
- + commit 85dd0fa4b5f026a13da842bf64ab8a37a68918d4
- * autogen.sh: Update from libgpg-error.
- * configure.ac: Use mym4_version to create VERSION file.
- * Makefile.am (dist-hook): Do not create VERSION.
- (EXTRA_DIST): Add VERSION.
-
-2018-10-09 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add KeyListMode::Locate.
- + commit c565cf42a38a8bda936df8c52936589cc8a06ca3
- * cpp/src/global.h (KeyListMode): Add Locate.
-
- cpp: Add first manual tests.
- + commit 9f85f4967e617e9f97529b89f530c1bc36b52a5c
- * lang/cpp/Makefile.am: Add tests subdir.
- * lang/cpp/tests/Makefile.am: New.
- * lang/cpp/tests/README,
- lang/cpp/tests/run-getkey.cpp,
- lang/cpp/tests/run-keylist.cpp: New.
- * configure.ac: Configure tests makefile.
-
- core: Add trust-model flag.
- + commit 85627e58184529e982369cfc00ed7865244c13d6
- * src/context.h (gpgme_context): Extend with trust_model.
- * src/engine-gpg.c (engine_gpg): Extend with trust_model.
- (gpg_set_engine_flags): Take trust_model from context.
- (build_argv): Handle trust_model.
- (gpg_release): Free trust_model.
- * src/gpgme.c (gpgme_set_ctx_flag): Handle trust-model flag.
- (gpgme_release): Release trust-model.
- * doc/gpgme.texi: Document new flag for gpgme_set_ctx_flag.
- (Context Flags): New subsection for the context flags.
- * tests/run-keylist.c (show_usage, main): Add new --trust-model
- parameter.
-
- cpp: Initialize all gpgme_key_t's in context.
- + commit 7a1e6dbfb16f71f692a53f7e0955bde86dbb7fee
- * lang/cpp/src/context.cpp (Context::startKeyListing),
- (Context::keyListResult, Context::signingKeys): Initialize key.
-
- core: Ensure r_key init in gpgme_get_key.
- + commit ecfa88e65fda9c9766ad526d57e2fc8b2884f634
- * src/keylist.c (gpgme_get_key): Move r_key init above
- the first invalid value check.
-
- qt, tests: Add test for single get key.
- + commit bf4aae45129c1093ee7712bdbcdfe1c8f2ca7c0f
- * lang/qt/tests/t-keylist.cpp (testGetKey): New.
-
-2018-10-08 Werner Koch <wk@gnupg.org>
-
- Release 1.12.0.
- + commit 1aff2512d846ea640d400caa31c20c40230b3b04
- * configure.ac: Bump core LT version to C32/A21/R0. Bump C++ LT
- version to C14/A8/R0.
-
- * lang/qt/tests/Makefile.am (CLEANFILES): Add reader status files.
- * Makefile.am (EXTRA_DIST): Add conf/whatisthis.
-
-2018-10-05 Werner Koch <wk@gnupg.org>
-
- core: Apply GPGME_EXPORT_MODE_NOUID also to keyserver exports.
- + commit 913601f4879f011878b53b885f35524df98b5570
- * src/engine-gpg.c (export_common): Add keyserver-options to the
- send-keys commands.
-
- build: Move config.h to conf/config.h.
- + commit ecfa48fffa93f3d1b66354d2d46872ff614c4a68
- * conf/: New dir.
- * configure.ac (AC_CONFIG_HEADER): Move header to conf dir.
- * doc/Makefile.am (mkdefsinc): Adjust rule.
- * lang/python/Makefile.am (copystamp): Ditto.
-
-2018-10-04 Ben McGinnes <ben@adversary.org>
-
- docs: whitespace bug.
- + commit 033da18b88af69b7846de62af4aeea359d27ec20
- * Same as before, but exported.
-
- docs: org to texinfo whitspace bug.
- + commit a8d4aa6f763599bbd8ea36ef98b7b4931bf326dc
- * replaced "." in headings with "·" to prevent whitspace being
- appended by texinfo and breaking git.
-
- docs: python.
- + commit 0b5930b276186afd1ca1dd91d82db7e60dd20606
- * Fixed an error in the new index page and then exported to the other
- two "source" formats.
-
- docs: python.
- + commit 48258879720a4f423d0efa955da942d69f3c49d4
- * lang/python/doc/meta/TODO.org: Added the two major documentation
- build system tasks to the TODO list.
- * Added an index page in preparation for sorting out the second of
- those TODO lists (Docutils is a lot easier to handle than Texinfo).
- * Meanwhile, have confirmed that it all builds just fine under
- GNU/Linux, OS X and FreeBSD while retaining the documentation, so
- that's a nice improvement from 1.11.1.
-
- python: makefiles.
- + commit f3fc73738264d21baf0e9b49fdd5cb67faa11d31
- * doc/Makefile.am: Removed a bit I forgot about.
- * Renamed lang/python/docs to lang/python/doc bvecause apparently
- automake cares about that too.
- * Decided to be extra explicit in the manifest because if I don't then
- all sorts of things get deleted ... like lang/python
- * Tested on an external linux system just in case my osx workstation
- introduces too much weirdness.
-
- python: make file.
- + commit 2cca422ca4b2df831a824393077d0b52d79532aa
- * lang/python/Makefile.am: Attempting to remove the docs/meta
- directory did a lot worse than I thought it was doing, so better to
- just be sure the documentation is available than destroy the entire
- bindings directory.
-
- python: make file.
- + commit 582f14d97a900106dce0c8d8666a443c6ec25050
- * lang/python/Makefile.am: Now that gpg2 has been renamed back to gpg
- and gpg1 is semi-deprecated, we should check what the actual gpg
- binary is with gpgconf and use that rather than make assumptions per
- system.
- * Also, it means less worry if gpg3 is ever a thing. (Trust me, I
- remember the Python 1 to 2 transition as well as the current 2 to 3
- transition). ;)
-
-2018-10-03 Ben McGinnes <ben@adversary.org>
-
- docs: more whitespace checks.
- + commit a174b269432fd37e8546c43e0127580e826432da
- * lang/python/docs/texinfo/short-history.texi:
-
- dpcs: python howto.
- + commit 962dfca9b86b53bb00f5b89e453b9eed95454934
- * More updates to the docs themselves and the versions to be available
- with the next release.
- * .texi and .rst copies of the HOWTO and the short history of (this
- part) of the project.
-
- docs: python.
- + commit 2151b9828af3760867e856ab939b835a6e2f42e7
- * More restructuring. Also the painstaking task of deciphering some
- of the more eclectic aspects of Texinfo and make.
-
- docs: python bindings.
- + commit a982f9131520bce0b25f84cba19040bbe5f275bb
- * Restructured the docs directory to account for the GNU preferred
- source doc format (.texi) and the Python preferred source doc
- format (.rst) and the real source doc format (.org).
- * Both the perceived source formats will need to be generated from the
- .org files and included at this stage. Unfortunately there is not
- yet a native org-to-rst transformation method in the org-mode
- software in Emacs nor is there a a direct means of going from reST
- to Org-mode from Docutils. There's only third party packages like
- Pandoc and, while very good, there is no guarantee of consistency;
- so we can't entirely automate this bit (yet).
-
- docs: pre-python preparation.
- + commit b2802053192ba0000866b145b715a557d34ed0eb
- * doc/Makefile.am: removed the python howto from this file, restoring
- it to just the main project and the newer .js files.
- * deleted: doc/gpgme-python-howto.texi
- * renamed the Short_History.org file to short-history.org to keep the
- naming conventions similar.
- * All the Python files can (and should) live together.
-
-2018-10-02 Ben McGinnes <ben@adversary.org>
-
- python bindings: CPython order.
- + commit 23894ac9a96081428a590791010ca8beebaf6f9f
- * Changed the order of python versions the configure/make process
- checks for, placing Python 3.7 ahead of 3.6.
- * Updated the HOWTO documentation to reflect this change.
-
-2018-10-02 Werner Koch <wk@gnupg.org>
-
- core: add experimental GPGME_EXPORT_MODE_NOUID.
- + commit 7b861945fdc71fd3c82c91f824172dadd2220fa0
- * src/gpgme.h.in (GPGME_EXPORT_MODE_NOUID): New.
- * src/export.c (export_start): Adjust option check.
- * src/engine-gpg.c (export_common): Implement option.
-
-2018-09-30 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings.
- + commit 76bdfabb057f4ffc56beee15b48d8fa836ba7cce
- * Tightened up the docs a little bit, updated the "what's new"
- section, dropped the "-draft" version in preparation for GPGME
- 1.12.0's release.
- * Exported another .texi version (and updated the draft copies to this
- commit (which ought to be 1.11.1-beta313).
-
- python bindings: fixing decrypt-verify.
- + commit 837a4760533e80f075cd727f18354904b8a54132
- * lang/python/src/core.py: First restoring the exception to the being
- just that.
- * The means to manipulate the error output is temporarily in commented
- out code, but ought to be added to a proper test later.
- * In the mean time the original test, with a very slight change, works
- again.
-
- python bindings: ctx.decrypt.
- + commit 11403a46358f9b6e98776974f3c70f211d9adf85
- * lang/python/src/core.py: Fixed methods of detecting whether verify
- is a boolean variable or a list.
- * Added methods of catching the missing keys exceptions.
- * Still retained PEP8 compliance (which might have been where one or
- two problems crept in).
- * Though this is essentially the correct behaviour, it still does not
- quite fit the otiginal test; so that will also require some adjustment.
-
-2018-09-27 Ben McGinnes <ben@adversary.org>
-
- example: local signatures.
- + commit ce045a1ef9c63042fcffb5487b19646d67addba0
- * lang/python/examples/howto/local-sign-group.py: added the bit where
- specifying the signing key is actually used for signing rather than
- just pruning the list of keys to certify.
-
- example: python bindings.
- + commit a047e0f68ef471097e514665249063f267257b19
- * lang/python/examples/howto/local-sign-group.py: locally sign every
- key in a group line except one's own keys. Intended to address the
- sort of thing one might see on lists like PGPNET or other closed
- groups amongst activists, journalists, etc. where everyone encrypts
- to all recipients, but may not sign everyone's keys publicly..
-
- docs: python bindings installation.
- + commit 1d40d360bccb05b4c66313a60a902d04a0d3c9ff
- * lang/python/docs/gpgme-python-howto.org: added a section on
- installing the bindings to a python virtualenv.
-
- tests: python bindings.
- + commit b9aea3b9c2c2762a9ae8d677196f82acc6a1c028
- * Fixed the final assertion to look for what will actually be reported
- in that case instead of something else (i.e. it looks for an
- IMPORT_ERROR status code).
-
- examples: python bindings.
- + commit 7c9f49a4991c1ccd0cb582875207b373d4fccf50
- * Fixed homedir specifying logic in several cases.
-
-2018-09-25 Ben McGinnes <ben@adversary.org>
-
- docs: a typographical two-step.
- + commit b625258d54782040195cc5ad3b255685af6f6c4e
- * Sometimes you really do need or want punctuation in a heading, but
- ideally without something else generating whitespace and other
- annoyances to go with it.
- * Trying a real decimal point instead.
-
- docs and examples: python bindings.
- + commit 62e4e2cb5edb09183b9f9d448f992fe65cb6db85
- * Woumd up the "what's new" section.
- * Added an example for sending a key to the keyservers via hkp4py.
- * Updated the export key code to use a more complete check for the
- $GNUPGHOME location.
- * Expanded on the installation and reinstallation troubleshooting
- section.
-
-2018-09-24 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings howto.
- + commit e9da4d97107b40a48583775df34783f07be5dfdb
- * Added a What's New section to summarise changes since the last
- release. There have been quite a few and some attention does need
- to be drawn to some of them.
- * Confirming certain issues with some platform builds, especially
- BSD/OSX vs. Linux issues which will need to update the installation
- troubleshooting guides.
-
-2018-09-23 Ben McGinnes <ben@adversary.org>
-
- docs and examples: python bindings howto.
- + commit b12b2cc99621fe32a2d698ce7f091f3225f35bd0
- * Added more comprehensive examples using hkp4py and added a couple
- more example scripts for protonmail.
-
- examples: python bindings and hkp4py updates.
- + commit ced4bdbbb239c1fe209665b4f5a7aeb9651889ed
- * Mostly tightening up the details on the hkp4py example script.
- * Also fixed a typo in the LGPL boiler plate text included in all the
- other example scripts for the HOWTO.
-
- python bindings: importing from keyservers with hkp4py.
- + commit 6ed9a77c92c32f77092b36c149185d4359cd6e55
- * added a new example script to search the keyservers and import the
- results, this time using Marcel Fest's hkp4py module.
- * Updated the key importing section to match this addition.
- * Tested with the current version of hkp4py from github.
-
-2018-09-22 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings howto.
- + commit 3622576105ae1924d9b40ce0d09bf9a7accc0ed1
- * Confirmed that updates to the tests have significant'y improved that
- output.
- * Updated some of the additional notes for the section on hkp4py.
- ** This is in anticipation adding at least import examples using that
- module as well. It may also include adding examples of exporting a
- key and uploading it to the keyservers.
-
-2018-09-20 Werner Koch <wk@gnupg.org>
-
- python: Fix a couple of syntax errors.
- + commit 6878126b6f53cdf7daeeaf68116dda008564c2fa
- * lang/python/tests/t-keylist-from-data.py: Add missing line
- continuation.
- * lang/python/tests/t-keylist.py: Ditto.
- * lang/python/tests/t-quick-key-creation.py: Ditto.
- * lang/python/tests/t-quick-subkey-creation.py: Ditto.
-
- python: Silence a few warnings.
- + commit dcdabf5f2ef84e1f304fcc0590ec4bb160354af5
- * src/gpgme.h.in: Obsolete "class" also for Python.
- * lang/python/gpgme.i: Silenece a swig warning. Silence a gcc
- warning.
-
- python: Fix regression in the test suite.
- + commit 9f19b3aaecd23a12b2e6692faeefa936e490d343
- * lang/python/tests/Makefile.am (GNUPGHOME): Remove stray backslash.
-
- tests: Don't try using keys from a scmartcard.
- + commit a824f4498ea9bae5dca515c56e2455ec0ce98b50
- * tests/gpg/Makefile.am: Disable scdaemon
- * lang/python/tests/Makefile.am: Ditto.
-
-2018-09-20 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings and its special request.
- + commit 5cb67257f2b3b5fcfd3444e366f26a0f2ae09504
- * Added some material on using the new-ish hkp4py module with GPGME.
- * Example code will be added later once a couple of little issues are
- addressed.
-
-2018-09-19 Werner Koch <wk@gnupg.org>
-
- json: Remove subkey-algo from createkey command.
- + commit c569adb5e3e3082bd68cdc34a2d349b7c28d3768
- * src/gpgme-json.c (op_createkey): Remove subkey-algo param.
- (GPG_AGENT_ALLOWS_KEYGEN_TRHOUGH_BROWSER): Fix typo.
- * lang/js/src/Keyring.js: Remove subkey-algo support.
- * lang/js/src/permittedOperations.js: Ditto.
-
-2018-09-18 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings.
- + commit 362caaf02f3a25b7e626572aa30b87771c2c8f4d
- * Updated the Cython example code slightly, along with the
- corresponding explanation.
-
-2018-09-17 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings howto.
- + commit f4d83800d89173e618cceca44b584778217fadb3
- * Tightened up the Cython demonstration.
-
-2018-09-16 Ben McGinnes <ben@adversary.org>
-
- docs: cython sanitized.
- + commit 44c846345e91413b9d6a1f7b26f59db5b1c32433
- * Sanitized the shell command examples of extraneous whitespace.
- * Removed keycount.c as sanitising it is pointless and it will be
- generated by Cython when the example is followed.
- * Regenerated the .texi version.
-
- docs: python bindings howto.
- + commit 61c08f7435570783f5c267e42d288d31bf77e560
- * Added new advanced section with an example of using the Python
- bindings with CPython code compiled back to C code using Cython.
- * Though it may seem a bit counter-intuitive to use the bindings just
- to go back to C via a different route, this is not actually stupid.
- * Added examples/howto/advanced/cython/ directory.
- * Added keycount.pyx, setup.py and the keycount.c file which the first
- two generated with Cython. Not including the .so and .o files from
- the build.
- * Exported the .texi version of the howto for the main docs.
-
- docs: even more edits.
- + commit fbec29fdac7a4f162e73f24dac2a6b205239ef03
- * doc/gpgme-python-howto.texi: hunting down and killing commas,
- Oxford or not it can't stay in a heading.
-
- docs: more edits.
- + commit 2a1b0b88d96b722817f3ac9edf002a54c65084b8
- * lang/python/docs/gpgme-python-howto.org: more tweaks and edits,
- along with another build of output formats.
- * doc/gpgme-python-howto.texi: updated texinfo version for parent docs.
-
- docs: whitespace culled.
- + commit 91b26b0638d9f92f0e90aab1c3750c14d72db301
- * lang/python/docs/gpgme-python-howto.org: Identified and fixed the
- headings which kept generating lines with trailing whitespace when
- exporting to Texinfo format and adjusted them to prevent that.
-
- docs: renaming and drafts.
- + commit 766ec0e4a36c120ed4ef5463b5fdf8e7ed3b4563
- * lang/python/docs/gpgme-python-howto.org: Renamed file to better fit
- the rest of the project's docs.
- * Added a section on the very unofficial drafts I periodically post
- links to since they're often the easiest way to get a web version in
- front of someone in a hurry.
-
-2018-09-15 Ben McGinnes <ben@adversary.org>
-
- docs: python howto texinfo update.
- + commit 76f77022848894ee9d8490255cefdd0100248b45
- * doc/gpgme-python-howto.texi:
-
- docs: Python howto update.
- + commit 7e9df9b9e33131f5d7c58ad58249f9ae766f1341
- * lang/python/docs/GPGMEpythonHOWTOen.org: Added corresponding GPGME
- version number to table at the start and cut the shortcut from the
- groups.py example.
- * doc/gpgme-python-howto.texi: New export of Texinfo file for docs
- build.
-
- docs: generated whitespace.
- + commit 93a2ea0207fac0a18a48b671df11dc8575579c39
- * doc/gpgme-python-howto.texi: culled whitespace included with the
- org-mode export.
-
- Docs: including howto with standard docs.
- + commit 2e5b0603709855eb1d8a1a3fd51d3245f4301ada
- * gpgme.spec.in: Added gpgme-python-howto.info build on the grounds
- that it now deals with certain possible installation issues and end
- users encountering them would want the docs to hand.
- * doc/gpgme.texi: updated the copyright year to this year.
-
- Docs: Python bindings HOWTO.
- + commit b19faa26e01df4d78286e013313e5ab25f517d49
- * Added doc/gpgme-python-howto.texi: generated from
- GPGMEpythonHOWTOen.org and then slightly modified so the generated
- Info file doesn't use camelCase.
- * doc/Makefile.am: Updated makefile to include the Python HOWTO with
- gpgme_TEXINFOS and to export the generated files to the webserver
- along with the main GPGME one.
-
- Python bindings: docs.
- + commit d04fb0bf1271c91b88686c947a5b14ffc9b505ef
- * lang/python/docs/GPGMEpythonHOWTOen.org: Fixed a few errors in the
- newer sections.
- * Updated code in the examples using secret key exporting and group
- lines to reflect the Python 2.7 compatibility fixes added.
-
- Python bindings: examples.
- + commit 4e8a92ed14ea3da3d92f07d5f62fd325a2adebde
- * lang/python/examples/howto/export-secret-keys.py and groups.py:
- Updated the backwards compatibility adjustments to account for
- unicode differences between python 2 and 3.
-
- Python examples: backwards compatibility.
- + commit 864ef9b40f5f9d0c66a458b6033277938d7d1d50
- * lang/python/examples/howto/groups.py: subprocess update
- * lang/python/examples/howto/export-secret-keys.py: subprocess update
-
- Both of these try the nice and easy method of getting the subprocess
- output available in Python 3, but will fall back to the older Popen
- method if it doesn't work. Essentially this is to be a little nicer
- to Python 2.7.15 (even though the examples are filled with warnings
- that py2 support is not guaranteed with the examples).
-
-2018-09-10 Thomas Oberndörfer <thomas@mailvelope.com>
-
- js: Fix errorDetails of GPGME_Signature.
- + commit dd7d37ca21684d4d77db4f513c6212776fc6ea82
- * lang/js/src/Signature.js (GPGME_Signature.errorDetails):
- Access properties from the summary object.
-
-2018-09-08 Ben McGinnes <ben@adversary.org>
-
- estreams revised.
- + commit 2375959180aa8eb0d23cc3f8240c3f5b5262b819
- * Egon Spengler was right, crossing the streams is bad.
- * Restored both src/gpgme.def and src/libgpgme.vers to use the
- estreams symbols without the leading underscore.
- * The new_from_estream() function added to lang/python/src/core.py and
- set to alias the new_from_stream() function remains.
- * Opted for the solution favouring Linux onthree main grounds:
- 1. Andre reported major problems with Windows as well, so the number
- of potentially affected systems would vastly increase.
- 2. All the BSDs and OS X have spent far more time and development
- work in order to accommodate the eccentricities of both Microsoft
- and the GNU Project (ref. GCC), so they're more likely to be able
- to cope with doing so again than the other way around.
- 3. If I really have to I can write a custom installer for OS X to
- try this and, if it fails, to then patch the two symbol entries and
- recompile from scratch. That said, I may not have to since it
- actually behaved during the most recent tests for this
- commit; into ten separate CPython installations and all five
- supported versions (standard source installs and OS X Framework
- installs for each version).
-
-2018-09-02 Ben McGinnes <ben@adversary.org>
-
- estreams symbols for python bindings.
- + commit 879cc1f84fbf09cb4eeb78bce16f52a1a36032ba
- * It turns out that even though some platforms detect differing
- symbols for estreams, the two types do not appear to be in
- conflict. At least they don't from the BSD/OS X side of things.
- As a consequence both versions are now included.
-
-2018-08-31 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings.
- + commit 55991aa91667b9184cc9fc86a3ac21b9640511ef
- * minor typographic update.
-
-2018-08-30 Ben McGinnes <ben@adversary.org>
-
- python bindings: estreams fix.
- + commit 1d00fb987b903e245d484bddfe3c0a0aba670ac1
- * lang/python/src/core.py: Adjusted new_from_estream function to alias
- new_from_stream instead of fd.
- * fixed the _gpgme import errors introduced in commit
- 08cd34afb762975b0273575035dacf69449ef241 by changing the exported
- functions/types to match the inner module where all the work is
- done, rather than the outer one(s).
-
-2018-08-29 Ben McGinnes <ben@adversary.org>
-
- python bindings: core.
- + commit 18ea83867168e8db0a2f2c8057d087363083486c
- * lang/python/src/core.py: expanded gpgme_error check lists.
-
- python bindings: core.
- + commit dcedddecb6f8f11682aed3b09b88ee1511010faf
- * lang/python/src/core.py: added gpgme_data_set_flag to the errorcheck
- funtion.
-
- python bindings: core.
- + commit 6078b5303362b2e5ce56660967fac313ca3d5ae9
- * lang/python/src/core.py: added new function new_from_estream to wrap
- new_from_fd just like new_from_stream does and for the same reason.
-
-2018-08-29 Andre Heinecke <aheinecke@intevation.de>
-
- json: Fix detached verify.
- + commit 1420c3bd681648b032d756536311621a3627bedb
- * src/gpgme-json.c (op_verify): Only create output and
- use it for clearsigned and opaque signed.
-
-2018-08-29 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings - protonmail examples.
- + commit f7e5ae7f1618bd355b885c5c32dd028afad35453
- * lang/python/docs/GPGMEpythonHOWTOen.org: Updated links to the
- ProtonMail keyserver import scripts and added a warning regarding
- being unable to update third party keys.
- * lang/python/examples/howto/pmkey-import-alt.py: added usage.
- * lang/python/examples/howto/pmkey-import.py: added usage.
-
-2018-08-28 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings HOWTO.
- + commit 02d0b97bfedc732351cc4e89c92fcd9d31209535
- * Finished CFFI vs SWIG bit in known issues.
- * tidied up some of the structure.
- * Fixed some minor errors and links.
-
- docs: python bindings.
- + commit a8a983c5bc0f0deeeebda455ad73309fff48b61f
- * Added section on why no CFFI.
-
- docs: python howto.
- + commit c2831e2377843c8625df158ef32e01f8c19494eb
- * Added another key import example using ProtonMail's new keyserver.
-
-2018-08-28 Andre Heinecke <aheinecke@intevation.de>
-
- json: Delete primary key if subkey gen fails.
- + commit 3bdf8be6d2c57319399fe14e27e52b323a17750a
- * src/gpgme-json.c (op_delete): Delete primary key on
- subkey gen error.
-
- json: Allow NULL request in encode and chunk.
- + commit 7d3c13df263ed88c17005920e75e0486abeae5b9
- * src/gpgme-json.c (encode_and_chunk): Don't error on NULL
- request.
-
-2018-08-27 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings.
- + commit 1c261b9fa3462360b6c3f43b243091cd50534903
- * Added details on installation troubleshooting.
-
-2018-08-27 Werner Koch <wk@gnupg.org>
-
- json: Do not put FILE_NAME into the verify result.
- + commit 53c5b9a265d33f2cc54f489375a929602338aee8
- * src/gpgme-json.c (verify_result_to_json): Remove "file_name".
-
-2018-08-27 Jasper Spaans <jasper@startmail.com>
-
- core: Export gpgme_data_new_from_estream function.
- + commit 08cd34afb762975b0273575035dacf69449ef241
-
-
-2018-08-23 Andre Heinecke <aheinecke@intevation.de>
-
- json: Add sender and file name to encrypt.
- + commit a5f8dac77d50480a208c99398df323c58ce6dc58
- * src/gpgme-json.c (hlp_encrypt, op_encrypt): Support sender
- and file_name.
-
-2018-08-21 Andre Heinecke <aheinecke@intevation.de>
-
- json: Add proper decrypt_result_t handling.
- + commit 263dadb04aed4f973248b32c52af6ca59bcb7c1f
- * src/gpgme-json.c (recipient_to_json, decrypt_result_to_json):
- New.
- (op_decrypt, hlp_decrypt): Update.
-
- js: Update extra_dist files.
- + commit 738a8e6f950af08305c082d59a91d3d5d45800fa
- * lang/js/BrowserTestExtension/Makefile.am,
- lang/js/Makefile.am (EXTRA_DIST): Update.
-
- Add example manifests for gpgme-json.
- + commit 9608996d88549b60da490e5eeb41db023f97a038
- * doc/examples/gpgme-chrome.json, doc/examples/gpgme-mozilla.json: New.
- * doc/Makefile.am (EXTRA_DIST): Include them.
-
- js: Improve README.
- + commit 605eb8a8bfcb12141d7cc5626e75af812cda6c75
- * lang/js/README: Clarify structure at the beginning.
-
- Remove js as language from configure.ac.
- + commit fe3de5b86b4a25f5b23cf1af2fd1809ef6c087a0
- * configure.ac: Remove js language.
-
-2018-08-20 Andre Heinecke <aheinecke@intevation.de>
-
- json: Add subkey_algo and defaults to createkey.
- + commit 8103eeba809b6e7156d861783309574b93909169
- * src/gpgme-json.c (op_createkey, hlp_createkey): Add subkey_algo
- handling.
- (hlp_createkey): Fix documentation of expiry.
-
-2018-08-19 Ben McGinnes <ben@adversary.org>
-
- Python bindings examples.
- + commit 75bc5e6356eca1b7fb76653e7c82c2477f8859b0
- * import-key.py: fixed a minor typo.
- * pmkey-import.py: locates and imports keys from the ProtonMail keyserver.
- * pmkey-import-alt.py: the same as the previous except with setting an
- alternative $GNUPGHOME directory.
-
-2018-08-18 Ben McGinnes <ben@adversary.org>
-
- Python bindings setup file.
- + commit 03b899dbe14a3c32fd018c20c7d5156366fdcc3d
- * Moved the build import back up where it belongs.
- * Included comments indicating how to build and install for multiple
- Python versions beyond the first 2 on the same system.
-
- Python bindings tests: Near PEP8 compliance.
- + commit 5facba45c83f7daaacc49e66306e13a35aeb74be
- * PEP8 compliance for the vast majoeity of the tests.
-
- Python bindings examples: PEP8 conpliance.
- + commit b5fbe90676f46b9615919133753a65b20318fe63
- * Appears to be complete compliance.
-
- Python bindings setup: Near PEP8 compliance.
- + commit fc55caccfc87253e1703df66b21917cc399fba62
- * lang/python/version.py.in: Fixed most things, but there's still an
- issue near the build portion with the existing Python bugs referenced.
- * lang/python/setup.py.in: Now PEP8 compliant.
-
- Python bindings constants: PEP8 compliance (almost)
- + commit 8a6a73b9c4f92b159450edb5e4a780fc7389ca82
- * PEP8 compliance for all constants except the globals in
- src/constants/__init__.py depending on whether the import sequence
- affects the globals themselves.
-
- Python bindings src: PEP8 compliance.
- + commit 7962cde13c5cbdc643bbde795e2c29e638dfc186
- * import namespace clearance for src/*.py.
- * Fixed a handful of is/is not None checks as well.
-
-2018-08-13 Ben McGinnes <ben@adversary.org>
-
- Symmetric example.
- + commit 279cac0ffbb3d865d997dc7fc9c1b53bbb55d3a2
- * lang/python/examples/howto/symcrypt-file.py: *sigh*; passphrase was
- right the first time, just the error check that wasn't.
- * I really should stop second guessing myself one of these days ...
-
- Symmetric encryption example.
- + commit a256d84882616341b3f357340533893a1db8b5c1
- * lang/python/examples/howto/symcrypt-file.py: Fixed the error code
- and the passphrase key word arg.
-
- Symmetric encryption example.
- + commit ed5ef8293cdbfcc3b91268eeae1eb6b4f8d271bb
- * lang/python/examples/howto/symcrypt-file.py: A variation on standard
- key based encryption.
-
-2018-08-10 Ben McGinnes <ben@adversary.org>
-
- PEP8 compliance and other code fixes.
- + commit 94bf13e78e65e1d1bc2e5d6b2311f9c9657bfe5f
- * Ran all the .py files in src/ and below through Yapf.
- * Included some manual edits of core.py, this time successfully making
- two notorious sections a bit more pythonic than scheming.
- * Left the module imports as is.
- * This will be committed if it passes the most essential test:
- compiling, installing and running it.
-
-2018-08-09 Ben McGinnes <ben@adversary.org>
-
- Link fixes.
- + commit b6d2a66b41fee5b7fb484566aefcdbcc4cdad094
- * lang/python/README: Fixed links in both versions of the README.
-
-2018-08-08 Andre Heinecke <aheinecke@intevation.de>
-
- json: Wipe memory in cJSON_Delete.
- + commit 4dd1d0abd34a382d1cd67cabb737950a39cb3fdc
- * src/cJSON.c (cJSON_Delete): Wipe memory on deletion.
-
- json: Only use calloc instead of malloc.
- + commit fdc07b3ddc2f68e6fcb33703ea41126d0a841290
- * src/cJSON.c, src/gpgme-json.c (CALLOC_ONLY): New define
- to change xmalloc / xtrymalloc to use calloc.
-
- json: Add checks when skipping byte.
- + commit 974a95db04f9cdea02867f0246445b4679517ba0
- * src/cJSON.c (parse_string, cJSON_Minify): Check for
- terminating NULL byte when skipping the byte after a an escaped
- quote.
-
- json: Don't error out if chunksize is omitted.
- + commit 6e48bb0f1cbf662026bf0f70549b52bafe00c017
- * src/gpgme-json.c (encode_and_chunk): Don't error out
- if no chunksize is provided.
-
- cpp: Fix use after free in gencardkeyinteractor.
- + commit 3b782443600e8091c5f19580cb218100bcbb4ad7
- * lang/cpp/src/gpggencardkeyinteractor.cpp
- (GpgGenCardKeyInteractor::Private::keysize): Change to string.
-
-2018-08-06 Andre Heinecke <aheinecke@intevation.de>
-
- Make GNUPGHOME for tests overridable.
- + commit d09d19fa9fe1e81dd819b32208b4bd09f83e3918
- * lang/python/tests/Makefile.am,
- lang/qt/tests/Makefile.am,
- tests/Makefile.am,
- tests/gpg/Makefile.am,
- tests/gpgsm/Makefile.am,
- tests/opassuan/Makefile.am (GNUPGHOME): Make variable explict.
-
-2018-07-24 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add safety checks for key update.
- + commit a6e5c8bf18696007c48c6f362aa355020fe82f21
- * lang/cpp/src/key.cpp (Key::update): Check that the key is
- not NULL.
- * lang/cpp/src/verificationresult.cpp (GpgME::Signature::key):
- Check for fingerprint.
-
-2018-07-22 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings howto.
- + commit 4d1642b11ea64b8009a8720d9b59e89636d691d2
- * Fixed and tested the changes necessary for org-mode to correctly
- parse pythonic (Python 3) indentation.
- * Updated the source blocks to recommended upper case for BEGIN_SRC
- and END_SRC.
- * Tested and confirmed XHTML output matches correct examples.
- * Tested against pseudo-control output via exporting from org-mode to
- org-mode and then exporting that to XHTML. Remaining differences
- appear to be discarding the custom tags used to provide X[HT]ML id
- elements to each section which does not appear to offer any benefit.
- * Exporting directly to XHTML or other HTML output should no longer
- cause problems, but if there are any then the first step should be
- exporting from org-to-org and then exporting that to XHTML.
-
- doc: python bindings howto.
- + commit d7c5366d58d035d7b7119f955824e842d0b6bbe0
- * Another retrofitting of the HOWTO Python example code, this time
- following adjustments to python-mode configuration and having
- trawled through the org-mode mailing lists for clues.
-
- doc: python bindings howto.
- + commit b47e1bb98a8ff93cae560449bfa9103c47f4d4f8
- * Added org-mode byline.
-
-2018-07-19 Werner Koch <wk@gnupg.org>
-
- core: Clear all flags for a new data property.
- + commit 5ef492c5635ae1677eed6f439a75a86a99dbbe18
- * src/data.c (PROPERTY_TABLE_ALLOCATION_CHUNK): New.
- (insert_into_property_table): Use it here. Clear all flags.
-
- core: Blank out the plaintext after decryption failure.
- + commit 085cdeddef637cc057362fcbde13b0261b8699ec
- * src/data.h (data_prop_t): New enum.
- (struct gpgme_data): Add field propidx.
- * src/data.c (property_t): New.
- (property_table, property_table_size, property_table_lock): New.
- (insert_into_property_table): New.
- (remove_from_property_table): New.
- (_gpgme_data_get_dserial): New.
- (_gpgme_data_set_prop): New.
- (_gpgme_data_get_prop): New.
- (_gpgme_data_new): Connect new object to property_table.
- (_gpgme_data_release): Remove from property_table.
- (gpgme_data_read): With DATA_PROP_BLANKOUT set don't fill the buffer.
- * src/data-mem.c (gpgme_data_release_and_get_mem): Likewise.
- * src/decrypt.c (struct op_data): Add field plaintext_dserial.
- (_gpgme_op_decrypt_init_result): Add arg plaintext and init new field.
- (_gpgme_decrypt_status_handler): Set DATA_PROP_BLANKOUT on decryption
- failure.
- (_gpgme_decrypt_start): Pass PLAIN to the init function.
- * src/decrypt-verify.c (decrypt_verify_start): Ditto.
- * configure.ac: Check for stdint.h and bail out if uint64_t is not
- available.
-
-2018-07-19 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Print origin and last update for key/uid.
- + commit 8168dfbeb12042a7f7b1bad918ef60df92bfd1a7
- * lang/cpp/src/key.cpp: Print origin and last update in
- iostream operators.
-
-2018-07-19 Werner Koch <wk@gnupg.org>
-
- json: Don't use strdup but the xtrystrdup wrapper.
- + commit af2c74d6c06a9fb08f7de15d41162d09f871a62e
- * src/gpgme-json.c (create_keylist_patterns): Use CNT as first arg for
- xcalloc.
- (process_request): s/strdup/xtrystrdup/.
-
- core: New interface gpgme_data_new_from_estream.
- + commit f42cd70f18d53df47cc2d027bade736377d39b71
- * src/gpgme.h.in (gpgme_data_new_from_estream): New.
- * src/data-estream.c: New.
- * src/data.h (gpgme_data): New union member e_stream.
-
-2018-07-18 Andre Heinecke <aheinecke@intevation.de>
-
- json: Fix memleak in native msging repl.
- + commit 98a75a16ccdfe51799a27894d2eb26dba04b34f2
- * src/gpgme-json.c (native_messaging_repl): Free request and
- response after each loop.
-
- json: Ensure that native msging request is string.
- + commit 6d7b4382c3e12ba1dbbd0762dfa850c76750d838
- * src/gpgme-json.c (native_messaging_repl): Ensure that the
- request is NULL terminated.
-
- json: Fix crash by ensuring response is never NULL.
- + commit 82e4b900a96c837392259469a9a5821a95e7a707
- * src/gpgme-json.c (encode_and_chunk): Try to always
- return at least an error.
- (process_request): Double check that it does not return NULL.
-
- json: Fix memory errors in create_keylist_patterns.
- + commit b78140daf7720132711314a4e5ed878b49da99f4
- * src/gpgme-json.c (create_keylist_patterns): Reserve two
- pointers more then linefeeds.
- (create_keylist_patterns): Fix loop to count linebreaks.
- (create_keylist_patterns): Use calloc for good measure.
-
- qt: Handle encoding for diagnostics.
- + commit 16462c54b3503e77bc48c2486234531d7bc31b6d
- * lang/qt/src/threadedjobmixin.cpp (fromEncoding)
- (stringFromGpgOutput): New helpers.
- (markupDiagnostics): Use it.
-
-2018-07-16 Andre Heinecke <aheinecke@intevation.de>
-
- json: Fix crash on invalid json.
- + commit 1686e07e77a1eee3b2708d0231a5a549956021f7
- * src/gpgme-json.c (process_request): Init res. Check for
- json object before encode and chunk.
-
- json: Fix uninitialized key unref in op_delete.
- + commit cc21101a7494ea0a17c3012fcb86e77b00b494fa
- * src/gpgme-json.c (op_delete): Init key.
-
-2018-07-16 Werner Koch <wk@gnupg.org>
-
- json: Minor cleanups in cJSON.c.
- + commit 1933f5b8056b2671301379106cca4504c4187795
- * src/cJSON.c: Add comments on the origin of the code.
- (parse_string): Allocate an extra byte for safeness.
- (cJSON_AddItemToArray): Allo ARRAY to be NULL.
-
- json: Fix buffer overflow in cJSON.c.
- + commit 013a7f47ab486c380b3c97637d3b15f11de74fe8
- * src/cJSON.c (parse_string): Correctly detect bad hex.
-
-2018-07-13 Ben McGinnes <ben@adversary.org>
-
- python bindings: example scripts.
- + commit 1bb3f8409d4bbec403bea768184a691d9d7ea42d
- * Fixed incorrect mention of output prompt referencing secret keys
- when the scripts are only for exporting public keys in whole or
- minimised forms.
-
-2018-07-11 Andre Heinecke <aheinecke@intevation.de>
-
- json: Add with-sec-fprs param to export.
- + commit 6cc842c9aa76d19448141e5117ac59452d7a1ff3
- * src/gpgme-json.c (add_secret_fprs): New helper.
- (op_export, hlp_export): Extend for with-sec fprs.
-
-2018-07-10 Ben McGinnes <ben@adversary.org>
-
- example scripts: python work-arounds.
- + commit 0e760e396fbf13e902d0dc0c048bff0d5410fa16
- * fixed three typos which were guaranteed to break said script.
-
-2018-07-09 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings howto.
- + commit 1eceacaff4ad5d6a4b759a7d00907dbc8278f12c
- * Complete typographic overhaul.
- * Removed all section level indentation since it does not affect
- output formatting, but might affect source code examples.
- * In text-mode stripped out all tabs which had crept in and replaced
- them with four spaces.
- * Updated all code examples (again) to conform with Python-mode.
- * Bumped version number in preparation for next release of GPG 2.2.9
- and corresponding GPGME release.
-
-2018-07-09 Andre Heinecke <aheinecke@intevation.de>
-
- json: Add with-secret without secret only.
- + commit 40471ec12f7b4ba37922813a02ebb2aaaa963b51
- * src/gpgme-json.c (op_keylist, hlp_keylist): Add "with-secret"
- as a flag to do a public keylist with secret information.
-
- tests: Add --with-secret to run-keylist.c.
- + commit c287f09ac0f090a65299ac7c15e3c9b4947d4b67
- * run-keylist.c (show_usage, main): Add --with-secret.
-
- doc: More explicit doc for EXTERN and LOCAL modes.
- + commit 31bc51e2aff0a28b551410c9def2f578d0d28cea
- * doc/gpgme.texi (GPGME_KEYLIST_MODE_EXTERN),
- (GPGME_KEYLIST_MODE_LOCATE, GPGME_KEYLIST_MODE_LOCAL): Mention
- command line flags for CMS and OpenPGP Protocol.
-
- Add ctx flag for auto-key-locate.
- + commit 7bc5d3c7e41c6e42a583a61a4c9504058fbb2976
- * src/context.h (gpgme_context): Add auto_key_locate.
- * src/engine-gpg.c (engine_gpg): Add auto_key_locate.
- (gpg_set_engine_flags, build_argv): Handle auto_key_locate.
- (gpg_release): Free auto_key_locate.
- * src/gpgme.c (gpgme_release): Free auto_key_locate.
- (gpgme_get_ctx_flag, gpgme_set_ctx_flag): Handle auto-key-locate.
- * doc/gpgme.texi: Document auto-key-locate flag.
- * tests/run-keylist.c (show_usage, main): Add --from-wkd option.
-
-2018-07-07 Ben McGinnes <ben@adversary.org>
-
- python bindings: howto examples.
- + commit cacca62d06c6cf4a291f7ab2571cf52d671d140f
- * Made sure all example scripts meet PEP8 compliance.
- * Required fixing approx. a dozen of them in minor ways.
-
-2018-07-05 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Handle OpenPGP Diagnostic log.
- + commit 66c2a99422dd9a52d8342165ed1d033c4f29b9e0
- * lang/qt/src/threadedjobmixin.cpp (_detail::audit_log_as_html):
- Handle OpenPGP audit log differently.
-
- cpp: Add enum mapping for GPGME_AUDIT_LOG_DIAG.
- + commit 629afebe5017db97f2a318f6878fe1f9d3e60189
- * src/context.cpp (to_auditlog_flags): Map DIAG value.
- * src/context.h (AuditLogFlags): Add it.
-
- core: Add gpg auditlog to get diagnostics.
- + commit a2458806f8bf04b66795e1dde765b42fe1ef6797
- * src/engine-gpg.c (engine_gpg): Add diagnostics member.
- (gpg_release): Release diagnostics data.
- (gpg_new): Set up logger-fd and diagnostics.
- (gpg_getauditlog): New. Copy diagnostics to a user data.
- (engine_ops): Add getauditlog.
- * src/engine-gpgsm.c (gpgsm_getauditlog): Return not implemented
- for GPGME_AUDITLOG_DIAG.
- * src/getauditlog.c (getauditlog_start): Don't reset engine
- for diagnostics.
- * src/gpgme.h.in (GPGME_AUDITLOG_DIAG): New.
- (GPGME_AUDITLOG_DEFAULT): New alias to 0.
- * tests/run-decrypt.c (show_usage, main): Add --diagnostics.
- * doc/gpgme.texi(Additional Logs): Document getauditlog.
-
-2018-07-04 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Fix memory of DecryptionResult::symkeyAlgo.
- + commit 7d65dc2a5c4f32139a1b9b1f0bd375f7ab1c58f6
- * lang/cpp/src/decryptionresult.cpp (Private, ~Private): strdup
- the symkey algo.
-
- json: Add keylist mode locate.
- + commit 76b847091593669c8a7e38918267d6be97dbd4d0
- * src/gpgme-json.c (op_keylist, hlp_keylist): Add locate.
-
-2018-07-01 Ben McGinnes <ben@adversary.org>
-
- python bindings: scheming serpents.
- + commit 5bca49975063f788b2499342d5a565faf54511db
- * Apparently I am wrong and Scheme is the new Python after all.
- * Non-import related PEP8 compliance must wait for another day, though
- the other PEP8 fixes remain.
-
- python bindings: gpg.core.
- + commit 789ea1b019885d5d1db1662e3cd4fda33636e30c
- * Changed id/else statements to a more pythonic form from scheme
- masquerading as python - sorry Justus, it had to go ;).
- * With the added bonus of enabling PEP8 compliance in those sections.
- * Fixed remaining PEP8 compliance issues with the exception of the
- imports at the beginning of the file (changing those will break the
- entire module, so we'll cope with it as it is).
-
-2018-06-29 Ben McGinnes <ben@adversary.org>
-
- m4 update: python 3.7.
- + commit 35e29e139534ed217340879732a7adfdbd57c91d
- * Fixed an error in arcane m4 syntax.
-
- python bindings: python 3.7.
- + commit 43a2b5754571292b25402e20cd044ebda9316c77
- * Bindings confirmed to work with the newly released 3.7.0.
- * Updated M4 file to reflect this change and correct the Python binary
- search order (3.7 is not yet given priority, but will still be found
- first via the more generic python3 executable).
- * Updated setup.py.in, bindings documentation and README to reflect this.
-
-2018-06-28 Ben McGinnes <ben@adversary.org>
-
- whitespace police:
- + commit 48174b2bcc319e4542aefd0cc3aae02c4083784e
- * There's always one or, in this case, two.
-
- docs: python bindings howto.
- + commit 6aec7d6e4a5173f54a079719020704a0098b8f0a
- * Updated official doc (the org-mode file) with the instructions on
- importing and exporting both public and secret keys.
-
- python bindings examples.
- + commit a7ccdc51efd8c199b902eb942e9db7b3549e721f
- * Added a secret key export variant which saves output as both GPG
- binary and ASCII armoured, plus saves in $GNUPGHOME and uses
- multiple methods of determining what that location is.
-
- python bindings examples.
- + commit 7fc7e80e54235c558051cbf72b51dd60b4ca485e
- * Added a key import variant which accesses the SKS keyservers in a
- RESTful fashion and then imports or attempts to import the response.
-
- python bindings examples: three export scripts.
- + commit 0d163a7d121eacacc5f6da11a3dee3548f98f124
- * Example of default exporting keys.
- * Example of exporting minimised keys.
- * Example of exporting secret keys to a file with correct permissions.
-
- python bindings: import example.
- + commit 4251cae34da0d825a29f509ac828f7ecb90c1752
- * Added an example script for importing a key from a file (either
- ASCII armoured or not).
-
- python bindings: export secret keys.
- + commit a5b91b21f561d7b13ddcb62fca3749ed92ea8720
- * The holy grail: a function to export secret keys.
- * GPGME will still invoke pinentry and gpg-agent as usual to authorise
- the export.
- * Mostly similar to the two previous export functions for public keys
- except that it will return None if the result had a length of zero
- bytes. Meaning that the difference between the specified pattern
- (if any) not matching available keys and an incorrect passphrase is
- not able to be determined from this function (or the underlying one
- for that matter).
-
- python bindings: export public keys.
- + commit 7faef33d13fa8efce152ca7aa6e9d39030c1cf08
- * Updated key_export and key_export_minimal to return None where a
- pattern matched no keys in a manner simnilar to the possible result
- of key_export_secret.
-
- python bindings: export public keys.
- + commit 89c548efdf46bd7d9e6f0ca34a07efbbf420e821
- * Added functions for exporting public keys to gpg.core in both
- complete form and in minimised form.
- * Rather than letting people need to worry about the export modes we
- are simply separating the functions as people would be more familiar
- with from the command line usage anyway.
- * Functions added for Context are: ctx.key_export_minimal and
- ctx.key_export as the default or full export.
-
-2018-06-20 Andre Heinecke <aheinecke@intevation.de>
-
- json: Add file handling for debug output.
- + commit d8beab30c44482fb7a3e445b92cec482792b2ca0
- * src/gpgme-json.c (main): Add possibilty to set log file.
-
-2018-06-19 Andre Heinecke <aheinecke@intevation.de>
-
- Prepare build system for gpgme-js and dist it.
- + commit d27703ea4f0eed950cddf0157dc78bcb5d8d1c65
- * configure.ac: Add js as language.
- * lang/Makefile.am: Add js as dist language.
- * lang/js/BrowserTestExtension/Makefile.am,
- lang/js/DemoExtension/Makefile.am,
- lang/js/Makefile.am,
- lang/js/src/Makefile.am: Populate EXTRA_DIST variables.
-
-2018-06-17 Ben McGinnes <ben@adversary.org>
-
- python bindings: core import statements.
- + commit 19c5267f868aa41e73752ac1c76ec7ae1efe07b8
- * Fixed the bit I broke while fixing the PEP8 compliance issues.
-
- python bindings: core — PEP8 compliance.
- + commit a5b24ae46c81d3abd3bb18bf0390cab6ebb2bd77
- * Fixed most of the PEP8 errors in core.py
- * Those remaining may need more than little edits and are a bit
- strange (too clearly the result of a programmer who has spent far
- too much time dealing with Lisp so that for Python it looks
- ... strange).
-
- python bindings: core - key import.
- + commit 5a80e755008bbb3f4c7f91ffccd38f26cd8b3960
- * Wrapped the key import function in the try/exception statements
- needed to catch at least the most likely unsuccessful import attempt
- errors.
- * Mostly draws on the file error and no data import statuses for
- errors, with a couple of exceptions.
-
- python bindings: core key import.
- + commit 0e762608ef5a598030b8d0e56261a830e1b7b724
- * The foundation of a pythonic key import function authored by Jacob
- Adams.
- * A unit testing script for the same function originally authored by
- Tobias Mueller
- * Added DCO reference for Jacob Adams to the GPGME AUTHORS file.
- * Additional details regarding this patch are available here:
- https://dev.gnupg.org/T4001
-
-2018-06-10 Ben McGinnes <ben@adversary.org>
-
- script: groups.py.
- + commit 92cd060f5e2f4fdbfbe4812ebe8ef57e82e1609f
- * Added check for if it is run on a Windows system so that the correct
- binary filename is invoked.
-
-2018-06-08 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add proper gpgme_op_createkey.
- + commit 8dff414e170e4df8ea661028c4ac1588311ca26e
- * lang/cpp/src/context.cpp, lang/cpp/src/context.h
- (Context::createKeyEx): New.
-
- json: Return fingerprint as createkey result.
- + commit 54146d90dd5518c24c30e6d2ebeb7f47ed4eb29e
- * src/gpgme-json.c (op_createkey): Return fingerprint of new key.
-
- json: Add op_createkey.
- + commit 6c74a59e8855d1cac0d8001ad1b7843d2d15be5e
- * src/gpgme-json.c (hlp_createkey, op_createkey): New.
- (process_request, hlp_help): Add it.
-
- json: Generalize chunking and getmore.
- + commit af8510fb7f4d5c90cc53f10dcc740f377af73d68
- * src/gpgme-json.c (MIN_REPLY_CHUNK_SIZE): Lower value to
- new real minimum.
- (DEF_REPLY_CHUNK_SIZE): Don't chunk by default.
- (pending_data): Remove type and base64.
- (make_data_object): Remove chunksize handling as this is now
- generic.
- (encode_and_chunk): Setup the pending_data buffer for chunking
- if required.
- (op_getmore): Changed to generically work on a response.
- (hlp_getmore): Update accordingly.
- (hlp_help): Document chunksize as generic parameter for all commands.
- (process_request): Use encode_and_chunk on the response.
- (hlp_encrypt, op_encrypt, hlp_decrypt, op_decrypt),
- (hlp_verify, op_verify, hlp_sign, op_sign),
- (op_keylist, hlp_keylist, hlp_export, op_export): Update accordingly.
-
-2018-06-07 Andre Heinecke <aheinecke@intevation.de>
-
- json: Rework verify_result_to_json.
- + commit e48f4a18f807ee42b31968b84f6ae7811d8d8a45
- * src/gpgme-json.c (sigsum_to_json): Add bool repr.
- (signature_to_json, verify_result_to_json): Extend and follow better
- pattern.
- (hlp_decrypt, hlp_verify): Expand doc.
-
- json: Add direct way to query a config option.
- + commit 906ea48df3e178bea3e2c744ddd834b23fe553fb
- * src/gpgme-json.c (op_config_opt, hlp_config_opt): New operation.
- (process_request, hlp_help): Add it.
-
- json: Add op_config to query gpgconf.
- + commit 7e18c7a07a1e2c58ef4d5ddeed46bcce098bdf6c
- * src/gpgme-json.c (op_config, hlp_config): New.
- (hlp_help, process_request): Add config.
- (conf_arg_to_json, conf_opt_to_json, conf_comp_to_json): New
- helpers.
-
-2018-06-07 Ben McGinnes <ben@adversary.org>
-
- examples: python howto.
- + commit a3a08584d6e57c4b2a40d74dc52a7d8c5c11b501
- * Uses the groups module to prepare a list of recipients and encrypt
- to those.
- * The main version (encrypt-to-group.py) tries to check for invalid
- recipients, but still falls back to always trust for the second
- encryption attempt.
- * The gullible version doesn't try pruning the recipient list at all,
- it just tries to encrypt and if it fails, switches straight to
- always trust.
- * The trustno1 version doesn't use the always trust model at all and
- only attempts pruning the list of invalid recipients.
-
-2018-06-06 Werner Koch <wk@gnupg.org>
-
- core: Return a better error code on certain decryption failures.
- + commit 2c4c5692472f5870f907c2c3f01870879cb0c34b
- * src/decrypt.c (op_data_t): Add field first_status_error.
- (parse_status_error): Set it.
- (_gpgme_decrypt_status_handler): Prefer an ERROR code over a
- NO_SECKEY.
-
-2018-06-05 Werner Koch <wk@gnupg.org>
-
- json: Allow to compile with libgpg-error < 1.28.
- + commit 998fec8a4fbc46315fe6836980954eed402b38c5
- * src/cJSON.c: Use gpgrt fucntion only if available.
-
-2018-06-02 Ben McGinnes <ben@adversary.org>
-
- docs: python bindings howto.
- + commit 897423422b9d3b856bfb72fbe1995b91d153a54e
- * Another attempt at fixing the org-mode version.
- * A proof reader ascertained there were tabs in it instead of whitespace.
- * Stripped the lot out and replaced with standard 4 spaces, fixed
- every incorrect example ... and it still breaks upon save and/or export.
- * Added the reference to the mutt-groups.py script to demonstrate the
- groups.py module/code.
-
- Authors: DCO.
- + commit e144a6d70657675e28d43e42b48d879ff9b81d73
- * Added mine to the GPGME AUTHORS file. Mainly so I'm doing what I
- say myself when about to request another from someone ... ;)
-
-2018-06-01 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add gpgme_(get)set_ctx_flag.
- + commit 00b027af86f33782933c6200fe1ffe40e85f4346
- * NEWS: Mention API extensions.
- * lang/cpp/src/context.cpp, lang/cpp/src/context.h
- (Context::setFlag, Context::getFlag): New.
-
- cpp: Add legacy_cipher_nomdc.
- + commit d46768c96082b4fd076506d7d3f0c03e61c59d51
- * lang/cpp/src/decryptionresult.cpp, lang/cpp/src/decryptionresult.h
- (DecryptionResult::isLegacyCipherNoMDC): New.
-
-2018-06-01 Werner Koch <wk@gnupg.org>
-
- core: New context flag "ignore-mdc-error".
- + commit 662604c5bcb4e03d3c9ecc670d4f320a2418ebb3
- * src/context.h (gpgme_context): Add field ignore_mdc_error.
- * src/gpgme.c (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Set/get it.
- * src/engine-gpg.c (engine_gpg): Add flags.ignore_mdc_error.
- (gpg_set_engine_flags): Set it.
- (build_argv): Pass option to gpg.
- * src/decrypt.c (_gpgme_decrypt_status_handler): Take care of flag.
- (gpgme_op_decrypt_result): Clear flag.
- (gpgme_op_decrypt): Clear flag.
- * src/decrypt-verify.c (gpgme_op_decrypt_verify): Clear flag
- (gpgme_op_decrypt_ext): Clear flag.
-
- * tests/run-decrypt.c (show_usage): Add option --ignore-mdc-error.
-
- core: New decryption result flag 'legacy_cipher_nomdc'.
- + commit dd19cabe81b7bf4177ea2ca741f6eb6cd1cab25e
- * src/gpgme.h.in (_gpgme_op_decrypt_result): Add flag
- legacy_cipher_nomdc.
- * src/decrypt.c (parse_status_error): Set this flag.
- * tests/run-decrypt.c (print_result): print it.
- (main): Print the result even on error.
-
- core: Remove cruft from the engine-gpg code.
- + commit e2aa38b56a991a0da052acfe7566cc7a146d3bb6
- * src/engine-gpg.c (read_status): Remove the handling of
- GPGME_STATUS_END_STREAM; this was used only by the former experimental
- --pipemode of gpg but that is not even anymore invoked here.
- (struct engine_gpg): Remove cmd.linked_data and .linked_idx.
- (build_argv): Remove code for linked_data.
- (gpg_new): Ditto.
- (gpg_set_command_handler): Remove arr linked_data.
- * src/engine-backend.h (engine_ops): Remove arg data from
- set_command_handler.
- * src/engine.c (_gpgme_engine_set_command_handler): Remove arg
- linked_data and adjust all callers.
-
- core: Minor cleanup in engine-gpg and -gpgsm.
- + commit 2219fc19d58ae1071493de92093b711f3c71454a
- * src/engine-gpg.c: Remove errno.h.
- (build_argv): Use gpg_error_from_syserror instead of ERRNO.
- * src/engine-gpgsm.c: Remove errno.h.
- (status_handler): Remove check for EINTR; gpgme_data_write already
- handles EINTR.
-
-2018-05-29 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add gpgme_data_rewind to cpp API.
- + commit 618aa7f08db41911f25632d9fba23bca80908ebe
- * lang/cpp/src/data.h, lang/cpp/src/data.cpp (Data::rewind): New.
- * lang/qt/tests/t-various.cpp (testDataRewind): Test it.
-
-2018-05-28 Werner Koch <wk@gnupg.org>
-
- json: Fix compiler warning.
- + commit 77166851f165b1220dcf0116bb61f81e58e4512f
- * src/gpgme-json.c (op_version): Mark request as unused.
-
- json: Do not allow to export or delete secret keys.
- + commit 0de991fee05a9733ac29b2fa35643fe4607e56cb
- * src/gpgme-json.c (op_export, op_delete): Return GPG_ERR_FORBIDDEN if
- "secret" is used.
-
- json: Fix use of get_context.
- + commit 368f2d9db30df16328b34787419de99fe3e1e2f1
- * src/gpgme-json.c (create_onetime_context): New.
- (release_onetime_context): New.
- (op_sign): Use the new fucntions to create a separate context.
- (op_encrypt): Use a separate context for key listings.
- (create_keylist_patterns): Remove unneeded cast.
-
-2018-05-25 Andre Heinecke <aheinecke@intevation.de>
-
- json: Implement encrypt-sign.
- + commit 7aa00917c7f13294584daba31a506730f0015ef5
- * src/gpgme-json.c (op_encrypt): Add optional signing_keys param.
- (get_keys, create_keylist_patterns): Add param for json object name.
-
- json: Implement delete command.
- + commit 73dc5e933d609989bd9ec428c89ada95d5eaec8a
- * src/gpgme-json.c (op_delete): New.
- (hlp_help, process_request): Add it.
-
- json: Implement op_export.
- + commit a1bbe7473a4d0f31d471d6cceb2f7e1382860194
- * src/gpgme-json.c (op_export): New.
- (hlp_getmore, process_request): Add it.
-
- json: Fix double ctx alloc.
- + commit 897522527d493307d15809a41496f8b76ec4edfe
- * src/gpgme-json.c (op_keylist): Only get one ctx.
-
- json: Add guard in create_keylist_patterns.
- + commit 10683b1a913c39238c9871f5aa607334f32467f7
- * src/gpgme-json.c (create_keylist_patterns): Guard against
- a string ending with a linbreak.
-
- json: Implement import operation.
- + commit 1ff16dad595946af140b324fad2bceca7ddbc378
- * src/gpgme-json.c (op_import): New.
- (import_status_to_json, import_result_to_json): New.
- (hlp_help, process_request): Add import.
-
- json: Improve keylist help.
- + commit fe06929deec6544e2f267937dc5dafe2555bf485
- * src/gpgme-json.c (hlp_keylist): Clarify doc about keys parameter.
-
- json: Fix keylist pattern handling.
- + commit 10724e363d6b5b06f51808287ad63e142e419ae6
- * src/gpgme-json.c (xfree_array): New helper.
- (create_keylist_patterns): Convert keystring to gpgme patterns.
- (op_sign, op_keylist): Use it.
-
- json: Add additional commands to help.
- + commit ed20936ce4d5bb066828346b9a06d2dfa8d6afb2
- * src/gpgme-json.c (hlp_help): Add additional commands.
-
- json: Refactor signature and ei code.
- + commit aa59f4970ac106ccd17fa9fadfc264d11e4cd347
- * src/gpgme-json.c (add_summary_to_object): Changed to:
- sigsum_to_json.
- (add_signature_to_object): Changed to signature_to_json.
- (add_signatures_to_object): Changed to verify_result_to_json.
- (add_ei_to_object): Changed to engine_info_to_json.
- (op_decrypt, op_verify, op_version): Use new functions.
-
- json: Implement keylist.
- + commit 546e3295eaade073c34364c4ea6ab007532824d8
- * src/gpgme-json.c (xjson_AddStringToObject0)
- (xjson_AddItemToObject): New helpers.
- (sig_notation_to_json, key_sig_to_json, tofu_to_json)
- (uid_to_json, subkey_to_json, key_to_json): New
- GPGME to JSON functions.
- (op_keylist): New.
- (process_request): Add op_keylist.
-
- json: Deduplicate input handling code.
- + commit a46c27b32111b1737a405c5be48c0f9ddbbbb353
- * gpgme-json.c (get_string_data): New.
- (op_verify, op_sign, op_decrypt, op_encrypt): Use it.
-
-2018-05-24 Ben McGinnes <ben@adversary.org>
-
- examples: mutt crypt-hooks generator.
- + commit 321005c12f716814d86e139eb265437bda01380f
- * Added a script which demonstrates how the groups module works.
- * Script generates Mutt/Neomutt crypt-hooks for every group entry in
- gpg.conf, including those entries for multiple keys (Mutt handles
- that differently).
-
- docs: python bindings howto.
- + commit 48e946a96d05effd56b34761b98eebb6b2a6fae1
- * Fixed the groups.py script so it really does what is described (the
- old code had the same result for groups, group_lines and
- group_lists).
- * Updated the corresponding example in the doc to match.
-
- doc: python bindings howto.
- + commit 9038d30017b2e38b183d093f9b5d46e1f24c70a6
- * Fixed org-mode python source indenting.
- ** Note: nested indented blocks do not indent correctly when exported
- to [X]HTML.
-
-2018-05-24 Andre Heinecke <aheinecke@intevation.de>
-
- json: Add code to gpg_error based messages.
- + commit 9fca7c84067c0d4c968c8920dc8ef9449769c5ea
- * src/gpgme-json.c (gpg_error_object): New.
- (error_object_v): Extend to take error.
-
- json: Implement op_version.
- + commit 61f4532ba979dea1acd8c7de9b7d56bb8ff552d5
- * src/gpgme-json.c (op_version): New.
- (process_request): Extend for version.
- (protocol_to_string, add_ei_to_object): New helpers.
-
- json: Implement op_verify.
- + commit 5fbf81c18b277b30639ba09e8c5d21573b444b00
- * src/gpgme-json.c (op_verify): New.
- (hlp_help): Add verify.
- (process_request): Add verify.
-
- json: Put signature info before data output.
- + commit c679ed24778c997fee72d3613babad8680855882
- * src/gpgme-json.c (op_decrypt): Move info before data.
-
- json: Add sign to help.
- + commit a6cd3a1197eb4efea0950394959c252f24475f67
- * src/gpgme-json.c (hlp_help): Add sign.
-
- json: Add op_sign.
- + commit 1c0a55a60847563fecf92a383457ab3576aec5d8
- * src/gpgme-json.c (op_sign): New.
-
- json: Fix invalid function call.
- + commit b344933e4cb17f2f26c4ed355217428bda8b8c40
- * src/gpgme-json.c (add_signatures_to_object): Fix call to
- xjson_CreateArray.
-
- json: Print signatures for decrypt/verify.
- + commit 45036c3c4c11f7bd56a00805564108e9377b657e
- * gpgme-json.c (xJSON_CreateArray),
- (add_summary_to_object, validity_to_string): New helpers.
- (add_signature_to_object, add_signatures_to_object)
- (add_signatures_object): New.
- (op_decrypt): Handle verify_result.
- (hlp_help): Mention decrypt.
-
- json: Minor typo fixes.
- + commit fd5e14660a6f4eb1a89d69534e3e435f7fb05f8a
- * src/gpgme-json.c: Minor typo fixes.
-
-2018-05-23 Ben McGinnes <ben@adversary.org>
-
- docs and examples: python howto.
- + commit 3a9e6a8e088e233097866bb0560a36cfbbc4470e
- * Updated the decryption example code in the HOWTO and the
- corresponding decrypt-file.py script to gracefully handle a
- decryption failure. This error will always be triggered when GPGME
- is used to try to decrypt an old, MDC-less encrypted message or
- file.
-
-2018-05-22 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Expose sessionKey and symkeyAlgo.
- + commit 28e3778ce21069006153bc156a414de6d9347962
- * lang/cpp/decryptionresult.cpp, lang/cpp/decryptionresult.h
- (DecryptionResult::symkeyAlgo, DecryptionResult::sessionKey): New.
-
-2018-05-17 Andre Heinecke <aheinecke@intevation.de>
-
- core, w32: Add w64 handling for regkeys.
- + commit e04b8142df21a49e6c4a3f8234cc14bfec217222
- * src/w32-util.c (_gpgme_get_gpg_path): Use new defines.
- (GNUPG_REGKEY_2): x64 aware regkey as used by GnuPG in Gpg4win 2.x
- (GNUPG_REGKEY_3): x64 aware regkey as used by GnuPG in Gpg4win 3.x
- (_gpgme_get_gpgconf_path): Use new regkeys. Add another fallback.
-
-2018-05-17 Werner Koch <wk@gnupg.org>
-
- core: Always fail if an OpenPG message is not integrity protected.
- + commit 8a0c8c52510d9c2d934f85159f04b666286b1786
- * src/decrypt.c (struct op_data_t): Add field not_integrity_protected.
- (parse_decryption_info): Set this. Also rename mode to aead_algo for
- clarity.
- (_gpgme_decrypt_status_handler): Force failure in case of a missing
- MDC.
-
-2018-05-09 Werner Koch <wk@gnupg.org>
-
- json: Improve auto-base64 encoding to not split UTF-8 chars.
- + commit e54b110aec3165a32ff9551d0c5227b88aa3dd4f
- * src/gpgme-json.c (make_data_object): Switch to Base64 also for UTF-8
- characters.
-
- core: Make the status-fd monitor work for all gpgsm commands.
- + commit e2a8a87bf9cfae5d4e8a5953c2a5303b44feb398
- * src/engine-gpgsm.c (status_handler): Call the status monitor also
- here.
-
-2018-05-05 Ben McGinnes <ben@adversary.org>
-
- python: key expiration datetime stamp tests.
- + commit 46da79e3de99a7b65748994921d6aab73b9974e7
- * Changed the expiration date for the generated test key to NYE this
- century, rather than the NYE this millennium as originally suggested
- in job #3815.
- * This covers the lifetimes of current users (except, maybe, some very
- healthy millennials) as well as the 32-bit clock end date in 2038;
- without falling foul of OpenPGP's 2106 expiration.
-
-2018-05-04 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Respect --disable-gpg-test for tests.
- + commit 26820ba62920acfe2775bce8fc2bc8b3f17b1c10
- * lang/qt/Makefile.am: Respect --disable-gpg-test
-
-2018-04-26 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Fix filename handling in cryptoconfig.
- + commit 6b267c56fd6e54fb1c254455c04495534260b547
- * src/qgpgmenewcryptoconfig.cpp (QGpgMENewCryptoConfigEntry::urlValue):
- Build url from local file.
- (QGpgMENewCryptoConfigEntry::setURLValue): Set native seperated
- path.
-
-2018-04-20 Maximilian Krambach <maximilian.krambach@intevation.de>
-
- js: encrypt improvement and decrypt method.
- + commit 6ab25e40d904007755c5d999bf66ae264236e745
- * Compatibility class gpgme_openpgpjs offers an API that should accept
- openpgpjs syntax, throwing errors if a parameter is unexpected/not
- implemented
- * tried to be more generic in methods
- * waiting for multiple answers if 'more' is in the answer
- * more consistency checking on sending and receiving
- * updated the example extension
-
-2018-04-20 Andre Heinecke <aheinecke@intevation.de>
-
- core: Do not modify args for ignored failures.
- + commit 7706fa2c922f5e02570b01f145ed474e82341042
- * src/op-support.c (_gpgme_parse_failure): Ignore gpg-exit failures
- before modifying args.
-
-2018-04-20 Werner Koch <wk@gnupg.org>
-
- Release 1.11.1.
- + commit 2e9a14912fb906c17017553ccd0941d172e095ff
- * configure.ac: Bump LT version to C31/A20/R1. For cpp to C13/A7/R0.
- For qt to: C10/A3/R2.
-
- core: Remove another debug output leftover.
- + commit f779362ffbc7b9334d98f9ee50bfe3c2dc177215
- * src/decrypt.c (_gpgme_decrypt_status_handler): Remove log debug.
-
- build: More release creation automation.
- + commit d11bec5ef5e576dab52c1dc7d87758e4f9bf3583
- * Makefile.am: Add release and sign-release targets.
-
-2018-04-19 Werner Koch <wk@gnupg.org>
-
- json: Remove the -noinstall flag used during development.
- + commit ab43d85b9a76fb5ba321f4c7280b4d72bfd67f59
- * src/Makefile.am (gpgme-json_LDFLAGS): Remove.
-
-2018-04-19 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add origin and last_update to UserID.
- + commit d65d6329319bff8cc555999fc92a20e151762a10
- * NEWS: Mention it.
- * lang/cpp/src/key.cpp, lang/cpp/src/key.h (UserID::lastUpdate),
- (UserID::origin): New.
- (gpgme_origin_to_pp_origin): New helper.
-
- cpp: Add origin and last_update.
- + commit 0adaf7bafd352f1c3a1e797493780150e3bb0adc
- * NEWS: mention interface change.
- * lang/cpp/src/key.cpp (Key::origin, Key::lastUpdate): New.
- * lang/cpp/src/key.h (Key::Origin): New enum.
-
-2018-04-19 Werner Koch <wk@gnupg.org>
-
- core: Remove leftover debug output.
- + commit b52a91f5a6818db6b3dd7ce86c01b5d5f6700d0d
- * src/verify.c (_gpgme_verify_status_handler): Remove debug output.
-
- tests: Fix t-verify test for GnuPG < 2.2.7.
- + commit 3d8e5c07511938a0b30b4626530822338abd9ec0
- * tests/gpg/t-verify.c (check_result): Tweak for gnupg < 2.2.7.
-
-2018-04-18 Werner Koch <wk@gnupg.org>
-
- Release 1.11.0.
- + commit 3f55c52b9adc3680c7a9fb0e598598e6ed3a2a5d
- * configure.ac: Bump LT version to C31/A20/R0. For cpp to C12/A6/R0.
- For qt to: C10/A3/R1.
-
- json: Add stpcpy replacement.
- + commit 8e34a14fe694a8c765973aaa3a8b2a2d2c3ba8b9
- * src/gpgme-json.c [!HAVE_STPCPY](_my_stpcpy): New.
-
- core: New convenience constant GPGME_KEYLIST_MODE_LOCATE.
- + commit 55e9a94680370e584fbe5d21161a2cee3fe95744
- * src/gpgme.h.in (GPGME_KEYLIST_MODE_LOCATE): New.
-
- json: Add command "decrypt" to gpgme-json.
- + commit e5273fc4431dfb597a2d9cf4af5172572476a2de
- * src/gpgme-json.c (make_data_object): Enable auto-detection of
- base-64.
- (op_encrypt): Support a 'mime' flag.
- (op_decrypt): New.
- (process_request): Add command "encrypt".
-
- core: Add 'is_mime' flags to the verify and decrypt results.
- + commit 65479fe7b871ad6237d5a8959b73afcc7db784da
- * src/op-support.c (_gpgme_parse_plaintext): Add arg r_mime.
- * src/decrypt.c (_gpgme_decrypt_status_handler): Ser mime flag.
- * src/verify.c (_gpgme_verify_status_handler): Ditto.
- * src/gpgme.h.in (gpgme_op_verify_result_t): Append fields 'is_mime'
- and '_unused'.
- (gpgme_op_decrypt_result_t): New field 'is_mime'. Shrink '_unused'.
-
- * tests/run-decrypt.c (print_result): Print MIME flag.
- * tests/run-verify.c (print_result): Ditto.
-
- core: Fix possible compliance mode detection error.
- + commit 23177e4410d05d590c0f2e1675dc645bbb4ad62c
- * src/verify.c (_gpgme_verify_status_handler): Insert missing break.
-
- json: Improve help meta command in gpgme-json.
- + commit 49a617f8bbff116884ca5c7238c2e0ea4e26ce59
- * src/gpgme-json.c (process_meta_commands): Add ",help CMD".
-
- json: Add command "getmore" to gpgme-json.
- + commit ed1052842df633bc149b14c4cb17859e3c66afe4
- * src/gpgme-json.c (MIN_REPLY_CHUNK_SIZE): New const.
- (DEF_REPLY_CHUNK_SIZE): New const.
- (MAX_REPLY_CHUNK_SIZE): New const.
- (pending_data): New var.
- (add_base64_to_object): Chnage to take a plain data pointer.
- (get_chunksize): New.
- (make_data_object): New.
- (op_encrypt): Get chunksize and use make_data_object.
- (op_getmore): New.
- (process_request): Release pending data for all commands but "getmore"
- and "help".
-
- json: Add meta command ,read to gpgme-json.
- + commit e69b175e8ed5430b56e2e8f3d68c16a45f0fed17
- * src/gpgme-json.c: Include stat.h.
- (get_file): New.
- (process_meta_commands): Implement ",read".
-
-2018-04-17 Werner Koch <wk@gnupg.org>
-
- core: Extend decryption result with symkey_algo.
- + commit 01435da498af9f7538d7ee810392d7eaa407957e
- * src/gpgme.h.in (gpgme_op_decrypt_result_t): Add field 'symkey_algo'.
- * src/decrypt.c (release_op_data): Free SYMKEY_ALGO.
- (gpgme_op_decrypt_result): Make sure SYMKEY_ALGO is not NULL.
- (parse_decryption_info): New.
- (_gpgme_decrypt_status_handler): Parse DECRYPTION_INFO status.
- * src/conversion.c (_gpgme_cipher_algo_name): New.
- (_gpgme_cipher_mode_name): New.
-
- * tests/run-decrypt.c (print_result): Print SYMKEY_ALGO
-
- * src/util.h (_gpgme_map_gnupg_error): Remove obsolete prototype.
-
- core: New keyword --file for OpenPGP recpstring.
- + commit 3589da0500f1c80717e658d103a0cb2751d27b49
- * src/engine-gpg.c (append_args_from_recipients_string): Add new
- flags.
-
- core: For OpenPGP let offline mode disable dirmngr.
- + commit c143ab692c7fc7cf2ec0aebe40b9479ee15eaba9
- * src/engine-gpg.c (struct engine_gpg): New flag.offline.
- (gpg_set_engine_flags): Set it. Also fix setting of no_symkey_cache.
- (build_argv): Pass --disable-dirmngr in offline mode.
-
-2018-04-17 Tobias Mueller <muelli@cryptobitch.de>
-
- python: Fix crash by leaving struct members intact.
- + commit bbfa7c42337bb619e6af20bf051fe0755ed5a9fd
- * lang/python/setup.py.in: Copy gpgme.h instead of parsing it.
-
-2018-04-17 Werner Koch <wk@gnupg.org>
-
- core: Allow for --hidden keyword in OpenPGP recpstrings.
- + commit 4bba3b8e2c350b8ff0d562ec63cc03a096448d84
- * src/engine-gpg.c (append_args_from_recipients_string): Add special
- keywords.
-
- core: New encryption flag GPGME_ENCRYPT_WANT_ADDRESS.
- + commit 86efba2be270d2cdd0bc66c9d3fe190495b7af2f
- * src/gpgme.h.in (GPGME_ENCRYPT_WANT_ADDRESS): New flag.
- * src/engine-gpg.c (add_arg_recipient): New.
- (add_arg_recipient_string): New.
- (append_args_from_recipients): Call new helper function.
- (append_args_from_recipients_string): Ditto.
- * src/gpgme-json.c (op_encrypt): Add flag "want-address".
-
- core: Add extended versions of the encrypt functions.
- + commit a1f76b3b54b75a150fe272b804d85ffd40a507a6
- * src/gpgme.h.in (gpgme_op_encrypt_ext_start) New.
- (gpgme_op_encrypt_ext): New.
- (gpgme_op_encrypt_sign_ext_start): New.
- (gpgme_op_encrypt_sign_ext): New.
- * src/libgpgme.vers, tests/run-encrypt.c: Add them.
-
- * src/encrypt.c (encrypt_start): Add arg recpstring.
- (gpgme_op_encrypt): Factor code out to ...
- (gpgme_op_encrypt_ext): new function with new arg recpstring.
- (gpgme_op_encrypt_start): Factor code out to ...
- (gpgme_op_encrypt_ext_start): new function with new arg recpstring.
- * src/encrypt-sign.c (encrypt_sign_start): Add arg recpstring.
- (gpgme_op_encrypt_sign): Factor code out to ...
- (gpgme_op_encrypt_sign_ext): new function with new arg recpstring.
- (gpgme_op_encrypt_sign_start): Factor code out to ...
- (gpgme_op_encrypt_sign_ext_start): new function with new arg
- recpstring.
-
- * src/engine-backend.h (struct engine_ops): Change fields encrypt and
- encrypt_sign.
- * src/engine.c (_gpgme_engine_op_encrypt): Add arg recpstring and pass
- to engine.
- (_gpgme_engine_op_encrypt_sign): Ditto.
- * src/engine-gpg.c (append_args_from_recipients_string): New.
- (gpg_encrypt): Add arg recpstring and call new function as needed.
- (gpg_encrypt_sign): Ditto.
- * src/engine-gpgsm.c (set_recipients_from_string): New.
- (gpgsm_encrypt): Add arg recpstring and call new function as needed.
- * src/engine-uiserver.c (set_recipients_from_string): New.
- (uiserver_encrypt): Add arg recpstring and call new function as
- needed.
-
- * tests/run-encrypt.c (xstrdup): New.
- (main): Add option --keystring.
-
- * src/gpgme-json.c (get_keys): Simplify.
- (op_encrypt): Modify to make use of the extended encrypt function.
-
-2018-04-12 Werner Koch <wk@gnupg.org>
-
- core: Tweak STATUS_FAILURE handling.
- + commit b99502274ae5efdf6df0d967900ec3d1e64373d7
- * src/op-support.c (_gpgme_parse_failure): Ignore failures with
- location "gpg-exit".
- * tests/gpg/t-verify.c (main): Adjust for the now working checking of
- the second key.
-
- core: For a failed verification return the sig's fingerprint.
- + commit 478d1650bbef84958ccce439fac982ef57b16cd0
- * src/verify.c (parse_new_sig): Parse the new ERRSIG fpr.
-
- tests: Avoid segv in run-verify due to Policy URLs.
- + commit ee8fad3ea0cbc82f31c86b3483abd8549df62b69
- * tests/run-verify.c (print_result): Take care of Policy URLs.
-
- tests: Add another check to gpg/t-verify.
- + commit bdf7cd2e28432cf0fa7e0758acdfee03d7bfd45f
- * tests/gpg/t-verify.c (PGM): New. Use it instead of __FILE__.
- (test_sig1_plus_unknown_key): New test signature.
- (check_result): Allow checking of several signatures.
- (main): Check a signature with a know and an unknown key.
-
- core: Add new context flag "no-symkey-cache".
- + commit f7700a016926f0d8e9cb3c0337837deb7fe01079
- * src/gpgme.c (gpgme_set_ctx_flag): Set flag.
- (gpgme_get_ctx_flag): Get flag.
- * src/context.h (struct gpgme_context): Add field no_symkey_cache.
- * src/engine-gpg.c (struct engine_gpg): Ditto.
- (gpg_set_engine_flags): Set flag.
- (build_argv): Pass option --no-symkey-cache to gpg.
-
- * tests/run-decrypt.c (print_result): Fix segv for symmetric messages.
- (main): New option --no-symkey-cache.
- * tests/run-encrypt.c (main): New option --no-symkey-cache.
-
-2018-04-04 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Add test for resetting config value.
- + commit 5eb261d6028ab2c0ddd9af8e3e1f82e479c6109c
- * lang/qt/tests/t-config.cpp (CryptoConfigTest::testDefault): New.
-
-2018-03-29 Werner Koch <wk@gnupg.org>
-
- json: Build only a dummy if libgpg-error is < 1.28.
- + commit 60d7a1e8f625ea0db455bff989534dd52f0650c7
-
-
-2018-03-29 Ben McGinnes <ben@adversary.org>
-
- example: revoke UID.
- + commit 3b91f6af378ccc37dcf8924cbc157894c35b5192
- * Script to revoke a UID on an existing key.
-
- docs: python bindings howto.
- + commit d65864989c0560b5f51cb8d05d9ea9f1957b453e
- * Added section on revoking UIDs.
-
- example: key signing.
- + commit 56bbfd39acea90eb87a28b11a515b0314cdda54c
- * Added script for signing or certifying keys.
-
- doc: python bindings howto.
- + commit 5a553f5a317e5ad5ab0274d58854df1ecf390e0d
- * Fixed a typo.
-
-2018-03-28 Ben McGinnes <ben@adversary.org>
-
- docs python bindings howto.
- + commit 2f507b045909d32bf29d23da04db02b078e5fb9d
- * PEP8 compliance: a collection of minor edits across multiple example
- code snippets.
-
- example: add user ID.
- + commit 5cd419341807d8ae23fec7bd9bb7025a8a2dcb3c
- * Added script to add a UID to an existing key.
-
-2018-03-28 Werner Koch <wk@gnupg.org>
-
- json: Remove the "message" object thingy again.
- + commit 3345a17dda2222e3c1592235e8a1cd9493192777
- * src/gpgme-json.c (process_request): Remove 'nm_mode'.
-
- json: Make native messaging work.
- + commit 4b2fa657d195382d14ac99be40b66327e0fc855c
- * src/gpgme-json.c (opt_debug): New.
- (process_request): Add optional arg nm_mode. In this mode take the
- request from a "message" object.
- (native_messaging_repl): Add debug output and call process_request
- in NM_MODE.
- (main): Add option --debug. Parse envvar GPGME_JSON_DEBUG as an
- alternative way to enable this. Use a default log file.
-
-2018-03-27 Andre Heinecke <aheinecke@intevation.de>
-
- core: Initialize key return value in gpgme_get_key.
- + commit 7c220e387d511b0cf66f99370759c36b729cc444
- * src/keylist.c (gpgme_get_key): Set r_key to NULL.
-
-2018-03-27 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings howto.
- + commit a2eedef630891397f8eccb5bb426a0728588bf41
- * Fixed some minor PEP8 compliance issues in the key creation examples.
-
- example: key creation.
- + commit f9159b1d75d3209b1c22bbb0ed4472800b60a522
- * Script to generate a new key with encryption subkey taking input
- from interactive prompts.
- * Will also take a passphrase via pinentry and uses passphrase caching
- of five minutes when used in conjunction with the temp homedir
- script.
-
- script: temp homedir config.
- + commit 1b5da37a47ceef41545e0b2474738613f36be949
- * added passphrase caching of 5 minutes.
-
-2018-03-25 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings howto.
- + commit 5b32efbaf37920b2e99d4bb87cb383b2809b1688
- * Testing the addition of a HTML header set in org-mode in order to
- had RSS update links for files.
- * This should work with any [X]HTML export from current versions of
- Org-Mode, but if it also works on website generated pages then it'll
- tick off one of the wishlist itmes.
-
- script: temp homedir.
- + commit 40a9dea5d56506400b67b0c11f6e55a1629dc6fe
- * Fixed whitespace.
-
- doc: python bindings howto.
- + commit 3b724aae423f2de01812165d54df2a7b524c82f6
- * Added a reference to new script which will setup a temporary homedir
- for a user.
-
- script: temporary homedir creation.
- + commit dde1aae312958776fab475d6c0cdfa19cc255863
- * Script to create a temporary gnupg homedir in the user's directory
- for testing or scripting purposes.
- * Creates a hidden directory on POSIX systems with the correct
- permissions (700).
- * Creates a gpg.conf in that directory containing the same
- configuration options as used in the "Danger Mouse" example in the
- HOWTO with the correct permissions (600).
-
- doc: python bindings howto.
- + commit 22247f658ce2f8e527c26746358cfc2643c4832f
- * Fixed the plaintext, result and verify_result references in the
- decryption section.
-
-2018-03-23 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings howto.
- + commit e6180f2b36cc8a6c6154e5f3d702324af573132a
- * Fixed a minor spelling error and a minor grammatical error.
-
-2018-03-23 Werner Koch <wk@gnupg.org>
-
- core: Need to increase an array in the gpg engine.
- + commit 4763974ef6932c503e35c3d14fe47a66a5323f48
- * src/engine-gpg.c (build_argv): Allcate one slot more for ARGV.
-
- json: Use a request origin of "browser".
- + commit e5abf4827aead50437bbdff8cfdd5e9fdc6ed72d
- * src/gpgme-json.c (_create_new_context): Set flag.
-
- core: New gpgme_set_ctx_flag "request-origin".
- + commit b9000bc293164ff62efa7e91e5cf6d5fc19d482f
- * src/context.h (gpgme_context): Add 'request_origin'.
- * src/gpgme.c (gpgme_release): Free that field.
- (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Add "request-origin".
- * src/engine-backend.h (engine_ops): Add 'set_engine_ops' func ptr and
- adjust all users.
- * src/engine.c (_gpgme_engine_set_engine_flags): New.
- * src/op-support.c (_gpgme_op_reset): Call that func.
- * src/engine-gpg.c (struct engine_gpg): Add 'request_origin'.
- (gpg_set_engine_flags): New.
- (_gpgme_engine_ops_gpg): Hook it.
- (build_argv): Use command line option --request-origin.
- * src/engine-gpgsm.c (struct engine_gpgsm): Add 'request_origin'.
- (gpgsm_set_engine_flags): New.
- (_gpgme_engine_ops_gpgsm): Hook it.
- (start): Send OPTION "request-origin".
- * src/engine-assuan.c (struct engine_llass): Add 'request_origin'.
- (gpgsm_set_engine_flags): New.
- (_gpgme_engine_ops_assuan): Hook it.
- (start): Send OPTION "pretend-request-origin".
-
- build: Allow building with released libgpg-error.
- + commit eee68c1b13fbe21c123f469712817e0c81f16383
- * src/gpgme-json.c (add_base64_to_object): Return an error if building
- with an older libgpg-error.
-
- json: Finish op:encrypt.
- + commit d83482a1d768fc5afd3aa4836f2fefe5c549d02e
- * src/gpgme-json.c (add_base64_to_object): New.
- (data_from_base64_string): New.
- (op_encrypt): Employ them.
- (process_request): Print unformated json.
-
- json: Add a new function to cJSON.
- + commit 6525d78d0a1d303c449762082942e71d3002b9ca
- * src/cJSON.c (cJSON_CreateStringConvey): New.
-
-2018-03-22 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings howto.
- + commit 65ed4ac82598734551b87fc89deab3cee010bd37
- * Fixed table.
-
-2018-03-21 Ben McGinnes <ben@adversary.org>
-
- doc and examples: python bindings HOWTO.
- + commit 5722148bacab5862b40a027861d64683a0f214ea
- * Added GPGME Python bindings HOWTO in Australian/British English.
- ** en-US "translation" still to be done.
- * Added several example scripts comprised of the "Basic Functions"
- section of the HOWTO (plus the work-around at the end).
- ** As these scripts are very basic examples they are released under
- both the GPLv2+ and the LGPLv2.1+ (just like GPGME itself).
-
- examples: multi-key selection operations.
- + commit 05e59933056ee8ef8ba7579351a58ed25dd7f754
- * Temporarily removing multi-key selection based examples.
- * There are a few issues with getting the key selections to play
- nicely with gpg.Context().keylist object types.
- * Will troubleshoot them separately and restore them when that's
- worked out, but I don't want these more complicated examples to
- delay merging the HOWTO with master.
-
- example: group encryption.
- + commit 61a988036bd3f0d43f7d55bfa43f5f05bec978c4
- * Troubleshooting.
-
- examples: encryption.
- + commit 7ddff71908a85111c8e0da41312197b3b1a77da6
- * Fixed two incorrect Context() objects.
-
- example: key selection.
- + commit c6a0395f0a3a57071f0c943f7815f58a02f9d2f3
- * Removed extraneous blank line.
-
- example: key selection.
- + commit 0a0d57fd41380cd797d29e11cec8a77c7404e960
- * Similar to group-key-selection.py, but does not use an existing
- group from gpg.conf; instead takes multiple key IDs, fingerprints or
- patterns on the command line and adds them to a keylist object.
-
- example: sign and encrypt to group.
- + commit 0ccc57c9512246d82d46e7732bfb0f95c18ca9d3
- * Begins to string together some of the simpler examples to do more
- useful things.
- * Signs and encrypts a file while encrypting to every key in a group
- specified in the gpg.conf file.
-
-2018-03-21 Werner Koch <wk@gnupg.org>
-
- json: Use gpgrt_argparse instead of argsparse.c.
- + commit e14f1f687ff618716ed17e309a0475df95e1c0aa
- * src/gpgme-json.c: Remove header argparse.h. Define
- GPGRT_ENABLE_ARGPARSE_MACROS.
- (interactive_repl): Replace strusage by gpgrt_strusage.
- (my_strusage): Add SPDX level.
- (main): Switch to gpgrt_argparse stuff but keep very limited
- functionality when building with an older libgpg-error.
-
-2018-03-21 Ben McGinnes <ben@adversary.org>
-
- example: group key selection.
- + commit 8b401bfc76eac762553f76faab53c2f4cd117a8d
- * Example of preparing a keylist object using an existing group line
- from the gpg.conf file.
-
- example groups work around.
- + commit 6c6af9a7b0ae4e7182d669bec282c6edaaa7eaa1
- * Updated usage so it only references importing the final list of
- lists produced. Trying to use some of the mid-points can have
- unpredictable results (this is part of the problem with work
- arounds).
-
- example: groups.
- + commit a4e3f827652c59d850b4e5506a92c1ecd190c1bb
- * Added a docstring.
-
- example: verify signatures.
- + commit ad6cb4f9b8b97a2bc501c17fc542a84b725dedea
- * Added example for verifying detached signatures against the files
- they're the signatures for.
-
- example: verify signed file.
- + commit ae2767eb27b6a76284ee4403e575869afe2e80a8
- * Added example to verify normal and clearsigned files.
-
- doc: python bindings howto.
- + commit e57388a69f61d14e3df3c842d227fb450c96c807
- * Fixed minor error in one of the verification examples.
-
- example: detach sign file.
- + commit ac6a552c37147a000de74f49d1bff34dad52252e
- * Added example to make detached signatures of a file with key selection.
-
- example: encrypt-sign-file.py.
- + commit af6cbba18ba5e2bbecce5f8268c146282cd12367
- * Adjusted the doc string.
-
- examples: doc strings.
- + commit 6fa2a344282e369e6aca8155bc77dd2c12a29414
- * Fixed minor errors in two doc strings.
-
- example: clear signing.
- + commit 1fdd1f306d45f6aeee91c7f016f7c37286ee3b3b
- * Added example to clear sign a file with signing key selection.
-
- doc: python bindings howto.
- + commit 1d2746433c9632fc0c7bc10b59280fca15895545
- * deconstructed and fixed all three signing methods.
-
- example: sign file.
- + commit 0390ede18696520be9cc1a42f628e23159b7c2eb
- * Similar to encrypt file except for signing a file in normal mode.
- * Noticed additional changes to be made to the howto to match this,
- but they will have to wait due to a power outage (currently running
- on battery and a mobile connection, but that won't last).
-
-2018-03-20 Werner Koch <wk@gnupg.org>
-
- json: Implement op:encrypt.
- + commit 6073789a6d3514263404c93fa795a398bfd93d91
-
-
- core: Do not clobber R_KEY in gpgme_get_key on error.
- + commit 343d3e2232a22d0999e1693f0f95e5e290005829
- * src/keylist.c (gpgme_get_key): Assign a value to the return
- parameter only on success.
-
- core: Fix ABI regression in recent commit.
- + commit 9e1e6554834d0e803dd0889deaef4f11047c7e47
- * src/gpgme.h.in (_gpgme_op_import_result): Move new field
- 'skipped_v3_keys' to the end.
-
-2018-03-20 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings howto.
- + commit 52e262991f1fdf7da93882c3b22c05537376cf49
- * Fixed typos in examples.
-
- example: keycount.
- + commit 96d0395bccbbff91f73c06cb7bd6c131f04b8a9a
- * Fixed missing parenthesis.
-
- example: decrypt file.
- + commit 51258975d763c9471859d635e6080c2ec02e8647
- * Decrypts a file taking file names as command line parameters.
-
- example: groups work-around.
- + commit 29e918171f352c71a90a16c04d4a3dcafa5db682
- * Added groups selection work around code.
- * Intended for use as a module to be imported by other scripts,
- usually with "from groups import group_lists" or "from groups import
- group_lines" or similar.
-
-2018-03-19 Ben McGinnes <ben@adversary.org>
-
- example: encrypt file.
- + commit 7221bb67642eb01a07957d66d0cbcd4ef8aadbf8
- * Nested encryption in try/except statement in case recipient key is
- untrusted or invalid.
-
- example: sign and encrypt file.
- + commit f3fe47e8fd2e7bc748016befcae494421223368c
- * Example to sign and encrypt a file.
- * Similar to encrypt-file.py except all keys are considered trusted
- and signs with the default key.
- * Also encrypts to the default key.
-
- example: encrypt file.
- + commit f0790f224d7af9521efe96e69a8f719fb89a5af2
- * Fixed typo in second encryption call.
-
- example: encrypt file.
- + commit 7ab42e79ade89f28507ea42d51148a40b4bfc736
- * Example to encrypt a file to a single key.
- * Takes key ID and/or fpr as a CLI parameter.
- * Takes path and filename as a CLI parameter.
- * Encrypts to specified key only, no signing and writes the output in
- both ASCII armoured and GPG binary formats with output filenames
- based on input filename.
-
- example: python bindings key count.
- + commit cfbdcb7fb3fa438cafba82e4fb8f327df596f98e
- * Added script wo count the number of keys in both the public and
- secret key stores.
-
- doc: python bindings examples.
- + commit b30ebf89725641018b3b08f77876530f9b983fa2
- * Explicitly stated that all this code is released under the GPLv2+
- and the LGPLv2.1+.
-
- doc: python bindings example README.
- + commit 8f7672ad1b267f122f647bb5f984734d0ff66a5c
- * Added the same license as used with the HOWTO.
- * Since these examples are so basic, they'll be dual licensed the same
- as GPGME itself (otherwise it would slip too dangerously against the
- need for permissive licensing of crypto libraries).
-
- docs: python bindings examples.
- + commit 6950a63e63d60685ddb6f4cbff7b826b8acb5b13
- * Added reference to location where all the examples included in the
- HOWTO will be available as executable scripts.
- * Included a short README file in that location.
-
- example: python bindings encryption.
- + commit 3e0f68fdff1998dae9cb6f8510a3e945a268d1f6
- * Since we don't want to encourage accessing the low level functions
- (e.g. op_encrypt), but since this example can still be useful to
- understand, renaming it and will add new encryption examples to
- match the instructions in the HOWTO.
-
- doc: python bindings howto.
- + commit d5f6dec048d3d4d94f1fcdb3f4249cf6e71c4b92
- * Slight python-gnupg clarification. See also this thread:
- https://lists.gnupg.org/pipermail/gnupg-devel/2018-March/033528.html
-
- doc: python bindings howto.
- + commit 0fb8a5d45c1c77a5928d6e356271da055aa55994
- * Adjusted the python-gnupg so the comments regarding insecure
- invocation of commands via subprocess (shell=True) were a major
- historical issue and not a a current issue.
- * Not including Vinay Sajip's requested change to say it is now secure
- since no audit of the current code base has been performed and my
- last major inspection of that code was around the time I first
- ported PyME to Python 3 in 2015.
-
- doc: python bindings todo list.
- + commit bf67cf433fe82924ed40e79785e95403c07cc068
- * Checked off several points of howto coverage as completed.
- * Reorganised to move S/MIME coverage to its own separate group of tasks.
- * Noted only revocation remains for howto completion.
-
- doc: python bindings howto.
- + commit 1779d7b9d6769b2e47f1e90260290e25c8c3aa02
- * deconstructing multi-recipient encryption.
-
- doc: python bindings howto.
- + commit 64c5886132aceefc9d9600a3a6dbbbf404b95b81
- * Replaced the single encryption methods with one main way (i.e. cut
- the low level stuff involving SEEK_SET instructions).
-
-2018-03-18 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings howto.
- + commit 4811ff7b6c8ef97c7d4858ce235e9bf8227f4917
- * moved single encrytion examples up to the first ones, pending merge
- and major cut.
- * This is basically just to make future checks of revisions a little easier.
-
- doc: python bindings howto.
- + commit 82c5af225f2bdf3acc6fc652a96ee61c9b057395
- * Stripped decryption example to the bare bones as suggested by Justus.
-
-2018-03-16 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings howto.
- + commit b549f69d0520bb74957b95cec9ea918dba2374f6
- * Made the changes suggested by Jakub Wilk on gnupg-devel.
- * Still need to make the far more comprehensive changes suggested by Justus.
-
-2018-03-16 Werner Koch <wk@gnupg.org>
-
- json: Add framework for the gpgme-json tool.
- + commit d2b31d8c106423bd0eaa5fffaa39b0983c9ae525
- * src/gpgme-json.c: New.
- * src/Makefile.am (bin_PROGRAMS): Add gpgme-json.
- (gpgme_json_SOURCES, gpgme_json_LDADD): New.
-
- core: Adjust cJSON code for use in GPGME.
- + commit 81c90d0cd0f959fd5e01baed9b4af0ec35ecb85c
- * src/cJSON.c: Remove util.h. Use gpgrt alloc functions.
- (cJSON_Delete): Do not clobber ERRNO.
- (cJSON_AddItemToObject): Return OBJECT or NULL.
- (cJSON_AddNullToObject): New.
- (cJSON_AddTrueToObject): New.
- (cJSON_AddFalseToObject): New.
- (cJSON_AddBoolToObject): New.
- (cJSON_AddNumberToObject): New.
- (cJSON_AddStringToObject): New.
- * src/cJSON.h (cJSON__h): Replace macro by cJSON_h for C compliance.
- (cJSON_AddNullToObject): Remove macro.
- (cJSON_AddTrueToObject): Remove macro.
- (cJSON_AddFalseToObject): Remove macro.
- (cJSON_AddBoolToObject): Remove macro.
- (cJSON_AddNumberToObject): Remove macro.
- (cJSON_AddStringToObject): Remove macro.
-
-2018-03-15 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings howto.
- + commit 431897a4c48fe1bc9d37f655097aabaf5b685d11
- * Added clarification on why it's not on PyPI.
-
-2018-03-15 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Expose skipped_v3_keys.
- + commit ad95288d3b3efc38998841add4fe658c84701f98
- * lang/cpp/src/importresult.cpp,
- lang/cpp/src/importresult.h (ImportResult::numV3KeysSkipped): New.
-
- core: Parse skipped_v3_keys.
- + commit a630a1e3e74c926163864b013cb164b4cd1866fc
- * src/gpgme.h.in (gpgme_import_result_t): Extend with skipped_v3_keys.
- * src/import.c (gpgme_op_import_result): Extend debug with new field.
- (parse_import_res): Parse skipped_v3_keys.
- * tests/gpg/t-support.h, tests/run-support.h (print_import_result):
- Print skipped_v3_keys.
-
-2018-03-15 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings howto.
- + commit 22e2445beee46ed1e527a98e635153c7cf03786f
- * fixed custom_id for decryption so the XHTML validates.
-
- doc: python bindings howto.
- + commit 94a95ac12364989db7f4be333107f3c023551857
- * Promoted final encryption example so that it will appear as heading
- 6.1.3 when exported to HTML or PDF.
-
- doc: python bindings howto.
- + commit 3d0c7a2202c8e9bd4f284fd00069d34b8d3d3d4c
- * Fixed a minor typographic error.
- * Bumped version number in preparation for merge with master.
- * While there are probably a few more things worthy of being added
- (mainly how to revoke things), this document is essentially ready
- for publication now.
-
- doc: python bindings howto.
- + commit 961aea212ef48914ecbfa169addf951b0854b0b4
- * Added key signing.
-
- doc: python bindings howto.
- + commit 7ac65b10837740caf68cdade791b8c5ce4eb1b03
- * Added a new user ID for Danger Mouse.
- * Removed the empty entry for key preferences since that is handled
- through gpg.conf and/or editing the key directly.
-
- doc: python bindings howto.
- + commit 9e3e4a835c64f5d06de821b1fd648af37827ff26
- * Spell checking and fixing the few errors.
-
- doc: python bindings howto.
- + commit b02d9d0a7b96b186eb3063d94bde369339181461
- * Added an encryption subkey to Danger Mouse's primary key.
-
- doc: python bindings howto.
- + commit 5432e5f9d1dfc02812d0b181f8d88cdf4a2bfbfb
- * generated a new primary key for Danger Mouse in an alternative homedir.
-
- doc: python bindings howto.
- + commit 5d1dd2abe5cf787875d12afe46c78c75385d7b31
- * Added sections for key generation and key editing.
-
- doc: python bindings howto.
- + commit 1d05e6aa4ea467c8c5926b827cfcfba357d03312
- * Added c.get_key instructions and examples.
-
- doc: python bindings howto.
- + commit b35aaef7a3b793b8f6f5b42596c0a6a51e87f78c
- * Added text for verifying signatures.
-
-2018-03-14 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings howto.
- + commit 6bc12a0eeb20409770cb8b923d08c18c2b730cb8
- * Added 4 signature verification methods and partial text for them.
-
- doc: python bindings howto.
- + commit e5c85fba25de1187949697e2dae0e89345b71e89
- * Added description for detached signatures.
-
- doc: python bindings howto.
- + commit ada059b07178147821b1598c935aa70ae45e3e6c
- * Fixed multiple sample code examples of writing output to a file.
- * Added the description of detached signatures.
-
-2018-03-14 Werner Koch <wk@gnupg.org>
-
- core: Import cJSON code from the payproc project.
- + commit 8eb08b318913644d918002f3195f7ec0e75ae239
- * src/cJSON.c: New.
- * src/cJSON.h: New.
- * src/cJSON.readme: New.
-
-2018-03-14 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings todo.
- + commit ef27f3781a37e264d0eb7d1745eb2c804ec062c4
- * minor phrasing fix.
-
- doc: python bindings howto.
- + commit 423fdcd4653cb01f07f2b0e72cfcf49554930f70
- * Added recommended method of single encryption with description.
-
-2018-03-13 Ben McGinnes <ben@adversary.org>
-
- doc: python binding howto.
- + commit a71205dc3b58970adf591b4e4553824a33f353db
- * Clarified which English dialects this is written in.
- * Translating to American can happen *after* it's done.
- ** The Yank version would probably want to change some of the examples
- anyway.
- * Began the description for normal/default signing.
-
- doc: python bindings howto.
- + commit a10dcb4f138eb5a21881cdbc4806c25129d4ae4e
- * Added a section on key selection.
- * Included recommendation for using fingerprint when selecting one
- specific key.
- * Also included the most ironically amusing example of multiple key
- selection in a GPG guide. Hey, it's public data ... (heh).
-
- doc: python bindings howto.
- + commit 952b6042f78017c476452088261af8d352cfa729
- * Added explanation of the ascendance of Python 3 over Python 2 in the
- guide to the intro.
- * Expanded key selection description so people know what not to
- include regarding key IDs with this key selection method.
-
- doc: python bindings howto.
- + commit c92da2c7eb148ce9fb06495a8470dd9caf662f9a
- * Added key selection for specifying signing key or keys.
-
- doc: python bindings howto.
- + commit e489ddd08af29fdad8db8aa0aec0c314daa3678c
- * During the course of working out the updated signature methods,
- determined that key selection (including counting) will beed to be
- presented before the basic functions.
- * Moved "working with keys" up.
-
- doc: python bindings howto.
- + commit f29bda8d7146b4bc0bf73d6e613131545ff86b73
- * Signatures have changed as a result of the recent update from Justus.
- * Sample code updated.
- * Text to follow later.
-
- doc: python bindings howto.
- + commit c27a7a3f994dad0eccee890185582f4350fbf233
- * Added text description for the decryption example.
-
-2018-03-12 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings howto.
- + commit f81adeba992a9fd3b5a199e9a2e242a0f53cf639
- * Added a miscellaneous work-arounds section at the end.
- * Included code in said miscellaneous section for accessing the groups
- specified in a gpg.conf file.
- * It's a bit ugly since it does require subprocess (but not call,
- Popen or shell access and only accesses one command).
-
- doc: python bindings howto.
- + commit 36dfbdffea60c529a6d1e1ff3e507be016b6a0f6
- * Fixed a spelling error in the key counting text.
-
- doc: python bindings howto.
- + commit 484e9a6229ac9c80c6be4df638bce711f08a74c6
- * updated multi-encryption final example to be complete.
- * second example shows most likely method of reading plaintext.
- * updated example filenames to stick with running gag
- (i.e. secret_plans.txt).
-
- doc: python bindings howto.
- + commit a8f48b6f577d562c25fd0191c0cc2cc8e96078c1
- * error corrections.
- * multiple typesetting fixes only required due to certain archaic
- eccentricities of LaTeX.
- * a couple of minor python PEP8 compliance corrections.
-
- doc: python bindings howto.
- + commit 83b1336ceebb86e13a55bbf220df2d750f6b3ec6
- * Fixed an error in the encryption try/except statement.
-
- doc: python bindings howto.
- + commit 0e1300ce777dd0c87f31ac8bc49846b9df242df9
- * Added a more complicated encryption example with a few variations on
- the encryption method to account for untrusted recipient keys,
- signing or not signing, including or excluding default keys and so
- on.
-
- doc: python bindings howto.
- + commit 7ebc5a357057d01b7ef965521ab68b7cb7e20a8f
- * Switched from links to some external docs to using footnotes where
- necessary.
- * Ideally the howto should be as stand alone as possible.
- * Also it makes it difficult to convert to another format for
- proof-reading if there are links that the conversion can't find.
-
-2018-03-09 Ben McGinnes <ben@adversary.org>
-
- doc: python bindings HOWTO.
- + commit 172baaf4d3e4ed03a4d3437be9efa3dfe6a847bc
- * Added instructions and code to count the number of public and secret
- keys available since it was quick and easy.
-
- doc: python TODO list.
- + commit f2c1e8d8d54068a7f072efa178fc30460821eff3
- * Slightly tweaked one heading to make it clear it wasn't a duplicate.
-
- doc: python bindings howto.
- + commit 01686463948ac6096dd8579a110c478d3a1f9a83
- * Wrote the text description explaining each step in the most basic
- encryption operation.
- * Will need to include additional examples for encrypting to multiple
- recipients using Context().encrypt instead of Context().op_encrypt.
-
- doc: python bindings TODO list.
- + commit 93252df9dc4c9932467814745655350a8cab900e
- * Updated to reflect the most recent work on the HOWTO for the Python
- bindings.
-
- doc: python bindings howto.
- + commit ab81c2d868bba79fdb8f8d7f576b6bd88c6bdf3c
- * Added example for verifying both detached and "in-line" signatures.
-
-2018-03-08 Ben McGinnes <ben@adversary.org>
-
- docs: TODO.
- + commit e846c3daeeb4e7092169cdb7bf4f55e0b105aac3
- * Removed WS.
-
- doc: TODO list update.
- + commit 6849924ffbd48ba3f9d32b4a59a02e1d2083fc19
- * Closed off a few ancient items and added recommendation to others to
- use the dev.gnupg.org site for real bugs/features updates.
- * See also this statement on the gnupg-devel list regarding this file:
- https://lists.gnupg.org/pipermail/gnupg-devel/2018-March/033499.html
-
- docs: python bindings howto update.
- + commit fa4927146b68dd045903285f1c45fb64deb2e361
- * Added all four signing code examples that are most likely to be
- used: armoured, clearsigned, detached armoured and detached binary.
- * May remove some examples and just discuss the differences, but it
- depends on the way the text is filled out.
-
- doc: python bindings howto update.
- + commit c767a4a3590bd8a224d0268746df443942cb28c2
- * Added example of decryption.
- * included some quick notes for myself regarding aspects to explain
- when I flesh out the explanatory text.
-
- doc: Basic operation of the python bindings.
- + commit 75463d589522cba427f9e5a3a408192ffad8bb21
- * Added sample code for encrypting some text to a single key.
- * Basically I'm just lifting existing production code and changing the
- key IDs from mine to "0x12345678DEADBEEF" for these first few
- examples.
- * I'll fill in the text description after.
- * Note: due to my regional location, I might split some tasks into
- more commits in order to be sure no work gets lost in case of
- emergency (or to put it another way: I know Telstra too well to
- trust them).
-
- doc-howto: fundamental aspects of GPGME vs Python.
- + commit a98f2c556fe6e33a9cd38279e64e4b09f05cc675
- * Added a section for those pythonistas who are too used to web
- programming. Stressed that it's not simply not RESTful, it's not
- even REST-like.
- * Letting me move on to drawing a very loose parallel between a
- session and a context. The differences should become obvious in the
- subsequent sections.
-
- doc: Added multiple TODOs for inclusion in the HOWTO.
- + commit e8adab68f8c0cd865ff220f06dfaff7fe183e8a1
- * Some instructions to include are fairly obvious; as with encryption,
- decryption and signature verification.
- * Some are a little less obvious.
- * This includes the requests received to specifically include subkey
- management (adding and revoking subkeys on a primary key that's
- being retained.
- * Added the UID equivalents to the list, as well as key selection
- matters (and may or may not include something for handling group
- lines since that involves wrapping a CLI binary).
- * Key control documentation and examples requested by Mike Ingle of
- confidantmail.org.
-
-2018-03-07 Ben McGinnes <ben@adversary.org>
-
- GPL compatible license for documentation.
- + commit 47d401d159852ea08e90af21d91bb4b93be9000d
- * Added the same, slightly modified GPL based license that is used in
- other parts of GnuPG.
-
- HOWTO update.
- + commit 8a76deb11efd7dadfde6e8e7e69fbcd92577982f
- * removed one bit of whitespace.
- * Marked up references to gpgme.h.
- * Fixed one spelling error.
- * Removed py2.6 from python search order since even if it is
- supported, it shouldn't be encouraged.
-
- GPGME Python bindings HOWTO.
- + commit 5215d58ae2521d81c3db0b45dfbdce01a679acab
- * Started work on the GPGME Python bindings HOWTO.
- * 1,050 words to begin with at approx. 7.5KB.
- * Got as far as installation.
- * Includes instruction not to use PyPI for this.
-
- TODO - HOWTO.
- + commit 8f2c0f4534ea2a07f071f360a63e877f60dc52f2
- * Added suv-entry for the new HOWTO being started and, since it has
- been started, checked it off.
-
- TODO.
- + commit d4778bb23d0817ee6fbcbe4f0ff0ff0429bf3669
- * Slightly expanded the list.
-
- copyright fix.
- + commit 3a746d5d46ffd7d332dc24fd6a4d24efc5fc1230
- * Made the copyright line a new top level org heading in order to
- prevent it getting folded into other tasks which will eventually get
- closed (so it doesn't go missing if those items are subsequently
- archived).
-
- Nuxed doubles.
- + commit 13d2164cd9f313b409b2210d9e63465681cccc99
- * Just because there's a lot of documentation which needs to be added,
- doesn't mean it needs to be listed twice. Merged the two lists.
-
- Removed double.
- + commit 1516c56ee4da28eb720bbacb026892393d10b24a
- * default.profraw didn't need to be listed twice.
-
-2018-03-04 Ben McGinnes <ben@adversary.org>
-
- IDENTIFY.
- + commit f61d4f585f27c13fabf7a23ad295bdc8bea7c838
- * Fixed sp error in docstring.
-
-2018-03-03 Ben McGinnes <ben@adversary.org>
-
- Missed a couple.
- + commit 75f5e6e6672a1bbd16b7680313c0f96796c219bd
- * WS indicated 2 custom-ids were missed, now they're set.
-
- TODO DONE.
- + commit b438e5e44c2eaf22549db94141a3ec8731556674
- * Marked off a TODO for this clean-up.
-
- TODO.
- + commit 1d910672539686e2e17fd8fa1a894cee92863417
- * WS removal
-
- TODO updates.
- + commit 12a87af1df906744a14079ff7ff88e7d60679695
- * Updated TODO with tags to make everything appear properly when
- exported to HTML or PDF.
- * Added a couple more items, mainly to do with docs or future bindings.
- * Marked some, but not all as actual TODO items.
- * Some items should probably be removed, but haven't been yet.
- * Some have probably been completed already.
-
-2018-02-27 Ben McGinnes <ben@adversary.org>
-
- New stuff.
- + commit 85bdca3b2b095afb672f19abbffccd2bcb8bbd0a
- * Added the idea for alternative Emacs bindings (to extend the
- existing ones, not replace them outright).
- * Added a reference to the API Squared part of the project.
-
- TODO the TODO.
- + commit 8047e1374fe6e69e8c4502e58e6522ea86e4bef4
- * Added an actual TODO to fix the TODOs.
- * Pretty sure I know who will be completing this one ... ;)
-
- TODO ... the TODO.
- + commit 73c51bc9858de2aab25844e7e283a6334038ccc8
- * If we're going to use Org, let's actually use Org.
- * Added the properties tags for each point.
- * Some of thems still need custom ID tags assigned properly.
- * Probably ought to make them actual TODOs at some point, but that can
- wait until they can be marked as DONE anyway.
- * Will add a TODO for some of this stuff ... oh, the irony.
-
-2018-02-27 NIIBE Yutaka <gniibe@fsij.org>
-
- core: Support non-thread-safe getenv.
- + commit 59fe3f26c1ca0fba16f76738cd05aaf80fb735ef
- * src/get-env.c (_gpgme_getenv): Use gpgrt_lock_lock
- and gpgrt_lock_unlock to protect call of getnev.
-
-2018-02-26 Ben McGinnes <ben@adversary.org>
-
- WS removal.
- + commit c58f61e92226c4a03f216f5d07bdc5479ce8a2d9
- * Whitespace removal.
-
- LaTeX headers.
- + commit 6f2e2e0f150d5c6d53de5bc48af137f7864d5fd9
- * Set LaTeX headers to enable ligatures and a 12pt font by default.
- * Paper size left for regional defaults.
- * Using XeLaTeX for easier font control.
- * Using default LaTeX font of Latin Main, but that's easy enough to change.
-
-2018-02-19 Ben McGinnes <ben@adversary.org>
-
- Renaming ad infinitum ...
- + commit 272a8e778a959cb24298f488e77fce9bffd23b7a
- * Dropped the .txt from the end of the file ...
-
- Text conversion.
- + commit c82b17c6ce490738efb07186532e752e6f70ea07
- * Exported from Org Mode to UTF-8 text.
- * Removed my name from just under the title.
-
- Title fix.
- + commit ea481d4bb9e6197fbc195187d1362b844e2cba2e
- * Fixed title.
-
- Conflict with Phabricator files.
- + commit 1ae3ead2cd854258954e784bf51f03822321aefe
- * The developers of Phabricator, the web front-end on dev.gnupg.org
- have not implemented renderers for Markdown, Org-Mode or any other
- common markdown like language.
- * They also refuse to do so.
- * Instead they re-invented the wheel and implemented their own version
- of Markdown-like thing which is incompatible with everything else.
- It is called Remarkup.
- * The developers of Phabricator and Remarkup have refused to provide
- conversion tools to move files to/from any format to/from Remarkup.
- * They expect everyone to learn their new favourite pet project.
- * Remarkup may or may not display Org Mode files, but if so then it is
- likely to only want to do so as plain text.
- * There is an unaffiliated and unofficial project to convert Github
- Markdown to Remarkup via Pandoc. This might be adapted for our use,
- but requires testing.
- * Until then exporting from Org Mode to UTF-8 text is likely the least
- worst plan.
- * Which means renaming this file to README.org first.
-
- Schizophrenic file types.
- + commit fe4f3edd70949329cb992dd963de2de3c86dcd81
- * Removed Markdown style heading underlining.
- * Removed in-line file type declaration (which is not correctly parsed
- by the web interface on dev.gnupg.org).
-
-2018-02-16 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add shorthand for key locate.
- + commit 7f9d5c6cd204bfd84ea477b284df795b1dadb1af
- * lang/cpp/src/key.cpp (Key::locate): New static helper.
- * lang/cpp/src/key.h: Update accordingly.
-
-2018-02-16 Ben McGinnes <ben@adversary.org>
-
- History path.
- + commit fb16eaa685fe488f12f4df9b59d1f3689c813034
- * Fixed a typo in a filepath reference.
- * Moved conjecture regarding the first version of Python used to a
- footnote.
-
-2018-02-15 Ben McGinnes <ben@adversary.org>
-
- LaTeX margins.
- + commit 6f15d821404742ac2683f54ca4102ee4aaedacf2
- * Added LaTeX header for 1 inch margins in the quite likely event that
- all PDF output ultimately uses LaTeX.
-
- TODO Documentation.
- + commit 235d899a5fc24cdf9c856adbc021a69c43985c99
- * Checked off the decision to stick with Org Mode.
-
- TODO.
- + commit 40da5022922172ed898172956a8ccf5622e5638d
- * Beginning to turn the first part of this into something kind of like
- an actual TODO list as Org Mode uses it (maybe).
-
-2018-02-15 NIIBE Yutaka <gniibe@fsij.org>
-
- tests: Fix previous commit.
- + commit 3224d7f0ea83a3c2baaa9f97846c4a5b392d2c59
-
-
- tests: More Makefile portability.
- + commit ba6e610baa138ba9b43be303df2c5981dd04de5a
- * tests/gpg/Makefile.am: Invoke GPG with TESTS_ENVIRONMENT.
-
- tests: Makefile portability.
- + commit b5ec21b9baf017b4cee88c9ef3cc1a638547cd20
- * tests/gpg/Makefile.am: Don't use "export" directive.
- * tests/gpgsm/Makefile.am: Ditto.
- * lang/qt/tests/Makefile.am: Ditto.
- * lang/python/tests/Makefile.am: Ditto.
-
- build: More Makefile fix.
- + commit c9a351f5af289c8f6919854c40f235c781b76ec7
- * lang/python/tests/Makefile.am: Avoid target with '/'.
-
-2018-02-14 Ben McGinnes <ben@adversary.org>
-
- Short History.
- + commit 3c3b149996036e7ff4cc4c77ef2d97062d880409
- * Fixed or updated the most fundamental errors.
- * Also included some details on which modules are available on PyPI,
- as well as what happened to the PyME commit log.
-
- Subsectioned history.
- + commit 7c662d22a8f7d2e6ad6532014f2ecc1769de16fb
- * Split the main parts down into subsections.
- * Still need to cull the incorrect stuff towards the end and add more
- recent changes.
-
- History.
- + commit a1bc710c5fb7a7d2253434c1443e33e019020a55
- * Reshaping the history file to fit Org Mode's structuring for docs.
- * Also said history needs to be a bit more clear (it was kind of
- unfinished).
-
- TODO.
- + commit fccd2ea3871f5d63fb038db0733a34f9c5d550c3
- * Updated TODO.
- * The entirety of the old TODO has been replaced with either more
- relevant tasks or goals for the examples and a more measured
- approach to the docs and why, in this project, Org Mode trumps reST,
- even though it's Python through and through.
-
- TODO.
- + commit 487ed9337e8e07d1c63e53b785cc39e3bd35ff6e
- * Removed reST version of file.
-
- TODO.
- + commit c4fa4216199b16c1f169725c0a1e0a40764b1ebb
- * Converted document from reST to org-mode.
-
- Short History.
- + commit 1d48b04cfb3d1de654f3995578e9434a6b7b2fed
- * Removed reST version.
-
- Short History.
- + commit d86fd7c54c462ef23c70370624e07fcc1bc15121
- * Converted document from reST to org-mode.
-
- House keeping.
- + commit 1b5719cd57d80dcd9577141491a0860912e74cd4
- * Added a bunch of things to .gitignore that might otherwise creep in
- during Python development.
- * This really should be merged ASAP. You'll thank me later ...
-
-2018-02-14 NIIBE Yutaka <gniibe@fsij.org>
-
- build: Fix Makefiles for portability.
- + commit f1d8a7975b0a166f55aef06eb25d50230781b96f
- * tests/gpg/Makefile.am: Don't allow target with '/'.
- * tests/gpgsm/Makefile.am: Ditto.
-
-2018-02-13 Andre Heinecke <aheinecke@intevation.de>
-
- configure: Fix mingw check for getenv.
- + commit 5ec890b9c76db0f23cc396108ff6f1fe658855a8
- * configure.ac: have_thread_safe_getenv=yes with have_w32_system.
-
-2018-02-13 NIIBE Yutaka <gniibe@fsij.org>
-
- configure: MinGW has thread-safe getenv.
- + commit 77ca9cc2db2c6da303b9224a931679a325ebda1e
- * configure.ac: have_thread_safe_getenv=yes with have_w64_system.
-
-2018-02-09 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add SpawnShowWindow flag.
- + commit 7e27a0ff64626026521dc5877b278794cea72e61
- * lang/cpp/src/context.h (SpawnShowWindow): New.
-
- core, w32: Enable spawning GUI applications.
- + commit 201db83a7f1b7759173b6e9f0a844caef4da6cce
- * src/engine-spawn.c (engspawn_start): Translate spawn flag
- to IOSPAWN flag.
- * src/gpgme-w32spawn.c (my_spawn): Handle the new flag.
- * src/gpgme.h.in (GPGME_SPAWN_SHOW_WINDOW): New.
- * src/priv-io.h (IOSPAWN_FLAG_SHOW_WINDOW): New.
-
- core, w32: Fix flags passing to gpgme-w32-spawn.
- + commit f10605ffb5cc9d457c3e432918fdfbfaf3d04185
- * src/w32-io.c (_gpgme_io_spawn): Don't hardcode flags value.
-
- cpp: Add conveniance Data::toString.
- + commit 5a5b0d4996c17bfbc69b90f89fec23732f92813a
- * lang/cpp/src/data.h, lang/cpp/src/data.cpp: Add Data::toString.
-
-2018-01-30 NIIBE Yutaka <gniibe@fsij.org>
-
- Fix for BSD Make.
- + commit 59fcabbdf537b2745ef0c3cae908b21970a5b39b
- * tests/gpg/Makefile.am, tests/gpgsm/Makefile.am: Remove ./.
-
-2018-01-29 NIIBE Yutaka <gniibe@fsij.org>
-
- Fix compile error message.
- + commit bbb5e70e7e8598978b6c61b13ba77705ff86e469
- * src/get-env.c (_gpgme_getenv): Fix error message.
-
- tests: Fix for NetBSD.
- + commit 58130b97f6582455fd355ac58ae3182a28812cfc
- * tests/gpg/pinentry: Use /bin/sh instead of Bash.
-
- core: Implement _gpgme_getenv for NetBSD.
- + commit 37d62e9d0f685c257fdb5f303e60ff01f8a36a2f
- * src/get-env.c [HAVE_GETENV_R] (_gpgme_getenv): New.
-
-2017-12-12 Werner Koch <wk@gnupg.org>
-
- Release 1.10.0.
- + commit 6a42eb5f3809d5eb3767667c190b395d028886e7
-
-
- Require libgpg-error 1.24 and libassuan 2.4.2.
- + commit d4d04d6c0432b032f6ea23c8517fd6a5f623bb67
- * src/util.h (GPG_ERR_FALSE): Remove due to newer libgpg-error.
-
-2017-12-11 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Don't use QDateTime::toSecsSinceEpoch.
- + commit b61d0fbb74f04408dfe8637c719b97217e061a3c
- * lang/qt/src/qgpgmequickjob.cpp (addSubkeyWorker)
- (createWorker): Use toMSecsSinceEpoch instead toSecsSinceEpoch.
-
-2017-12-11 Werner Koch <wk@gnupg.org>
-
- core,w32: Fix popping up of console windows due to gpgconf.
- + commit 0a567a94d94cd93c5d88f5db802925c95f0974d0
- * src/gpgme-w32spawn.c (my_spawn): Create w/o DETACHED_PROCESS.
-
-2017-12-07 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Fix handling of lsig promotion.
- + commit 1458adaea4acdcf7ebbead6668476fce92db5af8
- * src/gpgsignkeyeditinteractor.cpp (SignKeyState): Add second
- CONFIRM state.
- (makeTable): Properly handle local_promote_okay.
- (action): Handle CONFIRM2.
-
- tests: Print userid signatures in run-keylist.
- + commit 5ba1cbdf39efd90c7987bfc2bc030b6504e70076
- * tests/run-keylist.c (main): Print UID signatures if there
- are any.
-
-2017-12-04 Werner Koch <wk@gnupg.org>
-
- core: Also check for a failed selftest in gpgm_data_new.
- + commit 0c1244a2b7e30ab0610ae70166e1b5d0219782c3
- * src/data.c (_gpgme_data_new): Check for failed selftest.
- * tests/run-support.h (make_filename): Print a message on mallooc
- failure.
- (init_gpgme_basic): New.
- * tests/run-identify.c (main): Call init_gpgme_basic becuase we do not
- need to setup a protocol.
- * tests/t-data.c: Define PGM and include run-support.h.
- (make_filename): Remove.
- (main): Call init_gpgme_basic.
-
-2017-12-04 Tobias Mueller <muelli@cryptobitch.de>
-
- python: Default whence argument for Data() to SEEK_SET.
- + commit 3cf9aedc92b6c65d2cb34037e52b9a299637d03b
- * lang/python/gpgme.i: copied signature from gpgme.h and defaulted the
- value to SEEK_SET.
- * lang/python/tests/t-data.py: Added a test for no second argument
-
-2017-12-01 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Add job for quick commands.
- + commit 7d1ac5d61de3c55bf7ff14997b4b111a0f90c177
- * lang/qt/src/qgpgmequickjob.cpp,
- lang/qt/src/qgpgmequickjob.h,
- lang/qt/src/quickjob.h: New.
- * lang/qt/src/Makefile.am,
- lang/qt/src/protocol.h,
- lang/qt/src/protocol_p.h,
- lang/qt/src/job.cpp: Update accordingly.
-
- cpp: Wrap create_key and create_subkey.
- + commit 8e2d6c28a5e923f829b5a26d19d9d897949aa1fe
- * lang/cpp/src/context.cpp,
- lang/cpp/src/context.h (Context::startCreateKey)
- (Context::createKey, Context::createSubkey)
- (Context::startCreateSubkey): New.
-
- Fix uid parsing for ldap keyserver.
- + commit 651b3d8207cc7d85699f89fc4c21cb1243453aa8
- * src/engine-gpg.c (gpg_keylist_preprocess): Check field count
- for uid and add fallback.
-
-2017-11-30 Werner Koch <wk@gnupg.org>
-
- tests: Add missing variable to gpgsm tests Makefile.
- + commit f43016500774ab82f222249202bda6c463aaf63f
- * tests/gpgsm/Makefile.am (GPG_AGENT): Set var. It is used later.
-
-2017-11-21 NIIBE Yutaka <gniibe@fsij.org>
-
- tests: Make portability fix.
- + commit c441fb73130f4c117094d7da4de9fe56f886e65d
- * lang/python/tests/Makefile.am: Distinguish target and path.
- * tests/gpg/Makefile.am: Ditto.
- * tests/gpgsm/Makefile.am: Ditto.
-
-2017-11-14 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Fix IODeviceDataProvider with Process.
- + commit 56b27b21d5f8dd95b9d6415c5e98b821774f3093
- * lang/qt/src/dataprovider.cpp (blocking_read): Keep
- reading if process is not atEnd.
-
-2017-10-12 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- core: use getdents64 syscall on linux instead of getdents.
- + commit 00daac15530eabed5e61d841b2df939c2242667c
- * src/posix-io.c (get_max_fds): use getdents64 instead of getdents.
-
-2017-10-04 Werner Koch <wk@gnupg.org>
-
- core: Allow disabling the use of SYS_getdents for Linux.
- + commit 4632adf403611b50be2b4e852a4607070935d0e5
- * configure.ac (USE_LINUX_GETDENTS): New ac_define. Add option
- --disable-linux-getdents.
- * src/posix-io.c: Make use of USE_LINUX_GETDENTS.
-
-2017-10-04 Colin Watson <cjwatson@debian.org>
-
- core: Restore get_max_fds optimization on Linux.
- + commit b5b996b1a142abb90296f5feadf0b5b19c59f738
- * src/posix-io.c (get_max_fds): Restore Linux optimization, this time
- using open/getdents/close rather than opendir/readdir/closedir.
-
-2017-09-04 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Add test for version info.
- + commit bd5d470cef513b2f459316869b81267cde7a9f13
- * lang/qt/tests/t-various.cpp (TestVarious::testVersion): New.
-
- cpp: Fix version info comparison.
- + commit 58d7bcead3394fa80c2a05d0d1e0fb4d9a1048b0
- * lang/cpp/src/engineinfo.h (EngineInfo::Version::operator<):
- Fix logic.
- * lang/cpp/src/engineinfo.h (EngineInfo::Version::operator>):
- New.
- * NEWS: Mention added API
-
-2017-08-24 Werner Koch <wk@gnupg.org>
-
- core: New context flag "auto-key-retrieve"
- + commit 47f61df0704485b8165c9cf2a27ad57bcd864239
- * src/gpgme.c (gpgme_set_ctx_flag, gpgme_get_ctx_flag): New flag
- "auto-key-retrieve".
- * src/context.h (gpgme_context): New field auto_key_retrieve.
- * src/engine-backend.h (struct engine_ops): Add arg auto_key_retrieve
- to field 'decrypt'.
- * src/engine-gpg.c (gpg_decrypt): Add arg auto_key_retrieve and pass
- option --auto-key-retrieve to gpg. Adjust all callers.
- (gpg_verify): Ditto.
- * src/engine-gpgsm.c (gpgsm_decrypt): Add dummy arg auto_key_retrieve.
- * src/engine-uiserver.c (uiserver_decrypt): Ditto.
- * tests/run-verify.c (main): Add option --auto-key-retrieve.
-
- core: New public enum gpgme_keyorg_t.
- + commit 9bde9144f0c2d0087799511e9b041dc945a4cfa8
- * src/gpgme.h.in (gpgme_keyorg_t): New.
- * src/keylist.c (parse_keyorg): New.
- (keylist_colon_handler): Set key->ORIGIN.
-
-2017-08-24 Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
-
- gpgconf: Add more comments.
- + commit 91e47d71652bd0f83b51089c343c3c4836bdfa8a
- * src/engine-gpgconf.c (gpgconf_config_dir_cb, gpgconf_conf_dir):
- Add comments.
-
-2017-08-23 Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
-
- Fix a couple of bugs pointed out by clang compiler warnings.
- + commit bfb3a01a0c55aa327dcab061fa808672362cb09d
- * src/engine-gpgconf.c (gpgconf_config_dir_cb): Fix cast.
- * src/key.c (_gpgme_key_add_sig): Fix pointer reference.
-
-2017-08-21 Alon Bar-Lev <alon.barlev@gmail.com>
-
- python: Support parallel build in tests.
- + commit 57c12593082e4ad302041269f1c35f2fe7d2fb1a
- * lang/python/tests/Makefile.am: Depend xcheck with all which was lost
- due to the check hack.
-
-2017-08-21 Justus Winter <justus@g10code.com>
-
- python: Improve keylist test.
- + commit 70c8be9efe8de40bec0f0673589f3c9be7136674
- * lang/python/tests/t-keylist.py: Check a keylist matching no keys.
-
-2017-08-16 Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
-
- doc: Add version information.
- + commit b9b08e46934eea9083afb2eaf4bffa23d6c27801
- * doc/gpgme.texi (since): New macro. Use it to add version
- information to those APIs that are mentioned in the NEWS file.
-
- doc: Clarify import keys operation further.
- + commit 0ee7f4f178284dae153a59be710bc994820369e5
- * doc/gpgme.texi (gpgme_op_import_keys): Further clarifications.
-
- gpgconf: Fix some warnings.
- + commit 3244d4daff892d5d3c39e78f4eb0934379beda2c
- * tests/gpg/t-gpgconf.c (main): Fix warnings.
- * src/engine-gpgconf.c (struct gpgconf_config_dir_s): New struct.
- (gpgconf_config_dir_cb, gpgconf_conf_dir) Use it to fix warning.
-
- gpgconf: Fix symbol export.
- + commit 97a1abe72e73f85bbf922fa588d002a226db5459
- * gpgme.def: Fix last change.
- (gpgme_op_conf_save): Replace duplicate from c&p ...
- (gpgme_op_conf_dir): ... with this.
-
-2017-08-15 Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
-
- NEWS: Add missing entry.
- + commit fa3918598de35fef0bf626035d59ea36c53832b9
-
-
- gpgconf: Add access to --list-dirs for non-default engine.
- + commit 9f24e6c9010e171fd11c5cdac797cb8ce2e501dd
- * src/engine-assuan.c (_gpgme_engine_ops_assuan): Add conf_dir.
- * src/engine-g13.c (_gpgme_engine_ops_g13): Likewise.
- * src/engine-gpg.c (_gpgme_engine_ops_gpg): Likewise.
- * src/engine-gpgsm.c (_gpgme_engine_ops_gpgsm): Likewise.
- * src/engine-spawn.c (_gpgme_engine_ops_spawn): Likewise.
- * src/engine-uiserver.c (_gpgme_engine_ops_uiserver): Likewise.
- * src/engine-backend.h (struct engine_ops): Likewise.
- * src/engine-gpgconf.c (gpgconf_config_dir_cb, gpgconf_conf_dir):
- New functions.
- (struct engine_ops): Add gpgconf_conf_dir.
- * src/engine.c (_gpgme_engine_op_conf_dir): New function.
- * src/engine.h (_gpgme_engine_op_conf_dir): New prototype.
- * src/gpgconf.c (gpgme_op_conf_dir): New function.
- * src/gpgme.def (gpgme_op_conf_save): New symbol.
- * src/gpgme.h.in (gpgme_op_conf_dir): New prototype.
- * src/libgpgme.vers (gpgme_op_conf_dir): New symbol.
- * tests/gpg/t-gpgconf.c (main): Test gpgme_op_conf_dir.
-
-2017-08-11 Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
-
- g10: Add new delete operations that allow more flags.
- + commit a0cc6e01a8900b34cf231d8b5335ef3f85d01fdf
- * NEWS: Document new interfaces.
- * doc/gpgme.texi: Document new interfaces.
- * src/gpgme.h.in (GPGME_DELETE_ALLOW_SECRET, GPGME_DELETE_FORCE,
- gpgme_op_delete_ext_start, gpgme_op_delete_ext): New.
- * src/delete.c (delete_start): Change allow_secret argument to flags.
- (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New functions.
- * src/engine-backend.h (delete): Change allow_secret argument to flags.
- * src/engine.c (_gpgme_engine_op_delete): Likewise.
- * src/engine.h (_gpgme_engine_op_delete): Likewise (for prototype).
- * src/engine-gpgsm.c (gpgsm_delete): Likewise.
- * src/engine-gpg.c (gpg_delete): Likewise. Implement GPGME_DELETE_FORCE.
- * src/gpgme.def (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New.
- * src/libgpgme.vers (gpgme_op_delete_ext, gpgme_op_delete_ext_start): New.
-
-2017-08-10 Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
-
- doc: Clarify import keys operation.
- + commit dfb3ca85680534b3885ab04d3fba4752c5a6f998
- * doc/gpgme.texi (gpgme_op_import_start): Fix grammar.
- (gpgme_op_import_keys): Clarify some wording and fix result.
- * src/import.c (gpgme_op_import_keys): Clarify comment.
-
- doc: Add more tofu documentation.
- + commit 274609baceda3378b21f84c3ae6a44806dad2dba
- * doc/gpgme.texi (gpgme_tofu_info_t): Document structure.
- (gpgme_sigsum_t): Document GPGME_SIGSUM_TOFU_CONFLICT.
-
-2017-07-27 Andre Heinecke <aheinecke@intevation.de>
-
- core: Fix status parsing for decrypt + verify.
- + commit d3796e4504a2b4f422de17d78f3acfe8dd199c9c
- * src/decrypt.c (parse_status_error): Don't modify args.
-
-2017-07-26 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Fix Key::isDeVs for subkeys.
- + commit c7be41a5f850addceb2a95444bad2a31cdcd1ce5
- * lang/cpp/src/key.cpp (Key::isDeVs): Check all subkeys.
-
-2017-07-13 Justus Winter <justus@g10code.com>
-
- tests: Fix distcheck.
- + commit 7fde780cc1773c6d3902d4f49a8d4aadbf3223d4
- * tests/start-stop-agent: Remove backup file.
-
- tests: Make agent spawning more robust.
- + commit 9cd2b58dfb2c21cce64520cf4c726859b583d14e
- * tests/gpgsm/Makefile.am (gpgsm.conf): Add agent-program directive.
- * tests/start-stop-agent: Update agent-program directive.
-
-2017-07-12 Werner Koch <wk@gnupg.org>
-
- tests: Fix printf compiler warning for an error case.
- + commit 46d2e48105e0929ec38dd4106004dd60d941df9a
- * tests/gpg/t-keylist.c (main): Cast DIM to int.
-
- core: Return NO_SECKEY error code on decryption.
- + commit ad0c5ab4cd8d3a1b11b37dc137b75a67aa26da37
- * src/decrypt.c (op_data_t): Add flag any_no_seckey.
- (_gpgme_decrypt_status_handler): Consult that flag.
- (_gpgme_decrypt_status_handler): Set that flag.
-
- core: Return CANCELED and BAD_PASSPHRASE error code on decryption.
- + commit d37bc7e025cdc6228da45b2b527e9f3bfef71c71
- * src/decrypt.c (op_data_t): Add field pkdecrypt_failed.
- (_gpgme_decrypt_status_handler): Consult new field.
- (parse_status_error): Handle some error codes.
-
- core: Simplify parsing of STATUS_ERROR in decrypt.c.
- + commit 87703dbb86ac8fd8abd23170f8038ea6e3dbde28
- * src/decrypt.c (_gpgme_decrypt_status_handler): Factor some code out
- to ...
- (parse_status_error): new. Modernize parsing.
-
-2017-07-11 Justus Winter <justus@g10code.com>
-
- python: Improve error handling.
- + commit 1e68f93dc547ae75b921e43db35e3599de92e2cb
- * NEWS: Update.
- * lang/python/src/core.py (Context.__read__): New helper function.
- (Context.encrypt): Attach partial results to exceptions.
- (Context.decrypt): Likewise.
- (Context.sign): Likewise.
- (Context.verify): Likewise.
- * lang/python/src/errors.py (GpgError): Move the core of GPGMEError to
- this class, add a nicer interface for it. This makes the errors
- thrown by this library more uniform, and allows us to track the
- underlying error in synthesized high-level errors.
- (GPGMEError): Simplify.
- (...): Make sure to call the parent classes' constructor in all other
- classes.
-
-2017-07-10 Andre Heinecke <aheinecke@intevation.de>
-
- Add isDeVs to ostream operator.
- + commit fe79eb8de3dc780eafb38a0a0a016748e764ff04
- * lang/cpp/src/decryptionresult.cpp,
- lang/cpp/src/verificationresult.cpp: Extend ostream operator
- to include isDeVs.
-
-2017-06-12 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Fix CMake config library name for GPGME.
- + commit 5c53c702605b8d4458a14e6303cdc13f3b106efa
- * lang/cpp/src/GpgmeppConfig.cmake.in.in: The link library
- is of course also dynamic.
-
-2017-06-01 Justus Winter <justus@g10code.com>
-
- Add flag 'is_de_vs' to decryption results and signatures.
- + commit 05fa2a9c7764b28fdac35eb72631439df948ca0e
- * NEWS: Update.
- * lang/cpp/src/decryptionresult.cpp (DecryptionResult::isDeVs): New
- function.
- * lang/cpp/src/decryptionresult.h (DecryptionResult::isDeVs): New
- prototype.
- * lang/cpp/src/verificationresult.cpp (Signature::isDeVs): New
- function.
- * lang/cpp/src/verificationresult.h (Signature::isDeVs): New
- prototype.
- * lang/python/src/results.py (DecryptResult): Turn field 'is_de_vs'
- into a boolean.
- (Signature): Likewise.
- * src/decrypt.c (_gpgme_decrypt_status_handler): Handle the new
- compliance status line.
- * src/verify.c (_gpgme_verify_status_handler): Likewise.
- * src/gpgme.h.in (gpgme_status_code_t): Add new status codes for the
- new status lines.
- * src/keylist.c (parse_pub_field18): Move function to 'util.h'.
- (keylist_colon_handler): Adapt callsites.
- * src/status-table.c (status_table): Add new status lines.
- * src/util.h (PARSE_COMPLIANCE_FLAGS): New macro. This used to be
- 'parse_pub_field18', but turned into a macro to make it polymorphic.
-
-2017-05-18 Justus Winter <justus@g10code.com>
-
- python: Fix build in certain cases.
- + commit 84a203e60b9935bd8536cd2832fbc55d7f011341
- * lang/python/setup.py.in: Prepend the Python build dir to the list of
- include directories so that it takes precedence over any other include
- directory.
-
-2017-05-10 Justus Winter <justus@g10code.com>
-
- tests: Remove remnants of 'check-local'.
- + commit a9b4c0ad0d1085ff76742e44cf0cf926e89d1f4c
- * tests/gpgsm/Makefile.am (check-local): Drop rule and the dependency
- on it.
-
- python: Fix test environment creation.
- + commit 6b4dd3b929ac23271bfa96edb9dbb142eca0a30f
- * lang/python/tests/Makefile.am (pubring-stamp): Do not depend on the
- configuration files, this can trigger superfluous rebuilds.
-
- tests: Make sure to kill all previously running daemons.
- + commit a226eca84670ef4e171c3a54e7caefb3a89254a4
- * lang/python/tests/Makefile.am: Kill all previously running daemons
- before creating the private key store.
- * lang/qt/tests/Makefile.am: Likewise.
- * tests/gpg/Makefile.am: Likewise.
- * tests/gpgsm/Makefile.am: Likewise.
-
- tests: Harmonize test suites.
- + commit 15adff073bb89dc032d8342cfbbdad2850943f52
- * lang/python/tests/Makefile.am: Create test environment as part of
- 'make all'.
- * tests/gpg/Makefile.am: Make sure the private keystore is created
- first.
- * tests/gpgsm/Makefile.am: Create test environment as part of
- 'make all'. Make sure the private keystore is created
- first.
-
- qt: Stop agent on clean.
- + commit 093b5497b7231590ce91ccf73ba64ebc0757f9e9
- * lang/qt/tests/Makefile.am (clean-local): Stop agent.
-
-2017-05-10 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Add a missing include <functional>
- + commit 5e27bf98b4c48cf6a239bcc94b7b67515ff339e7
- * lang/qt/src/qgpgmenewcryptoconfig.cpp: Include functional.
-
- qt: Undeprecate API that I find useful.
- + commit cc2ef3d07c0d261bb9e8e8c0f2706e1a08e4ec53
- * lang/qt/src/decryptjob.h,
- lang/qt/src/decryptverifyjob.h,
- lang/qt/src/signencryptjob.h,
- lang/qt/src/verifydetachedjob.h,
- lang/qt/src/verifyopaquejob.h: Undeprecate ByteArray based API.
-
- qt, tests: Don't use internal API.
- + commit b56f398eff4e3e70dea714c3174a5512dd9bcf33
- * lang/qt/tests/t-encrypt.cpp, lang/qt/tests/t-tofuinfo.cpp:
- Only use exported API.
-
-2017-05-03 Andre Heinecke <aheinecke@intevation.de>
-
- core: Don't split gpgconf strings on comma.
- + commit df4eb611e33dcab7bebf07b13734c7db7ccf40da
- * src/engine-gpgconf.c (gpgconf_parse_option): Don't split
- strings on comma.
-
-2017-04-25 Andre Heinecke <aheinecke@intevation.de>
-
- qt, cpp: Add additional copyright BSI notes.
- + commit 28734240e2a2ce67b64df55364f35e1648376311
- * lang/cpp/Makefile.am,
- lang/cpp/src/Makefile.am,
- lang/cpp/src/callbacks.cpp,
- lang/cpp/src/callbacks.h,
- lang/cpp/src/configuration.cpp,
- lang/cpp/src/configuration.h,
- lang/cpp/src/context_glib.cpp,
- lang/cpp/src/context_p.h,
- lang/cpp/src/context_qt.cpp,
- lang/cpp/src/context_vanilla.cpp,
- lang/cpp/src/data_p.h,
- lang/cpp/src/decryptionresult.cpp,
- lang/cpp/src/decryptionresult.h,
- lang/cpp/src/defaultassuantransaction.cpp,
- lang/cpp/src/defaultassuantransaction.h,
- lang/cpp/src/editinteractor.cpp,
- lang/cpp/src/editinteractor.h,
- lang/cpp/src/encryptionresult.cpp,
- lang/cpp/src/encryptionresult.h,
- lang/cpp/src/engineinfo.cpp,
- lang/cpp/src/engineinfo.h,
- lang/cpp/src/error.h,
- lang/cpp/src/eventloopinteractor.cpp,
- lang/cpp/src/eventloopinteractor.h,
- lang/cpp/src/exception.cpp,
- lang/cpp/src/exception.h,
- lang/cpp/src/global.h,
- lang/cpp/src/gpgadduserideditinteractor.cpp,
- lang/cpp/src/gpgadduserideditinteractor.h,
- lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
- lang/cpp/src/gpgagentgetinfoassuantransaction.h,
- lang/cpp/src/gpgmefw.h,
- lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp,
- lang/cpp/src/gpgsetexpirytimeeditinteractor.h,
- lang/cpp/src/gpgsetownertrusteditinteractor.cpp,
- lang/cpp/src/gpgsetownertrusteditinteractor.h,
- lang/cpp/src/gpgsignkeyeditinteractor.cpp,
- lang/cpp/src/gpgsignkeyeditinteractor.h,
- lang/cpp/src/importresult.cpp,
- lang/cpp/src/importresult.h,
- lang/cpp/src/interfaces/assuantransaction.h,
- lang/cpp/src/interfaces/dataprovider.h,
- lang/cpp/src/interfaces/passphraseprovider.h,
- lang/cpp/src/interfaces/progressprovider.h,
- lang/cpp/src/keygenerationresult.cpp,
- lang/cpp/src/keygenerationresult.h,
- lang/cpp/src/keylistresult.cpp,
- lang/cpp/src/keylistresult.h,
- lang/cpp/src/notation.h,
- lang/cpp/src/result.h,
- lang/cpp/src/result_p.h,
- lang/cpp/src/scdgetinfoassuantransaction.cpp,
- lang/cpp/src/scdgetinfoassuantransaction.h,
- lang/cpp/src/signingresult.cpp,
- lang/cpp/src/signingresult.h,
- lang/cpp/src/trustitem.cpp,
- lang/cpp/src/trustitem.h,
- lang/cpp/src/util.h,
- lang/cpp/src/verificationresult.cpp,
- lang/cpp/src/verificationresult.h,
- lang/cpp/src/vfsmountresult.cpp,
- lang/qt/Makefile.am,
- lang/qt/doc/Makefile.am,
- lang/qt/src/Makefile.am,
- lang/qt/src/defaultkeygenerationjob.h,
- lang/qt/tests/Makefile.am: Add missing copyright.
-
- Change copyright from Intevation to BSI.
- + commit 70035834326d0d04a5904ae01bc3757e577facf4
- * lang/cpp/src/gpggencardkeyinteractor.cpp,
- lang/cpp/src/gpggencardkeyinteractor.h,
- lang/cpp/src/gpgmepp_export.h,
- lang/cpp/src/swdbresult.cpp,
- lang/cpp/src/swdbresult.h,
- lang/cpp/src/tofuinfo.cpp,
- lang/cpp/src/tofuinfo.h,
- lang/qt/src/abstractimportjob.h,
- lang/qt/src/adduseridjob.h,
- lang/qt/src/changeexpiryjob.h,
- lang/qt/src/changeownertrustjob.h,
- lang/qt/src/changepasswdjob.h,
- lang/qt/src/cryptoconfig.cpp,
- lang/qt/src/cryptoconfig.h,
- lang/qt/src/dataprovider.cpp,
- lang/qt/src/dataprovider.h,
- lang/qt/src/decryptjob.h,
- lang/qt/src/decryptverifyjob.h,
- lang/qt/src/deletejob.h,
- lang/qt/src/dn.cpp,
- lang/qt/src/dn.h,
- lang/qt/src/downloadjob.h,
- lang/qt/src/encryptjob.h,
- lang/qt/src/exportjob.h,
- lang/qt/src/hierarchicalkeylistjob.h,
- lang/qt/src/importfromkeyserverjob.h,
- lang/qt/src/importjob.h,
- lang/qt/src/job.cpp,
- lang/qt/src/job.h,
- lang/qt/src/keyformailboxjob.h,
- lang/qt/src/keygenerationjob.h,
- lang/qt/src/keylistjob.h,
- lang/qt/src/listallkeysjob.h,
- lang/qt/src/multideletejob.h,
- lang/qt/src/protocol.h,
- lang/qt/src/protocol_p.h,
- lang/qt/src/qgpgme_export.h,
- lang/qt/src/qgpgmeadduseridjob.cpp,
- lang/qt/src/qgpgmeadduseridjob.h,
- lang/qt/src/qgpgmebackend.cpp,
- lang/qt/src/qgpgmebackend.h,
- lang/qt/src/qgpgmechangeexpiryjob.cpp,
- lang/qt/src/qgpgmechangeexpiryjob.h,
- lang/qt/src/qgpgmechangeownertrustjob.cpp,
- lang/qt/src/qgpgmechangeownertrustjob.h,
- lang/qt/src/qgpgmechangepasswdjob.cpp,
- lang/qt/src/qgpgmechangepasswdjob.h,
- lang/qt/src/qgpgmedecryptjob.cpp,
- lang/qt/src/qgpgmedecryptjob.h,
- lang/qt/src/qgpgmedecryptverifyjob.cpp,
- lang/qt/src/qgpgmedecryptverifyjob.h,
- lang/qt/src/qgpgmedeletejob.cpp,
- lang/qt/src/qgpgmedeletejob.h,
- lang/qt/src/qgpgmedownloadjob.cpp,
- lang/qt/src/qgpgmedownloadjob.h,
- lang/qt/src/qgpgmeencryptjob.cpp,
- lang/qt/src/qgpgmeencryptjob.h,
- lang/qt/src/qgpgmeexportjob.cpp,
- lang/qt/src/qgpgmeexportjob.h,
- lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
- lang/qt/src/qgpgmeimportfromkeyserverjob.h,
- lang/qt/src/qgpgmeimportjob.cpp,
- lang/qt/src/qgpgmeimportjob.h,
- lang/qt/src/qgpgmekeyformailboxjob.cpp,
- lang/qt/src/qgpgmekeyformailboxjob.h,
- lang/qt/src/qgpgmekeygenerationjob.cpp,
- lang/qt/src/qgpgmekeygenerationjob.h,
- lang/qt/src/qgpgmekeylistjob.cpp,
- lang/qt/src/qgpgmekeylistjob.h,
- lang/qt/src/qgpgmelistallkeysjob.cpp,
- lang/qt/src/qgpgmelistallkeysjob.h,
- lang/qt/src/qgpgmenewcryptoconfig.cpp,
- lang/qt/src/qgpgmenewcryptoconfig.h,
- lang/qt/src/qgpgmerefreshkeysjob.cpp,
- lang/qt/src/qgpgmerefreshkeysjob.h,
- lang/qt/src/qgpgmesecretkeyexportjob.cpp,
- lang/qt/src/qgpgmesecretkeyexportjob.h,
- lang/qt/src/qgpgmesignencryptjob.cpp,
- lang/qt/src/qgpgmesignencryptjob.h,
- lang/qt/src/qgpgmesignjob.cpp,
- lang/qt/src/qgpgmesignjob.h,
- lang/qt/src/qgpgmesignkeyjob.cpp,
- lang/qt/src/qgpgmesignkeyjob.h,
- lang/qt/src/qgpgmetofupolicyjob.cpp,
- lang/qt/src/qgpgmetofupolicyjob.h,
- lang/qt/src/qgpgmeverifydetachedjob.cpp,
- lang/qt/src/qgpgmeverifydetachedjob.h,
- lang/qt/src/qgpgmeverifyopaquejob.cpp,
- lang/qt/src/qgpgmeverifyopaquejob.h,
- lang/qt/src/qgpgmewkspublishjob.cpp,
- lang/qt/src/qgpgmewkspublishjob.h,
- lang/qt/src/refreshkeysjob.h,
- lang/qt/src/signencryptjob.h,
- lang/qt/src/signjob.h,
- lang/qt/src/signkeyjob.h,
- lang/qt/src/specialjob.h,
- lang/qt/src/threadedjobmixin.cpp,
- lang/qt/src/threadedjobmixin.h,
- lang/qt/src/tofupolicyjob.h,
- lang/qt/src/verifydetachedjob.h,
- lang/qt/src/verifyopaquejob.h,
- lang/qt/src/wkspublishjob.h,
- lang/qt/tests/run-keyformailboxjob.cpp,
- lang/qt/tests/t-config.cpp,
- lang/qt/tests/t-encrypt.cpp,
- lang/qt/tests/t-keylist.cpp,
- lang/qt/tests/t-keylocate.cpp,
- lang/qt/tests/t-ownertrust.cpp,
- lang/qt/tests/t-support.cpp,
- lang/qt/tests/t-support.h,
- lang/qt/tests/t-tofuinfo.cpp,
- lang/qt/tests/t-various.cpp,
- lang/qt/tests/t-verify.cpp,
- lang/qt/tests/t-wkspublish.cpp,
- tests/gpg/t-encrypt-mixed.c,
- tests/gpg/t-thread-keylist-verify.c,
- tests/gpg/t-thread-keylist.c,
- tests/run-decrypt.c: Change Intevation GmbH copyright to BSI.
-
-2017-04-24 Andre Heinecke <aheinecke@intevation.de>
-
- doc: Improve doc on passphrase_cb / pinentry mode.
- + commit 8d61aba1fe0379ba14494f8ae2011ba531554ef4
- * doc/gpgme.texi (Passphrase Callback): Mention pinentry_mode and
- restrictions.
- (Pinentry Mode): Fix wording and clarify versions that need
- loopback mode for passphrase_cb to work.
-
-2017-04-24 Justus Winter <justus@g10code.com>
-
- tests: Update encrypted sample files.
- + commit ac28e66f46132ae4a854d04b2f17acd4d55e4296
- * tests/gpg/cipher-1.asc: Update file.
- * tests/gpg/cipher-2.asc: Likewise.
-
-2017-04-11 Justus Winter <justus@g10code.com>
-
- python: Skip TOFU test if not supported by GnuPG.
- + commit 979d48e823357af9999a2adb34d75adaade8dec2
- * lang/python/tests/support.py (have_tofu_support): New function.
- * lang/python/tests/t-quick-key-manipulation.py: Skip TOFU test if not
- supported by GnuPG.
-
-2017-04-11 Alon Bar-Lev <alon.barlev@gmail.com>
-
- python: use autoconf pre-processor when building via autoconf.
- + commit a827382cafe7f1425455dcc8bf5ef049172eb493
- * configure.ac: Add AC_PROG_CPP.
- * lang/python/Makefile.am: Set CPP environment for setup.py to use.
-
- python: fix run-tests missing python_libdir.
- + commit d785c053a982bddefd7014dc6856d1af345fe9fb
- * lang/python/tests/run-tests.py: Set python_libdir if --python-libdir
- is set.
-
-2017-04-10 Justus Winter <justus@g10code.com>
-
- python: Fix distcheck.
- + commit db476e923415f8e458720aaafde7234b802a33ab
- * lang/python/Makefile.am (uninstall-local): Explicitly request the
- scheme 'posix_prefix'. On Python2.7 the default scheme is
- 'posix_local', breaking distcheck.
-
-2017-04-10 Alon Bar-Lev <alon.barlev@gmail.com>
-
- python: Support alternatate libdir for tests.
- + commit 3cc90b67fa970e716c8672ec5c5f591fa11ab216
- * lang/python/tests/run-tests.py: Add --python-libdir optional
- parameter.
-
- python: Read gpg-error.h using the pre-processor.
- + commit 7309ce6f5f7c86570953a141965d4f54cd9ad9a0
- * lang/python/setup.py.in: Read gpg-error.h using the pre-processor.
-
- python: Remove unneeded stats copy.
- + commit df8433bffa9e669897243f08edf7845762250e4a
- * lang/python/setup.py.in: errors.i, gpgme.h are generated and always
- newer than the original.
-
- python: Remove usage of PYTHON_VERSIONS.
- + commit 25e6444b3f4601c7821beab06bc4520deacb007b
- * configure.ac: Remove PYTHON_VERSIONS subst.
- * lang/python/Makefile.am: Use basename of python as builddir prefix.
- * lang/python/tests/run-tests.py: Likewise.
-
- tests: Do not use check-local magic as dependency.
- + commit ebefc6cbf937d14ced65f7ded79c4ba901507d23
- * tests/gpg/Makefile.am: Use BUILT_SOURCES instead of check-local
- and initial.test.
- * lang/qt/tests/Makefile.am: Ditto.
-
- python: support .pydistutils.cfg mode.
- + commit 365c649ad073f2697438dc014160943ae31a1447
- * lang/python/setup.py.in: Do not parse arguments.
-
-2017-04-07 Alon Bar-Lev <alon.barlev@gmail.com>
-
- python: simplify build, some fixups.
- + commit 49195c487e6c923f7137f092b982e7d833d98de6
- * lang/python/gpg/version.py.in: Rename to lang/python/version.py.in.
- configure.ac: Generate version.py.in in lang/python.
- * lang/python/MANIFEST.in: Include version.py explicitly.
- * lang/python/gpg: Rename to 'src'.
- * lang/python/Makefile.am: Do not copy source files, do not use absolute
- directories, support lib64 in uninstall, clean also dist directory, use
- symlink for gpg src.
- * lang/python/setup.py.in: Use builddir, copy sources into builddir,
- copy version.py into module.
-
-2017-04-05 Justus Winter <justus@g10code.com>
-
- python: Fix vpath builds, fix distcheck.
- + commit e7d9c0c3d773f826dbd2ed417d04e25c410f3374
- * lang/python/gpgme-h-clean.py: Delete file.
- * lang/python/MANIFEST.in: Adapt accordingly.
- * lang/python/Makefile.am (EXTRA_DIST): Likewise.
- (COPY_FILES_GPG): Bring variable back.
- (copystamp): Copy files.
- (clean-local): Delete copied files.
- (install-exec-local): Do not create and install list of installed
- files.
- (uninstall-local): Instead, create some explicit rules to uninstall
- the extension.
- * lang/python/setup.py.in: Parse arguments. Locate files either in
- the source directory, or in the build base directory. Inline the code
- from 'gpgme-h-clean.py'. Copy 'helpers.c', add source directory as
- include directory.
-
-2017-04-05 Alon Bar-Lev <alon.barlev@gmail.com>
-
- python: Generate files into build directory.
- + commit 801d7d8c5dd530d26ad6c4bcc94d986e6e022da4
- * lang/python/setup.py.in: Generate files within BuildExtFirstHack
- adjust build flags at this point instead of global.
- * lang/python/Makefile.am: Remove logic of separate source directory per
- python version in favor of build directory.
- * lang/python/tests/run-tests.py: Adjust build directory location.
-
-2017-04-03 Pietro Cerutti <gahr@gahr.ch>
-
- FreeBSD's closefrom(2) does not return errors.
- + commit 50565982cdd502c3852fcc6f598932bd32b5cdc3
-
-
-2017-04-03 Igor Gnatenko <ignatenkobrain@fedoraproject.org>
-
- qt: pass fmt to gpgrt_asprintf()
- + commit 5d4f977dac542340c877fdd4b1304fa8f6e058e6
- * lang/qt/src/dn.cpp (parse_dn_part): Add fmt argument instead of
- using name directly.
-
- GnuPG-Bug-Id: 3023
-
-2017-03-30 Andre Heinecke <aheinecke@intevation.de>
-
- python: Don't treat skipped tests as error.
- + commit f8a9ecc6290ebd73fa36647cdfca285fe4d94a62
- * lang/python/tests/run-tests.py (failed): Don't count skipped tests
- for the return code.
-
-2017-03-30 Justus Winter <justus@g10code.com>
-
- python: Fix skipping tests if running with GnuPG < 2.1.12.
- + commit 159505a28864399cc5405d9f85f35ab011a3259e
- * final.py: Import 'support.py' for the side-effect of checking the
- GnuPG version.
- * t-data.py: Likewise.
- * t-protocol-assuan.py: Likewise.
- * t-wrapper.py: Likewise.
- * t-callbacks.py: Avoid warning about 'support' being unused.
- * t-edit.py: Likewise.
- * t-encrypt-sym.py: Likewise.
- * t-file-name.py: Likewise.
- * t-idiomatic.py: Likewise.
- * t-sig-notation.py: Likewise.
- * t-trustlist.py: Likewise.
- * t-verify.py: Likewise.
- * t-wait.py: Likewise.
- * t-keylist-from-data.py: Trim unused imports.
-
-2017-03-30 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Handle if gpg does not support tofu in test.
- + commit 2c063a8d60418ee59ae80da221420c6f3fa19abb
- * lang/qt/src/t-tofuinfo.cpp (TestTofuInfo::testSupported): Treat
- it as unsupported if secret keylisting already fails.
-
-2017-03-29 Alon Bar-Lev <alon.barlev@gmail.com>
-
- python,build: Reinstate prepare target.
- + commit 9786e3a96e6772166f3523e74a748b9db20fae7c
- * lang/python/Makefile.am: Fix 'prepare' target.
- * lang/python/setup.py.in: Use 'abs_top_builddir' instead of guessing
- the path.
-
-2017-03-28 Justus Winter <justus@g10code.com>
-
- tests: Run the threading tests only on UNIX.
- + commit 7e9f7752c992f957ccfde3b274865c633096e3bb
- * tests/gpg/Makefile.am (tests_unix): Add 't-thread-keylist' and
- 't-thread-keylist-verify'.
- (c_tests): Drop them here.
-
- tests: Make error message more helpful.
- + commit a13e4abe9463579ef23d1acea39a093abfc6528d
- * tests/gpg/t-keylist.c (main): Print number of returned and expected
- keys.
-
-2017-03-28 Werner Koch <wk@gnupg.org>
-
- Release 1.9.0.
- + commit aa0390ec3b910bbbc323a15ec3c3351e77785a9a
- * configure.ac <c>: Bump LT version to C29/A18/R0.
- <cpp>: Bump LT version to C10/A4/R0.
- <qt>: Bump LT version to C9/A2/R0.
-
-2017-03-28 Andre Heinecke <aheinecke@intevation.de>
-
- Revert "qt: Disable testEncryptDecryptNowrap"
- + commit a2ccb3172896a90bc27c95964ef94bd7c0924802
- This reverts commit 57d60b20f16dd5f1bccbbcaa0a6ed75a554a6414.
-
-2017-03-28 Werner Koch <wk@gnupg.org>
-
- core: Prepare for new key listing data send by gpg.
- + commit 813ae5fa2d712aa9679b791c67c9c1c43d36ffe4
- * src/gpgme.h.in (gpgme_user_id_t): New fields 'origin' and
- 'last_update'.
- (gpgme_key_t): New fields 'origin' and 'last_update'.
- * src/conversion.c (_gpgme_parse_timestamp_ul): New.
- * src/keylist.c (keylist_colon_handler): Parse fields 19 and 20.
-
- * tests/run-keylist.c (main): Print new fields.
-
-2017-03-27 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Disable testEncryptDecryptNowrap.
- + commit 57d60b20f16dd5f1bccbbcaa0a6ed75a554a6414
- * lang/qt/tests/t-encrypt.cpp (EncryptTest::testEncryptDecryptNowrap):
- Disable test.
-
-2017-03-27 Justus Winter <justus@g10code.com>
-
- python: Skip tests if running with GnuPG < 2.1.12.
- + commit 348da58fe0c3656e6177c98fef6b4c4331326c8e
- * lang/python/tests/support.py (assert_gpg_version): Fix error
- message. Skip all tests when we use GnuPG older than 2.1.12.
-
-2017-03-24 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Respect decrypt flags in new functions.
- + commit 18b7906078cf08962c54c1e711cf2d91a24fd4e5
- * lang/cpp/src/context.cpp: Respect directly provided flags
- in the new decrypt functions.
-
- qt: Add unittest for decrypt unwrap.
- + commit 5493164f8665fabf795f3b34a7084770a38ae940
- * lang/qt/tests/t-encrypt.cpp
- (EncryptTest::testEncryptDecryptNowrap): New.
-
- cpp: Use gpgme_op_decrypt_ex and add new flags.
- + commit 8ad37ecc297f208d0a63783c1ffae33ad4c3c81a
- * lang/cpp/src/context.cpp: New decrypt and decryptVerify functions
- that take flags as arguments. Use new variants in old functions.
- (Context::setDecryptionFlags): New helper.
- (Context::Private::Private): Initialize new member.
- * lang/cpp/src/context_p.h (Context::Private::decryptFlags): New.
- * lang/cpp/src/context.h (Context::DecryptFlags): New enum.
- (Context::EncryptionFlags): Extend for EncryptWrap.
-
-2017-03-24 Werner Koch <wk@gnupg.org>
-
- core: New flags GPGME_DECRYPT_UNWRAP and GPGME_ENCRYPT_WRAP.
- + commit 6ac1f2cdedb085b4ac9372c1e591497e2e618de4
- * src/gpgme.h.in (GPGME_ENCRYPT_WRAP): New const.
- (gpgme_decrypt_flags_t): New enum.
- (GPGME_DECRYPT_VERIFY): New const
- (GPGME_DECRYPT_UNWRAP): New const
- (gpgme_op_decrypt_ext_start): New func.
- (gpgme_op_decrypt_ext): New func.
- * src/decrypt-verify.c (gpgme_op_decrypt_ext_start): New.
- (gpgme_op_decrypt_ext): New.
- (decrypt_verify_start): Add arg FLAGS. Replace call to
- engine_op_decrypt_verify by the plain decrypt with the flag set.
- (gpgme_op_decrypt_verify_start): Pass the flag.
- (gpgme_op_decrypt_verify): Pass the flag.
- * src/decrypt.c (decrypt_start): Rename to ...
- (_gpgme_decrypt_start): this. Add arg FLAGS. Pass FLAGS to
- engine_op_decrypt.
- (gpgme_op_decrypt_start): Adjust for chnage pass 0 for FLAG.
- (gpgme_op_decrypt_start): Ditto.
- * src/engine.c (_gpgme_engine_op_decrypt_verify): Remove.
- (_gpgme_engine_op_decrypt): Add arg FLAGS.
- * src/gpgme.def, src/libgpgme.vers: Add new functions.
- * src/engine-backend.h (struct engine_ops): Remove member
- 'decrypt_verify'. Add FLAGS to 'decrypt'. Adjust all initialization.
- * src/engine-uiserver.c (uiserver_decrypt): Remove.
- (uiserver_decrypt_verify): Remove.
- (_uiserver_decrypt): Rename to ...
- (uiserver_decrypt): this. Replace arg VERIFY by new arg FLAGS.
- * src/engine-gpg.c (gpg_decrypt): Support GPGME_DECRYPT_UNWRAP.
- (gpg_encrypt): Support GPGME_ENCRYPT_WRAP.
-
- * tests/run-decrypt.c (main): New option --unwrap.
- * tests/run-encrypt.c (main): New option --wrap.
-
-2017-03-22 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Add test for Data::toKeys.
- + commit 66c334650bd64fdb72c4bd5975e25b8659d320ec
- * lang/qt/tests/t-various.cpp (TestVarious::testKeyFromFile): New.
-
- cpp: Wrap keylist_from_data.
- + commit 8ddb42ada46f00d8393f6c2df7d6b79a4a5878f0
- * lang/cpp/data.h, lang/cpp/data.cpp (GpgME::Data::toKeys): New.
-
- qt: Initialize library first in tests.
- + commit 121873b821636052c10d9e0bd885eb9013c52096
- * lang/qt/tests/t-support.cpp (QGpgMETest::initTestCase): Initialize
- library.
-
-2017-03-22 Justus Winter <justus@g10code.com>
-
- python: Improve Python detection.
- + commit 104635eb503ec764146731888a6975b4329660fd
- * m4/python.m4 (_AM_PYTHON_INTERPRETER_LIST): Prefer the generic
- 'pythonX' over 'pythonX.Y'. This way we select the users preferred
- version for both flavors. Prefer 'python' over 'python3' but not over
- 'python2' so that the algorithm still finds a 'python2' even if
- 'python' is a Python3.
-
-2017-03-21 Werner Koch <wk@gnupg.org>
-
- core: New API gpgme_op_set_uid_flag.
- + commit 421ddd1e6706046c5062417fd69a87e10c9fc0a9
- * src/gpgme.h.in (gpgme_op_set_uid_flag_start): New.
- (gpgme_op_set_uid_flag_start): New.
- * src/gpgme.def, src/libgpgme.vers: Add them.
- * src/genkey.c (addrevuid_start): Change arg revoke to a flag.
- (gpgme_op_revuid_start): Pass GENKEY_EXTRAFLAG_REVOKE for the fomer
- revoke parameter.
- (gpgme_op_revuid): Ditto.
- (set_uid_flag): New.
- (gpgme_op_set_uid_flag_start): New.
- (gpgme_op_set_uid_flag): New.
- * src/engine.h (GENKEY_EXTRAFLAG_SETPRIMARY): new.
- * src/engine-gpg.c (gpg_adduid): Implement that flag.
-
- * tests/run-genkey.c (main): New command --set-primary.
-
-2017-03-21 Justus Winter <justus@g10code.com>
-
- python: Wrap 'gpgme_op_keylist_from_data_start'.
- + commit f3e8d8a4518de2768692e0b392262d0da6d0fd84
- * NEWS: Update.
- * lang/python/gpg/core.py (Context.keylist): New keyword argument
- 'source'. If given, list keys from 'source'.
- * lang/python/gpgme.i: Wrap the argument to
- 'gpgme_op_keylist_from_data_start'.
- * lang/python/tests/Makefile.am (py_tests): Add new test.
- * lang/python/tests/support.py (EphemeralContext): Do not throw an
- error if no agent has been started in the context.
- * lang/python/tests/t-keylist-from-data.py: New file.
-
-2017-03-21 Werner Koch <wk@gnupg.org>
-
- core: Extend gpgme_get_dirinfo to return the gpg-wks-client name.
- + commit 55ac5eed9f59081283d34098a9e0ada753d61d59
- * src/dirinfo.c (WANT_GPG_WKS_CLIENT_NAME): New const.
- (struct dirinfo): New field 'gpg_wks_client_name'.
- (get_gpgconf_item): Build it on demand.
- (gpgme_get_dirinfo): New value "gpg-wks-client-name" for WHAT.
-
- core: New encryption flag GPGME_ENCRYPT_THROW_KEYIDS.
- + commit fab8b1a166fff7265d8a7a7acbbf5f30d26cc93c
- * src/gpgme.h.in (GPGME_ENCRYPT_THROW_KEYIDS): New flag.
- * src/engine-gpg.c (gpg_encrypt): Implement flag
- (gpg_encrypt_sign): Implement flag.
-
- * tests/run-encrypt.c (main): New option --throw-keyids.
-
-2017-03-21 Andre Heinecke <aheinecke@intevation.de>
- Werner Koch <wk@gnupg.org>
-
- core: New public API gpgme_op_keylist_from_data_start.
- + commit 35023f313622fb1b34108dd934e84831c58b81aa
- * src/gpgme.h.in: New API gpgme_op_keylist_from_data_start.
- * src/libgpgme.vers, src/gpgme.def: Add it.
- * src/keylist.c (gpgme_op_keylist_from_data_start): New.
- * src/engine-backend.h (engine_ops): Add field 'keylist_data'. Change
- all engines to pass NULL for it.
- * src/engine.c (_gpgme_engine_op_keylist_data): New.
- * src/engine-gpg.c (gpg_keylist_data): New.
- (_gpgme_engine_ops_gpg): Register gpg_keylist_data.
-
- * tests/run-keylist.c (main): New option --from-file.
-
-2017-03-20 Werner Koch <wk@gnupg.org>
-
- core,cpp: New key flag 'is_de_vs'.
- + commit ea9686ec71a2dd2225ce2b6d6d4038821d36205f
- * src/gpgme.h.in (_gpgme_subkey): New flag is_de_vs.
- * tests/run-keylist.c (main): Print that flag.
- * src/keylist.c (parse_pub_field18): New.
- (keylist_colon_handler): Parse compliance flags.
- * lang/cpp/src/key.cpp (Key::isDeVs): New.
- (Subkey::isDeVs): New.
-
- * lang/cpp/src/key.h (class Key): New method isDeVs.
- (class Subkey): New method isDeVs.
-
-2017-03-20 Justus Winter <justus@g10code.com>
-
- tests: Fix distcheck.
- + commit 392e51dd1181d035c19918222da65d08fdb2ee6d
- * tests/start-stop-agent: Do not create 'gpg-agent.conf' if it does
- not exist.
-
- python: Fix version check.
- + commit 57e64d019d993fdeb4323def5352f8ecc98c6fd9
- * lang/python/tests/support.py (assert_gpg_version): Cope with
- non-released versions.
-
- tests: Use 'gpg-agent --allow-loopback-pinentry' if applicable.
- + commit 16b202d9999591b71fb8bb49f6db10ef96d4cbe8
- * lang/python/tests/Makefile.am (gpg-agent.conf): Do not hard-code the
- option. This breaks gpg-agent from GnuPG 2.0.
- * tests/start-stop-agent: Rather, check if the option is supported and
- add it to the configuration if it is.
-
- python: Skip tests if GnuPG is too old.
- + commit e1cf8bab319ba1dea41ba5d711dbb66ffd8e6fd6
- * lang/python/tests/support.py (assert_gpg_version): New function.
- * lang/python/tests/t-callbacks.py: Use the new function to skip the
- test if GnuPG is too old.
- * lang/python/tests/t-edit.py: Likewise.
- * lang/python/tests/t-encrypt-sym.py: Likewise.
- * lang/python/tests/t-quick-key-creation.py: Likewise.
- * lang/python/tests/t-quick-key-manipulation.py: Likewise.
- * lang/python/tests/t-quick-key-signing.py: Likewise.
-
- python: Remove superfluous initialization.
- + commit 4572e8d2ac1d3b45e75ce71265c99e591fbf0e28
- * lang/python/tests/support.py (init_gpgme): Remove. This is an
- remnant from the c tests. Nowadays, the Python bindings initialize
- GPGME automagically.
- * lang/python/tests/initial.py: Remove call to 'support.init_gpgme'.
- * lang/python/tests/t-callbacks.py: Likewise.
- * lang/python/tests/t-decrypt-verify.py: Likewise.
- * lang/python/tests/t-decrypt.py: Likewise.
- * lang/python/tests/t-edit.py: Likewise.
- * lang/python/tests/t-encrypt-large.py: Likewise.
- * lang/python/tests/t-encrypt-sign.py: Likewise.
- * lang/python/tests/t-encrypt-sym.py: Likewise.
- * lang/python/tests/t-encrypt.py: Likewise.
- * lang/python/tests/t-export.py: Likewise.
- * lang/python/tests/t-file-name.py: Likewise.
- * lang/python/tests/t-idiomatic.py: Likewise.
- * lang/python/tests/t-import.py: Likewise.
- * lang/python/tests/t-keylist.py: Likewise.
- * lang/python/tests/t-sig-notation.py: Likewise.
- * lang/python/tests/t-sign.py: Likewise.
- * lang/python/tests/t-signers.py: Likewise.
- * lang/python/tests/t-trustlist.py: Likewise.
- * lang/python/tests/t-verify.py: Likewise.
- * lang/python/tests/t-wait.py: Likewise.
-
-2017-03-14 Justus Winter <justus@g10code.com>
-
- python: Make error message more helpful.
- + commit 9d6825be092f1590f28b5bab462eeb944d9b800c
- * lang/python/tests/run-tests.py: Make the error message shown when we
- cannot locate the python module in the build tree more helpful.
-
- python: Make tests more robust.
- + commit ac4849953860547b06a167ca9612c4de369d02b6
- * lang/python/tests/support.py (TemporaryDirectory): Always use our
- own version even if 'tempfile.TemporaryDirectory' is provided, because
- we need to use 'shutil.rmtree(..., ignore_errors=True)' to avoid it
- tripping over gpg-agent deleting its own sockets.
-
- python: Improve build system integration.
- + commit a4201035fdc050f337a6b9f520c8ddbb569e2eb4
- * lang/python/Makefile.am: Use 'set -e' when chaining shell commands
- together in rules.
-
- build: Improve Python detection.
- + commit 6a371663886a7ba6073f385a3ab5f5a03de8e008
- * configure.ac: Do not error out too early if we don't find a matching
- Python version. We handle this case later.
-
- build: Tune M4 macros for our needs.
- + commit 5189c08af9468cdeb6f16a6ecd0fee53e1e3aa0e
- * m4/ax_python_devel.m4: Do not emit 'HAVE_PYTHON'.
- * m4/python.m4 (_AM_PYTHON_INTERPRETER_LIST): Add newer Python
- versions, drop older ones. Also, sort the list with older versions at
- the front, newer and generic versions towards the end. This makes the
- algorithm pick the lowest version that meets the version requirement.
-
- build: Add M4 macros for python.
- + commit 067da472f919e78c95a0a01b68e79a8b7dff173b
- * m4/python.m4: New file.
-
-2017-03-13 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Add test for DN parser.
- + commit 43aa3eed15dcc4f848915ceabeff35c29c1c57e4
- * qt/tests/t-various.cpp (testDN): New.
-
- qt: Use gpgrt_asprintf instead of qstrdup.
- + commit 9d5048d47446450a34cae4f27eb81c02ea5d4afc
- * lang/qt/src/dn.cpp (parse_dn_part): Use gpgrt_asprintf instead
- of qstrdup.
-
-2017-03-09 Werner Koch <wk@gnupg.org>
-
- core: Fix status error return for gpgsm.
- + commit d2240a2a1819874929bdab820bcbd3bee7f94407
- * src/engine-gpgsm.c (gpgsm_assuan_simple_command): Make sure CB_ERR
- is returned.
- * src/import.c (parse_import_res): Do not return an error for the last
- field.
- (import_status_handler): Actually return the error from
- parse_import_res.
-
-2017-03-02 Justus Winter <justus@g10code.com>
-
- python: Print path of the Python module used during tests.
- + commit 41398779abbcb1ec2d7491e141469a752fc706ff
- * lang/python/tests/initial.py: Print path of the Python module used
- during tests. Useful to detect if by any mistake the wrong module is
- picked up.
-
-2017-03-02 Werner Koch <wk@gnupg.org>
-
- core: Fix minor code style thing.
- + commit ef035f079fb067f207e5477d5ed6c5a68fb41f59
- * src/engine-gpg.c (gpg_add_algo_usage_expire): Use double parenthesis
- for bit tests.
-
-2017-03-02 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add subkey keygrip to API.
- + commit 8071a6b2ca33c2a46ed1d50ae7283241daaafcd3
- * lang/cpp/src/key.cpp (Subkey::keyGrip): New.
- * lang/cpp/src/key.h: Update accordingly.
-
-2017-03-01 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add interactor to generate keys on smartcard.
- + commit d63258066d008de113ed1170f1b0e787a5bdaba1
- * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
- Handle new states.
- * lang/cpp/src/gpggencardkeyinteractor.cpp,
- lang/cpp/src/gpggencardkeyinteractor.h: New.
- * lang/cpp/src/Makefile.am: Update accordingly.
-
- qt: Allow creation of default keys without name.
- + commit fbafb5474d8898ba1b267f4b4dfbefe39f04e72f
- * lang/qt/src/defaultkeygenerationjob.cpp
- (DefaultKeyGenerationJob::start): Handle empty name and email.
-
-2017-02-26 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- doc: Correct documentation for recp arg of gpgme_op_encrypt_sign_start.
- + commit 5b49095b89b07591c69827df3973ffabfb3e97b8
- * doc/gpgme.texi (gpgme_op_encrypt_sign_start): recp is an array of
- gpgme_key_t, not a single element.
-
-2017-02-20 Justus Winter <justus@g10code.com>
-
- python: Fix test.
- + commit a7c6353edab57b67180aa127ec77d9353c2366fb
- * lang/python/tests/t-quick-key-manipulation.py: Modify the
- configuration file in the ephemeral home directory, not the one used
- by all the tests.
-
-2017-02-17 Justus Winter <justus@g10code.com>
-
- python: Support manipulating the TOFU policy.
- + commit 15fbac9e72a4d1bff9a3b9e9822f9175b09fbcd5
- * NEWS: Update.
- * doc/gpgme.texi: Fix typos.
- * lang/python/gpg/constants/__init__.py: Import new files.
- * lang/python/gpg/constants/tofu/__init__.py: New file.
- * lang/python/gpg/constants/tofu/policy.py: New file.
- * lang/python/gpg/core.py (Context.key_tofu_policy): New function.
- * lang/python/gpgme.i: Nice reprs for gpgme_tofu_info_t.
- * lang/python/setup.py.in: Install new package.
- * lang/python/tests/t-quick-key-manipulation.py: Extend test.
-
- python: Support quick key signing.
- + commit 48634e651fcd02431c0518d42ada1f3b402feb2c
- * NEWS: Update.
- * doc/gpgme.texi (gpgme_op_keysign): Fix the description of the
- 'expire' argument.
- * lang/python/gpg/constants/__init__.py: Import new file.
- * lang/python/gpg/constants/keysign.py: New file.
- * lang/python/gpg/core.py (Context.key_sign): New function.
- * lang/python/tests/Makefile.am (py_tests): Add new test.
- * lang/python/tests/t-quick-key-signing.py: New test.
-
- python: Fix teardown of ephemeral contexts.
- + commit de8494b16bc50c60a8438f2cae1f8c88e8949f7a
- * lang/python/tests/support.py (EphemeralContext): New function.
- * lang/python/tests/t-quick-key-creation.py: Use the new function to
- manage ephemeral contexts.
- * lang/python/tests/t-quick-key-manipulation.py: Likewise.
- * lang/python/tests/t-quick-subkey-creation.py: Likewise.
-
- python: Fix using strings as commands in the assuan protocol.
- + commit 9350168a1eed3f055040d7cc8a9bf4cdf745b23a
- * lang/python/gpg/core.py (Context.assuan_transact): Fix testing
- whether the command is a string on Python2.
- * lang/python/tests/t-protocol-assuan.py: Improve the test to detect
- this problem.
-
-2017-02-16 Justus Winter <justus@g10code.com>
-
- python: Support adding and revoking UIDs.
- + commit 7641b7b5f2c9d5b38c60cd9326bcb4810c37dae5
- * NEWS: Update.
- * lang/python/gpg/core.py (Context.key_add_uid): New function.
- (Context.key_revoke_uid): Likewise.
- * lang/python/tests/Makefile.am (XTESTS): Add new test.
- * lang/python/tests/t-quick-key-manipulation.py: New file.
-
- python: Support quick subkey creation.
- + commit 13bace25e3d8422f93fd24919994be36042fd220
- * NEWS: Update.
- * lang/python/gpg/core.py (Context.create_subkey): New function.
- * lang/python/tests/Makefile.am (XTESTS): Add new test.
- * lang/python/tests/t-quick-subkey-creation.py: New file.
-
- python: Support quick key creation.
- + commit 476b97822b169c30cc246c1de2ff94cf89084706
- * NEWS: Update.
- * lang/python/gpg/constants/__init__.py: Import new file.
- * lang/python/gpg/constants/create.py: New file.
- * lang/python/gpg/core.py (Context.create_key): New function.
- * lang/python/tests/Makefile.am (XTESTS): Add new test.
- * lang/python/tests/support.py (TemporaryDirectory): New class.
- * lang/python/tests/t-quick-key-creation.py: New file.
-
- python: Fix passphrase callback wrapping.
- + commit 3bdce4aa3ddd4a3f55b24678faf978d61daa8909
- * lang/python/helpers.c (pyPassphraseCb): Cope with 'passphrase_info'
- being NULL.
-
- python: Fix error handling.
- + commit 048c5f74b61d5e4fa7617ce7c9111c6754bd4409
- * lang/python/gpgme.i (typemap gpgme_key_t[]): Set an error if a
- non-key element is discovered.
-
-2017-02-15 Justus Winter <justus@g10code.com>
-
- core: Fix expiration time handling when creating keys.
- + commit de708e5934cda380dbc3ae51f587c09041de7562
- * NEWS: Update.
- * doc/gpgme.texi (gpgme_op_createkey): Clarify the meaning of the
- 'expire' parameter.
- (GPGME_CREATE_NOEXPIRE): Document new flag.
- (gpgme_op_createsubkey): Clarify the meaning of the 'expire'
- parameter.
- * src/engine-gpg.c (gpg_add_algo_usage_expire): Fix handling of the
- expiration time.
- * src/gpgme.h.in (GPGME_CREATE_NOEXPIRE): New macro.
-
- python: Fix build system integration.
- + commit 27544d0a74267ab6057dc816ea3311bc9149a200
- * lang/python/Makefile.am (copystamp): Also copy the setup script, and
- link the header files.
- (all-local): Use local setup script.
- (sdist): Fix Python source distribution creation.
- (CLEANFILES): Remove now obsolete files.
- (install-exec-local): Use local setup script.
- * lang/python/setup.py.in: Adjust relative paths to in-tree files.
-
- python: Update lists of functions returning gpgme_error_t.
- + commit 25f0435a0022a70af77660d72d33f17bec2d4e51
- * lang/python/gpg/core.py (Context._errorcheck): Add instructions how
- to update the list. Update list.
- (Data._errorcheck): Likewise.
- (Context.set_engine_info): Simplify.
-
- core: Fix error types.
- + commit 6df6e01ed5a581765d245bf7303cda4497d0eb22
- * NEWS: Update.
- * src/data.c (gpgme_data_set_flag): Return a 'gpgme_error_t'.
- * src/error.c (gpgme_strerror_r): Fix type of first argument.
- * src/gpgme.h.in (gpgme_strerror_r): Adapt.
- (gpgme_data_set_flag): Likewise.
-
-2017-02-14 Justus Winter <justus@g10code.com>
-
- python: Wrap utility functions.
- + commit 92adc9bbf640eb5d9177d3ba0189e0f6cee4e995
- * NEWS: Update.
- * lang/python/gpg/core.py (pubkey_algo_string): New function.
- (pubkey_algo_name): Add docstring.
- (hash_algo_name): Likewise.
- (get_protocol_name): Likewise.
- (addrspec_from_uid): New function.
- * lang/python/gpgme.i (gpgme_pubkey_algo_string): Result must be
- freed.
- (gpgme_addrspec_from_uid): Likewise.
-
- python: Use the correct function to free buffers.
- + commit 9fc9533c2835ec53c4fd4f822b09e9fec14626d0
- * lang/python/gpgme.i (char *): Free using 'gpgme_free'.
-
- python: Add keylist mode parameter.
- + commit fdc4e33dc3f6c84fe9d7bf9795c603ae3cf5f28d
- * NEWS: Update.
- * lang/python/gpg/core.py (Context.keylist): Add 'mode' parameter.
-
- python: Nicer repr for user ids.
- + commit e17ab84129045512cf60c221ee43aa877507662f
- * lang/python/gpgme.i (_gpgme_user_id): Provide a nicer repr() for
- user ids.
-
- python: Add convenience functions for the home directory.
- + commit 99b7f4f34dd595579181a696ae976a678fe00d49
- * NEWS: Update.
- * lang/python/gpg/core.py (Context.__init__): Add 'home_dir' argument.
- (__repr__): Include 'home_dir'.
- (Context.home_dir): New property.
-
- qt: Make sure to remove the tofu.db on clean.
- + commit 30a603580e0f196c721fa4bd44d24077d9bc06c3
- * lang/qt/tests/Makefile.am (CLEANFILES): Add 'tofu.db'.
-
-2017-02-14 Tobias Mueller <muelli@cryptobitch.de>
-
- python: Extend SWIG gpgme_{sub,}key with a __repr__ method.
- + commit 01d5c17587578c729bbbb60f8a65635975e35592
- * lang/python/gpgme.i: Added a genericrepr macro and use it for
- gpgme_key, gpgme_subkey, and gpgme_key_sig.
-
- python: Remove the -builtin flag for SWIG.
- + commit aa49be1ab80c200ab6b62d33bf5d0f5aa334fc56
- * lang/python/setup.py.in: Call SWIG without the builtin flag.
-
- python: Call SWIG_NewPointerObj rather than SWIG_Python_NewPointerObj.
- + commit d35651917097ae2eee7d52396d53d010bc34df19
- * lang/python/gpgme.i (pygpgme_wrap_gpgme_data_t): Provide a "self"
- variable for SWIG_NewPointerObj and call SWIG_NewPointerObj rather than
- SWIG_Python_NewPointerObj.
-
- python: Conditionally provide py3 argument to SWIG.
- + commit d184dbbba8987d9f387feb25791ed891e108dabc
- * lang/python/setup.py.in: Only call with -py3 when we run under python3
- or higher.
-
-2017-02-13 Justus Winter <justus@g10code.com>
-
- python: Use one copy of the source tree per Python version.
- + commit fe65a26ab584bd70fad45c7c4d44330e30a748a4
- * lang/python/Makefile.am (copystamp): Create one copy per Python
- version.
- (all-local): Adapt.
- (clean-local): Likewise.
- (install-exec-local): Likewise.
- * lang/python/tests/run-tests.py: Likewise.
-
- build: Use macOS' compatibility macros to enable all features.
- + commit 60273e8b2c11d42215a5707bc55e3e0d8f350e07
- * configure.ac: On macOS, use the compatibility macros to expose every
- feature of the libc. This is the equivalent of _GNU_SOURCE on GNU
- libc.
-
- Revert "Disable fd-passing for Apple."
- + commit f8db658f8b4c3c7941d0029273fb23fbe1ba74ad
- The actual bug has been located, so this can be reverted.
-
- This reverts commit ef5b4ae37d13142e89a051908dc080cda3d24baa.
-
-2017-02-13 Igor Gnatenko <ignatenkobrain@fedoraproject.org>
-
- qt: Add missing #include <functional>
- + commit 60064c665ec98a2a994fc6c8ad701e60b963ce7e
- * lang/qt/src/qgpgmenewcryptoconfig.cpp,
- lang/qt/src/threadedjobmixin.h: Include functional.
-
-2017-02-07 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Don't rely on implicit include in t-verify.
- + commit 903bf16a416b1bf608b1e647937c9b06864b0141
- * lang/qt/tests/t-various.cpp: Include QTemporaryDir
-
-2017-02-06 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- doc: Document that gpgme_op_genkey() parms parameter is not XML.
- + commit ad22bee5387b1e9a40e8c822a081db3228bb9def
- * doc/gpgme.texi (GnupgKeyParms): document that input format is not
- true XML.
-
-2017-02-03 Werner Koch <wk@gnupg.org>
-
- core: Optimize fork/exec for *BSD and Solaris.
- + commit 51bd69f216a9e2930eeba4b5f6c20e952a381720
- * configure.ac (closefrom): Add to ac_check_funcs.
- * src/posix-io.c (_gpgme_io_spawn): Use closefrom.
-
- core: Fix possible deadlock due to get_max_fds.
- + commit 93a59070c699d569d1eac7ba22355fe3f5d10882
- * src/posix-io.c (get_max_fds): Do not use the Linux optimization.
-
- core: Minor cleanup of commit 195c735.
- + commit afc308598d1ddaf20d54b4eab30b959066a4e5e6
- * src/verify.c (parse_tofu_user): For cleanness use gpg_error ...
- (_gpgme_verify_status_handler): ... and gpg_err_code.
-
-2017-02-02 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Add test for tofu conflict.
- + commit 43160a39f27f6c3507447620666c85af00b3499c
- * lang/qt/tests/t-tofuinfo.cpp (TofuInfoTest::testTofuConflict): New.
-
- core: Handle multiple TOFU_USER lines in verify.
- + commit 195c73589232160f45d00f4901c9bb2b0162f0e5
- * src/verify.c (op_data_t): Add conflict_user_seen.
- (parse_tofu_user): Return ERR_DUP_VALUE for mutltiple TOFU_USERS.
- (_gpgme_verify_status_handler): Handle ERR_DUP_VALUE from
- parse_tofu_user to ignore the next TOFU_STATS.
-
-2017-02-02 Werner Koch <wk@gnupg.org>
-
- core: Replace all calls to *sprintf by gpgrt_*sprintf.
- + commit 15050ce5fce4ed815503db7c029abb38d08970d6
- * configure.ac (vasprintf): Remove check.
- * src/vasprintf.c: Remove file.
- * src/util.h (vasprintf, asprintf): Remove prototypes. Replace all
- calls to vasprintf and asprintf by gpgrt_vasprintf or gpgrt_asprintf.
- Also take care to use gpgrt_free on the returned value.
- * src/w32-util.c (_gpgme_get_gpgconf_path): Replace a gpgrt_asprintf
- by _gpgme_strconcat.
- (snprintf): New macro to use gpgrt_snprintf instead of the system's
- standard snprintf.
-
- core: Remove unused check for funopen/fopencookie.
- + commit 563420a88f8a4f561a2faea4d2b4a1c58b375fd8
- * configure.ac (funopen): Remove check.
- * src/funopen.c: Remove file.
-
- core: Un-deprecate gpgme_data_rewind.
- + commit d19bea52afe6efb66a46af6aa4d09928c5d05ee5
- * src/gpgme.h.in (gpgme_data_rewind): Un-deprecate.
- * src/data-compat.c (gpgme_data_rewind): Move to ...
- * src/data.c (gpgme_data_rewind): here.
-
- core: Move all deprecated stuff to the end of gpgme.h.
- + commit 9b7d81998b734fabeb4fbc697f08fc7795eaa90a
-
-
-2017-02-01 Andre Heinecke <aheinecke@intevation.de>
-
- core: Cleanup gpgme_key_unref frees.
- + commit 8ede86795a1d419c01b4910ec2fd1fb18b629452
- * src/key.c (gpgme_key_unref): Nowadays we assume free(NULL) is ok.
-
- core: Fix leakage of address for mail only uids.
- + commit b5075030bec9b21bf4e515bc1686df3fa43eced2
- * src/key.c (gpgme_key_unref): Always free address if set.
- (_gpgme_key_append_name): Remove memory optimization for address.
-
- core: Improve mailbox only uid handling.
- + commit a28d31fdb623f2ee30e8094d09f1a0d1ae446a9b
- * src/key.c (_gpgme_key_append_name): Set email and remove name
- for uid only keys.
-
-2017-01-31 Justus Winter <justus@g10code.com>
-
- qt: Increase timeout when waiting for signals.
- + commit ba594d85e35e63301755977234d3af88a167a215
- * lang/qt/tests/t-support.h (QSIGNALSPY_TIMEOUT): New macro.
- * lang/qt/tests/t-encrypt.cpp: Use the new macro as timeout when
- waiting for signals.
- * lang/qt/tests/t-keylist.cpp: Likewise.
- * lang/qt/tests/t-keylocate.cpp: Likewise.
- * lang/qt/tests/t-ownertrust.cpp: Likewise.
- * lang/qt/tests/t-wkspublish.cpp: Likewise.
-
-2017-01-31 Werner Koch <wk@gnupg.org>
-
- core: Add new context flag "redraw".
- + commit 752d3597ef02a95efd693373132bf1e246f0edb0
- * src/context.h (struct gpgme_context): New field 'redraw_suggested'.
- * src/op-support.c (_gpgme_op_reset): Clear REDRAW_SUGGESTED.
- * src/progress.c (_gpgme_progress_status_handler): Set REDRAW_SUGGESTED.
- * src/gpgme.c (gpgme_set_ctx_flag, gpgme_get_ctx_flag): Add "redraw".
- * tests/run-sign.c (main): Use it.
-
-2017-01-30 Andre Heinecke <aheinecke@intevation.de>
-
- tests: Reduce iterations / threads.
- + commit 7bd6ab4a91d43d7cbf5d347c0c12e0e4f9f7e3bf
- * tests/gpg/t-gpgconf.c (main): Reduce iterations to 10.
- * tests/gpg/t-thread-keylist-verify.c,
- tests/gpg/t-thread-keylist.c (THREAD_COUNT): Reduce to 10.
-
-2017-01-26 Andre Heinecke <aheinecke@intevation.de>
-
- python: Ensure quick-random is used if gpg is gpg2.
- + commit f3ca2c9ce9fd4a03e293065f10b92589a7e642d6
- * lang/python/tests/Makefile.am (gpg.conf): Configure
- agent-program accordingly.
-
-2017-01-25 Tobias Mueller <muelli@cryptobitch.de>
-
- python: default op_keylist_start parameters.
- + commit 9291ebaa4151a1f6c8c0601095ec45809b963383
- * lang/python/gpgme.i: Added gpgme_op_keylist_start with defaults
- * lang/python/tests/t-keylist.py: Added tests for default parameters
-
-2017-01-25 Andre Heinecke <aheinecke@intevation.de>
-
- tests: Use --debug-quick-random for tests.
- + commit a98951a30a6ae603ffac4ec8c5168aa6d1019933
- * tests/start-stop-agent: Don't autostart agent on --stop and
- running check. Use --debug-quick-random when starting.
-
-2017-01-23 Justus Winter <justus@g10code.com>
-
- w32: Fix closing file descriptors.
- + commit 6f02133bb07726afa6950e5b4685e75621276e60
- * src/w32-io.c (writer): Only stop once the buffer is drained.
- (destroy_writer): Wait for the writers buffer to be drained. This
- aligns '_gpgme_io_close's behavior with close(2) and fclose(3).
-
-2017-01-17 Andre Heinecke <aheinecke@intevation.de>
-
- tests: Add safeguards against nullptr deref.
- + commit ca69df8c8d3f044340aee2a118cc20d33cd600a1
- * t-gpgconf.c (main): Test some values before dereferencing them.
-
-2017-01-16 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Use QVERIFY instead of Q_ASSERT in conf test.
- + commit abfd241d1a1ae8e30e18b7c5e0658b8c54d89544
- * lang/qt/tests/t-config.cpp: Use QVERIFY instead of Q_ASSERT.
-
- qt: Add test for CryptoConfig.
- + commit 8aba08d1d0871f439fb7193adc4a2f43a81ee216
- * lang/qt/tests/t-config.cpp: New.
- * lang/qt/tests/Makefile.am: Update accordingly.
-
-2017-01-16 Justus Winter <justus@g10code.com>
-
- tests: Fix distcheck.
- + commit 92543da94cbf8e807b1b33070d273f995cdd5c62
- * tests/gpg/Makefile.am (CLEANFILES): Remove gpgconf backups.
-
- Fix changing options with gpgconf.
- + commit 0e242278dfaa64ce31a45b72f5fa0806a3dba898
- * src/engine-gpgconf.c (gpgconf_write): Connect a pipe to the child's
- stderr, and wait for it to be closed as an indication that gpgconf has
- exited. Also improve error handling.
-
-2017-01-12 Justus Winter <justus@g10code.com>
-
- tests: Improve the gpgconf test.
- + commit 186dcd3494eda7383de57a530fd15776410531a5
- * tests/gpg/t-gpgconf.c: Include support functions.
- (fail_if_err): Remove macro.
- (init_gpgme): Remove function.
- (lookup): New function.
- (main): Update some values and verify that the changes are applied.
- * tests/gpg/t-support.h (test): New assert-like macro.
-
-2017-01-12 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Add support for stringValueList in CryptoConf.
- + commit 9640dc58e498966b482dcded6990cf4b47c556ac
- * lang/qt/src/Makefile.am (qgpgme_sources): Add cryptoconfig.cpp
- * lang/qt/src/cryptoconfig.cpp: New.
- * lang/qt/src/cryptoconfig.h (CryptoConfigEntry::stringValueList):
- New.
- * lang/qt/src/qgpgmenewcryptoconfig.cpp
- (QGpgMENewCryptoConfigEntry::stringValueList): New.
- * lang/qt/src/qgpgmenewcryptoconfig.h: Update accordingly.
-
- qt: Don't use qstrdup in test passphrase cb.
- + commit a09ed3f26a1fab54079c37c49df5c440cc792f78
- * lang/qt/tests/t-support.h (TestPassphraseProvider::getPassphrase):
- Use gpgrt_asprintf instead of strdup.
-
-2017-01-11 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Clean up test dirs on failure.
- + commit 56926c9b5012e8135541a933af1d69c5a81f02b3
- * t-encrypt.cpp,
- t-keylist.cpp,
- t-keylocate.cpp,
- t-ownertrust.cpp,
- t-tofuinfo.cpp,
- t-various.cpp,
- t-verify.cpp,
- t-wkspublish.cpp: Use QVERIFY instead of Q_ASSERT
-
- qt: Add test for uid functions.
- + commit 9e643ab67168dfbd189ccc0bfed8fb59253ee79c
- * lang/qt/tests/t-various.cpp: New.
- * lang/qt/tests/Makefile.am: Update accordingly.
-
- cpp: Add revuid and adduid support.
- + commit e416f9961837039f259558edf41fccbc181ad128
- * lang/cpp/src/context.cpp
- (Context::revUid, Context::startRevUid),
- (Context::addUid, Context::startAddUid): New.
- * lang/cpp/src/context.h: Declare new functions.
- * lang/cpp/src/key.cpp (Key::UserID::revoke)
- (Key::addUid): Idomatic helpers.
- lang/cpp/src/key.h: Declare new functions.
- * NEWS: Update accordingly.
-
- Fix Qgpgme build for macos.
- + commit efe58fe011f195d98adb4f03b1e1068a26ba287b
- * lang/qt/src/dn.cpp: Include string.h
- (parse_dn_part): Use qstrdup.
- * lang/qt/tests/t-support.h (getPassphrase): Use qstrdup.
-
- Fix cmake configuration files for MacOS.
- + commit 2e661b9e1a9b50656a5c9646d7444a98477010c1
- * configure.ac: Set HAVE_MACOS_SYSTEM conditional.
- * lang/qt/src/Makefile.am,
- lang/cpp/src/Makefile.am,
- lang/qt/src/QGpgmeConfig.cmake.in.in,
- lang/cpp/src/GpgmeConfig.cmake.in.in: Use libsuffix again to
- distinguish between macos .dylib
-
-2017-01-03 Justus Winter <justus@g10code.com>
-
- python: Improve compatibility with Scheme tests.
- + commit b14419f68b3aaa90025e0e97151de7c3da7806fb
- * lang/python/tests/run-tests.py: Add stub --parallel option.
-
- python: Add a switch '--quiet' to the test runner.
- + commit d0e91d28f63b74e53673902e675be8a54b6b90d3
- * lang/python/tests/run-tests.py: Add and honor a switch '--quiet'.
- This way we can use this script to run Python tests one by one without
- the noise, and the script will setup the necessary environment for us.
-
-2017-01-02 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Update config sync doc / comment.
- + commit ececfd5de81f1851943be7b284b672d5b02aceb4
- * lang/qt/src/cryptoconfig.h (CryptoConfig::sync): Document
- that runtime option is always set.
- * lang/qt/Src/qgpgmenewcryptoconfig.cpp
- (QGpgMENewCryptoConfigComponent::sync): Remove outdated comment
- and warn on error.
-
- core: Always use runtime for gpgconf changes.
- + commit 7103315829847163f1c6f52cad25d1ddb33358f0
- * src/engine-gpgconf.c (gpgconf_write): Add --runtime.
- * src/gpgme.h.in (gpgme_conf_opt_change): Document this
- behavior.
-
-2017-01-01 Ben Kibbey <bjk@luxsci.net>
-
- Fix gpg_addkey() to work with GPGME_CREATE_NOPASSWD as well.
- + commit a4b9f1a2b404fd8627d5ac567617510abd55d980
- * src/engine-gpg.c (gpg_addkey): Pass --batch to gpg when
- GPGME_CREATE_NOPASSWD is set to fix pinentry without loopback mode.
-
-2016-12-27 Ben Kibbey <bjk@luxsci.net>
-
- Fix GPGME_CREATE_NOPASSWD without pinentry loopback.
- + commit d83b8f0dc84d6cf7fe2e091bd1b103ceedfa3d6c
- * src/engine-gpg.c(gpg_createkey): Pass --batch to gpg when
- GPGME_CREATE_NOPASSWD is set.
-
-2016-12-19 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- Qt: Make sure extended grep is used with '|'.
- + commit 211844f049d714cd4d5aab96347705cb0c209c5d
- * m4/qt.m4: Use grep -E when using the alternation character.
-
-2016-12-16 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Ensure that hasSecret is correct after update.
- + commit da5343a9d2c8c0ca6431162aac4bd5c73b4ae6dd
- * lang/cpp/src/key.cpp (Key::update): Check for
- a secret key first before listing public keys.
-
-2016-12-15 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Fix addrSpec for keys without email.
- + commit 85e05537e15346896a271d3f62bead9dd7e3f180
- * lang/cpp/src/key.cpp (UserID::addrSpec): Use uid->address instead
- of normalizing again.
- (&operator<<(std::ostream &, const UserID &): Print it.
-
- cpp: Fix update of partial key in verifyresult.
- + commit 5673f3e54af535155893290a685b3afb44c7f58d
- * lang/cpp/src/verificationresult.cpp
- (Signature::key(bool,bool)): Don't update the returned copy
- but the actual key of the signature.
-
-2016-12-07 Andre Heinecke <aheinecke@intevation.de>
-
- Clarify what "checking on bit" means.
- + commit 7880335273382f05cbbe38aa965a566c4127ba6a
- * doc/gpgme.texi (gpgme_sigsum_t summary): Clarify what "you
- can check one bit means"
-
-2016-12-05 Tobias Mueller <muelli@cryptobitch.de>
-
- python: Try to be more helpful when given a string to encrypt().
- + commit 05896c210f7fa9ce7b97784a75e49dc4489e9252
- * lang/python/helpers.c (_gpg_obj2gpgme_data_t): Extended error
- message.
- * lang/python/tests/t-encrypt.py: Test for "encode" in error message.
-
- python: Define a macro for wrapping fragile result objects.
- + commit fb7f4cb973abc9f5eb05eb240607be35c1be986c
- * lang/python/gpgme.i (wrapresult): New Macro.
-
-2016-12-01 Tobias Mueller <muelli@cryptobitch.de>
-
- python: Check "buffer" when writing to sys.stdout for python2 compat.
- + commit ae21d2705fc46725e1f9af1651b68d16155d1501
- * lang/python/tests/support.py (print_data): Add check for buffer.
-
- python: Make Context have a repr method.
- + commit 154389f2a5e4c13081cf0624222aad29ee480b56
- * lang/python/gpg/core.py (Context.__repr__): New function.
-
- python: Make Results have a nicer __repr__.
- + commit db2f6c1ca3d2ef228f4ca6653d594537622c8588
- * lang/python/gpg/results.py (Result.__str__): Renamed to '__repr__'
- ...
- * lang/python/gpg/results.py (Result.__repr__): ... and added fields.
-
-2016-11-25 Justus Winter <justus@g10code.com>
-
- python: Fix removing the TOFU database.
- + commit fd4d476214ae06e33f4a6dac534d3deca5cc6cd3
- * lang/python/Makefile.am (CLEANFILES): Move 'tofu.db'...
- * lang/python/tests/Makefile.am (CLEANFILES): ... here.
-
- tests: Remove tofu.db.
- + commit 9b22f82afc5518961e4bea1fc516b79800e379a2
- * lang/python/Makefile.am (CLEANFILES): Add 'tofu.db'.
- * tests/gpg/Makefile.am (CLEANFILES): Likewise.
-
-2016-11-17 Heiko Becker <heirecka@exherbo.org>
-
- Remove a forgotten instance of @libsuffix@
- + commit 572c1aac107125ce62230251713349348373db5a
- * lang/cpp/src/GpgmeppConfig.cmake.in.in: Remove a forgotten
- instance of @libsuffix@.
-
-2016-11-16 Werner Koch <wk@gnupg.org>
-
- Release 1.8.0.
- + commit f06220b691e9711afdabaa19886244ae7724eed5
- * configure.ac: Set version to 1.8.0. Set LT version C28/A17/RO.
- Set CPP LT version to C9/A3/R0. Set Qt LT version to C8/A1/R0.
-
- core: Do not leak the override session key to ps(1).
- + commit 9fc92a15bd0a30437a39d0eb28b6f40edc22e6e8
- * src/engine-gpg.c (struct engine_gpg): New field
- override_session_key.
- (gpg_release): Free that field.
- (gpg_decrypt): With gnupg 2.1.16 use --override-session-key-fd.
-
- * tests/run-decrypt.c (main): Fix setting over the override key.
-
-2016-11-16 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- doc,tests: Require use of ctx_flag before use of session_key.
- + commit 573064742145aa5f9bf04baa88af918c0c4d5e12
- * doc/gpgme.texi: Document requirements of verifying that it is OK to
- use session_key.
- * tests/run-decrypt.c: Ensure that we fail if we're unable to access
- the session key, so that we do not violate the guidance above.
-
-
- Changed the description
-
- -@code{gpgme_set_ctx_flag (ctx, "export-session-key")} returns
- -@code{GPG_ERR_NO_ERROR} or @code{gpgme_get_ctx_flag (ctx,
- -"export-session-key")} returns @code{"1"}.
- +@code{gpgme_set_ctx_flag (ctx, "export-session-key")} returns success
- +or @code{gpgme_get_ctx_flag (ctx, "export-session-key")} returns true
- +(non-empty string).
-
- to get gpgme_get_ctx_flag for boolean values in sync with its own
- description.
-
- Note that I don't agree with the above suggestion but it does not
- really harm to have it in the man page.
-
-2016-11-15 Andre Heinecke <aheinecke@intevation.de>
-
- qt, cpp: Add cmake config files for w32.
- + commit b2c07bd47bd608afa5cc819b60a7b5bb8c9dd96a
- * lang/cpp/src/GpgmeppConfig-w32.cmake.in.in
- lang/qt/src/QGpgmeConfig-w32.cmake.in.in: New.
- * lang/cpp/src/GpgmeppConfig.cmake.in.in,
- lang/qt/src/QGpgmeConfig.cmake.in.in: Remove libsuffix handling.
- * lang/cpp/src/Makefile.am,
- lang/qt/src/Makefile.am: Create / install w32 config files.
- * configure.ac: Configure them.
-
- qt: Use new style connect in th..mixin.
- + commit 45abe6d142e314ba7099ad80b6365af171b06fec
- * lang/qt/src/threadedjobmixin.h
- (ThreadedJobMixin::lateInitialization): Use new style connect.
-
-2016-11-15 Werner Koch <wk@gnupg.org>
-
- core: Implement context flag "override-session-key".
- + commit 7659d42468b604db2936b021425683f407eba4a7
- * src/gpgme.c (gpgme_set_ctx_flag): Add flags "export-session-key" and
- "override-session-key".
- (gpgme_get_ctx_flag): Ditto.
- (gpgme_set_export_session_keys): Remove.
- (gpgme_get_export_session_keys): Remove.
- * src/gpgme.def, src/libgpgme.vers: Remove them.
- * src/context.h (struct gpgme_context): Add field
- override_session_key.
- * src/decrypt-verify.c (decrypt_verify_start): Pass
- override_session_key value to the engine.
- * src/decrypt.c (decrypt_start): Ditto.
- * src/engine.c (_gpgme_engine_op_decrypt): Ditto.
- (_gpgme_engine_op_decrypt_verify): Ditto.
- * src/engine-backend.h (struct engine_ops): Extend DECRYPT and
- DECRYPT_VERIFY_START with override_session_key.
- * src/engine-uiserver.c (_uiserver_decrypt): Add stub arg
- override_session_key.
- (uiserver_decrypt): Ditto.
- (uiserver_decrypt_verify): Ditto.
- * src/engine-gpgsm.c (gpgsm_decrypt): Ditto.
- * src/engine-gpg.c (gpg_decrypt): Add arg override_session_key and set
- corresponding gpg option.
-
- * tests/run-decrypt.c (print_result): Print the session key if
- available.
- (main): Add options --export-session-key and --override-session-key.
-
- core: Add public function gpgme_get_ctx_flag.
- + commit 3234b1bf1d6939772677d64f6c1e1820ec98e3cd
- * src/gpgme.h.in (gpgme_get_ctx_flag): New.
- * src/gpgme.c (gpgme_set_ctx_flag): Move down the file and add a trace
- statement.
- (gpgme_get_ctx_flag): New.
- * src/gpgme.def, src/libgpgme.vers: Add new interface.
-
-2016-11-15 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- core: Enable extraction of session keys.
- + commit cad1210fb8a7402cb29e607f8f9680005314120d
- * src/gpgme.c (gpgme_set_export_session_keys): New function.
- (gpgme_get_export_session_keys): New function.
- * src/gpgme.h.in (struct _gpgme_op_decrypt_result): Add session_key
- member.
- (gpgme_{set,get}_export_session_keys): Declare new functions.
- * src/libgpgme.vers, src/gpgme.def: Export new functions in shared
- object.
- * src/engine.h: (_gpgme_engine_op_decrypt) Add export_session_key
- parameter.
- (_gpgme_engine_op_decrypt_verify): Add export_session_key parameter.
- * src/engine-backend.h: (struct engine_ops): Change function
- pointer declarations to match.
- * src/context.h (struct gpgme_context): Add export_session_keys member.
- * src/decrypt.c (release_op_data): Free result.session_key.
- (_gpgme_decrypt_status_handler): Store a copy of the exported session
- key.
- (decrypt_start): Pass export_session_keys from the context.
- * src/decrypt-verify.c (decrypt_verify_start): Pass
- export_session_keys from context.
- * src/engine.c (_gpgme_engine_op_decrypt): Pass through
- export_session_key flag.
- (_gpgme_engine_op_decrypt_verify): Pass through export_session_key
- flag.
- * src/engine-gpg.c (gpg_decrypt): If export_session_key is set, add
- --export-session-key to argument list.
- * src/engine-gpgsm.c (gpgsm_decrypt): Ignore export_session_key for
- now, since gpgsm offers no such mechanism.
- * src/engine-uiserver.c (_uiserver_decrypt): If export_session_key is
- set, add --export-session-key flag to cmd.
- * doc/gpgme.texi: Document new functions and session_key member of
- decrypt_result_t.
- * doc/uiserver.texi: Add --export-session-key flag to DECRYPT command.
-
-2016-11-14 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Add API to get the context for a Job.
- + commit 9451faa2ee333904cff59f92ab62918e13ab4b87
- * lang/qt/src/job.cpp,
- lang/qt/src/job.h (Job::context): New.
- * lang/qt/src/threadedjobmixin.cpp
- (ThreadedJobMixin::~ThreadedJobMixin): New. Unregister context.
- (ThreadedJobMixin::lateInitialization): Register context.
- * NEWS: Update for cpp and qt.
-
- cpp: Add get / set Sender API.
- + commit d09a84eaf1e4f8c6c2e462995fa15c1a5690a6ce
- * cpp/src/context.cpp, cpp/src/context.h (Context::setSender),
- (Context::getSender): Add simple wrappers.
-
- qt, cpp: Enable dll build for windows.
- + commit f3790ddf56558fb0a08af95fdbae979cd6589aad
- * lang/cpp/src/Makefile.am,
- lang/qt/src/Makefile.am: Add -no-undefined to LDFLAGS.
-
- w32: Fix build of w32-glib.
- + commit b91c383386fe9eadd90afdb9bb1f8ec6c528173b
- * src/Makefile.am (main_sources): Remove system_components_not_extra.
- (libgpgme_la_SOURCES): Add system_components_not_extra.
- (libgpgme_glib_la_SOURCES): Remove duplicated ath files.
-
-2016-11-11 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- doc: Correct deftypefun for gpgme_op_decrypt_verify_start.
- + commit 16a30205064914eef578d84d07141b5d51d82838
- * doc/gpgme.texi: Documentationabout gpgme_op_decrypt_verify_start was
- stored under the name gpgme_op_decrypt_verify instead.
-
- doc: Correct text about gpgme_cancel_async.
- + commit d50bdb269e86db36a443958e3bfc6816a44d468e
- * doc/gpgme.texi: Documentation about gpgme_cancel_async should refer
- to the correct name.
-
- core: Non-zero values should set _armor, _textmode, and _online.
- + commit da035768bd9a880becee5d0d553dfe12299f96eb
- * src/gpgme.c (gpgme_set_armor, gpgme_set_textmode,
- gpgme_set_offline): Ensure that non-zero values actually set the
- appropriate internal bit.
-
-2016-11-11 Alon Bar-Lev <alon.barlev@gmail.com>
-
- tests,python: Atomic directory creation.
- + commit 41d8c7e51a8989be633b9ada124c58a01fae7d54
- * lang/python/tests/Makefile.am: Use MIDIR_P.
- * tests/gpg/Makefile.am: Ditto.
- * tests/gpgsm/Makefile.am: Ditto.
-
-2016-11-10 Werner Koch <wk@gnupg.org>
-
- core: Use better error code when using select with a too high fd.
- + commit 6e57379c8e37c0863f7d12819a5a7d0781bd76d2
- * src/posix-io.c (_gpgme_io_select): Return EMFILE instead of EBADF.
-
-2016-11-10 Andre Heinecke <aheinecke@intevation.de>
-
- tests: Reduce thread count in new thread tests.
- + commit ddd0a3cf90ac4b0a27ea610ebd7b9b8016ff43c4
- * gpg/t-thread-keylist-verify.c,
- gpg/t-thread-keylist.c: Reduce threads to 100
-
-2016-11-10 Werner Koch <wk@gnupg.org>
-
- core: Detect unreadable keyrings.
- + commit 2a39bd6c30d21c43c86645a7908ce6c57dad5e20
- * src/keylist.c (op_data_t): Add field keydb_search_err.
- (keylist_status_handler): Parse STATUS_ERROR into that var.
- (gpgme_op_keylist_next): Use that err instead of GPG_ERR_EOF.
-
-2016-11-10 Andre Heinecke <aheinecke@intevation.de>
-
- tests: Fix additional memleaks in thread tests.
- + commit d0030efb45ec8436dd84a9623d2f66b80c6b9e10
- * tests/gpg/t-thread-keylist-verify.c (start_verify): Release
- data.
- (start_keylist): Unref keys.
- * tests/gpg/t-thread-keylist.c (start_keylist): Unref keys.
-
- tests: Improve new thread tests.
- + commit 4d5174e4a83dcd524f8085f6646145f81b50a02a
- * tests/gpg/t-thread-keylist-verify.c (start_keylist): Mark
- arg as unused. Release context.
- (start_verify): Ditto.
- (main): Mark args as unused.
- * tests/gpg/t-thread-keylist.c (start_keylist): Mark
- arg as unused. Release context.
- (main): Mark args as unused.
-
- core: Use gpgrt locking for thread safeness.
- + commit 09b64554328445e99a8cc78fc34ea49c2ea2e7f9
- * configure.ac: Require libgpg-error 1.17. No longer
- check for pthread.
- * doc/gpgme.texi: Document removed neccessity for thread
- safe gpgme flavours.
- * src/sema.h (DEFINE_GLOBAL_LOCK),
- (DEFINE_STATIC_LOCK, INIT_LOCK, DECLARE_LOCK)
- (DESTROY_LOCK, LOCK, UNLOCK): Change to gpgrt equivalents.
- * src/posix-sema.c, src/w32-sema.c: Removed.
- * src/Makefile.am: Remove libpthread and
- Update accordingly.
- * src/ath.c, src/ath.h (ath_mutex_init)
- (ath_mutex_destroy, ath_mutex_lock, ath_mutex_unlock): Removed.
- * src/ath.h (ATH_MUTEX_INITIALIZER): Removed.
- * src/version.c (do_subsystem_inits): sema_subsystem_init is
- no longer required.
- * tests/gpg/Makefile.am: Add new threading tests.
- (t_thread1_LDADD, t_cancel_LDADD):
- Use just gpgme.
- * tests/gpg/t-thread-keylist-verify.c,
- tests/gpg/t-thread-keylist.c: New.
- * src/gpgme-config.in: Use -lgpgme for thread-model pthread.
-
-2016-11-09 Justus Winter <justus@g10code.com>
-
- python: Require at least GPGME 1.7 for out-of-tree builds.
- + commit f1f341062e24724e26928d893dd5769d3ccf5fa2
- * lang/python/setup.py.in: Bump required version to 1.7.
-
-2016-11-09 Werner Koch <wk@gnupg.org>
-
- w32: Better protect the IO-system's fd_table.
- + commit 10f2e1c30be651e74a03f4563a9f212d7416adb3
- * src/w32-io.c (fd_table_lock): New.
- (new_fd): Lock allocation of a new slot.
- (release_fd): Lock deallocation of a slot.
-
-2016-11-04 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add API for swdb queries.
- + commit 3509cf2f9846360848b6c08d36cbca18373c935e
- * lang/cpp/src/swdbresult.cpp,
- lang/cpp/src/swdbresult.h (SwdbResult): New.
- * lang/cpp/src/Makefile.am: Update accordingly.
-
- cpp: Add more EngineInfo::Version ctors.
- + commit 512de91f9a8da8f491e09653eb4b5bdd0a027198
- * lang/cpp/src/engineinfo.h
- (EngineInfo::Version::Version(const char*)),
- (EngineInfo::Version::Version()): New.
-
- cpp: Don't include gpgme.h in tofuinfo header.
- + commit 4d3f33d0e9d960df2c34fb4d215987ab4d36111c
- * lang/cpp/src/tofuinfo.h: Don't include gpgme.h
-
- cpp: Extend gpgmefw for tofuinfo and swdb query.
- + commit 23979b9be5a6028e3e9cafc3aff632bc720b81f2
- * lang/cpp/src/gpgmefw.h (gpgme_tofu_info_t)
- (gpgme_query_swdb_result_t): New forwards.
-
-2016-11-04 Werner Koch <wk@gnupg.org>
-
- w32: Fix locating gpgconf on 64 bit systems.
- + commit df08a0ca3f029b06b7e3a6bd63330df5cb96585a
- * src/w32-util.c (find_program_at_standard_place): Use access to check
- whether the binary is at CSIDL_PROGRAM_FILES before testing
- CSIDL_PROGRAM_FILESX86.
-
-2016-11-03 Werner Koch <wk@gnupg.org>
-
- core: Add gpgme_op_query_swdb and helper.
- + commit aad94cb7c313d4501bed748f48830cbb93c67e20
- * src/gpgme.h.in (gpgme_query_swdb_result_t): New.
- (gpgme_op_query_swdb): New.
- (gpgme_op_query_swdb_result): New.
- * src/libgpgme.vers, src/gpgme.def: Add the two new functions.
- * src/queryswdb.c: New.
- * src/Makefile.am (main_sources): Add new file.
- * src/context.h (OPDATA_QUERY_SWDB): New.
- * src/engine-backend.h (struct engine_ops): Add field 'query_swdb'.
- Adjust all initializer.
- * src/engine.c (_gpgme_engine_op_query_swdb): New.
- * src/engine-gpgconf.c (parse_swdb_line): New.
- (gpgconf_query_swdb): New.
- (_gpgme_engine_ops_gpgconf): Register that function.
-
- * src/util.h (GPG_ERR_TOO_OLD): Define for older libgpg-error.
- (GPG_ERR_ENGINE_TOO_OLD): Ditto.
-
- * tests/run-swdb.c: New.
- * tests/Makefile.am (noinst_PROGRAMS): Add new debug tool.
-
-2016-11-03 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Change license of export / version header.
- + commit 34a4e8017be452e8ead6b9c2da84be1ec7929cae
- * lang/qt/src/qgpgme_export.h,
- lang/qt/src/qgpgme_version.h: Change license to GPLv2+
-
-2016-11-03 Werner Koch <wk@gnupg.org>
-
- core: Make use of --homedir in gpgconf.
- + commit 0c2038c0043c1e79547b55e79c3d3e267dae801c
- * src/engine-gpgconf.c (struct engine_gpgconf): Add field 'version'.
- (have_gpgconf_version): New.
- (gpgconf_release): Free VERSION.
- (gpgconf_new): Set VERSION.
- (gpgconf_read, gpgconf_write): Use --homedir with recent gnupg.
-
-2016-11-02 Andras Mantia <andras@kdab.com>
-
- qt: Fix build with g++ 4.8.x.
- + commit b4658f6a1110bb0b54bd5dfc9df8e8b390e38d61
- * lang/qt/src/defaultkeygenerationjob.cpp
- (DefaultKeyGenerationJob::start): Explicitly connect pointer
- in the QPointer.
-
-2016-11-02 Andre Heinecke <aheinecke@intevation.de>
-
- qt, cpp: Fix versioning in cmake config and header.
- + commit bf9aa0ccf7b0165aa3a1af2bdb18daca7c02ce74
- * configure.ac (VERSION_MAJOR, VERSION_MINOR, VERSION_MICRO): New
- subst variables for the version header.
- * lang/cpp/src/GpgmeppConfigVersion.cmake.in,
- lang/cpp/src/gpgmepp_version.h.in,
- lang/qt/src/QGpgmeConfigVersion.cmake.in,
- lang/qt/src/qgpgme_version.h.in: Use new variables.
-
- qt: Install cmake config into qgpgme subdir.
- + commit b5c4d56cfdcafade3467be100fca6f1c89ecab73
- * lang/qt/src/Makefile.am: Install cmake config file in qgpgme subdir.
-
- qt: Require gpgmepp from cmake config script.
- + commit 4149194d2e2f2f4d142926ba4d4efbd336b543f2
- * lang/qt/src/QGpgmeConfig.cmake.in.in: Require cpp.
-
- qt, cpp: Add all generated files to cleanfiles.
- + commit 8486f213423311174ebff5cba74127cbd9bb3c2a
- * cpp/src/Makefile.am (CLEANFILES),
- qt/src/Makefile.am (CLEANFILES): Add all generated files
- to cleanfiles.
-
-2016-11-01 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Add Distinguished Name parser from libkleo.
- + commit 627c5deed84b4481710b6c0de06b26e886679bbe
- * lang/qt/src/dn.cpp (DN, DN::Attribute): New public API.
- * lang/qt/src/dn.h: New.
- * lang/qt/src/Makefile.am: Update accordingly.
-
- qt, cpp: Install version headers in subdirs.
- + commit 567123de21247cab05762d799400739a12eb67ae
- * lang/cpp/src/Makefile.am,
- lang/qt/src/Makefile.am: Install version headers in include
- subdirs.
-
-2016-10-31 Justus Winter <justus@g10code.com>
-
- python: Use vanity modules for constants in tests and examples.
- + commit 4b3264345084a0c9bf9f97fb233df700d7608e66
- * lang/python/gpg/constants/sig/notation.py: New file.
- * lang/python/gpg/constants/sig/__init__.py: Import new module.
-
- * lang/python/examples/assuan.py: Use more specific module for
- constants, e.g. 'protocol.ASSUAN' instead of 'PROTOCOL_ASSUAN'.
- * lang/python/examples/testCMSgetkey.py: Likewise.
- * lang/python/tests/initial.py: Likewise.
- * lang/python/tests/t-callbacks.py: Likewise.
- * lang/python/tests/t-decrypt-verify.py: Likewise.
- * lang/python/tests/t-decrypt.py: Likewise.
- * lang/python/tests/t-edit.py: Likewise.
- * lang/python/tests/t-encrypt-large.py: Likewise.
- * lang/python/tests/t-encrypt-sign.py: Likewise.
- * lang/python/tests/t-encrypt-sym.py: Likewise.
- * lang/python/tests/t-encrypt.py: Likewise.
- * lang/python/tests/t-export.py: Likewise.
- * lang/python/tests/t-file-name.py: Likewise.
- * lang/python/tests/t-idiomatic.py: Likewise.
- * lang/python/tests/t-import.py: Likewise.
- * lang/python/tests/t-keylist.py: Likewise.
- * lang/python/tests/t-protocol-assuan.py: Likewise.
- * lang/python/tests/t-sig-notation.py: Likewise.
- * lang/python/tests/t-sign.py: Likewise.
- * lang/python/tests/t-signers.py: Likewise.
- * lang/python/tests/t-trustlist.py: Likewise.
- * lang/python/tests/t-verify.py: Likewise.
- * lang/python/tests/t-wait.py: Likewise.
-
- python: Import the topmost module in tests and examples.
- + commit 20dc37a0e7e1531b0e568a6ec29b1c2d18de59c3
- * examples/verifydetails.py: Only import the topmost module 'gpg' and
- update the code accordingly.
- * tests/support.py: Likewise.
- * tests/t-callbacks.py: Likewise.
- * tests/t-data.py: Likewise.
- * tests/t-decrypt-verify.py: Likewise.
- * tests/t-decrypt.py: Likewise.
- * tests/t-edit.py: Likewise.
- * tests/t-encrypt-large.py: Likewise.
- * tests/t-encrypt-sign.py: Likewise.
- * tests/t-encrypt-sym.py: Likewise.
- * tests/t-encrypt.py: Likewise.
- * tests/t-export.py: Likewise.
- * tests/t-file-name.py: Likewise.
- * tests/t-import.py: Likewise.
- * tests/t-keylist.py: Likewise.
- * tests/t-sig-notation.py: Likewise.
- * tests/t-sign.py: Likewise.
- * tests/t-signers.py: Likewise.
- * tests/t-trustlist.py: Likewise.
- * tests/t-verify.py: Likewise.
- * tests/t-wait.py: Likewise.
- * tests/t-wrapper.py: Likewise.
-
- python: Improve constants module.
- + commit 70b7064e5c4f3eff9c296c00156724bc0cdaa64f
- * lang/python/gpg/constants/__init__.py: Import all modules below
- 'constants/'. Interface hygiene: delete 'util'.
- * lang/python/gpg/constants/data/encoding.py: Delete 'util'.
- * lang/python/gpg/constants/event.py: Likewise.
- * lang/python/gpg/constants/import.py: Likewise.
- * lang/python/gpg/constants/keylist/mode.py: Likewise.
- * lang/python/gpg/constants/md.py: Likewise.
- * lang/python/gpg/constants/pk.py: Likewise.
- * lang/python/gpg/constants/protocol.py: Likewise.
- * lang/python/gpg/constants/sig/mode.py: Likewise.
- * lang/python/gpg/constants/sigsum.py: Likewise.
- * lang/python/gpg/constants/validity.py: Likewise.
- * lang/python/gpg/errors.py: Likewise.
-
-2016-10-31 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- python: Rename Python module from PyME to gpg.
- + commit 2fac017618a76882605125b05ff1f7393fe99860
- This follows weeks of discussion on the gnupg-devel mailing list.
- Hopefully it will make it easier for people using Python to use GnuPG
- in the future.
-
-2016-10-25 Werner Koch <wk@gnupg.org>
-
- core: New API functions gpgme_set_sender, gpgme_get_sender.
- + commit b8159eadb5636cd9d93ee60c41e75d5978927870
- * src/context.h (struct gpgme_context): Add field 'sender'.
- * src/gpgme.c: Include mbox-util.h.
- (gpgme_release): Free SENDER.
- (gpgme_set_sender): New.
- (gpgme_get_sender): New.
- * src/gpgme.def, src/libgpgme.vers: Add new functions.
-
- * src/engine-gpg.c (append_args_from_sender): New.
- (gpg_encrypt_sign, gpg_sign): Call append_args_from_sender.
- (gpg_verify): Add arg CTX. Call append_args_from_sender/
- * src/engine-gpgsm.c (gpgsm_verify): Add dummy arg CTX.
- * src/engine-uiserver.c (uiserver_verify): Ditto.
- * src/engine.c (_gpgme_engine_op_verify): Add arg CTX.
- * src/verify.c (verify_start): Pass CTX to engine function.
-
- * tests/gpg/t-verify.c (main): Add some checks for new functions.
- * tests/run-sign.c (main): Add option --sender.
- * tests/run-verify.c (main): Ditto.
-
-2016-10-19 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Improve WKSPublishJob apidoc.
- + commit 26cbba3c9cb04a68b95f3a6000ac9bd93fe76dd7
- * lang/qt/src/wkspublishjob.h: Improve doc.
-
-2016-10-18 Werner Koch <wk@gnupg.org>
-
- Release 1.7.1.
- + commit 2c490cdb3e50761c498357982445ebb01f18dc1e
- * configure.ac: Set LT version to C27/A16/R0. Note that the LT
- versions for cpp and Qt have already been updated.
-
-2016-10-14 Werner Koch <wk@gnupg.org>
-
- tests: Make t-cancel more portable.
- + commit 05e8e1260baa5cbc6f1d6e387e642c1f6c188d44
- * tests/gpg/t-cancel.c: Include sys/time.h and protect sys/select.h.
-
- python: Call ln(1) in a portable way.
- + commit c6cab5a2bd6e7ed226c6c3f0b78b3f48b47db74c
- * lang/python/Makefile.am: Specify target dir for ln.
-
-2016-10-14 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Fix init of string from null.
- + commit 1e8c34a9192956bb2fe96a7a6a76ff59de8d1c0c
- * lang/cpp/src/key.cpp (UserID::addrSpecFromString): Check return
- value before creating the string.
-
-2016-10-13 Justus Winter <justus@g10code.com>
-
- python: Make 'get_key' more idiomatic.
- + commit f526d0e22e8b881ccbca66b46a0e1b68bbc4cd6b
- * lang/python/pyme/core.py (Context.get_key): Raise errors.KeyNotFound
- if the key is not found. This error is both a KeyError for idiomatic
- error handling as well as a GPGMEError so we don't break existing
- code.
- * lang/python/pyme/errors.py (KeyNotFound): New class.
- * lang/python/tests/support.py (no_such_key): New variable.
- * lang/python/tests/t-keylist.py: Test the new behavior.
-
- python: Return public keys by default.
- + commit 1e6073ffa98db2c265adbcf0dbbe70c067a910f0
- * lang/python/pyme/core.py (Core.get_key): Return public keys by
- default, improve docstring.
- * lang/python/examples/testCMSgetkey.py: Update example.
- * lang/python/examples/verifydetails.py: Likewise.
-
- python: Fix example.
- + commit cabd4c74e52c8983d624b6877cddc7f8912eff04
- * lang/python/examples/inter-edit.py: Fix example.
-
-2016-10-13 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Fix version number.
- + commit 56302e7bb6a694a7c570f389f9a7883efdfdaf42
- * configure.ac (LIBGPGMEPP_LT_CURRENT): Bump.
-
- qt, cpp: Fix permissions of Config files.
- + commit a274c7590aa0e38d682d5177904983632f471cb0
- * lang/cpp/src/Makefile.am,
- lang/qt/src/Makefile.am: Do not install config files as executable.
-
- qt: Install SpecialJob.
- + commit 2538c12fa0728f4113f83f69f8c8ec9efb163872
- * lang/qt/src/Makefile.am: Install SpecialJob
- * NEWS: mention it.
-
- qt, cpp: Fix expected targets in Config files.
- + commit a3cf30f89418c8a6bc9456533d95ba7fc2a33a4c
- * lang/cpp/src/GpgmeppConfig.cmake.in.in,
- lang/qt/src/QGpgmeConfig.cmake.in.in: Remove KF5 variants.
-
-2016-10-11 Daniel Vrátil <dvratil@kde.org>
-
- qt: Add missing implementation of MultiDeleteJob.
- + commit e5a35af5573651b96a90ef4a537b040333595472
- * lang/qt/src/multideletejob.h: Fix include, cryptobackend.h is now
- called protocol.h
- * lang/qt/src/multideletejob.cpp: New file.
- * lang/qt/src/Makefile.am: Add multideletejob.cpp.
-
- qt: Install abstractimportjob.h.
- + commit ce7385caabb57e5435695cc912acffe2815770b7
- * lang/cpp/src/Makefile.am: Install abstractimportjob.h since it's
- included from importjob.h
-
-2016-10-11 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Add API for gpgme_addrspec_from_uid.
- + commit 54f94b14e2bb9b38ffd89f509406bfbd012da632
- * lang/cpp/src/key.cpp (UserID::addrSpecFromString): New static
- function to expose addrspec from uid.
- (UserID::addrSpec): New. Get addrSpec from Userid.
- * NEWS: Update accordingly.
-
-2016-10-10 Andre Heinecke <aheinecke@intevation.de>
-
- Add NEWS for cpp and qt, bump cpp version.
- + commit e7ceb83a5969581f5e1b0b6a69d18a93b594f6d4
- * NEWS: Add entries for cpp and qt changes.
- * configure.ac: Bump cpp version because of added API.
-
- Add convenience function to get key from sig.
- + commit b6b820bff14a9aa8fa67755b246c90062ffdba14
- * lang/cpp/src/verificationresult.cpp (Signature::key(bool, bool)):
- New. Can be used to search / update the key associcated with this
- signature.
-
- cpp: Return null key if the signature had no key.
- + commit 34e9dfee81958160f6604849b63369ae4de67417
- * lang/cpp/src/verificationresult.cpp (Private): Add null key
- to list when there is no key associated with the signature.
-
- qt: Add simple verify test.
- + commit f131a5e72b0881cafcc3b0a91da8f050af2684a6
- * lang/qt/tests/t-verify.cpp: New. Small test if a signature
- returns a key with fingerprint.
- * lang/qt/tests/Makefile.am: Add new test.
-
- core: Fix w32 crash in find_program_in_dir.
- + commit 098a2da15b1b46b145add623dec0488abd39bd74
- * src/w32-util.c (find_program_in_dir): Fix call to _gpgme_strconcat.
-
-2016-10-08 Werner Koch <wk@gnupg.org>
-
- core: New helper function gpgme_addrspec_from_uid.
- + commit 0ea2ff67900c243fff9f689658dcb23d1c0961cd
- * src/gpgme.h.in: Add gpgme_addrspec_from_uid.
- * src/gpgme.def, src/libgpgme.vers: Ditto.
- * src/mbox-util.c (gpgme_addrspec_from_uid): New.
-
-2016-10-06 Justus Winter <justus@g10code.com>
-
- Add missing includes.
- + commit 857592041b8355cd58a7068c9f2446cf8dc0968f
- * lang/cpp/src/key.cpp: Include <strings.h> for 'strcasecmp'.
- * tests/gpg/t-cancel.c: Include <sys/select.h> for 'fd_set' and
- friends.
-
-2016-10-05 Andre Heinecke <aheinecke@intevation.de>
-
- cpp: Bump Revision.
- + commit 8033cff441e9ea185531290273ec343f3402703c
- * configure.ac (LIBGPGMEPP_LT_REVISION): Bump revision.
-
- qt: Fix spelling error in WKSPublishJob.
- + commit 88c7e84ede4b6017cac3a396e8c87c2bd3a2bf58
- * src/qgpgmewkspublishjob.cpp,
- src/qgpgmewkspublishjob.h,
- src/wkspublishjob.h,
- tests/t-wkspublish.cpp: Fix spelling of received.
- * src/configure.ac (LIBQGPGME_LT_CURRENT): Bump
- accordingly.
-
- qt: Disable tests that require a password for 2.0.
- + commit 24779c9e2301bd17fd328d65b0383e1cbc944119
- * lang/qt/tests/t-encrypt.cpp: Disable tests that require
- a password for 2.0.
-
- Add warning flags for c++ compiler, too.
- + commit 4984cc93db6b55f2420a9abd844c074a5fb4ed0c
- * configure.ac (CXXFLAGS): Add Wall and Wextra.
-
- qt: Fix unused variable warnings.
- + commit 9d1df990386010e0581b542a76a4f5d85d8d11b5
- * qt/src/qgpgmenewcryptoconfig.cpp,
- qt/src/threadedjobmixin.h,
- qt/tests/t-encrypt.cpp,
- qt/tests/t-support.h,
- qt/tests/t-wkspublish.cpp: Mark additional variables as unused.
-
- cpp: Add support for URL Data encodings.
- + commit 370ee1aa802ec6a4030a39b2df7d24a0c47e5ac7
- * lang/cpp/src/data.h (Data::Encoding): Extend enum.
- * lang/cpp/src/data.cpp (Data::encoding),
- Data::setEncoding): Support new values.
-
- cpp: Fix gcc diagnostic push / pop.
- + commit 39dd7585f5a7d801942efcb375d6dd46d01d2968
- * lang/cpp/src/context.cpp: Fix pragmas.
-
- qt: Disable t-wkspublish test.
- + commit 52a91ccc6a25425d4374b77040e30efb6816940f
- * lang/qt/tests/Makefile.am (TESTS): Remove t-wkspublish.
-
-2016-09-30 Alon Bar-Lev <alon.barlev@gmail.com>
-
- python: Link 'data.h' and 'config.h' into the builddir.
- + commit 453ab9d24ca48c9e01d21e1454d6b08de1938b76
- * lang/python/Makefile.am: Link to the files.
- * lang/python/gpgme.i: Update path.
- * lang/python/setup.py.in: Do not add the top builddir to the include
- path.
-
- python: Add 'prepare' target.
- + commit 68fb8371a1dd5f4e05e50b1733f9996d139cbf38
- * lang/python/Makefile.am: Add 'prepare' target.
-
-2016-09-29 Andre Heinecke <aheinecke@intevation.de>
-
- cpp, qt: Handle modified includedir installation.
- + commit 7302791c0d308c3284ac24a743035d27a0c0b6ba
- * lang/cpp/src/Makefile.am,
- lang/qt/src/Makefile.am: Replace resolved_includedir.
- * lang/cpp/src/GpgmeppConfig.cmake.in.in,
- lang/qt/src/QGpgmeConfig.cmake.in.in: Use resolved_includedir
- instead of relying on a common installation prefix.
-
-2016-09-27 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- Clarify licensing.
- + commit 145392f07f42ef23ebcb83a917b4d8e2964e7aa8
- * src/b64dec.c, src/mbox-util.c, src/mbox-util.h: These three files
- are explicitly licensed under LGPL, but their comments suggest that
- details about the warranty can be found in the GPL. Adjust comments
- to refer to the correct license.
-
-2016-09-27 Justus Winter <justus@g10code.com>
-
- tests: Fix check for gpg versions not reporting the critical flag.
- + commit a423603f80d9eb653ce9c171662db2175d7456f5
- * lang/python/tests/t-sig-notation.py: Also blacklist 2.0.x.
- * tests/gpg/t-sig-notation.c: Likewise.
-
-2016-09-26 Justus Winter <justus@g10code.com>
-
- python: Correctly translate to size_t.
- + commit c38fabfea0601ed5f61e27e0bf43f8e74c67ce2a
- * lang/python/gpgme.i: Correctly translate Python number to size_t.
-
- python: Correctly translate off_t.
- + commit 1d80e7374aa3150306c86afe7acdc8e8eb05143f
- * lang/python/gpgme.i: Improve int/long translations, correctly handle
- off_t with large file support.
-
- python: Include 'config.h'.
- + commit 3703a4723899d7563937b4b99f5bbe4dd8d3dfed
- * lang/python/Makefile.am: Pass 'top_builddir' to 'setup.py'.
- * lang/python/gpgme.i: Include 'config.h'.
- * lang/python/helpers.c: Likewise.
- * lang/python/helpers.h: Likewise.
- * lang/python/setup.py.in: Make sure that 'config.h' can be found.
-
-2016-09-23 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- Fix spelling.
- + commit 95f38652f696476b38a040644eac40b4511d2b32
- * lang/cpp/src/context.h, lang/qt/src/protocol.h,
- lang/qt/src/wkspublishjob.h, src/data-identify.c, src/engine-gpg.c:
- minor spelling cleanup.
-
- move some file encodings to UTF-8.
- + commit a11450eb048df79a3f2b00ebef6d7cab07ad5054
- * THANKS, doc/ChangeLog-2011, tests/ChangeLog-2011,
- tests/gpg/geheim.txt: convert from iso 8859-1 to utf-8.
- * lang/qt/src/dataprovider.cpp, lang/qt/src/qgpgmerefreshkeysjob.cpp,
- lang/qt/src/qgpgmesecretkeyexportjob.cpp: replace U+FFFD REPLACEMENT
- CHARACTER with proper U+00E4 LATIN SMALL LETTER A WITH DIAERESIS.
-
-2016-09-23 Andre Heinecke <aheinecke@intevation.de>
-
- tests: Check data after decryption.
- + commit 9b38817968b90caf73f123255fe427691e82fec4
- * tests/gpgsm/t-decrypt.c (main): Check data matches expected.
- Only print result if it does not.
-
- cpp, qt: Include config.h.
- + commit a142f187b7ddb2728ec3e1743da4a0c4538ab40a
- lang/cpp/src/callbacks.cpp,
- lang/cpp/src/configuration.cpp,
- lang/cpp/src/context.cpp,
- lang/cpp/src/context_glib.cpp,
- lang/cpp/src/context_qt.cpp,
- lang/cpp/src/context_vanilla.cpp,
- lang/cpp/src/data.cpp,
- lang/cpp/src/decryptionresult.cpp,
- lang/cpp/src/defaultassuantransaction.cpp,
- lang/cpp/src/editinteractor.cpp,
- lang/cpp/src/encryptionresult.cpp,
- lang/cpp/src/engineinfo.cpp,
- lang/cpp/src/eventloopinteractor.cpp,
- lang/cpp/src/exception.cpp,
- lang/cpp/src/gpgadduserideditinteractor.cpp,
- lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
- lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp,
- lang/cpp/src/gpgsetownertrusteditinteractor.cpp,
- lang/cpp/src/gpgsignkeyeditinteractor.cpp,
- lang/cpp/src/importresult.cpp,
- lang/cpp/src/key.cpp,
- lang/cpp/src/keygenerationresult.cpp,
- lang/cpp/src/keylistresult.cpp,
- lang/cpp/src/scdgetinfoassuantransaction.cpp,
- lang/cpp/src/signingresult.cpp,
- lang/cpp/src/tofuinfo.cpp,
- lang/cpp/src/trustitem.cpp,
- lang/cpp/src/verificationresult.cpp,
- lang/cpp/src/vfsmountresult.cpp,
- lang/qt/src/dataprovider.cpp,
- lang/qt/src/defaultkeygenerationjob.cpp,
- lang/qt/src/gpgme_backend_debug.cpp,
- lang/qt/src/job.cpp,
- lang/qt/src/qgpgmeadduseridjob.cpp,
- lang/qt/src/qgpgmebackend.cpp,
- lang/qt/src/qgpgmechangeexpiryjob.cpp,
- lang/qt/src/qgpgmechangeownertrustjob.cpp,
- lang/qt/src/qgpgmechangepasswdjob.cpp,
- lang/qt/src/qgpgmedecryptjob.cpp,
- lang/qt/src/qgpgmedecryptverifyjob.cpp,
- lang/qt/src/qgpgmedeletejob.cpp,
- lang/qt/src/qgpgmedownloadjob.cpp,
- lang/qt/src/qgpgmeencryptjob.cpp,
- lang/qt/src/qgpgmeexportjob.cpp,
- lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
- lang/qt/src/qgpgmeimportjob.cpp,
- lang/qt/src/qgpgmekeyformailboxjob.cpp,
- lang/qt/src/qgpgmekeygenerationjob.cpp,
- lang/qt/src/qgpgmekeylistjob.cpp,
- lang/qt/src/qgpgmelistallkeysjob.cpp,
- lang/qt/src/qgpgmenewcryptoconfig.cpp,
- lang/qt/src/qgpgmerefreshkeysjob.cpp,
- lang/qt/src/qgpgmesecretkeyexportjob.cpp,
- lang/qt/src/qgpgmesignencryptjob.cpp,
- lang/qt/src/qgpgmesignjob.cpp,
- lang/qt/src/qgpgmesignkeyjob.cpp,
- lang/qt/src/qgpgmetofupolicyjob.cpp,
- lang/qt/src/qgpgmeverifydetachedjob.cpp,
- lang/qt/src/qgpgmeverifyopaquejob.cpp,
- lang/qt/src/qgpgmewkspublishjob.cpp,
- lang/qt/src/threadedjobmixin.cpp,
- lang/qt/tests/run-keyformailboxjob.cpp,
- lang/qt/tests/t-encrypt.cpp,
- lang/qt/tests/t-keylist.cpp,
- lang/qt/tests/t-keylocate.cpp,
- lang/qt/tests/t-ownertrust.cpp,
- lang/qt/tests/t-support.cpp,
- lang/qt/tests/t-tofuinfo.cpp,
- lang/qt/tests/t-wkspublish.cpp: Include config.h
-
-2016-09-22 Werner Koch <wk@gnupg.org>
-
- w32: Silence some warnings about unused parameters.
- + commit 583aafdd6870a7fb12a34d90993fd0f46928592c
- * src/assuan-support.c (my_recvmsg, my_sendmsg, my_waitpid)
- (my_socketpair) [W32]: Mark unused parameters.
-
- core: Fix error checking in _gpgme_mkstemp.
- + commit c447b64d5989845a2ae2cf8fb30a92d2a0bd05af
- * src/w32-util.c (_gpgme_mkstemp): Fix error checking.
- (dlopen): Mark FLAGS as unused.
-
- core: New helper function _gpgme_strconcat.
- + commit dc39552d01094eff2bef5f9fcd1c16928909d20e
- * src/conversion.c: Include stdarg.h.
- (do_strconcat): New.
- (_gpgme_strconcat): New.
- * src/util.h: Provide fallback for GPGRT_ATTR_SENTINEL.
- (_gpgme_strconcat): New with sentinel.
-
- * src/w32-util.c (find_program_in_dir): Replace malloc and stpcpy by
- _gpgme_strconcat.
- (find_program_at_standard_place): Ditto.
- (_gpgme_set_default_gpg_name): Ditto.
- (_gpgme_set_default_gpgconf_name): Ditto.
- (_gpgme_mkstemp): Ditto.
- (_gpgme_set_override_inst_dir): Repalce malloc and strcpy by strdup.
-
-2016-09-22 Daiki Ueno <ueno@gnu.org>
-
- tests: Add test for cancellation.
- + commit 7a6543c2dfeef874a34086c8f3eeb1dbdf1ce822
- * tests/gpg/t-cancel.c: New file.
- * tests/gpg/Makefile.am (tests_skipped): New variable, default to
- t-genkey and t-cancel.
- (noinst_PROGRAMS): Add $(tests_skipped).
- * tests/gpg/.gitignore: Add t-cancel.
-
- gpg: Add option --exit-on-status-write-error.
- + commit dee56820cabde60c43c9bf8281b8d411cb2ad644
- * src/engine-gpg.c (gpg_new): Add --exit-on-status-write-error if the
- engine version is latest enough to expect progress output from gpg.
-
- tests: Fix select usage in t-eventloop.
- + commit d0cf6b15121c9b42dbcef243e5ce30c9996a449c
- * tests/gpg/t-eventloop.c (do_select): Supply timeout value to select.
-
- doc: Fix minor errors in I/O callback example.
- + commit 0aaf1dedd629446ab991fff76581b4b58e4872a0
- * gpgme.texi (I/O Callback Example): Fix typos, add timeout to select,
- and initialize mutex as recursive.
-
-2016-09-21 Andreas Stieger <astieger@suse.com>
-
- cpp: Avoid missing returns in non-void functions.
- + commit ae324b51ffa338b891387bff2657d60c1fd3ae40
- * lang/cpp/src/context.cpp
- (Context::signaturePolicyURL): return nullptr on default
- (to_tofu_policy_t): add default case for unknown
- * lang/cpp/src/key.cpp
- (Key::primaryFingerprint): return nullptr on default
- * lang/cpp/src/tofuinfo.cpp
- (GpgME::TofuInfo::policy): add default case for unknown
-
-2016-09-21 Werner Koch <wk@gnupg.org>
-
- Release 1.7.0.
- + commit e7ab75379feadcc2894d9d4cde0f16ad0044780d
- * configure.ac: Bump LT vesion to C26/A15/R0.
-
- python: Create install dir.
- + commit 936928632b02d7cc2ac645543bb03e4c94285f05
- * lang/python/Makefile.am (install-exec-local): Create dir.
-
-2016-09-20 Werner Koch <wk@gnupg.org>
-
- tests: Make "make -j distcheck" work in Python.
- + commit 0763357e39d140b068ee9838a5da08be75426d9f
- * lang/python/Makefile.am (SUBDIRS): Make current dir fist.
- * lang/python/tests/Makefile.am (xcheck): Depend on pubring-stamp.
- (CLEANFILES): Remove private-keys-v1.d/gpg-sample.stamp.
- (check-local): Remove.
- (initial.py): Remove dependency.
- (./pubring-stamp): Depend on conf files and the
- private-keys-v1.d/gpg-sample.stamp file. Also replace use of
- basename.
-
- tests: Use --batch for gpg import.
- + commit bfb6890ded99f040fe8ecf910f927a136e4acfda
- * lang/python/tests/Makefile.am (./pubring-stamp): Use --batch with
- GPG to avoid Pinentries during import when using GnuPG >= 2.1.
- Replace touch by echo.
- * tests/gpg/Makefile.am (./pubring-stamp): Ditto.
-
- tests: Improve portability.
- + commit 29207bcd3bf4de7264197db6758130375b16d9bb
- * lang/qt/tests/Makefile.am (clean-local): Avoid non-portable "--"
- * lang/python/Makefile.am (copystamp): Use well defined cp -R instead
- of cp -r.
-
- build: Create swdb file.
- + commit df7e92b4d585b7dce919c5a3aab9524f6e183cbe
- * Makefile.am (distcheck-hook): New.
- (dist-hook): s/VERSION/PACKAGE_VERSION/ for future compatibility.
-
-2016-09-20 Justus Winter <justus@g10code.com>
-
- python: Fix detection of Python available versions.
- + commit ef99b74eb12463db7da5806a316e3b55f8097c5c
- * configure.ac: Test for 'PYTHON_VERSION' as 'AX_PYTHON_DEVEL' sets
- 'PYTHON' but clears the former.
-
-2016-09-19 Andre Heinecke <aheinecke@intevation.de>
-
- core: Remove moc artifact.
- + commit e3c35147d6adb754d4eb0781a54af2a8f0803663
- * src/moc_kdpipeiodevice.cpp: Removed.
- * src/Makefile.am (EXTRA_DIST): Remove moc_kdpipeiodevice.cpp.
-
- qt: Improve README.
- + commit 3f92253e0e476d77aa11463bc51ade367985855f
- * lang/qt/README: Add more content. Clearly note license difference.
-
- cpp: Improve README.
- + commit 66febf9942c321d30b8770f6aa6cd6ce2315d34f
- * lang/cpp/README: Add more content, move license to bottom.
-
- qt: Add debug output for testTofuPolicy.
- + commit d438cb59a068b6f076e6bd70d3a2c46bc05ccb5c
- * lang/qt/tests/t-tofuinfo.cpp (testTofuPolicy): Add
- debug output.
-
-2016-09-19 Ben Kibbey <bjk@luxsci.net>
-
- core: Check for GPG_TTY as well as DISPLAY.
- + commit 9d62bacac7826cb73bb18fac7268f3d2df662d7b
- * src/engine-assuan.c (llass_new): Update --ttyname from GPG_TTY.
- * src/engine-g13.c (g13_new): Ditto.
- * src/engine-gpg.c (gpg_new): Ditto.
- * src/engine-uiserver.c (uiserver_new): Ditto.
- * src/engine-gpgsm.c (gpgsm_new): Ditto.
-
-2016-09-16 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Add test for setting tofu policy.
- + commit a8ff34fc3025af4079cede7f8f9fdf40189b8638
- * lang/qt/tests/t-tofuinfo.cpp (testTofuPolicy): New.
-
- qt: Add job for tofupolicy.
- + commit 77aecfb5c97cea1a99f1ff627748cf71767bac5c
- * lang/qt/src/job.cpp, lang/qt/src/protocol.h,
- lang/qt/src/protocol_p.h: Register job.
- * lang/qt/src/qgpgmetofupolicyjob.cpp,
- lang/qt/src/qgpgmetofupolicyjob.h,
- lang/qt/src/tofupolicyjob.h: New.
- * lang/qt/src/Makefile.am: Update accordingly.
-
- cpp: Add support for gpgme_op_tofu_policy.
- + commit 4d384d7bfef044094695271576ca233625bb520a
- * src/context.cpp, src/context.h (setTofuPolicy, setTofuPolicyStart):
- New.
-
- cpp: Declare sizes of tofu-info enums.
- + commit 32baac8cdec6fee51bdfc3c55cb2ee141e086df4
- * lang/cpp/src/tofuinfo.h (Policy, Validity): Declare sizes.
-
-2016-09-16 Werner Koch <wk@gnupg.org>
-
- cpp: Silence use of deprecated function warning.
- + commit bd24db313d860ae46d37776dcf1067455d1b9880
- * lang/cpp/src/context.cpp (GpgME): Use pragma to silence wardning.
-
- core: Document the version a function has been deprecated.
- + commit b615316168f4d33311909d4056b236d13c69488f
- * src/gpgme.h.in (_GPGME_DEPRECATED): Change to take versio numbers
- for documentation. Change all places.
- (_GPGME_DEPRECATED_OUTSIDE_GPGME): Ditto.
- * lang/python/gpgme-h-clean.py: Adjust RE.
-
- core: Map GPGME_STATUS_EOF to the empty string.
- + commit 3d6340e8c59ee11a95e03fb213ad9b228be47833
- * src/status-table.c (_gpgme_status_to_string): Return "" for EOF.
- * src/engine-gpg.c (read_status): Ditto. The old code accidently used
- GPGME_STATUS_EOF which is the integer 0 and neiteyr NULL nor a string.
-
-2016-09-16 Justus Winter <justus@g10code.com>
- Kai Michaelis <kai@gnupg.org>
-
- python: Release the GIL during calls into GPGME.
- + commit 6af7bee076bacbc0cdfe7de342bce43ca5671b3b
- * lang/python/helpers.c (pyme_raise_callback_exception): Re-acquire
- the Global Interpreter Lock.
- (pyPassphraseCb, pyme_set_passphrase_cb, pyProgressCb,
- pyme_set_progress_cb, pyStatusCb, pyme_set_status_cb,
- _pyme_interact_cb, pyDataReadCb, pyDataWriteCb, pyDataSeekCb,
- pyDataReleaseCb, pyme_data_new_from_cbs, _pyme_assuan_data_cb,
- _pyme_assuan_inquire_cb, _pyme_assuan_status_cb): Likewise.
- * lang/python/setup.py.in: Make 'gpgme-config' emit the correct
- cflags, and SWIG generate code to release the GIL before calling us.
-
-2016-09-16 Justus Winter <justus@g10code.com>
-
- python: Adapt to 'gpgme_op_interact'.
- + commit a458e7fe2006d92bd5a838e2747fb66bbac4b1b8
- * lang/python/examples/inter-edit.py: Update example.
- * lang/python/gpgme.i (gpgme_edit_cb_t): Turn into
- 'gpgme_interact_cb_t'.
- * lang/python/helpers.c (_pyme_edit_cb): Turn into
- '_pyme_interact_cb_t'.
- * lang/python/private.h (_pyme_edit_cb): Likewise.
- * lang/python/pyme/constants/__init__.py: Replace numeric status codes
- with the keywords.
- * lang/python/pyme/constants/status.py: Likewise.
- * lang/python/pyme/core.py (Context.interact): New method.
- (Context.op_edit): Deprecate, update docstring, implement using
- Context.interact.
- * lang/python/tests/t-edit.py: Test both interfaces.
-
-2016-09-16 Werner Koch <wk@gnupg.org>
-
- core: Remove stub to try implementing gpg < 2.1 support for createkey.
- + commit 268e251b802cc7c19831722d7e3a52777a0f412f
- * src/engine-gpg.c (gpg_createkey_legacy): Remove.
- (gpg_genkey): Remove call.
-
- core: Fix setting og the verification result.
- + commit 1f9641dd0fb08e4a3df3b507b974a3f78887920f
- * src/verify.c (parse_new_sig): Proberly handle the RC in an ERRSIG
- status.
-
-2016-09-15 Werner Koch <wk@gnupg.org>
-
- core: New function gpgme_op_interact, deprecate gpgme_op_edit.
- + commit ed1f2700a73060e2615697491ea9e49ded4293e6
- * src/gpgme.h.in (gpgme_interact_cb_t): New.
- (GPGME_INTERACT_CARD): New.
- (gpgme_op_interact_start, gpgme_op_interact): New.
- * src/libgpgme.vers, src/gpgme.def: Add new functions.
- * src/edit.c (op_data_t): Rename fnc to fnc_old and change users. Add
- fnc.
- (edit_status_handler): Call old or new callback.
- (command_handler): Ditto.
- (interact_start): New.
- (gpgme_op_interact_start, gpgme_op_interact_start): New.
- * src/status-table.c (_gpgme_status_to_string): New.
-
- * tests/gpg/t-edit.c (edit_fnc): Rename to interact_fnc and change
- type of STATUS. Use gpgme_io_writen.
- (main): s/gpgme_op_edit/gpgme_op_interact/.
-
- core: Minor change of the gpgme_op_edit semantics.
- + commit d2b72d3cc19fe2a7d548dac38d55e069e0c9a904
- * src/edit.c (command_handler): Handle special error code.
- * src/engine-gpg.c (read_status): Ditto.
- * src/engine-gpgsm.c (status_handler): Ditto.
- * src/engine-uiserver.c (status_handler): Ditto.
- * src/util.h (GPG_ERR_FALSE): Define for older libgpg-error versions.
-
-2016-09-14 Werner Koch <wk@gnupg.org>
-
- core: New function gpgme_op_tofu_policy.
- + commit 7c37719d79345a665ec2f4570e3f257033b58c62
- * src/gpgme.h.in (gpgme_op_tofu_policy_start): New function.
- (gpgme_op_tofu_policy): New function.
- * src/libgpgme.vers, src/gpgme.def: Add new functions.
- * src/tofupolicy.c: New.
- * src/Makefile.am (main_sources): Add that file.
- * src/context.h (ctx_op_data_id_t): Add OPDATA_TOFU_POLICY.
- * src/engine.c (_gpgme_engine_op_tofu_policy): New.
- * src/engine-backend.h (engine_ops): Add funcptr 'tofu_policy'.
- Adjust all engine initializations.
- * src/engine-gpg.c (gpg_tofu_policy): New.
- (_gpgme_engine_ops_gpg): Register this function.
-
- * tests/run-tofu.c: New.
- * tests/Makefile.am (noinst_PROGRAMS): Add it.
-
- core: Defer implementation of gpgme_op_createkey with gpg < 2.1.
- + commit d79dcb78d867aaf55b85aea117c4ae6035a1531a
- * src/engine-gpg.c (gpg_createkey_legacy): Mark unused variables.
-
- core: New function gpgme_op_keysign.
- + commit bfd2bd0ccc9fed8284ef932ac788d4ca0dba0336
- * src/gpgme.h.in (gpgme_op_keysign_start, gpgme_op_keysign): New.
- (GPGME_KEYSIGN_LOCAL): New.
- (GPGME_KEYSIGN_LFSEP): New.
- (GPGME_KEYSIGN_NOEXPIRE): New.
- * src/context.h (ctx_op_data_id_t): Add OPDATA_KEYSIGN.
- * src/keysign.c: New.
- * src/Makefile.am (main_sources): Add keysig.
- * src/libgpgme.vers, src/gpgme.def: Add gpgme_op_keysign_start.
- * src/engine.c (_gpgme_engine_op_keysign): New.
- * src/engine-backend.h (engine_ops): Add 'keysign' and adjust all
- engine initializers.
- * src/engine-gpg.c (_add_arg): Add args PREFIX and ARGLEN and change
- callers to set them.
- (add_arg_pfx): New.
- (add_arg_len): New.
- (gpg_keysign): New.
- (_gpgme_engine_ops_gpg): Set keysign to gpg_keysign.
- * tests/run-keysign.c: New.
- * tests/Makefile.am (noinst_PROGRAMS): Add run-keysign.
-
-2016-09-14 Justus Winter <justus@g10code.com>
-
- python: Clarify that we support Python 2.7 too.
- + commit 594c3b8b052e60b6be77ed532fe46549133a9726
- * lang/python/README: Use 'Python' instead of 'Python 3'.
- * lang/python/pyme/version.py.in: Likewise.
- * lang/python/setup.py.in: Add classifier for 2.7, drop 3 only.
-
- python: Trim imports.
- + commit 4011b2b2a1050f0837e989da3db9b5459e71ccd6
- * lang/python/examples/encrypt-to-all.py: Drop unused import of 'os'.
- * lang/python/examples/signverify.py: Likewise.
- * lang/python/examples/simple.py: Likewise.
- * lang/python/examples/verifydetails.py: Likewise.
-
- python: Improve error handling.
- + commit 44d18200d5ffe8691e18d93ce6c534660702b982
- * lang/python/gpgme.i (gpgme_engine_info_t): Improve error handling.
-
- python: Adapt to TOFU changes.
- + commit f6cd560ca74248dd719a37cfb34386148727a92d
- * lang/python/pyme/results.py (TofuInfo): Drop.
- (Signature): The TOFU information moved to the key.
-
- python: Improve build system integration.
- + commit 99db351288d5bb075f124ef10e540e25bc36b70a
- * configure.ac: Try to compile a Python module for each version.
- * m4/m4_ax_swig_python.m4: Drop unused file.
-
-2016-09-14 Werner Koch <wk@gnupg.org>
-
- core: New function gpgme_op_revuid.
- + commit c943380b7a2cc9b32f81c22224fc6f92e8ea8469
- * src/engine.h (GENKEY_EXTRAFLAG_REVOKE): New.
- * src/genkey.c (adduid_start): Rename to addrevuid_start. Add arg
- REVOKE and pass it as extraflags. Remove useless ARMOR extraflag.
- Adjust callers.
- (gpgme_op_revuid_start, gpgme_op_revuid): New.
- * src/gpgme.def, src/libgpgme.vers: Add them.
-
- * tests/run-genkey.c: Add option --revuid.
-
- core: Change a parameter for the engine's genkey function.
- + commit c22f5884c50557f54704f4becc5a8c1ee0749547
- * src/engine.h (GENKEY_EXTRAFLAG_ARMOR): New.
- * src/engine-backend.h (engine_ops): Rename USE_ARMOR in genkey to
- EXTRAFLAGS.
- * src/engine.c (_gpgme_engine_op_genkey): Ditto.
- * src/engine-gpg.c (gpg_createkey_from_param): Ditto and test the
- flags.
- (gpg_createkey_legacy): Ditto.
- (gpg_createkey): Ditto.
- (gpg_addkey): Ditto.
- (gpg_genkey): Ditto.
-
-2016-09-14 Justus Winter <justus@g10code.com>
-
- python: Build for both Python2 and Python3.
- + commit 24b4162d908b48a92660020be0b776c2874fb05a
- * NEWS: Update.
- * configure.ac: Check for multiple Python versions.
- * lang/python/Makefile.am: Build and install for both Python versions.
- * lang/python/tests/Makefile.am: Test both versions.
- * lang/python/tests/run-tests.py: New test runner.
-
-2016-09-14 Werner Koch <wk@gnupg.org>
-
- core: New function gpgme_op_adduid.
- + commit 3210f3e4725afc5ee2810b9a1361918ec9c42ca4
- * src/genkey.c: Replace most error codes GPG_ERR_INV_VALUE by
- GPG_ERR_INV_ARG.
- (struct op_data_t): Add field UIDMODE.
- (genkey_status_handler): Use UIDMODE.
- (adduid_start): New.
- (gpgme_op_adduid_start, gpgme_op_adduid): New.
- * src/gpgme.def, src/libgpgme.vers: Add them.
- * tests/run-genkey.c: Add option --adduid.
-
- core: New function gpgme_op_createsubkey.
- + commit cc353701b0fde4c811ddc1e9a91b852dfe9f4e06
- * src/genkey.c (createsubkey_start): New.
- (gpgme_op_createsubkey_start, gpgme_op_createsubkey): New.
- * src/gpgme.def, src/libgpgme.vers: Add them.
- * src/engine-gpg.c (gpg_createkey): Factor some code out to ...
- (gpg_add_algo_usage_expire): new.
- (gpg_addkey): Implement.
- * tests/run-genkey.c: Add option --addkey.
-
-2016-09-13 Werner Koch <wk@gnupg.org>
-
- core: Use const char * where appropriate.
- + commit 51f9acbca935c5287d9a28205037b0923e9a65f5
-
-
- core: Cast away the common const problem with spawn and argv.
- + commit 686a065f639ef006e33c164e282d787bcd169754
- * src/dirinfo.c (read_gpgconf_dirs): Use a cast to assignd to ARGV.
-
- core: Fix condition-always-true warning in trace macro.
- + commit 3009e6162eaa39adaaf45f06fc4f88c7153360ee
- * src/data-compat.c (old_user_read): Cast AMT.
-
- core: Mark unused function args.
- + commit 4a200146b602349eebb4eac2e102357748d7ba5b
-
-
- tests: Mark lots of unused vars and fix const mismatches.
- + commit 9064eebdc05e7149c2c8cc899fbd7874622fb769
-
-
- tests: Use gpgme_io_write in passhrase callbacks.
- + commit 4491ef0a9a15d3b307d1ade37ff620ef9fcb2478
- * tests/gpg/t-support.h (passphrase_cb): Use gpgme_io_write.
- * tests/gpgsm/t-support.h (passphrase_cb): Ditto.
- * tests/run-support.h (passphrase_cb): Ditto.
-
- core: Do not pass const char* to functions taking a char*.
- + commit 3972f476e00f27d41a0aeabcb66600905b6737bd
-
-
- build: Use more compiler warnings.
- + commit 0510591c36591816a6ff3f87a04451001b7ed46f
- * configure.ac: Add useful compiler warnings.
-
- core: New function gpgme_op_create_key.
- + commit 00c501d296da287bec2fd6a0e3912abfbde90a98
- * src/engine-backend.h (engine_ops): Change prototype of genkey.
- * src/engine-gpgsm.c (gpgsm_genkey): Change accordingly.
- * src/engine-gpg.c (gpg_genkey): Change it to a dispatcher.
- (gpg_createkey_from_param): New for the old functionality.
- (gpg_createkey_legacy): New. Stub for now.
- (gpg_createkey): New.
- (gpg_addkey): New. Stub for now.
- (gpg_adduid): New. Stub for now.
- * src/engine.c (_gpgme_engine_op_genkey): Add new args.
- * src/genkey.c (op_data_t): Add field ERROR_CODE.
- (parse_error): New.
- (genkey_status_handler): Parse ERROR status line.
- (genkey_start): Use NULL/0 for the new args.
- (createkey_start): New.
- (gpgme_op_createkey_start, gpgme_op_createkey): New.
- * src/gpgme.def, src/libgpgme.vers: Add gpgme_op_createkey_start and
- gpgme_op_createkey.
- * src/gpgme.h.in (_gpgme_op_genkey_result): Add fields PUBKEY and
- SECKEY.
- (GPGME_CREATE_SIGN): New.
- (GPGME_CREATE_ENCR): New.
- (GPGME_CREATE_CERT): New.
- (GPGME_CREATE_AUTH): New.
- (GPGME_CREATE_NOPASSWD): New.
- (GPGME_CREATE_SELFSIGNED): New.
- (GPGME_CREATE_NOSTORE): New.
- (GPGME_CREATE_WANTPUB): New.
- (GPGME_CREATE_WANTSEC): New.
- (GPGME_CREATE_FORCE): New.
-
- * tests/run-genkey.c: New.
- * tests/Makefile.am (noinst_PROGRAMS): Add it.
-
-2016-09-13 Justus Winter <justus@g10code.com>
-
- python: Handle slight differences between Python 2 and 3.
- + commit 70a3be27a509a1b5ea7372bee93d83c5019427ff
- * lang/python/helpers.c (pyDataWriteCb): Handle Python integers being
- returned on Python 2.
- (pyDataSeekCb): Likewise.
- * lang/python/pyme/core.py (Data.__init__): Fix testing for string
- argument.
- (Data.new_from_filepart): Likewise.
- * lang/python/pyme/util.py (is_a_string): New function.
- * lang/python/tests/t-encrypt-large.py (read_cb): Force evaluation of
- generator.
- * lang/python/tests/t-idiomatic.py: Partly skip test on Python 2.
- * lang/python/tests/t-verify.py (check_result): Here, the difference
- between 2 and 3 really matters. We cannot change the char *
- conversion in Python 2 without breaking all existing applications, and
- using bytestrings in Python 3 would be very inconvenient.
-
- python: Fix types and error handling.
- + commit 4abff7d750a1abf5b388a4c87ec321fc3e4aed10
- * lang/python/helpers.c (_pyme_edit_cb): Drop the const.
- (_pyme_assuan_{data,inquire,status}_cb): Fix error handling.
-
-2016-09-12 Justus Winter <justus@g10code.com>
-
- python: Avoid Python3-only form of super().
- + commit c0c50318bd8ef6c8119ad9fdc53ad9087ded4c32
- * lang/python/pyme/core.py (GpgmeWrapper.__repr__): Use more
- compatible form of super.
- (GpgmeWrapper.__setattr__): Likewise.
- (Context.__init__): Likewise.
- (Data.__init__): Likewise.
-
- python: Make type translation compatible with Python 2.7.
- + commit 1d5bbbf1185a0d1f82750f10b69dad3999f7ef4c
- * lang/python/gpgme.i: Avoid functions not available in Python 2.7.
- * lang/python/helpers.c: Likewise.
-
- python: Avoid hardcoding the interpreter.
- + commit 70999d81618b3d3ae6b61a43be2ce703ad284275
- * lang/python/setup.py.in: Avoid hardcoding the interpreter.
-
- python: Do not rely on subprocess.DEVNULL.
- + commit b48b852a846129914d6c63ec7b47388cdcf6acca
- * lang/python/setup.py.in: Do not rely on subprocess.DEVNULL.
-
- tests: Fix version comparison.
- + commit dfd99ab50c3bc1d6745b6f682791e4885e8d8a9a
- * tests/gpg/t-sig-notation.c: Fix version comparison.
-
- tests: Make signature notation test compatible with older GnuPGs.
- + commit a0263ad282d350b548cbbc27e96f196d9217d040
- * lang/python/tests/t-sig-notation.py: Only check the critical flag
- when GnuPG >= 2.1.13 is used.
- * tests/gpg/t-sig-notation.c: Likewise.
-
-2016-09-12 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Fix some includes.
- + commit d480f6b701894f78f3f4016d69c0e3b87939930b
- * lang/qt/src/qgpgmekeyformailboxjob.cpp: Explicitly include
- QStringList.
- * lang/qt/tests/t-support.h, lang/qt/tests/t-support.cpp: Move
- includes into impl. Explicitly include QDir.
-
-2016-09-12 Justus Winter <justus@g10code.com>
-
- qt: Fix tofu test.
- + commit 7b9e6ea376d04fb4694ed22369abaae92ce3ec86
- * lang/qt/tests/t-tofuinfo.cpp: Adjust member names.
-
-2016-09-07 Werner Koch <wk@gnupg.org>
-
- core,cpp: Extend the TOFU information.
- + commit 120b14783c0312d782dc08ce4949a6209d5ccc7b
- * src/gpgme.h.in (struct _gpeme_tofu_info): Rename FIRSTSEEN to
- SIGNFIRST and LASTSEEN to SIGNLAST. Add ENCRFIST and ENCRLAST.
- * src/keylist.c (parse_tfs_record): Parse to ENCRFIRST and ENCRLAST.
- * src/verify.c (parse_tofu_stats): Ditto.
- * tests/run-keylist.c (main): Adjust and print encrypt stats.
- * tests/run-verify.c (print_result): Ditto.
-
- * lang/cpp/src/tofuinfo.h (TofuInfo): Rename firstSeen to signFirst
- and lastSeen to signLast. Add encrCount, encrFirst and encrLast.
- * lang/cpp/src/tofuinfo.cpp (encrCount, encrFirst, encrLast): New.
-
-2016-09-06 Andre Heinecke <aheinecke@intevation.de>
-
- tests: Set passphrase cb in t-encrypt-mixed.
- + commit 151da95470f174dc770b2111890ad650a1697276
- * tests/gpg/t-encrypt-mixed.c (main): Set passphrase cb.
-
- core: Check for gpg version for loopback mode.
- + commit e8cb143c8337b122a6790f769ddb0a97c4baccd3
- * src/engine-gpg.c (build_argv): Check for version 2.1.0
- before adding pinentry-mode.
-
- core: Fix passphrase cb for mixed sym encrypt.
- + commit efe7e11dfa2ff911b477ce748292e53e7a50347e
- * src/encrypt.c (encrypt_start): Handle SYMMETRIC flag.
- * src/encrypt-sign.c (encrypt_sign_start): Ditto.
-
-2016-09-05 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Clarify comment and strings in tofuinfo test.
- + commit ab3fbdbd05cfd1b039bb5b1eb3941fbb4bcf6307
- * lang/qt/tests/t-tofuinfo.cpp (testTofuSignCount)
- (testTofuKeyList): Ensure distinct messages. Clarify comment.
-
- qt: Enable signcount checks in tofuinfo test.
- + commit 965b842fad6ec6fbd8902f3a32119abcd0728fe4
- * lang/qt/tests/t-tofuinfo.cpp: Enable checks for signcount.
-
- cpp: Add convenience update function to a key.
- + commit 79439e76cc5b302222874a1f9e93665cb12801ac
- * lang/cpp/src/key.cpp (Key::update): New.
- * lang/cpp/src/key.h: Update accordingly.
-
- cpp: Add ostream operators for key and uid.
- + commit 444d85ace0dddff5c511961927052d9946035b00
- * lang/cpp/src/key.cpp (Key, UserID): Add ostream operator.
- * lang/cpp/src/key.h: Update accordingly.
-
- qt: Add missing header redirection.
- + commit 8a39a595eb802b80a6ad756b0ee8939e9733e86f
- * lang/qt/src/keyformailboxjob.h,
- lang/qt/src/qgpgmekeyformailboxjob.h: Fix includes.
-
- qt: Include cpp before core directory.
- + commit e3a4697894cc5a93c295e84bb10c743bc7fdc87e
- * lang/qt/src/Makefile.am (AM_CPPFLAGS): Include cpp before core.
-
-2016-08-25 Andre Heinecke <aheinecke@intevation.de>
-
- qt: Fix 2.1 t-support copy.
- + commit 05570bd3d05fb3d7934c1122f0d5ef5fdbaa7974
- * lang/qt/src/t-support.cpp (copyKeyring): Fix seckey copy.
-
- qt: Fix and extend TofuInfo test.
- + commit 9fc72e928bf2cf239bd3b0facdf33ceb1acc975b
- * lang/qt/tests/t-tofuinfo.cpp: Delete executed jobs.
- (testTofuKeyList): New.
- (testSupported): Activate for 2.1.16
- (signAndVerify): Disable sigcount tests.
-
- qt: Fix keyring copy in tests.
- + commit c875f07e559a7c53fc173b4c3f9f5715f3fbb8f8
- * lang/qt/test/t-encrypt.cpp,
- lang/qt/test/t-tofuinfo.cpp: Assert on copy failure.
- * lang/qt/test/t-support.cpp (copyKeyrings): Fix path.
-
- qt: Add generic flag support for keylistjobs.
- + commit 4e37d0bb1255558ce20e1a5ac83a2d06a37f8b0b
- * lang/qt/src/keylistjob.h (addMode): New.
- * lang/qt/src/qgpgmekeylistjob.h (addMode): New.
- * lang/qt/src/qgpgmekeylistjob.cpp (addMode: New.
-
- qt: Ensure that current src dir is included first.
- + commit 5a92cc96da183ebb19867a2a910f53ba41e76ae9
- * lang/qt/src/Makefile.am: Reorder include directives.
-
- cpp: Add WithTofu Keylist Mode.
- + commit f311b92ceaedb12c9e00a722b6b47bbe6b50871e
- * lang/cpp/src/context.cpp: Handle WithTofu.
- * lang/cpp/src/global.h (KeyListMode): Add WithTofu.
- * lang/cpp/src/util.h (add_to_gpgme_keylist_mode_t): Handle WithTofu.
-
- qt: Fix tofuinfo test when gpg is gpg2.
- + commit 053e6e0a7b8ea38ad9d4160c84814867bbb9fcf6
- * lang/qt/tests/t-support.cpp (QGpgMETest::copyKeyrings): New helper.
- * lang/qt/tests/t-support.h: Declare.
- * lang/qt/tests/t-encrypt.cpp: use it
- * lang/qt/tests/t-tofuinbo.cpp: ditto.
-
- qt: Remove unused variable in test.
- + commit f08904b810d77d87c66d9c7875c4e7f2bde5dd92
- * t-wkspublish.cpp (testWKSPublishCreate): Remove context.
-
- qt: Add test for wkspublishjob.
- + commit df04b232b8897f030534f8c3fbc87064edf8ae7d
- * lang/qt/tests/t-wkspublish.cpp: New.
- * lang/qt/tests/Makefile.am: Update accordingly.
-
- qt: Add WKSPublishJob.
- + commit 94420b05775122b25885c66ac67f77c59d01644d
- * lang/qt/src/Makefile.am: Add new files.
- * lang/qt/src/job.cpp: Include moc / subclass stub.
- * lang/qt/src/protocol.h: Add virtual for new job.
- * lang/qt/src/protocol_p.h: Add job.
- * lang/qt/src/wkspublishjob.h: Interface for WKSPublishJob.
- * lang/qt/src/qgpgmewkspublishjob.cpp,
- lang/qt/src/qgpgmewkspublishjob.h: New.
-
- Cpp: Change firstSeen / lastSeen return values.
- + commit de7b67f9b2e6bd43a036fa0bcc6a8ca4f5b10986
- * lang/cpp/src/tofuinfo.cpp,
- lang/cpp/src/tofuinfo.h (TofuInfo::firstSeen, TofuInfo::lastSeen):
- Change return values to unsigned long and update doc.
-
- Cpp: Add wrapper for gpgme_get_dirinfo.
- + commit abcd9a283ee8f81870622c8e1dbdc7aad38c0358
- * lang/cpp/src/context.cpp (dirInfo): New.
- * lang/cpp/src/global.h (dirInfo): New.
-
- Cpp: Add support for spawn engine.
- + commit ece8b02a839d6fc566fea7b6e59fabff164f6cf5
- * lang/cpp/src/context.cpp (Context::spawn, Context::spawnAsync): New.
- * lang/cpp/src/context.h: Add prototypes.
- (SpawnFlags): New.
- * lang/cpp/src/global.h (SpawnEngine): Added.
-
-2016-08-25 Werner Koch <wk@gnupg.org>
-
- core: Add GPGME_KEYLIST_MODE_WITH_TOFU.
- + commit 9ee103957e4136337b92d238283f8ef30fd4a7c5
- * src/gpgme.h.in (GPGME_KEYLIST_MODE_WITH_TOFU): New.
- * src/engine-gpg.c (gpg_keylist_build_options): Use that.
- * src/keylist.c: Include limits.h.
- (parse_tfs_record): New.
- (keylist_colon_handler): Support TFS record.
- * tests/run-keylist.c: Include time.h.
- (isotimestr): New.
- (main): Add option --tofu. Print TOFU info.
- * tests/run-verify.c: Include time.h.
- (isotimestr): New.
- (print_result): Use isotimestr for TOFU dates.
-
-2016-08-24 Werner Koch <wk@gnupg.org>
-
- core: Adjust for TOFU_STATS change in gnupg 2.1.16.
- + commit 38798fee5b539d6153a8a7856152959412ee59b5
- * src/gpgme.h.in (_gpgme_tofu_info): Change 'firstseen' and 'lastseen'
- to a timestamp value.
- * src/verify.c (parse_tofu_stats): Do not cap these values at UINT_MAX.
-
- core: Set the 'encrcount' field in gpgme_tofu_info_t.
- + commit 1eefc2d43c0adb2ce516f8e3509ace2fb562e401
- * src/verify.c (parse_tofu_stats): Set ENCRCOUNT field.
-
- cpp: Get rid of AssuanResult due to its deprecation.
- + commit e20b0f0201543834f15c5d50cd3b2ece69a35d70
- * lang/cpp/src/assuanresult.cpp: Remove.
- * lang/cpp/src/assuanresult.h: Remove.
- * lang/cpp/src/Makefile.am: Remove these files.
- * lang/cpp/src/context.cpp: Remove header assuanresult.h
- (assuanTransact): Change return type to Error. Use
- gpgme_op_assuan_transact_ext.
- (startAssuanTransaction): Change return type to Error.
- (assuanResult): Remove
- * lang/cpp/src/context.h (assuanResult): Adjust for changes.
-
-2016-08-24 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Adapt (disabled) tofuinfo test to new API.
- + commit d2e40fb7adf667f3e2d2457ee4c646ea4d4d88b3
- * lang/qt/tests/t-tofuinfo.cpp: Switch to UID based API.
-
- Cpp: Add Key to signature.
- + commit 7c5a4974b71c30e824cbfcb3a0a70064e5ed5adb
- * lang/cpp/src/verificationresult.cpp,
- lang/cpp/src/verificationresult.h (Signature::key): New.
-
- Cpp: Use fpr field for primaryFingerprint.
- + commit 40ea1c85773cbe324557c34b3a4282f609fcdaf6
- * lang/cpp/src/key.cpp (Key::primaryFingerprint): Return
- fpr value if available.
-
-2016-08-23 Andre Heinecke <aheinecke@intevation.de>
-
- Cpp: Move tofuinfo from signature to userid.
- + commit 799b168243e6499ac01bf59e0656547f353a2589
- * lang/cpp/src/key.cpp (UserID::tofuInfo): New.
- * lang/cpp/src/key.h: Update accordingly.
- * lang/cpp/src/tofuinfo.cpp: Remove dropped fields.
- * lang/cpp/src/tofuinfo.h: Update accordingly.
- * lang/cpp/src/verificationresult.cpp,
- lang/cpp/src/verificationresult.h: Remove tofu info.
- * lang/qt/tests/t-tofuinfo.cpp: Disable for now.
-
-2016-08-23 Werner Koch <wk@gnupg.org>
-
- core: Put the protocol into a TOFU created key object.
- + commit 2972c44bd7e97b2169dea9c4a49d9754afdae3f0
- * src/verify.c (parse_tofu_user): Add arg 'protocol' and store it in
- the KEY.
- (_gpgme_verify_status_handler): Pass protocol.
-
- core: Change the way TOFU information are represented.
- + commit be4ff75d7d5ac6ed15feb245ef3cec59b4bad561
- * src/gpgme.h.in (struct _gpgme_signature): Remove field 'tofu'. Add
- field 'key'.
- (struct _gpgme_key): Add field 'fpr'.
- (struct _gpgme_user_id): Add field 'tofu'.
- (struct _gpgme_tofu_info): Remove fields 'address' and 'fpr'.
- * src/key.c (gpgme_key_unref): Release TOFU and FPR.
- * src/keylist.c (keylist_colon_handler): Store the fingerprint of the
- first subkey also in KEY.
- * src/verify.c (release_tofu_info): Remove.
- (release_op_data): Release KEY.
- (parse_tofu_user): Rewrite for new data structure.
- (parse_tofu_stats): Ditto.
- (parse_tofu_stats_long): Ditto.
- * tests/run-verify.c (print_result): Ditto.
- * tests/run-keylist.c (main): Print more fields.
-
- core: Extend gpgme_user_id_t with 'address'.
- + commit 3955dce06e9d056599e5ec7d40301e66b9305195
- * src/mbox-util.c, src/mbox-util.h: Adjust for use in gpgme.
- * src/Makefile.am (main_sources): Add mbox-util.
- * src/key.c (_gpgme_key_append_name): Set 'address' field of uid.
- (gpgme_key_unref): Free it.
-
-2016-08-22 Werner Koch <wk@gnupg.org>
-
- core: New code for parsing mail addresses.
- + commit 26c5ba528ce1411d96655952ec48359105695c0f
- * src/mbox-util.c: New.
- * src/mbox-util.h: New.
-
- core: Add new items for gpgme_get_dirinfo.
- + commit 24e61984c9532924135c57b8ff98489a2d3bd4a3
- * src/dirinfo.c (WANT_SYSCONFDIR, WANT_LIBEXECDIR, WANT_LIBDIR): New.
- (WANT_DATADIR, WANT_LCOALEDIR, WANT_AGENT_SSH_SOCKET): New
- (WANT_DIRMNGR_SOCKET): New.
- (dirinfo): Add fields 'sysconfdir', 'bindir', 'libexecdir', 'libdir',
- 'datadir', 'localedir', 'agent_ssh_socket', and 'dirmngr_socket'.
- (parse_output): Set these fields.
- (get_gpgconf_item): Return them.
- (gpgme_get_dirinfo): Likewise.
-
- core: Base gpgme_get_dirinfo(uiserver-socket) on the socket dir.
- + commit c9e7dcb100d807583d8e312da459561138231376
- * src/dirinfo.c (dirname_len): New.
- (parse_output): Change computation of UISRV_SOCKET.
-
-2016-08-21 Werner Koch <wk@gnupg.org>
-
- core: New commands --lang and --have-lang for gpgme-config.
- + commit 3e60788810f93cfcd7f08e5882aff32ed7b6f831
- * configure.ac (GPGME_CONFIG_AVAIL_LANG): New ac_subst.
- * src/gpgme-config.in (avail_lang): Add commands --lang and
- --have-lang.
-
-2016-08-18 Andre Heinecke <aheinecke@intevation.de>
-
- core: Remove (now) useless diagnostic.
- + commit 30f156280f18500ee522db58aecd40711c8af685
- * src/w32-io.c(_gpgme_io_spawn): Remove spawnhelper not found
- diagnostic.
-
- core: Fail loudly in case w32 spawner not found.
- + commit 9cf983b0199950c8f8cccee2cb8e45aafcba9fd1
- * src/w32-io.c (_gpgme_io_spawn): Show a message box in
- case gpgme-w32spawn.exe not found.
-
-2016-08-17 Andre Heinecke <aheinecke@intevation.de>
-
- Cpp: Fix some pedantic warnings.
- + commit 64194b0f8df1afe6135cd119fd3216fc8db68033
- * lang/cpp/src/context.cpp,
- lang/cpp/src/context.h (Context::getKeysFromRecipients): Remove
- ignored / invalid const qualifier.
- * lang/cpp/src/result.h: Don't shadow error function in ctor.
-
-2016-08-16 Werner Koch <wk@gnupg.org>
-
- core: New global flag "require-gnupg".
- + commit 8c09dd9989bcd434a8cb5997770cb8414b96bd5c
- * src/gpgme.c (gpgme_set_global_flag): Add flag.
- * src/engine.c (engine_minimal_version): New variable.
- (_gpgme_set_engine_minimal_version): New function.
- (gpgme_get_engine_info): Check that flag.
-
- * tests/run-keylist.c (main): New option --require-gnupg.
-
- core: Simplify setting of dummy versions.
- + commit b7b0e7b5bfefd51c8092ea54f262b18aebf78128
- * src/engine.c (_gpgme_engine_info_release): Do not assert but free
- FILE_NAME.
- (gpgme_get_engine_info): Provide default for VERSION and REQ_VERSION.
- Use calloc instead of malloc.
- (_gpgme_set_engine_info): Ditto.
- * src/engine-assuan.c (llass_get_version): Return NULL.
- (llass_get_req_version): Ditto.
- * src/engine-spawn.c (engspawn_get_version): Ditto.
- (engspawn_get_req_version): Ditto.
- * src/engine-uiserver.c (uiserver_get_version): Ditto.
- (uiserver_get_req_version): Ditto.
-
-2016-08-12 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Add test for progress signal of encryptjob.
- + commit 391e55411cda11446ca9de4dd0dc2b54d3e6fff5
- * lang/qt/tests/t-encrypt.cpp (testProgress): New.
-
- Cpp: Provide size-hint for seekable and mem data.
- + commit df7bbf5a66576a5a320b54c8f6ad52bc84f0e833
- * lang/cpp/src/data.cpp (GpgME::Data::Data): Set size-hint for
- mem and DataProvider based Data.
-
-2016-08-12 Werner Koch <wk@gnupg.org>
-
- core: Make use of the "size-hint" in engine-gpg.
- + commit fe1e8e71aa18b4ac6471292b2894b8859f42f7c8
- * src/engine-gpg.c: Include data.h.
- (add_input_size_hint): New.
- (gpg_decrypt, gpg_encrypt, gpg_encrypt_sign, gpg_sign)
- (gpg_verify): Call new function,
-
- * tests/run-encrypt.c (status_cb): Print to stderr.
- (progress_cb): New.o
- (main): Add option --progress. Print full-status lines. Provide a
- size for the input data.
-
- core: Add gpgme_data_set_flag to add more meta data to data objects.
- + commit 293d1736911fd5e77b8cec305168b35b2420c612
- * src/gpgme.h.in (gpgme_data_set_flag): New public function.
- * src/data.c (gpgme_data_set_flag): New.
- (_gpgme_data_get_size_hint): New.
- * src/data.h (strucy gpgme_data): Add field 'size_hint'.
- * src/gpgme.def, src/libgpgme.vers: Add new function.
- * src/conversion.c (_gpgme_string_to_off): New.
-
-2016-08-12 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Fix defaultkeygenerationjob build.
- + commit 75c974c4e0a31981325f7d151bd13f2523f5df20
- * lang/qt/src/defaultkeygenerationjob.cpp: Include moc.
-
-2016-08-11 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Add DefaultKeyGenerationJob.
- + commit 105f5446e69db00291164397cf0d8e68374cf420
- * lang/qt/src/defaultkeygenerationjob.cpp,
- lang/qt/src/defaultkeygenerationjob.h: New.
- * lang/qt/src/Makefile.am: Update accordingly.
-
- Qt: Ensure all public classes are exported.
- + commit 59e2251a083b0ed61b3ab6d47015cef7cc6ceb05
- * src/abstractimportjob.h,
- src/cryptoconfig.h,
- src/deletejob.h,
- src/exportjob.h,
- src/importfromkeyserverjob.h,
- src/importjob.h,
- src/keygenerationjob.h,
- src/keylistjob.h,
- src/listallkeysjob.h,
- src/refreshkeysjob.h,
- src/signencryptjob.h,
- src/specialjob.h,
- src/verifydetachedjob.h: Export classes.
-
- Qt: Add KeyForMailboxJob.
- + commit 8c5abc8d932affab4bc79a85e3f98f6f6b982ae8
- * lang/qt/src/job.cpp: Include moc and make subclass.
- * lang/qt/src/keyformailboxjob.h,
- lang/qt/src/qgpgmekeyformailboxjob.cpp,
- lang/qt/src/qgpgmekeyformailboxjob.h: New.
- * lang/qt/tests/run-keyformailboxjob.cpp: New manual test.
- * lang/qt/tests/Makefile.am: Add run-keyformailboxjob.
- * lang/qt/src/Makefile.am: Update accordingly.
- * lang/qt/src/protocol.h, lang/qt/src/protocol_p.h: Add
- keyformailboxjob.
-
-2016-08-10 Werner Koch <wk@gnupg.org>
-
- doc: Get rid of version.texi.
- + commit b7d99e02188b7907b09fec3032fc1fd82fc2668a
- * configure.ac (CC_FOR_BUILD): New.
- * doc/mkdefsinc.c: New. Taken from GnuPG and modified for gpgme.
- * doc/Makefile.am (EXTRA_DIST): Add defsincdate and mkdefsinc.c
- (BUILT_SOURCES): new.
- (gpgme.texi): New dependency.
- (mkdefsinc, defsincdate, defs.inc): New rules.
- (dist-hook): New.
- * doc/gpgme.texi: Include defs.inc. Remove version.texi.
-
- build: Declare all languages for make dist.
- + commit 48691db97b759d67aa7b49c36bb704b5806ade2e
- * lang/Makefile.am (DIST_SUBDIRS): New.
-
- core: Do not identify PNG files as PGP signatures.
- + commit a9168185ba97aa1d827315cd8017899bf904aded
- * src/data-identify.c (next_openpgp_packet): Blacklist PNG files.
-
-2016-08-10 Andre Heinecke <aheinecke@intevation.de>
-
- Cpp: Handle empty recipients consistently.
- + commit 09667a6006986a782af98ca1de4d6521e1b8f353
- * lang/cpp/src/context.cpp (Context::getKeysFromRecipients):
- New helper.
- (Context::encrypt, Context::startEncryption, Context::signAndEncrypt)
- (Context::startCombinedSigningAndEncryption): Use new helper.
- * lang/cpp/src/context.h (Context::getKeysFromRecipients): Add
- as private helper.
-
- core: Handle ENCRYPT_SYMMETRIC also for sig & enc.
- + commit b602d8bc7bd726afb52dc60cc07e4609e88d4511
- * src/engine-gpg.c (gpg_encrypt_sign): Handle ENCRYPT_SYMMETRIC
- flag.
-
- Qt: Remove unused variable.
- + commit d467018ce36f5be36751267c3b6079e8c1ee5d8a
- * lang/qt/src/qgpgmerefreshkeysjob.cpp (slotStatus): Remove
- unused variable typ.
-
- Qt: Create TestPassphraseProvider on stack.
- + commit a27d7755d071aad42efc2aa4ea3899ba7b17f8bf
- * lang/qt/tests/t-encrypt.cpp, lang/qt/tests/t-tofuinfo.cpp: Create
- TestPassphraseProvider on stack.
-
- Cpp: Clarify ownership of provider classes.
- + commit 21d5e71d486da8e37cf53f2b968646b39a6daa72
- * lang/cpp/src/context.h: Note that the context does not take
- ownership of providers.
-
-2016-08-10 Justus Winter <justus@g10code.com>
-
- tests: Fix memory leak.
- + commit 04f994d5db6db0575dc73c2356c7d51424e2d9fe
- * tests/gpg/t-encrypt-mixed.c (main): Free 'text2'.
-
-2016-08-10 Andre Heinecke <aheinecke@intevation.de>
-
- core: Ensure err is initalized in gpg_encrypt.
- + commit 270887309f4b673b13e58c29ea3989c56989590e
- * src/engine-gpg.c (gpg_encrypt): Initialize err.
-
- Qt: Fix t-keylist moc include.
- + commit 0c222e1b3cabe1a8b84a2877420cdd5df56171b5
- * lang/qt/tests/t-keylist.cpp: Don't include t-support.moc
-
-2016-08-09 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Clean up debug output in tests.
- + commit 969f223d8de21d7c8b0f7646bbf8dbb5864e8d03
- * lang/qt/tests/t-support.cpp: Remove accidentally commited
- debug output.
-
- Qt: Add encryption test and refactor testsuite.
- + commit f209ec8f581ae597b37f2e3a5e452e4b53b2d4c7
- * lang/qt/tests/Makefile.am: Add t-encrypt and t-support.
- * lang/qt/tests/t-support.cpp, lang/qt/tests/t-support.c (QGpgMETest):
- New. Class to handle common cleanup / init.
- * lang/qt/tests/t-keylist.cpp,
- lang/qt/tests/t-keylocate.cpp,
- lang/qt/tests/t-ownertrust.cpp,
- lang/qt/tests/t-tofuinfo.cpp: Inherit QGpgMETest.
- * lang/qt/tests/t-encrypt.cpp: New. Test Symetric and Asymectric
- encryption. Mixed encryption test is disabled.
-
- Qt: Add support for EncryptJobs with generic flags.
- + commit 34b456c3fb9e59788b07a75441da482bb28bda87
- * lang/qt/src/encryptjob.h, lang/qt/src/signencryptjob.h,
- lang/qt/src/qgpgmeencryptjob.h, lang/qt/src/qgpgmeencryptjob.cpp,
- lang/qt/src/qgpgmesignencryptjob.cpp,
- lang/qt/src/qgpgmeencryptjob.cpp: Add start and exec overloads
- that accept generic EncryptFlags.
-
- Cpp: Add support for all EncryptionFlags.
- + commit 17372393798ea5e2d6838f3dd1e001dd4a66c941
- * lang/cpp/src/context.h (EncryptionFlags): Extend.
- * lang/cpp/src/context.cpp (encryptflags2encryptflags): Ditto.
-
- Cpp: Fix simple symmetric encryption.
- + commit bf776ce94cf454f1b3f1645b1cde09cd1c54324b
- * lang/cpp/src/context.cpp (Context::encrypt): If no recipients
- are provided encrypt with NULL and not an empty array.
-
- core: Add support for mixed symmetric and asym enc.
- + commit 3d2f027d0f40e7ec4ab48cee89ff0ee10b423566
- * src/gpgme.h.in (gpgme_encrypt_flags_t): New flag
- GPGME_ENCRYPT_SYMMETRIC.
- * src/engine-gpg.c (gpg_encrypt): Also add --symmetric if the flag
- is given.
- * NEWS: Mention new flag.
- * tests/run-encrypt.c (show_usage): Extend for --symmetric.
- (main): Handle --symmetric.
- (main): Set passphrase_cb in loopback mode.
- (main): Fix encrypt call if no recipients are given.
- * tests/gpg/t-encrypt-mixed.c: New.
- * tests/gpg/Makefile.am (c_tests): Add new test.
- * doc/gpgme.texi: Document new flag.
-
-2016-08-08 Werner Koch <wk@gnupg.org>
-
- core: Let GPGME_PROTOCOL_ASSUAN pass Assuan comments through.
- + commit b5e16b036f0045524a583d8a366d8a3366fc0005
- * src/engine-assuan.c (llass_new): Set ASSUAN_CONVEY_COMMENTS,
-
-2016-08-08 Andre Heinecke <aheinecke@intevation.de>
-
- Prepend LD_LIBRARY_PATH for python tests.
- + commit ab6f66d676581cb497e581e4af40e2fe5bff507b
- * lang/python/tests/Makefile.am (TESTS_ENVIRONMENT): Prepend path
- instead of setting the value.
-
-2016-08-05 Justus Winter <justus@g10code.com>
-
- python: Clean up and modernize examples.
- + commit 2a613e87156b23c4aa6aa5ce38505cb285de6a18
- * lang/python/examples/Examples.rst: Delete file.
- * lang/python/examples/t-edit.py: Likewise. This is actually a test
- case and has been moved to 'tests'.
- * lang/python/examples/assuan.py: New file.
- * lang/python/examples/decryption-filter.py: Likewise.
- * lang/python/examples/delkey.py: Modernize.
- * lang/python/examples/encrypt-to-all.py: Likewise.
- * lang/python/examples/exportimport.py: Likewise.
- * lang/python/examples/genkey.py: Likewise.
- * lang/python/examples/inter-edit.py: Likewise.
- * lang/python/examples/sign.py: Likewise.
- * lang/python/examples/signverify.py: Likewise.
- * lang/python/examples/simple.py: Likewise.
- * lang/python/examples/testCMSgetkey.py: Likewise.
- * lang/python/examples/verifydetails.py: Likewise.
-
-2016-08-04 Werner Koch <wk@gnupg.org>
-
- core: Extend gpgme_subkey_t to carry the keygrip.
- + commit 6f3dc66634e30d86aa6250c4ac22f9b8f7ec1be9
- * src/gpgme.h.in (struct _gpgme_subkey): Add file 'keygrip'.
- * src/key.c (gpgme_key_unref): Free KEYGRIP.
- * src/keylist.c (keylist_colon_handler): Parse GRP records.
- * src/engine-gpg.c (gpg_keylist_build_options): Do not use
- --with-fingerprint options for gpg versions >= 2.1.15.
-
- * tests/run-keylist.c (main): Print subkeys and keygrips.
-
-2016-08-03 Justus Winter <justus@g10code.com>
-
- python: Add a nicer interface to list keys.
- + commit 56e26b54da9f16961209275d7a61883d3ea898ca
- * lang/python/pyme/core.py (Context.keylist): New method.
- * lang/python/tests/t-keylist.py: Test new method.
-
-2016-08-02 Justus Winter <justus@g10code.com>
-
- python: Add a flag identifying in-tree builds.
- + commit 4c8265d32ddff5960a464b8d4e8d7d2258495b2e
- * lang/python/helpers.c (pyme_in_tree_build): New variable.
- * lang/python/helpers.h (pyme_in_tree_build): New declaration.
- * lang/python/pyme/version.py.in (in_tree_build): New variable.
- * lang/python/setup.py.in: Rework macro handling, set 'IN_TREE_BUILD'
- as appropriate.
-
- python: Fix build system integration.
- + commit 0bd7d8c1977183abc414e11aafa26a4f834ca2a5
- * lang/python/Makefile.am: Be more careful when cleaning the build
- directory, we must not delete the generated file 'pyme/version.py'.
-
- doc: Document the Assuan protocol.
- + commit 135185b7ef2225aa5e8c54a6cf1265d3e6cbbe48
- * doc/gpgme.texi: Document the Assuan protocol.
-
-2016-07-28 Justus Winter <justus@g10code.com>
-
- python: Fix out-of-tree build.
- + commit 4e728de8421e2ade2061786aaebcdae3f60da3b8
- * lang/python/MANIFEST.in: Add 'private.h'.
-
- python: Improve error handling.
- + commit 5a7c7a86f7e8eaf10e37138617a2d838f9d4466f
- * lang/python/pyme/core.py (Context.protocol): Check that the engine
- is usable before setting the protocol.
- (Context._errorcheck): Add missing functions.
-
- src: Fix dummy engine versions.
- + commit b9e6eacd06ffeb36854c208aa4325cff3e3dfbbe
- Previously, 'gpgme_engine_check_version' failed for these protocols
- because the version parser failed to parse the dummy versions.
-
- * src/engine-assuan.c (llass_get_version): Use a version triple that
- the parser can understand.
- (llass_get_req_version): Likewise.
- * src/engine-spawn.c (engspawn_get_version): Likewise.
- (engspawn_get_req_version): Likewise.
- * src/engine-uiserver.c (uiserver_get_version): Likewise.
- (uiserver_get_req_version): Likewise.
-
- python: Drop superfluous imports and trim public interface.
- + commit 2ff58fcbd5c060dac3a7feec478819d2c5a164ec
- * lang/python/pyme/__init__.py: Avoid leaking low-level 'gpgme', make
- sure the main module looks nice and tidy, appease pyflakes.
- * lang/python/pyme/errors.py: Appease pyflakes.
- * lang/python/pyme/util.py: Avoid leaking low-level 'gpgme' into the
- module namespace.
- * lang/python/pyme/version.py.in: Likewise.
- * lang/python/tests/t-keylist.py: Drop superfluous imports.
- * lang/python/tests/t-sig-notation.py: Likewise.
- * lang/python/tests/t-sign.py: Likewise.
- * lang/python/tests/t-signers.py: Likewise.
-
- python: Rename compiled SWIG module.
- + commit 2f754440f28e8f81babdf7efa6186edbc8ad99fd
- Avoid the name pygpgme, as this is the name of another popular Python
- binding for GPGME.
-
- This commit renames the compiled Python module produced by SWIG.
-
- * lang/python/Makefile.am: Rename the compiled Python module.
- * lang/python/gpgme.i: Likewise.
- * lang/python/pyme/core.py: Likewise.
- * lang/python/pyme/errors.py: Likewise.
- * lang/python/pyme/util.py: Likewise.
- * lang/python/pyme/version.py.in: Likewise.
- * lang/python/setup.py.in: Likewise.
-
- python: Rename exported functions.
- + commit b5aa05c3b261c3846ebbcf76e7505cff5459f918
- Avoid the name pygpgme, as this is the name of another popular Python
- binding for GPGME.
-
- This commit renames all functions that are exported to the Python
- world.
-
- * lang/python/helpers.c: Rename all exported functions.
- * lang/python/helpers.h: Likewise.
- * lang/python/pyme/core.py: Likewise.
-
- python: Rename private functions.
- + commit 1d2f22aae668ce136cacd254875e118dc1faa6a2
- Avoid the name pygpgme, as this is the name of another popular Python
- binding for GPGME.
-
- This commit renames all functions that are not exported to the Python
- world.
-
- * lang/python/gpgme.i: Rename all private functions.
- * lang/python/helpers.c: Likewise.
- * lang/python/helpers.h: Likewise.
- * lang/python/private.h: Likewise. Also move the SWIG runtime helper
- prototypes here.
-
- python: Support the Assuan engine.
- + commit de69fa496c09386d5e99747670d6887cf52dd09e
- * lang/python/gpgme.i: Add typemaps for the Assuan protocol callbacks.
- * lang/python/helpers.c (_pyme_assuan_{data,inquire,status}_cb): New
- functions.
- * lang/python/private.h (_pyme_assuan_{data,inquire,status}_cb): New
- prototypes.
- * lang/python/pyme/core.py (Context.assuan_transact): New method.
- * lang/python/pyme/util.py (percent_escape): New function.
- * lang/python/tests/Makefile.am (py_tests): Add new test.
- * lang/python/tests/t-protocol-assuan.py: New file.
-
- python: Improve engine information handling.
- + commit 355d7072863ac1f0f725e77141a59f3ed8a5e4af
- * lang/python/gpgme.i (gpgme_engine_info_t): Wrap engine infos.
- * lang/python/pyme/core.py (Context.engine_info): New property.
- (Context.{g,s}et_engine_info): Improve docstrings.
- * lang/python/pyme/results.py (EngineInfo): New class.
-
- python: Add accessors for the protocol.
- + commit 78f7bf4dcf75206faae5776c2ee4166628313532
- * lang/python/pyme/core.py (Context.__init__): Add 'protocol'
- parameter.
- (Context.protocol): New accessors.
-
- python: Expose less functions to the Python world.
- + commit 3d4dc3f0218234a27103bdb6f93b17c0703b71a2
- * lang/python/Makefile.am (EXTRA_DIST, COPY_FILES): Add new file.
- * lang/python/gpgme.i: Include new file and add comments.
- * lang/python/helpers.c: Include new file.
- * lang/python/helpers.h: Move functions we do not need to expose...
- * lang/python/private.h: ... here.
-
-2016-07-19 Ben Kibbey <bjk@luxsci.net>
-
- Fix including nil bytes in keylist output.
- + commit 6a7ee33abd5059f5ae2f70a7dd9f610c16552f8e
- * src/gpgme-tool.c (cmd_keylist,gt_result): use strlen().
-
-2016-07-15 Justus Winter <justus@g10code.com>
-
- python: Make GPGME's version easily accessible.
- + commit e545ca3f682b615ce447c186a2c73489a32b0592
- * lang/python/pyme/version.py.in (gpgme_versionstr): New variable.
-
- python: Add an idiomatic interface.
- + commit 1f318b7aaaa77672fab117d54fe75221780df83c
- * configure.ac: Bump required Python version.
- * lang/python/pyme/__init__.py: Update docstring. Import Context and
- Data.
- * lang/python/pyme/core.py (Context.encrypt): New function.
- (Context.decrypt): Likewise.
- (Context.sign): Likewise.
- (Context.verify): Likewise.
- * lang/python/pyme/errors.py: Add new errors.
- * lang/python/pyme/util.py (process_constants): Rework and return the
- inserted keys.
- * lang/python/tests/Makefile.am (EXTRA_DIST): Add new keys.
- * lang/python/tests/encrypt-only.asc: New file.
- * lang/python/tests/sign-only.asc: Likewise.
- * lang/python/tests/initial.py: Mark key 'Alpha' as trusted, import
- new keys.
- * lang/python/tests/support.py: Add fingerprints of known keys.
- (in_srcdir): New function.
- (print_data): Handle bytes too.
- (mark_key_trusted): New function.
- * lang/python/tests/t-decrypt-verify.py: Adjust test. Test idiomatic
- interface.
- * lang/python/tests/t-decrypt.py: Test idiomatic interface.
- * lang/python/tests/t-encrypt-sign.py: Likewise.
- * lang/python/tests/t-encrypt-sym.py: Likewise.
- * lang/python/tests/t-encrypt.py: Likewise.
- * lang/python/tests/t-idiomatic.py: Simplify.
- * lang/python/tests/t-keylist.py: Adjust to newly trusted key.
- * lang/python/tests/t-sign.py: Likewise. Test idiomatic interface.
- * lang/python/tests/t-signers.py: Likewise.
- * lang/python/tests/t-verify.py: Likewise.
-
-2016-07-14 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Disable keylocate test for gnupg < 2.0.10.
- + commit d2f2cbd297c4d2f2c3264ecc3ffb7a2b3a70bd55
- * lang/qt/tests/t-keylocate.cpp: Disable test for gnupg < 2.0.10
-
- Cpp: Add EngineInfo::Version class.
- + commit 41de1ab904eaddffb2de17b1de8ef41e462daabe
- * lang/cpp/src/engineinfo.cpp (EngineInfo::engineVersion): New.
- * lang/cpp/src/engineinfo.h (EngineInfo::engineVersion): Declare.
- (EngineInfo::Version): Small helper to work with versions.
-
- Qt: Fix usage of ignore-invalid-option in tests.
- + commit e7f4c364732660c6cda25720b7dbc5b1c917e368
- * Makefile.am (pubring-stamp): Fix config.
-
- Qt: Fix tests if gpg2 is gpg.
- + commit e4c0645c1eea9380d80a20895eb83c9dd7228776
- * lang/qt/tests/Makefile.am (pubring-stamp): Loopback and provide
- passphrase on command line when importing.
-
-2016-07-14 Justus Winter <justus@g10code.com>
-
- python: Fix test.
- + commit fddcc62abd57cb04e84861abd3991c7d529c2464
- * lang/python/tests/t-keylist.py: Do not assume key alpha is trusted
- yet.
-
-2016-07-13 Werner Koch <wk@gnupg.org>
-
- build: Update config.{guess,sub} to {2016-05-15,2016-06-20}.
- + commit a9670d152a4598aef1ae0960a79fb6f5d8db55ad
- * build-aux/config.guess: Update.
- * build-aux/config.sub: Update.
-
- core: New GPGME_DATA_ENCODING_MIME.
- + commit d8d5f5a16712244fe6eff860b6ac5f007b1bf870
- * src/gpgme.h.in (GPGME_DATA_ENCODING_MIME): New.
- * src/data.c (gpgme_data_set_encoding): Adjust check.
- * src/engine-gpg.c (have_gpg_version): New.
- (gpg_encrypt, gpg_encrypt_sign): Pass flag '--mimemode'.
- (gpg_sign): Ditto.
-
- * lang/cpp/src/data.h (GpgME): Add MimeEncoding.
- * lang/cpp/src/data.cpp (encoding, setEncoding): Support MimeEncoding.
-
- * src/gpgme-tool.c (server_data_encoding): Add flag --mime.
-
- core: Pass the engine's version string to the engine's new function.
- + commit 2095b1573a8196ba3efdf817324d1b3ee05cbb93
- * src/engine-backend.h (engine_ops): Add arg 'version' to NEW.
- * src/engine-assuan.c (llass_new): Add dummy arg 'version'.
- * src/engine-g13.c (g13_new): Ditto.
- * src/engine-gpgconf.c (gpgconf_new): Ditto.
- * src/engine-gpgsm.c (gpgsm_new): Ditto.
- * src/engine-spawn.c (engspawn_new): Ditto.
- * src/engine-uiserver.c (uiserver_new): Ditto.
- * src/engine.c (_gpgme_engine_new): Pass version string to the new
- function.
- * src/engine-gpg.c (struct engine_gpg): Add field 'version'.
- (gpg_new): Add arg 'version'.
- (gpg_release): Free VERSION.
-
-2016-07-13 Andre Heinecke <aheinecke@intevation.de>
-
- Cpp: Add feature enum for new identify.
- + commit 537cb871fd59f3a20c697a046715e6339ff6633b
- * lang/cpp/src/context.cpp (supported_features2): Add
- BinaryAndFineGrainedIdentify
- * lang/cpp/src/global.h (Feature2): ditto.
-
-2016-07-12 Justus Winter <justus@g10code.com>
-
- python: Port more tests.
- + commit 1bff47ee58bcf9d0016fb7ac7e37cbf075abd059
- * lang/python/pyme/core.py (Context.op_keylist_all): Add missing
- 'op_keylist_end'.
- (Context.op_trustlist_all): Fix function. Add missing
- 'op_trustlist_end'.
- * lang/python/tests/Makefile.am (pytests): Add new files.
- * lang/python/tests/t-import.py: New file.
- * lang/python/tests/t-keylist.py: Likewise.
- * lang/python/tests/t-trustlist.py: Check alternate interface.
-
- python: Improve python packaging.
- + commit 57b51685528153f5a50ab0999feec25c83190501
- * lang/python/Makefile.am: Sign source releases, and upload them.
- * lang/python/setup.py.in: Add categories.
-
-2016-07-12 Andre Heinecke <aheinecke@intevation.de>
-
- m4: Don't set fpic for qt on windows.
- + commit 938f7e9c8b466594d05c0347fe627b225263a6a6
- * m4/qt.m4 (FIND_QT): Do not set fpic for windows.
-
- m4: Use LIBS instead of LDFLAGS for Qt libs.
- + commit 744978cce8f9dfb2363b9d274ee99f25cfcf0e40
- * m4/qt.m4: Modify LIBS instead of LDFLAGS for link test.
-
- Bump version to 1.7.0.
- + commit bf742fb88545689addfca18192baf2f56a1895e1
- * configure.ac(mym4_version_minor),
- (mym4_version_micro): Next release will be 1.7.0
-
- Qt: Install CamelCase forward includes.
- + commit fd87c4679c4bfe19390fa2047dff23bb213a4b18
- * lang/qt/src/Makefile.am (camelcase_headers): New. Create and install
- CamelCase headers.
-
- Qt: Export VerifyDetachedJob.
- + commit 86ab2ee2d603111d24500b8d64a9a1dd82f8bdc0
- * lang/qt/src/verifydetachedjob.h (VerifyDetachedJob): Export it.
-
- Qt/Cpp: Add version headers.
- + commit b03c48cfb06faae7d7033a0532f319cbcf13f18a
- * lang/cpp/src/gpgmepp_version.h.in,
- lang/qt/src/qgpgme_version.h.in: New. Version information.
- * lang/qt/src/Makefile.am, lang/cpp/src/Makefile.am: Add them.
- * configure.ac: Configure them.
-
- Qt/Cpp: Add license blurb to export headers.
- + commit 362b8cdf4e0d5cd54ec2b325508dcdefac686f2c
- * lang/cpp/src/gpgmepp_export.h,
- lang/qt/src/qgpgme_export.h: Add license blurb.
-
-2016-07-11 Justus Winter <justus@g10code.com>
-
- python: Fix distcheck.
- + commit ce662891373eba6cce1cf8df516cb2370970737e
- * lang/python/Makefile.am (EXTRA_DIST): Add missing files.
-
-2016-07-11 Andre Heinecke <aheinecke@intevation.de>
-
- m4: Add compile / link check for qt.
- + commit ed070313155a1c79a57ba69f4299f2aefc65fad7
- * m4/qt.m4 (FIND_QT): Check if a qt application can be compiled and
- linked.
-
-2016-07-11 Justus Winter <justus@g10code.com>
-
- python: Enable out-of-tree build of pyme bindings.
- + commit 007382ce94a6318557370c440f7d609a030a119e
- * lang/python/MANIFEST.in: Update manifest template.
- * lang/python/Makefile.am: Copy more files, move generation of files
- to Python build script, add 'sdist' target to build a Python source
- distribution.
- * lang/python/gpgme-h-clean.py: Add code to build 'errors.i'.
- * lang/python/setup.py.in: Generate files, enable out-of-tree builds.
-
- python: Do not depend on access to internal data structures.
- + commit 98cba522c906115efcba1f8cc0bec7e5edb51ecd
- * lang/python/gpgme.i (gpgme_data_t): Rework so that it works without
- access to the definition of 'struct gpgme_data'.
- * lang/python/helpers.c (object_to_gpgme_data_t): Add assertion.
-
- python: Make result wrapping backwards compatible.
- + commit c53f87c5f9ca63119152f41dcebfb175d4df2cef
- * lang/python/pyme/results.py (Result.__init__): Skip missing fields.
-
-2016-07-11 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Fix memleaks in tests.
- + commit bfa8ac7e02c16790ee5bd3b42c26699f4821d72e
- * lang/qt/tests/t-keylist.cpp(cleanupTestCase): Ensure that
- posted events are handled for autodeletion.
- (testSingleKeylistSync): delete job.
- * lang/qt/tests/t-ownertrust.cpp(cleanupTestCase): Ditto
- * lang/qt/tests/t-ownertrust.cpp(testChangeOwnerTrust): Delete
- keylistjobs.
- * lang/qt/tests/t-keylocate.cpp(cleanupTestCase): Ditto
-
- Qt: Add some general Protocol documentation.
- + commit b1f42e8f25ada220ec8e4762cfebc3a49b1f7d56
- * lang/qt/src/protocol.h (Protocol): Add doc.
-
- Qt: Disable t-tofuinfo tests.
- + commit 02babb29612d554c37b63a49f78acc45653b557e
- * lang/qt/tests/t-tofuinfo.cpp: Disable tests.
-
-2016-07-08 Justus Winter <justus@g10code.com>
-
- src: Fix error handling.
- + commit de74fe59feef9adc858ac04004880bfd44315d0d
- * src/encrypt.c (encrypt_status_handler): Fix error handling, ||
- conflates errors.
-
- python: Fix raising stashed exceptions.
- + commit 8a93f345b701332270c9829a4d0a93537f98a8d8
- Fixes an issue with newer versions of Python.
-
- * lang/python/helpers.c (pygpgme_raise_callback_exception): Be more
- careful when restoring the exception.
-
-2016-07-07 Justus Winter <justus@g10code.com>
-
- python: Fix distcheck.
- + commit 52efcf1ee9fc8ba4c6bd23d8fe4f5f7993ba9fb1
- * lang/python/INSTALL: Drop obsolete file.
- * lang/python/Makefile.am (EXTRA_DIST): Add missing files.
- (CLEANFILES): Remove generated files.
- (clean-local): Fix permissions of copied files.
- * lang/python/tests/Makefile.am (TESTS): Use our own setup and
- teardown scripts.
- (EXTRA_DIST): Add missing files.
- * lang/python/tests/final.py: New file.
- * lang/python/tests/initial.py: Likewise.
-
- qt: Fix distcheck.
- + commit 38c408560c6ebc3ea5eeeade01d38750bf5799e5
- * lang/qt/src/Makefile.am (qgpgme_headers): Add missing file.
- (CLEANFILES): Add generated file.
- * lang/qt/tests/Makefile.am (clean-local): Remove private keys.
-
- cpp: Fix distcheck.
- + commit 49286ac1c82c480e2c718f828c57da9778ccd0b9
- * lang/cpp/src/Makefile.am (CLEANFILES): Remove generated file.
-
-2016-07-06 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Add test for publicKeyAlgorithmAsString.
- + commit fc0267233239b42e9fb74a8acd7511503e287a9e
- * lang/qt/tests/t-keylist.cpp (testPubkeyAlgoAsString): New.
-
- Cpp: Expose gpgme_pubkey_algo_name.
- + commit e41ae4db9e70d9aebf80ebbd4ce03977435c2ccf
- * lang/cpp/src/key.cpp (Subkey::publicKeyAlgorithmAsString): New
- static variant.
- * lang/cpp/src/key.h: Declare function. Clarify comment about name
- mismatch.
-
- Qt: Add check for pubkeyAlgo in t-keylist.
- + commit 9f93346d21271b916f15d80420669f5d659a40de
- * lang/qt/tests/t-keylist.cpp (testSingleKeyListSync): Check
- pubkeyAlgo.
-
- Cpp: Add PubkeyAlgo enum.
- + commit c28007d0407bcc3621b8266d6d77eb0d069aec35
- * lang/cpp/src/key.h (Subkey::PubkeyAlgo): New enum.
- (Subkey::publicKeyAlgorithm): Change return type.
- * lang/cpp/src/key.cpp (Subkey::publicKeyAlgorithm): Use enum.
-
- Qt: Fix include order when buildin test.
- + commit 4934893e27a50f5715dcd4d2907ecbe629921b32
- * lang/qt/tests/Makefile.am (AM_CPPFLAGS): Include cpp before
- gpgme src directory.
-
- Revert "Qt: More robust lookup of Cpp's context.h"
- + commit 7a8c04f66d382dc49d962ad18c46d7ad332ccc0f
- * lang/qt/src/threadedjobmixin.h: Revert using full path
- for context.h
-
-2016-07-05 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Fix test build with Qt < 5.4.0.
- + commit 49a6ee50587c9d4b6f07e60ce1a939c863e7f15c
- * lang/qt/tests/t-keylist.cpp,
- lang/qt/tests/t-keylocate.cpp,
- lang/qt/tests/t-ownertrust.cpp: Use old style SIGNAl syntax for
- QSignalSpy
-
- Qt: More robust lookup of Cpp's context.h.
- + commit 47bfbc9026b49b9918359af5fcc1621aab0d1065
- * lang/qt/src/threadedjobmixin.h: When building qgpgme look for
- context.h in the full cpp subdirectory.
-
- w32: Fallback to 2.1 reg key for gpgconf search.
- + commit 72b83ffc4d7581f4efef3bd7c261d7d7424bcf0e
- * src/w32-util.c (_gpgme_get_gpgconf_path): Fallback to 2.1 installer
- registry key.
-
-2016-07-04 Andre Heinecke <aheinecke@intevation.de>
-
- Doc: Document pinentry mode.
- + commit 329ab93f7ed862d7f4c0501fca5355936a74ac52
- * doc/gpgme.texi (Passphrase Callback): Document as context
- attribute.
- (gpgme_set_passphrase_cb): Note that this requires LOOPBACK mode
- with GnuPG 2.1.
-
- Qt: Add testTofuSignCount.
- + commit 8fa9b5696ca9f8386971e6f36646536f9579ceaa
- * src/lang/qt/tests/t-tofuinfo.cpp(testTofuSignCount): New.
- (initTestCase): Set gpg-agent loopback pinentry config.
- (signAndVerify): Helper for tofuTestSignCount.
-
- Qt: Add test passphrase provider.
- + commit efb5059b9b6e81db7b0c016aa9fb70abe98308ea
- * lang/qt/tests/t-support.h (TestPassphraseProvider): New.
- * lang/qt/tests/Makefile.am (t_tofuinfo_SOURCES): Add t-support.h
-
- Cpp: Add support for TOFU_CONFLICT sigsum.
- + commit 80498ab662238a31325e78c0037ea6752f680a37
- * lang/cpp/src/verificationresult.cpp (GpgME::Signature::Summary):
- Handle TOFU_CONFLICT.
- * lang/cpp/src/verificationresult.h (Summary): Add TofuConflict.
-
- Cpp: Add support for pinentry_mode.
- + commit d75c118aae18e20f08dbbb69c7998e1f3694ccd0
- * lang/cpp/src/context.cpp (Context::pinentryMode): Return mode.
- (Context::setPinentryMode): Set mode.
- * lang/cpp/src/context.h (PinentryMode): Add enum.
-
-2016-07-01 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Add test for TofuInfo.
- + commit fbd6ac4655ebf56d91ebd9a4ff499c8319fcd087
- * lang/qt/tests/t-tofuinfo.cpp: New.
- * lang/qt/tests/Makefile.am: Update accordingly.
-
- Cpp: Add TofuInfo to signatures.
- + commit 93c5d420fcfe275aeff2b3d5ce99629edbe6625d
- * lang/cpp/src/tofuinfo.cpp, lang/cpp/src/tofuinfo.h: New class.
- * lang/cpp/src/verificationresult.cpp (Signature::tofuInfo): New.
- (VerificationResult::Private): Handle tofu info.
- (GpgME::operator<<(std::ostream &os, const Signature &sig)): Include
- TofuInfo in dump.
- * lang/cpp/src/verificationresult.h (Signature::tofuInfo): New.
- * lang/cpp/src/Makefile.am (main_sources, gpgmepp_headers): Add
- new files.
- * configure.ac (LIBGPGMEPP_LT_REVISION): Bump for new API.
-
- core: Clarify documentation of tofu_stats address.
- + commit 948ce7d1edf12ecb5080a4816ca15f495d6393f5
- * src/gpgme.h.in: Mention that Address is not always in addr-spec.
-
- core: Fix identify for armored detached sigs.
- + commit 570bf2a648f14b34c4c45d3890b7300529a82d37
- * src/data-identify.c (basic_detection): Return signature for
- signature.
-
-2016-06-27 Andre Heinecke <aheinecke@intevation.de>
-
- Cpp: Expose new data_identify values.
- + commit 15fc5c34c88ecbb61272705af60f7054b41c57f7
- * lang/cpp/src/data.cpp (GpgME::Data::type): Handle PGP Encrypted
- and Signature.
- * lang/cpp/src/data.h: Add values accordingly.
-
- Cpp: Do not treat KEYEXPIRED as error.
- + commit 82d484c852d07958ac93efb3d2d7b7726fbb5231
- * lang/cpp/src/editinteractor.cpp (status_to_error): No error
- for KEYEXPIRED.
-
-2016-06-24 Andre Heinecke <aheinecke@intevation.de>
-
- tests: Add new test tool run-decrypt.
- + commit 3364549c19682f56d4d9c52ab7f76862c5a456cf
- * tests/run-decrypt.c: New.
- * tests/Makefile.am (noinst_PROGRAMS): Add run-decrypt.
-
-2016-06-23 Werner Koch <wk@gnupg.org>
-
- core: Add closer inspection of "PGP MESSAGE".
- + commit cf37a57d28c43ec36277e84ca44458b7287b940b
- * src/data-identify.c (inspect_pgp_message): New.
- (basic_detection): Un-const arg DATA. Call inspect_pgp_message.
-
- core: Add a base 64 decoder.
- + commit f8b8027ae63c957557ed6bdc7e5a30ef1bdd8e77
- * src/b64dec.c: New. Taken from gnupg. Prefix function names with
- _gpgme_ and change to use standard C malloc functions.
- * src/util.h.h (struct b64state): New.
- * src/Makefile.am (main_sources): Add file.
-
-2016-06-22 Werner Koch <wk@gnupg.org>
-
- core: Detect compressed signed OpenPGP data.
- + commit bb8cf6236582fc9eb6564046599989af52779a26
- * src/data-identify.c (next_openpgp_packet): Allow partial encoding.
- (pgp_binary_detection): Handle compressed packets.
-
-2016-06-21 Werner Koch <wk@gnupg.org>
-
- tests: Add new test tool run-identify.
- + commit 5905e8bbd809c1408edad4fa4eb0527fa51cbea3
- * src/gpgme-tool.c (gt_identify): Add new strings.
- * tests/run-identify.c: New.
- * tests/Makefile.am (noinst_PROGRAMS): Add run-identify.
-
- core: Enhance gpgme_data_identify to detect binary PGP messages.
- + commit 32d4bbf5e3e5f88e4a6852d72a35ee30df9d5279
- * src/gpgme.h.in (GPGME_DATA_TYPE_PGP_ENCRYPTED): New.
- (GPGME_DATA_TYPE_PGP_SIGNATURE): New.
- * src/data-identify.c: Add enum for OpenPGP packet types.
- (buf32_to_ulong): New.
- (next_openpgp_packet): New. Based on the gnupg/kbx/keybox-openpgp.c
- implementation and relicensed to LGPL by g10 Code.
- (pgp_binary_detection): New.
- (basic_detection): Call pgp_binary_detection instead of returning
- unknown.
-
-2016-06-16 Justus Winter <justus@g10code.com>
-
- python: Improve autmatically generated docstrings.
- + commit 8997d88bf97d1784706becbf8e9dc74e4656e311
- * lang/python/gpgme.i: Add comment.
- * lang/python/pyme/core.py (__getattr__): Rewrite automatically
- generated doctrings for the wrapper methods.
-
- python: Make result objects more robust.
- + commit a324d0cffe93cab955698c2c065b2f2227e379e4
- Results returned by the GPGME are fragile, i.e. they are only valid
- until the next operation is performed in the context.
-
- We cannot arbitrarily constrain the lifetime of Python objects, we
- therefore create deep copies of the results.
-
- * lang/python/gpgme.i (gpgme_tofu_info_t): Turn these into a list.
- (gpgme_*_result_t): Create deep copies of these objects.
- * lang/python/helpers.c (pygpgme_wrap_fragile_result): New function.
- * lang/python/helpers.h (pygpgme_wrap_fragile_result): New prototype.
- * lang/python/pyme/results.py: New file.
-
- python: Avoid creating SWIG proxy classes.
- + commit 856bcfe2934237011984fab0bc69800a7c25c34b
- * lang/python/Makefile.am (gpgme_wrap.c): Use '-builtin' to make SWIG
- generate builtin types for c types.
- * lang/python/gpgme.i (pygpgme_wrap_gpgme_data_t): Adapt slightly.
-
- python: Simplify wrapping glue.
- + commit 6641c7814b30e3e8f18105b2636545cc1bd07552
- * lang/python/pyme/core.py: Rename '_getctype' to '_ctype' and turn it
- into a string. Likewise rename '_getnameprepend' to '_cprefix'.
- * lang/python/helpers.c: Adapt accordingly.
-
- python: Rework callbacks.
- + commit f3618bc615e3eff1f52fb5849cbf0f0b95515a61
- Simplify how the lifetime of callback arguments is managed.
-
- * lang/python/gpgme.i (gpgme_edit_cb_t): Check arguments.
- (PyObject_p_p, void_p_p): Drop rather dangerous interface.
- (pygpgme_unwrap_gpgme_ctx_t): New function.
- * lang/python/helpers.c (pygpgme_clear_generic_cb): Drop dangerous
- function.
- (pyPassphraseCb): Assert contract.
- (pygpgme_set_passphrase_cb): Use Python's calling convention so that
- we can raise exceptions. Hand in 'self', get the wrapped object, and
- simply store the hook data as attribute of the wrapper object.
- (pyProgressCb, pygpgme_set_progress_cb): Likewise.
- (pygpgme_set_status_cb): Likewise.
- (pygpgme_data_new_from_cbs): Likewise.
- * lang/python/helpers.h (pygpgme_clear_generic_cb): Drop prototype.
- (pygpgme_set_passphrase_cb): Update prototype.
- (pygpgme_set_progress_cb): Likewise.
- (pygpgme_set_status_cb): Likewise.
- (pygpgme_data_new_from_cbs): Likewise.
- (pygpgme_unwrap_gpgme_ctx_t): New prottotype.
- * lang/python/pyme/core.py (Context, Data): Update callsites.
-
- python: Wrap objects implementing the buffer protocol.
- + commit 616929b6edf00b4a774b727385d39b785a112b90
- * lang/python/Makefile.am: Add the toplevel source directory to CFLAGS
- when compiling the bindings so that we can use private header files.
- * lang/python/gpgme.i (gpgme_data_t): Rework the object wrapping. Do
- not create a Python wrapper object, merely a gpgme_data_t object, and
- keep references to buffer objects, if any. If necessary, update the
- buffer after the function call.
- (pygpgme_wrap_gpgme_data_t): New function.
- * lang/python/helpers.c (object_to_gpgme_data_t): Rework object
- wrapping. Also wrap objects implementing the buffer protocol.
- * lang/python/helpers.h (object_to_gpgme_data_t): Update prototype.
- (pygpgme_wrap_gpgme_data_t): New prototype.
- * lang/python/tests/t-idiomatic.py: Demonstrate this.
-
- python: Add properties to wrapped object.
- + commit 5464060baef2da8f5ea377118758e451c55e3787
- * lang/python/pyme/core.py (GpgmeWrapper.__repr__): Saner
- representation.
- (GpgmeWrapper.__str__): Construct a nicer human readable string.
- (GpgmeWrapper._boolean_properties): New field.
- (GpgmeWrapper.__wrap_boolean_property): New function.
- (GpgmeWrapper.__getattr__): Wrap functions using properties.
- (GpgmeWrapper.__setattr__): New method. Likewise wrap functions.
- (Context.signers): New property.
- (Context.pinentry_mode): Likewise.
- (Context._boolean_properties): List boolean properties.
- (Context.__init__): Add keyword arguments for properties and apply
- them.
-
- python: Improve the documentation.
- + commit 5492853d7b84b4e1d0b11b234e32252ba8d1608d
- * lang/python/Makefile.am: Copy the README file.
- * lang/python/README: Rename, convert to org, and update.
- * lang/python/pyme/__init__.py: Move license out of the docstring,
- update docstring.
- * lang/python/pyme/core.py: Add and update docstrings.
-
- python: Get version information from the build system.
- + commit 7eef399d89d4c3877cb795ed5ba45ecb241e67be
- * configure.ac: Generate 'setup.py' and 'version.py'.
- * lang/python/Makefile.am: Use generated setup script.
- * lang/python/pyme/version.py: Turn it into a template, and get
- version information from the build system. Also drop some variables.
- * lang/python/setup.py: Likewise. This way we can avoid importing the
- version module, which is frowned upon and actually caused a problem.
-
- python: Fix exception leak.
- + commit a852f99a0ac9dc7f7493b403f811f5f7518fae40
- * lang/python/helpers.c (pygpgme_stash_callback_exception): Fix leak.
-
- python: Fix license.
- + commit 3bacce03e60dc45cc2da99a2f5c504612202e802
- Other parts of the build system are also LGPLed.
-
- * lang/python/Makefile.am: Fix license.
-
-2016-06-14 Werner Koch <wk@gnupg.org>
-
- core: Make sure FD_SET is not used with an out of range fd.
- + commit 8173c4f1f8a145c4b1d454f6f05e26950e23d675
- * src/posix-io.c (_gpgme_io_select): Check for FD out of range.
-
-2016-06-08 Justus Winter <justus@g10code.com>
-
- python: Improve error handling.
- + commit 77d149e8614c381458e07808a7930ce3fb92cdc3
- * lang/python/helpers.c (pyPassphraseCb): Handle write errors.
- (pyEditCb): Likewise.
-
- python: Add function to raise exceptions from c.
- + commit 5ebc205439cac266685d2532466df8b3457dea23
- * lang/python/helpers.c (pygpgme_raise_exception): New function.
-
- python: Fix stripping deprecated functionality.
- + commit 8426304b67a0b0a5630db500abf740b0e0b9e43c
- * lang/python/Makefile.am (gpgme.h): Add script as input.
- * lang/python/gpgme-h-clean.py (deprec_func): Also match struct
- members.
- (line_break): Fix matching on struct members.
-
- python: Fix type.
- + commit 990492ea4f7dafbb75de15ea91c30cbf090034b5
- * lang/python/gpgme.i: Use correct Python type for size.
-
- python: Implement the context manager protocol.
- + commit e3c5913a33edcbd7329b8d154c669f95ce782038
- * lang/python/pyme/core.py (Context.__del__): Make function
- idemptotent.
- (Context.{__enter__,__exit__}): Implement the context manager
- protocol.
- (Data.__del__): Make function idemptotent, drop debug print.
- (Data.{__enter__,__exit__}): Implement the context manager
- protocol.
- * lang/python/tests/t-idiomatic.py: Demonstrate this.
-
-2016-06-07 Justus Winter <justus@g10code.com>
-
- python: Fix error handling.
- + commit f8f9bf06bc3190968ba6613032d60a3bf2c8a6d9
- * lang/python/gpgme.i: Fix freeing an uninitialized pointer in the
- error handling of generated wrapper functions by explicitly storing
- the pointer in a local variable which can be initialized.
-
-2016-06-06 Justus Winter <justus@g10code.com>
-
- python: Wrap file-like objects on demand.
- + commit 8196edf9ca5c8f2f02553e7f22d9c79dbd229882
- * lang/python/gpgme.i (gpgme_data_t): Use new function to create
- wrapper objects if necessary, and deallocate them after the function
- call.
- * lang/python/helpers.c (object_to_gpgme_data_t): New function.
- * lang/python/helpers.h (object_to_gpgme_data_t): New prototype.
- * lang/python/tests/Makefile.am (pytests): Add new test.
- * lang/python/tests/t-idiomatic.py: New file.
-
- python: Move helper function.
- + commit 26c3accc95ab77ddbe60db822e2938ad5f480d41
- * lang/python/gpgme.i (object_to_gpgme_t): Move...
- * lang/python/helpers.c: ... here.
- * lang/python/helpers.h (object_to_gpgme_t): New prototype.
-
- python: Fix error handling.
- + commit 89eb0cd4d65bc033ed6342810b26232797482d64
- * lang/python/gpgme.i (object_to_gpgme_t): Properly propagate
- exceptions.
-
- python: Initialize GPGME for the user.
- + commit ae06f7c2fe0e49baeab5a827dc38ba8c57a6404c
- * lang/python/pyme/core.py: Call 'check_version' and explain why.
- * lang/python/tests/support.py (init_gpgme): Drop call here.
-
-2016-06-01 Justus Winter <justus@g10code.com>
-
- python: Fix test suite with GnuPG prior to 2.1.12.
- + commit bbf19124bbec9eb6298cef2914baae7ac74382fe
- * lang/python/tests/Makefile.am (gpg-agent.conf): Use
- 'allow-loopback-pinentry'.
-
- python: Make Python detection more robust.
- + commit 1607aa7fe5dd686ba3bfb6de4a2b602d6a458c86
- Previously, missing Python development packages made configure fail
- instead of merely disabling the bindings.
-
- * configure.ac: Check for 'PYTHON_VERSION'.
- * m4/ax_python_devel.m4: Make test non-fatal.
-
- python: Improve build system integration, fix warnings.
- + commit 73c47535b631a55687ecc5eff1d1d9a9fd71021e
- * lang/python/Makefile.am: Pass CFLAGS to python build system.
- * lang/python/helpers.c (pyPassphraseCb): Use correct type for length.
- (pygpgme_data_new_from_cbs): Drop unused variable.
-
-2016-06-01 Andre Heinecke <aheinecke@intevation.de>
-
- Cpp: Use whitelist for status messages.
- + commit 54314a9c7d7ad52981c836ca742644a1fa69b518
- * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
- Use whitelist instead of blacklist.
-
- Qt: Fix debug output in t-ownertrust.
- + commit 9d6f85bd25e51445f1776b498875e77b529311b1
- * lang/qt/tests/t-ownertrust.cpp (testChangeOwnerTrust): Remove
- general debug of trust level. Add debug output for error.
-
-2016-06-01 Justus Winter <justus@gnupg.org>
-
- tests: Fix notation tests.
- + commit c88c9ef384b6f7bda9a61b58f26c2f89ae25f684
- * lang/python/tests/t-sig-notation.py (check_result): Check critical
- flag.
- * tests/gpg/t-sig-notation.c (check_result): Likewise.
-
-2016-06-01 Werner Koch <wk@gnupg.org>
-
- core: Set notation flags for verify.
- + commit 1cacd7d00a7b3de4a5e11ccce5ee6c50e0a5516d
- * src/gpgme.h.in (GPGME_STATUS_NOTATION_FLAGS): New.
- * src/status-table.c (status_table): Add new status.
- * src/verify.c (parse_notation): Handle flags. Also fix NOTATION_DATA
- in case gpg would not percent-escape spaces.
- (_gpgme_verify_status_handler): Handle flags.
- * tests/run-verify.c (print_result): Print notaion data.
-
-2016-05-31 Tobias Mueller <muelli@cryptobitch.de>
-
- python: use GPG_ERROR_CONFIG variable.
- + commit 8ad17f402f6420880dcf06a13a54feadb52c0208
- instead of calling gpg-error-config.
- This is useful when configuring with --with-gpgerror-prefix
- because then GPG_ERROR_CONFIG contains the correct
- /path/to/bin/gpg-error-config whereas calling gpg-error-config
- directly would look in the user's PATH (and not in the prefix
- where gpg-error-config was installed).
-
-2016-05-31 Justus Winter <justus@gnupg.org>
-
- python: Port more tests.
- + commit afa0dd56e1cce64fe08bff3c64b12aecce54fd2d
- * lang/python/gpgme.i: Hide length fields of notations.
- * lang/python/tests/Makefile.am (pytests): Add new tests.
- * lang/python/tests/t-decrypt-verify.py: New file.
- * lang/python/tests/t-sig-notation.py: Likewise.
- * lang/python/tests/t-verify.py: Likewise.
-
-2016-05-27 Werner Koch <wk@gnupg.org>
-
- Speedup closing of fds before exec.
- + commit 89d22f9229f2ecd559ac6ea91dae60eeff940fa5
- * src/posix-io.c [__linux__]: Include dirent.h.
- (get_max_fds) [__linux__]: Try to figure out the highest used fd.
-
-2016-05-27 Justus Winter <justus@gnupg.org>
-
- python: Port more tests.
- + commit 3915842657f0849a038752fd7445f96081a89dd9
- * lang/python/pyme/core.py (Data._error_check): Add
- 'gpgme_data_get_file_name' to the list of functions not returning an
- error code.
- * lang/python/tests/Makefile.am (pytests): Add new tests.
- * lang/python/tests/support.py (verbose): New variable.
- * lang/python/tests/t-data.py: Test setting and getting the filename.
- * lang/python/tests/t-encrypt-large.py: New file.
- * lang/python/tests/t-file-name.py: Likewise.
- * lang/python/tests/t-trustlist.py: Likewise.
-
- python: Implement data callbacks.
- + commit 2ae847c02731994d99e69d3d025ff01f41406452
- * lang/python/gpgme.i (object_to_gpgme_t): Set exception on error.
- * lang/python/helpers.c (pyDataReadCb): New function.
- (pyDataWriteCb): Likewise.
- (pyDataSeekCb): Likewise.
- (pyDataReleaseCb): Likewise.
- (pygpgme_data_new_from_cbs): Likewise.
- * lang/python/helpers.h (pygpgme_data_new_from_cbs): New prototype.
- * lang/python/pyme/core.py (Data.__init__): Fix docstring, fix read
- callbacks.
- (Data.__del__): Fix read callbacks.
- (Data._free_readcb): Drop function.
- (Data._free_datacbs): New function.
- (Data.new_from_cbs): Fix setting the callbacks.
- (Data.write): Raise stashed exceptions.
- (Data.read): Likewise.
- * lang/python/tests/t-callbacks.py: Test new functionality.
- * lang/python/tests/t-data.py: Likewise.
-
- python: Fix object deallocation.
- + commit ebfe2300c33a3bad311e9ac1530e6c92636a08a4
- Handing a reference to the wrapper object created a non-trivial
- circular reference that Pythons garbage collector is unable to break.
- Explicitly break it by using a weak reference.
-
- * lang/python/helpers.c (pygpgme_stash_callback_exception): Retrieve
- object from weak reference.
- * lang/python/pyme/core.py (Context.__del__): Free status callback.
- (Context.set_passphrase_cb): Use a weak reference.
- (Context.set_progress_cb): Likewise.
- (Context.set_status_cb): Likewise.
- (Context.op_edit): Likewise.
-
- Improve comments.
- + commit e74cd9fb80f12b764d5e4561e73d55644147e9e7
- * src/gpgme.h.in (gpgme_data_seek_cb_t, gpgme_data_seek): Clarify that
- these functions return the new offset.
- (gpgme_data_release_cb_t): Fix name of parameter.
-
- python: Fix reading data from existing files.
- + commit bf188e280b8b4fc775f33c47e2e1e275ed044004
- * lang/python/pyme/core.py (Data.__init__): Add 'copy' kwargument, and
- pass it to functions supporting it. PEP8 fix.
- (Data.new_from_fd): PEP8 fix.
- (Data.new_from_file): Give a more helpful error message if copy is
- False. PEP8 fix.
- (Data.new_from_fd): Hand the file descriptor to
- 'gpgme_data_new_from_fd', not a stream. Fix docstring.
- * lang/python/tests/t-data.py: Add tests for this.
-
-2016-05-25 Justus Winter <justus@gnupg.org>
-
- src: Fix trace string.
- + commit ce73ae9d0cbf782cd3a1949fc4f568f0d1da60d9
- * src/data-compat.c (gpgme_data_new_from_file): Fix trace string.
-
-2016-05-24 Justus Winter <justus@gnupg.org>
-
- python: Improve and test Context.wait.
- + commit 00ff6d07330028da370c869e3ec442eb76f8cbb8
- * lang/python/pyme/core.py (Context.wait): Improve docstring. As the
- context passed to 'gpgme_wait' is never NULL, it is pointless to look
- at the returned context. Always raise exceptions.
- * lang/python/tests/Makefile.am (pytests): Add new test.
- * lang/python/tests/t-wait.py: New file.
-
- python: Make all GnuPG errors available.
- + commit 7bc9cc717e428f48d4b27016f44c9f3900b1fba6
- * lang/python/Makefile.am (errors.i): Generate file.
- * lang/python/gpgme.i: Include generated file.
- * lang/python/pyme/errors.py: Pull in all errors and error sources.
-
- python: Move the base wrapper class.
- + commit 0ebd6a1b43a96bffa78da89dc8629edac0a74d35
- * python/lang/pyme/util.py (GpgmeWrapper): Move...
- * python/lang/pyme/core.py: ... here.
-
- python: Support status callbacks.
- + commit 8b57f06e0c04f5c9b87a3c76618230d757412076
- * lang/python/helpers.c (pyStatusCb): New function.
- (pygpgme_set_status_cb): Likewise.
- * lang/python/helpers.h (pygpgme_set_status_cb): New prototype.
- * lang/python/pyme/core.py (Context.__init__): Initialize
- 'last_statuscb'.
- (Context._free_statuscb): New function.
- (Context.set_status_cb): Likewise.
- * lang/python/tests/t-callbacks.py: Test status callbacks.
-
- python: Improve docstring.
- + commit 72afb68f8c2f0cb326f20b289215402fd849339d
- * lang/python/pyme/core.py (Context.set_progress_cb): Improve
- docstring.
-
-2016-05-24 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Fix test build with clang.
- + commit 00e93b2cae0585ff10425421d9097a846943b21c
- * lang/qt/tests/Makefile.am (LDADD): Explicitly add -lstdc++
-
- Cpp: Set -std=c++11 also if CXXCPP is already set.
- + commit b107fc8a92bd16bc0d868c771b6334d6594e6395
- * m4/ax_cxx_compile_stdxx.m4 (AX_CXX_COMPILE_STDCXX): Set CXXCPP if
- neccessary.
-
-2016-05-24 Justus Winter <justus@gnupg.org>
-
- python: Improve support for edit callbacks.
- + commit 09803c4a81b9431fd4c8f30abb1c60c4c735f0cb
- * lang/python/helpers.c (pyEditCb): Stash exceptions.
- * lang/python/pyme/core.py (Context.op_edit): Hand in 'self'.
- * lang/python/tests/Makefile.am (py_tests): Add new test.
- * lang/python/tests/t-callbacks.py: Test edit callbacks.
- * lang/python/tests/t-edit.py: New file.
-
-2016-05-23 Justus Winter <justus@gnupg.org>
-
- python: Fix hook.
- + commit 283f0bdc3d32624dac93d02ba3df516e69d8d4ba
- * lang/python/helpers.c (pyProgressCb): Fix getting hook data.
- * lang/python/tests/t-callbacks.py: Show that this works.
-
- python: Move edit callback function.
- + commit 5476ca6813fc9d8833d5224f19d4bb7515380ab5
- * lang/python/gpgme.i (pyEditCb): Move...
- * lang/python/helpers.c: ... here.
- * lang/python/helpers.h (pyEditCb): New prototype.
-
- python: Port more tests.
- + commit a42d814a65fdc29a3be6efa97433997495696a88
- * lang/python/tests/Makefile.am (TESTS_ENVIRONMENT): Set
- LD_LIBRARY_PATH.
- (pytests): Add new tests.
- * lang/python/tests/t-callbacks.py: Trim imports.
- * lang/python/tests/t-encrypt-sign.py: New file.
- * lang/python/tests/t-export.py: Likewise.
- * lang/python/tests/t-signers.py: Likewise.
-
- python: Translate list of strings.
- + commit c9cc0412e940c78c3e9bacb6ff1459b5bb5bb9ad
- * lang/python/gpgme.i: Add typemap translating list of strings.
-
-2016-05-21 Werner Koch <wk@gnupg.org>
-
- api: Return Tofu info for signatures.
- + commit 10df06ee8f9192309bf124872438f7c32457e1c6
- * src/gpgme.h.in (gpgme_tofu_policy_t): New.
- (gpgme_status_code_t): Add status codes for TOFU.
- (struct _gpgme_tofu_info, gpgme_tofu_info_t): New.
- (struct _gpgme_signature): Add field 'tofu'.
- * src/status-table.c (status_table): Add new codes.
- * src/verify.c: Include limits.h.
- (release_tofu_info): New.
- (release_op_data): Call that.
- (parse_tofu_user): New.
- (parse_tofu_stats): New.
- (parse_tofu_stats_long): New.
- (_gpgme_verify_status_handler): Handle TOFU status lines.
-
- * tests/run-verify.c (print_description): New.
- (print_result): print tofu info.
-
- api: Add new context flag "raw-description".
- + commit dac2c5441d418536632f014c8b0e1359580279d1
- * src/context.h (struct gpgme_context): Add field raw_description.
- * src/gpgme.c (gpgme_set_ctx_flag): New flag.
-
- core: New functions to help parsing of status lines.
- + commit a92946a8cacc44f655249d84b316deae59e62671
- * src/conversion.c (_gpgme_split_fields): New.
- (_gpgme_strtoul_field): New.
-
-2016-05-20 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Add test for changeownertrust.
- + commit eaf2d018e63c15cd9a81e5c1fd2fedbf8829f7b9
- * lang/qt/tests/t-ownertrust.cpp: New test.
- * lang/qt/tests/Makefile.am: Add test.
-
- Cpp: Ignore STATUS_KEY_CONSIDERED when editing.
- + commit 5df858cbf196b2a53d600b7f45655f7b35c1fe93
- * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
- Handle GPGME_STATUS_KEY_CONSIDERED.
-
-2016-05-19 Werner Koch <wk@gnupg.org>
-
- api: Add new function gpgme_set_ctx_flag.
- + commit 88f2c1c0d16eee6bb36a901623ea65ac69499f03
- * src/gpgme.h.in (gpgme_set_ctx_flag): New prototype.
- * src/gpgme.c (gpgme_set_ctx_flag): New.
- * src/gpgme.def, src/libgpgme.vers: Add new function.
- * src/context.h (struct gpgme_context): Add FULL_STATUS.
- * src/decrypt.c (_gpgme_decrypt_status_handler): Do not call the
- status callback if FULL_STATUS is set.
- * src/genkey.c (genkey_status_handler): Ditto.
- * src/passphrase.c (_gpgme_passphrase_status_handler): Ditto.
- * src/sign.c (_gpgme_sign_status_handler): Ditto.
-
- * src/engine-backend.h (struct engine_ops): Add SET_STATUS_CB and add
- adjust all definitions of that variable.
- * src/engine.c (_gpgme_engine_set_status_cb): New.
- * src/op-support.c (_gpgme_op_reset): Call this function.
-
- * src/engine-gpg.c (struct engine_gpg): Add fields MON_CB and
- MON_CB_VALUE.
- (gpg_set_status_cb): New.
- (_gpgme_engine_ops_gpg): Register that function.
- (read_status): Call the monitor callback.
-
- * src/engine-gpgsm.c (struct engine_gpgsm): Add fields MON_CB and
- MON_CB_VALUE.
- (_gpgme_engine_ops_gpgsm): Register that function.
- (gpgsm_assuan_simple_command): Change first arg to be an engine
- context and adjust call callers. Call the monitor callback.
-
- * src/engine-uiserver.c (struct engine_uiserver): Add fields MON_CB
- and MON_CB_VALUE.
- (_gpgme_engine_ops_uiserver): Register that function.
- (uiserver_assuan_simple_command): Change first arg to be an engine
- context and adjust call callers. Call the monitor callback.
-
- * tests/run-verify.c (status_cb): New.
- (print_result): Print algo names.
- (main): Add option --status.
-
- api: Remove arbitrary restriction from gpgme_op_verify.
- + commit 5aa8e588e166abeef2e3d677ab6830f2d7af1b5d
- * src/verify.c (verify_start): Do not return GPG_ERR_INV_VALUES when
- when SIGNED_TEXT is not given.
-
-2016-05-19 Justus Winter <justus@gnupg.org>
-
- python: Improve progress callbacks.
- + commit 0d4e95621e05d50cd454049a424bb9ee098a5db6
- * lang/python/helpers.c (pyProgressCb): Stash python errors, convert
- 'what' to Unicode object.
- * lang/python/pyme/core.py (Context.set_progress_cb): Hand in 'self'.
- * lang/python/tests/t-callbacks.py: Test progress callbacks.
-
- python: Robust exception handling in callbacks.
- + commit d90857a08c4fe5b73b6d6d46fd6200efdd72db44
- * lang/python/helpers.c (pygpgme_stash_callback_exception): New
- function.
- (pygpgme_raise_callback_exception): Likewise.
- (pyPassphraseCb): Stash python errors.
- * lang/python/helpers.h (pygpgme_raise_callback_exception): New
- prototype.
- * lang/python/pyme/core.py ({Context,Data}.__init__): Move common
- initialization to superclass.
- (Context.set_progress_cb): Hand in 'self'.
- * lang/python/pyme/util.py (GpgmeWrapper.__init__): New function.
- (GpgmeWrapper.__getattr__): Raise stashed exceptions.
- * lang/python/tests/Makefile.am (py_tests): Add new test.
- * lang/python/tests/t-callbacks.py: New file.
-
-2016-05-19 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Check for graphviz and set HAVE_DOT correctly.
- + commit 2f748b5a2d162be4f23b18782219771ead54cb51
- * configure.ac: Check for graphviz and define HAVE_DOT.
- * lang/qt/doc/Doxyfile.in (HAVE_DOT): Use variable.
-
-2016-05-19 Justus Winter <justus@gnupg.org>
-
- python: Add more tests.
- + commit 464d404c8816fc93baf945816c93e86bdeb0ea39
- * lang/python/tests/Makefile.am (py_tests): Add new tests.
- * lang/python/tests/support.py (print_data): New function.
- * lang/python/tests/t-decrypt.py: Use new function.
- * lang/python/tests/t-encrypt.py: Likewise.
- * lang/python/tests/t-sign.py: New file.
- * lang/python/tests/t-encrypt-sym.py: Likewise.
-
- python: More type conversion fixes.
- + commit c1c893e3384a07ff864507902fbac4a7fee4d6f1
- * lang/python/helpers.c (pyPassphraseCb): Cope with 'uid_hint' being
- NULL, convert it to an Unicode object, and cope with the callback
- returning both Unicode and bytes objects.
-
- python: Fix import.
- + commit 07f71cd17706093ca6b1507c41609356d479ae9f
- * lang/python/helpers.c (pygpgme_exception_init): Make module import
- relative.
-
-2016-05-19 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Fix compilation of unit tests.
- + commit 375523ead3a749d77d286c56f10d403c07f2b014
- * lang/qt/tests/Makefile.am (AM_CPPFLAGS): Add -DBUILDING_QGPGME.
-
-2016-05-18 Justus Winter <justus@gnupg.org>
-
- python: Various fixes.
- + commit 2c3a5d93e78cfca22785e51c5a65184a47da4bff
- * configure.ac: Fix SWIG detection, bump required Python version.
- * lang/python/Makefile.am: Portability fix.
-
-2016-05-18 Andre Heinecke <aheinecke@intevation.de>
-
- Fix typo in compatibility declaration.
- + commit f0dca0ab92ed18d80e30d7d39db1596b4112794f
- * src/op-support.c (GPG_ERR_SUBKEYS_EXP_REV): Change to
- GPG_ERR_SUBKEYS_EXP_OR_REV.
-
-2016-05-17 Werner Koch <wk@gnupg.org>
-
- tests: New maintenance helper run-encrypt.
- + commit 30b447fcfe0e4f362c2575e1b9388e8144b5b2fd
- * tests/run-encrypt.c: New.
-
- Return dedicated error code for all subkeys expired or revoked.
- + commit 315fb73d4a774e2c699ac1804f5377559b4d0027
- * src/gpgme.h.in (GPGME_STATUS_KEY_CONSIDERED): New.
- (GPGME_SIGSUM_TOFU_CONFLICT): New.
- * src/status-table.c (KEY_CONSIDERED): New.
- * src/op-support.c (_gpgme_parse_inv_recp): Add argc KC_FPR and
- KC_FLAGS. Use calloc. Detect all expired or revoked subkeys.
- (_gpgme_parse_key_considered): New.
- * src/sign.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
- (release_op_data): Free KC_FPR.
- (_gpgme_sign_status_handler): Handle STATUS_KEY_CONSIDERED.
- * src/encrypt.c (op_data_t): Add fields KC_FPR and KC_FLAGS.
- (release_op_data): Free KC_FPR.
- (_gpgme_encrypt_status_handler): Handle STATUS_KEY_CONSIDERED.
-
-2016-05-17 Andre Heinecke <aheinecke@intevation.de>
-
- Qt / Cpp: Port auto_ptr to unique_ptr.
- + commit 9b36ebf37a3b889c955ba68038bd5b3d9c5cde4e
- * lang/cpp/src/context.cpp,
- lang/cpp/src/context.h,
- lang/cpp/src/context_p.h (Context::createForEngine),
- (Context::edit, Context::startEditing),
- (Context::takeLastEditInteractor, Context::cardEdit),
- (Context::startCardEditing, Context::takeLastCardEditInteractor),
- (Context::assuanTransact, Context::startAssuanTransaction),
- (Context::takeLastAssuanTransaction): Port to unique_ptr.
- * lang/qt/src/qgpgmeadduseridjob.cpp,
- lang/qt/src/qgpgmechangeexpiryjob.cpp,
- lang/qt/src/qgpgmechangeownertrustjob.cpp,
- lang/qt/src/qgpgmechangepasswdjob.cpp,
- lang/qt/src/qgpgmesignkeyjob.cpp: Update accordingly.
-
-2016-05-17 Justus Winter <justus@gnupg.org>
-
- build: Add python autoconf macro.
- + commit 4711a1e181153a2395e5f523047595abd47965db
- * m4/ax_python_devel.m4: New file.
-
- python: Clean up examples.
- + commit 10328324c8fc9725cd0c885eaebfc80dc32c1ff6
- * lang/python/examples/delkey.py: Clean up example.
- * lang/python/examples/encrypt-to-all.py: Likewise.
- * lang/python/examples/genkey.py: Likewise.
- * lang/python/examples/inter-edit.py: Likewise.
- * lang/python/examples/sign.py: Likewise.
- * lang/python/examples/signverify.py: Likewise.
- * lang/python/examples/simple.py: Likewise.
- * lang/python/examples/t-edit.py: Likewise.
- * lang/python/examples/verifydetails.py: Likewise.
- * lang/python/pyme/__init__.py: Likewise.
-
- python: Import GPGMEError.
- + commit 64e5fe767f45e9ccb0fb3fe919171c222132a54c
- * pyme/core.py: Import GPGMEError.
-
- Fixes c5d118b2.
-
- python: Port more tests.
- + commit 9ceaec25918c6c5f2dfafe4e20181b83ce78f6ce
- * lang/python/Makefile.am: Add bits from the c test suite.
- * lang/python/support.py: New file.
- * lang/python/t-decrypt.py: Likewise.
- * lang/python/t-encrypt.py: Likewise.
-
-2016-05-13 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Add keyLocateJob and test for it.
- + commit 52f2295d528029a36a3e0a89c777297762b3fc9b
- * configure.ac (LIBQGPGME_LT_REVISION): Bump.
- * lang/qt/src/protocol.h (locateKeysJob): Add Job.
- * lang/qt/src/protocol_p.h (locateKeysJob): Implement.
- * lang/qt/tests/Makefile.am: Add t-keylocate.
- * lang/qt/tests/t-keylocate.cpp: New.
-
- Qt: Add missing copyright header in test.
- + commit 66ded1a5ce7236254f8541addecd4c3bc7b2878e
- * lang/qt/tests/t-keylist.cpp: Add copyright header.
-
-2016-05-12 Justus Winter <justus@gnupg.org>
-
- python: Share generated methods between objects.
- + commit 11314f0db6e57597e3f56351a86fdb36a7a17dd7
- * lang/python/pyme/util.py (GpgmeWrapper.__getattr__): Monkey-patch
- the class.
- * lang/python/tests/t-wrapper.py: Demonstrate the sharing.
-
- python: Raise exceptions on write errors.
- + commit c5d118b2a76e9528df780d11da9566ff7c22e4f5
- * lang/python/pyme/core.py (Data.write): Handle errors.
- * lang/python/pyme/errors.py (GPGMEError.fromSyserror): New function.
-
- python: Fix writing to data buffers.
- + commit f7094d8358e933f3ce074eade7a40b2a7d291180
- * lang/python/gpgme.i: Add typemap for buffers.
- * lang/python/pyme/core.py (Data.write): Fix function.
- * lang/python/tests/Makefile.am: Add new test.
- * lang/python/tests/t-data.py: New file.
-
- python: Add a test suite.
- + commit e64bffe0307d14204b00a177a472cd4f99c07561
- * configure.ac: Add new Makefile.
- * lang/python/Makefile.am: Add subdirectory.
- * lang/python/tests/Makefile.am: New file.
- * lang/python/tests/t-wrapper.py: Likewise.
-
- python: Cache generated wrapper functions.
- + commit ed0ce84fbd2904bf59ac66ae7422716db3624efa
- * lang/python/util.py (GpgmeWrap.__getattr__): Cache generated wrapper
- functions.
-
- python: Fix function invocation.
- + commit e3d3d366bd1a1aea8a38ae5dcbf71ea3c784e920
- * lang/python/pyme/core.py (Data.new_from_fd): Fix function
- invocation.
-
- python: Fix name of exception, make slot methods explicit.
- + commit af9371eb63664c92fb67e8e7e03cc984e7d38a7f
- * lang/python/pyme/util.py (GpgmeWrapper._getctype): Fix exception,
- add docstring.
- (GpgmeWrapper._getnameprepend): New function.
- (GpgmeWrapper._errorcheck): Likewise.
-
- python: Handle interpreter shutdown.
- + commit ce5121ad53b0e17fbf9150b354c80da73f7fe190
- * lang/python/pyme/core.py: Avoid races at interpreter shutdown. This
- silences the most annoying occurrences, however this problem also
- affects the SWIG generated code, which might indicate that the real
- problem is somewhere else. If so, this change can be easily reverted.
-
- python: Make test case more robust.
- + commit c89d3a71ad20ff02755539a44f254b1e59054c4a
- * lang/python/examples/t-edit.py: Check if key is found.
-
- python: Fix type translation.
- + commit d60deb8a127fb35c01acc729f33b014840af0e7b
- * lang/python/gpgme.i: Adjust to Python3's string type being
- 'Unicode', not 'bytes'. Fix type checking.
- * lang/python/core.py (Data.write): Add docstring mentioning the
- expected type of parameter 'buffer'.
- (Data.read): Adjust read loop. Also, use a saner chunk size, and join
- all chunks at the end instead of adding them.
- * lang/python/examples/simple.py: Adjust example.
-
-2016-05-11 Andre Heinecke <aheinecke@intevation.de>
-
- Cpp: Ensure gpgme.h is taken from current build.
- + commit b8de79160b2e05ac84d8feb61ff7ed1f7015a623
- * lang/cpp/src/Makefile.am (AM_CPPFLAGS): Add gpgme.h location.
-
-2016-05-11 Justus Winter <justus@gnupg.org>
-
- python: Fix simple example.
- + commit bbeee5e1a060f2d1e37a08220eb552cf4673a058
- * lang/python/examples/simple.py: Flush stdout, encode name as
- UTF-8 before passing it to GPGME.
-
- python: Integrate into the build system.
- + commit a29babd07cf9f9625d2b5aa2eb6b7bc9d1828359
- * configure.ac: Make Python bindings configurable, add new Makefile.
- * lang/python/Makefile.am: New file.
- * lang/python/setup.py: Integrate into the build system.
- * m4/ax_pkg_swig.m4: New file from the autoconf archive.
- * m4/m4_ax_swig_python.m4: Likewise.
-
-2016-05-10 Andre Heinecke <aheinecke@intevation.de>
-
- Qt / Cpp: Fix make dist.
- + commit c303292aca26c43b6efe98719edb3ff7b2d6665d
- * lang/cpp/src/Makefile.am (EXTRA_DIST): Fix typo.
- (private_gpgmepp_headers): New. Private headers.
- (libgpgmepp_la_SOURCES): Add private headers.
- * lang/qt/src/Makefile.am (t_keylist_SOURCES): Remove non existent
- header.
-
-2016-05-10 Justus Winter <justus@gnupg.org>
-
- python: PEP8 fixes.
- + commit 11392a80d9a85bcd8718b105e6d58038e61beaac
- Cherry picked from 0267c151.
-
-2016-05-10 Andre Heinecke <aheinecke@intevation.de>
-
- Qt: Make Protocol class public API.
- + commit 56c4d9ea9520c95612e525b2fa1359db6fa88f4a
- * lang/qt/src/Makefile.am (qgpgme_headers): Add protocol.h
- (private_qgpgme_headers): Add protocol_p.h
- * lang/qt/src/protocol.h: New. From QGpgMEBackend.
- * lang/qt/src/protocol_p.h: New. From QGpgMEBackend.
- * lang/qt/src/qgpgmebackend.h,
- lang/qt/src/qgpgmebackend.cpp (Protocol): Removed.
-
- Qt: Make doxygen quieter.
- + commit 97225bb01cd2ffa1d84c7fedbc577275de4a4893
- * lang/qt/doc/Doxyfile.in: Quiet and no undocumented warnings.
-
- Qt: Only install public headers.
- + commit 740f92a7b83389ee9bde98b7bd25556793500b8b
- * lang/qt/src/Makefile.am: Do not install all headers.
-
- Qt: Add test for async keylisting.
- + commit 0e3195948ddaba3af07d2415bb496491076edc17
- * src/lang/qt/tests/t-keylist.cpp(KeyListTest::testKeyListAsync): New.
-
-2016-05-10 Werner Koch <wk@gnupg.org>
-
- Allow cc to detect missing cases in a switch.
- + commit fc38c15136c87ce971a8381fa87399088dd5a3cc
- * src/delete.c (delete_status_handler): Remove default case from a
- switch so that cc can check the use of all enum values.
-
-2016-05-06 Andre Heinecke <aheinecke@intevation.de>
-
- Use common error message style for qt lang checks.
- + commit a579be82c84f0b9732ee3d52ff2142a3decf95d7
- * configure.ac: Use common error highliting for qt lang options.
-
- Qt: Fix license mentioned in README.
- + commit 11ff8d5964bf66f905818514f6a51fc881ea1a56
- * lang/qt/README: License is GPLv2+ and not LGPL.
-
- Add maybe mode for langs and default to it.
- + commit cd267791e9bd73505a2a1ea90c85df988e153c19
- * configure.ac (languages): Warn and disable langs for which
- requirements are not met.
-
- Cpp: Handle PINENTRY_LAUNCHED status line.
- + commit 3fad1216770f446a89801d842aa8667356a5ec95
- * lang/cpp/src/editinteractor.cpp (EditInteractor::needsNoResponse):
- Add GPGME_STATUS_PINENTRY_LAUNCHED.
-
-2016-04-12 Andre Heinecke <aheinecke@intevation.de>
-
- Cpp: Add support for pubkey_algo_name.
- + commit 5489532ad6ccf3a9b59405686b8a17352f1ecf06
- * lang/cpp/src/key.cpp (Subkey::algoName): New.
- * lang/cpp/src/key.h: Declare.
-
- Cpp: Add support for gpgme_data_identify.
- + commit d949d711dc1d944a9d627d39a89af74943a5a8c1
- * lang/cpp/src/data.cpp (Data::type): New.
- * lang/cpp/src/data.h (Data::Type): New enum mapping.
-
- Fix configuration without Qt language.
- + commit 6dba47c3a2c32d7c1e1d91a96030f99f606433ea
- * configure.ac: Define HAVE_DOXYGEN also if qt should not be built.
-
-2016-04-11 Andre Heinecke <aheinecke@intevation.de>
-
- Qt/Cpp: Bump so version to 6.
- + commit 8e7074dbb8093cc342e330bcd6b172b4f769a0c6
- * configure.ac (LIBGPGMEPP_LT_CURRENT, LIBQGPGME_LT_CURRENT): Bump.
-
- Qt / Cpp: Mention coding style in READMES.
- + commit d2b55101195efe9702e855a48fc6e21839fb98cc
- * src/lang/cpp/README, src/lang/qt/README: Add hacking note.
-
- Qt: Add doc generation with doxygen.
- + commit a1e95f36ce1895cd9894f6d3ca76640c42c2f9fc
- * configure.ac: Look for doxygen if qt is built.
- Configure new files.
- * lang/qt/doc/Doxyfile.in: New.
- * lang/qt/doc/Makefile.am: New.
- * lang/qt/README: Update.
-
- Qt: Fix unit test by adding initial.test dep.
- + commit d9f7a18ed88127e7f05d770d55118d1e928f3b3f
- * lang/qt/tests/t-keylist.cpp: Verify that GNUPGHOME is set.
- * lang/qt/tests/initial.test: New dummy test.
- * lang/qt/tests/Makefile.am: Add dependency to initial.test
-
- Qt: Remove remaining boost usage.
- + commit afd8fad6e275e2f74b2ad045dce05d826986e2ec
- * lang/qt/src/dataprovider.h,
- lang/qt/src/decryptjob.h,
- lang/qt/src/decryptverifyjob.h,
- lang/qt/src/encryptjob.h,
- lang/qt/src/qgpgmeadduseridjob.cpp,
- lang/qt/src/qgpgmechangeexpiryjob.cpp,
- lang/qt/src/qgpgmechangeownertrustjob.cpp,
- lang/qt/src/qgpgmechangepasswdjob.cpp,
- lang/qt/src/qgpgmedecryptjob.cpp,
- lang/qt/src/qgpgmedecryptverifyjob.cpp,
- lang/qt/src/qgpgmedeletejob.cpp,
- lang/qt/src/qgpgmedownloadjob.cpp,
- lang/qt/src/qgpgmeencryptjob.cpp,
- lang/qt/src/qgpgmeexportjob.cpp,
- lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
- lang/qt/src/qgpgmeimportjob.cpp,
- lang/qt/src/qgpgmekeygenerationjob.cpp,
- lang/qt/src/qgpgmekeylistjob.cpp,
- lang/qt/src/qgpgmenewcryptoconfig.cpp,
- lang/qt/src/qgpgmenewcryptoconfig.h,
- lang/qt/src/qgpgmesignencryptjob.cpp,
- lang/qt/src/qgpgmesignjob.cpp,
- lang/qt/src/qgpgmesignkeyjob.cpp,
- lang/qt/src/qgpgmeverifydetachedjob.cpp,
- lang/qt/src/qgpgmeverifyopaquejob.cpp,
- lang/qt/src/signencryptjob.h,
- lang/qt/src/signjob.h,
- lang/qt/src/threadedjobmixin.cpp,
- lang/qt/src/threadedjobmixin.h,
- lang/qt/src/verifydetachedjob.h,
- lang/qt/src/verifyopaquejob.h: Remove boost usage.
-
- Qt: Remove predicates.h and stl_util.h.
- + commit e18256fc5f613da9406da60c3ef2f84f2be04ef0
- * src/lang/qt/predicates.h, src/lang/qt/stl_util.h: Removed.
-
- Qt: Remove usage of stl_util.h and predicates.h.
- + commit d293bd32293929eeb3f6ec35f916a4678fb51729
- * src/lang/qt/qgpgmelistallkeysjob.cpp: Use comperators from
- gpgmepp instead of detail. Remove boost usage.
-
- Cpp: Add string comparators for keys.
- + commit 1bb162a54ba480413c4da07f2578efe6860494c0
- * lang/cpp/src/global.h (GPGMEPP_MAKE_STRCMP): New.
- (_gpgmepp_strcmp): NULL save wrapper around std::strcmp.
- * lang/cpp/src/key.h: Add comparators for various attributes.
-
- Cpp: Remove last usages of boost.
- + commit 691950e18cf08a3f9bbc2004501834cd47bea579
- * lang/cpp/src/configuration.cpp: Use std::remove_pointer.
- (Configuration::operator<<): std::for_each.
- * lang/cpp/src/context.cpp: Delete manually instead of scoped ptr.
- * lang/cpp/src/scdgetinfoassuantransaction.cpp: Use static_assert.
- (to_reader_list): Tokenize with getline.
-
-2016-04-04 Andre Heinecke <aheinecke@intevation.de>
-
- Add pthread in gpgmepp config.
- + commit cc68ff5f7210ac879fbdf719fcd5944f9ae5602b
- * lang/cpp/src/GpgmeppConfig.cmake.in.in: Add pthread.
-
-2016-04-03 Andre Heinecke <aheinecke@intevation.de>
-
- Cpp / Qt: Reduce boost usage (memory and tuple)
- + commit f98898ab1a6952e0c3a5d235963a27eba2e19e46
- * cpp/src/assuanresult.h,
- cpp/src/configuration.cpp,
- cpp/src/configuration.h,
- cpp/src/data.h,
- cpp/src/decryptionresult.h,
- cpp/src/defaultassuantransaction.cpp,
- cpp/src/encryptionresult.cpp,
- cpp/src/encryptionresult.h,
- cpp/src/engineinfo.h,
- cpp/src/gpgagentgetinfoassuantransaction.cpp,
- cpp/src/gpgsignkeyeditinteractor.cpp,
- cpp/src/importresult.cpp,
- cpp/src/importresult.h,
- cpp/src/key.h,
- cpp/src/keygenerationresult.h,
- cpp/src/keylistresult.h,
- cpp/src/notation.h,
- cpp/src/signingresult.cpp,
- cpp/src/signingresult.h,
- cpp/src/verificationresult.cpp,
- cpp/src/verificationresult.h,
- cpp/src/vfsmountresult.h,
- qt/src/dataprovider.cpp,
- qt/src/dataprovider.h,
- qt/src/decryptjob.h,
- qt/src/decryptverifyjob.h,
- qt/src/downloadjob.h,
- qt/src/encryptjob.h,
- qt/src/qgpgmeadduseridjob.cpp,
- qt/src/qgpgmechangeexpiryjob.cpp,
- qt/src/qgpgmechangeownertrustjob.cpp,
- qt/src/qgpgmechangepasswdjob.cpp,
- qt/src/qgpgmedecryptjob.cpp,
- qt/src/qgpgmedecryptjob.h,
- qt/src/qgpgmedecryptverifyjob.cpp,
- qt/src/qgpgmedecryptverifyjob.h,
- qt/src/qgpgmedeletejob.cpp,
- qt/src/qgpgmedownloadjob.cpp,
- qt/src/qgpgmedownloadjob.h,
- qt/src/qgpgmeencryptjob.cpp,
- qt/src/qgpgmeencryptjob.h,
- qt/src/qgpgmeexportjob.cpp,
- qt/src/qgpgmeexportjob.h,
- qt/src/qgpgmeimportfromkeyserverjob.cpp,
- qt/src/qgpgmeimportfromkeyserverjob.h,
- qt/src/qgpgmeimportjob.cpp,
- qt/src/qgpgmeimportjob.h,
- qt/src/qgpgmekeygenerationjob.cpp,
- qt/src/qgpgmekeygenerationjob.h,
- qt/src/qgpgmekeylistjob.cpp,
- qt/src/qgpgmekeylistjob.h,
- qt/src/qgpgmelistallkeysjob.cpp,
- qt/src/qgpgmelistallkeysjob.h,
- qt/src/qgpgmenewcryptoconfig.cpp,
- qt/src/qgpgmenewcryptoconfig.h,
- qt/src/qgpgmesignencryptjob.cpp,
- qt/src/qgpgmesignencryptjob.h,
- qt/src/qgpgmesignjob.cpp,
- qt/src/qgpgmesignjob.h,
- qt/src/qgpgmesignkeyjob.cpp,
- qt/src/qgpgmeverifydetachedjob.cpp,
- qt/src/qgpgmeverifydetachedjob.h,
- qt/src/qgpgmeverifyopaquejob.cpp,
- qt/src/qgpgmeverifyopaquejob.h,
- qt/src/signencryptjob.h,
- qt/src/signjob.h,
- qt/src/threadedjobmixin.h,
- qt/src/verifydetachedjob.h,
- qt/src/verifyopaquejob.h: Reduce boost usage.
-
- Cpp: Require c++ 11 if cpp binding requested.
- + commit c07aaef6eb8a9b5e623479f27d562fd1570bf4bb
- * configure.ac: Call ax_cxx_compile_stdcxx
- * m4/ax_cxx_compile_stdcxx.m4
-
- Qt: Add static factor methods for protocol.
- + commit 0991485170ca4ef90fd566540522027d0fc59a72
- * lang/qt/src/qgpgmebackend.cpp (QGpgME::openpgp, QGpgME::smime): New.
- * lang/qt/src/qgpgmebackend.h: Declare.
- * lang/qt/tests/t-keylist.cpp (KeyListTest::testSingleKeyListSync):
- Use new functions.
-
- Qt: Add a unit test for qgpgme.
- + commit faf987dd62893955251378a2a715edd2892a540c
- * configure.ac: Configure test Makefile.
- * m4/qt.m4: Look up Qt5Test flags.
- * lang/qt/tests/t-keylist.cpp: New. Simple keylist check.
- * lang/qt/tests/Makefile.am: New. General test framework.
-
- Qt: Add missing MOC includes.
- + commit b7b9e38399a572cb61a297db552026eac5b2a5e1
- * qgpgmeadduseridjob.cpp,
- qgpgmechangeexpiryjob.cpp,
- qgpgmechangeownertrustjob.cpp,
- qgpgmechangepasswdjob.cpp,
- qgpgmedecryptjob.cpp,
- qgpgmedecryptverifyjob.cpp,
- qgpgmedeletejob.cpp,
- qgpgmedownloadjob.cpp,
- qgpgmeencryptjob.cpp,
- qgpgmeexportjob.cpp,
- qgpgmeimportfromkeyserverjob.cpp,
- qgpgmeimportjob.cpp,
- qgpgmekeygenerationjob.cpp,
- qgpgmekeylistjob.cpp,
- qgpgmelistallkeysjob.cpp,
- qgpgmerefreshkeysjob.cpp,
- qgpgmesecretkeyexportjob.cpp,
- qgpgmesignencryptjob.cpp,
- qgpgmesignjob.cpp,
- qgpgmesignkeyjob.cpp,
- qgpgmeverifydetachedjob.cpp,
- qgpgmeverifyopaquejob.cpp: Add missing MOC includes.
-
- Qt: Declare pure virtuals as such.
- + commit 0cc9006dbc59d87c6bcda88b36d59dcb69ac35cb
- * lang/qt/src/qgpgmebackend.h (Protocol): Make all functions
- pure virtual.
-
- Qt: Don't declare showErrorDialog anymore.
- + commit 3e38cc6fc67c420dec3e9e8afd072b4c8a157c85
- * cpp/qt/src/job.h: Remove showErrorDialog.
-
- Qt: Only use GpgME based config class.
- + commit 7071b2a9c00b85d434d01b6166269ebf48b01b81
- * lang/qt/src/qgpgmecryptoconfig.cpp,
- lang/qt/src/qgpgmecryptoconfig.h: Removed.
- * lang/qt/src/qgpgmebackend.cpp: Return newcryptoconfig.
-
-2016-04-02 Andre Heinecke <aheinecke@intevation.de>
-
- Add additional include path in config files.
- + commit 63c115b067400e1b02c7d849c99f54dc9f394d68
- * lang/cpp/src/GpgmeppConfig.cmake.in.in
- lang/qt/src/QGpgmeConfig.cmake.in.in: Include directory above headers.
-
- Qt: Fix library name in nodist variable.
- + commit 576be46f34b42e896a5e3be65560a4b518a758be
- * lang/qt/Makefile.am (nodist_qgpgme_SOURCES): Change to real name.
-
- Add missing files to QGpgME.
- + commit a440050fc2c11e4867da9d4707616fa23ac52141
- * lang/qt/src/gpgme_backend_debug.cpp,
- lang/qt/src/gpgme_backend_debug.h,
- lang/qt/src/predicates.h,
- lang/qt/src/stl_util.h: New.
-
- Add QGpgME code from libkleo.
- + commit 226e51052ae73efa8d9f30729b28de68d35231af
- * lang/qt/src/Makefile.am,
- lang/qt/src/abstractimportjob.h,
- lang/qt/src/adduseridjob.h,
- lang/qt/src/changeexpiryjob.h,
- lang/qt/src/changeownertrustjob.h,
- lang/qt/src/changepasswdjob.h,
- lang/qt/src/cryptoconfig.h,
- lang/qt/src/decryptjob.h,
- lang/qt/src/decryptverifyjob.h,
- lang/qt/src/deletejob.h,
- lang/qt/src/downloadjob.h,
- lang/qt/src/encryptjob.h,
- lang/qt/src/exportjob.h,
- lang/qt/src/hierarchicalkeylistjob.h,
- lang/qt/src/importfromkeyserverjob.h,
- lang/qt/src/importjob.h,
- lang/qt/src/job.cpp,
- lang/qt/src/job.h,
- lang/qt/src/keygenerationjob.h,
- lang/qt/src/keylistjob.h,
- lang/qt/src/listallkeysjob.h,
- lang/qt/src/multideletejob.h,
- lang/qt/src/qgpgmeadduseridjob.cpp,
- lang/qt/src/qgpgmeadduseridjob.h,
- lang/qt/src/qgpgmebackend.cpp,
- lang/qt/src/qgpgmebackend.h,
- lang/qt/src/qgpgmechangeexpiryjob.cpp,
- lang/qt/src/qgpgmechangeexpiryjob.h,
- lang/qt/src/qgpgmechangeownertrustjob.cpp,
- lang/qt/src/qgpgmechangeownertrustjob.h,
- lang/qt/src/qgpgmechangepasswdjob.cpp,
- lang/qt/src/qgpgmechangepasswdjob.h,
- lang/qt/src/qgpgmecryptoconfig.cpp,
- lang/qt/src/qgpgmecryptoconfig.h,
- lang/qt/src/qgpgmedecryptjob.cpp,
- lang/qt/src/qgpgmedecryptjob.h,
- lang/qt/src/qgpgmedecryptverifyjob.cpp,
- lang/qt/src/qgpgmedecryptverifyjob.h,
- lang/qt/src/qgpgmedeletejob.cpp,
- lang/qt/src/qgpgmedeletejob.h,
- lang/qt/src/qgpgmedownloadjob.cpp,
- lang/qt/src/qgpgmedownloadjob.h,
- lang/qt/src/qgpgmeencryptjob.cpp,
- lang/qt/src/qgpgmeencryptjob.h,
- lang/qt/src/qgpgmeexportjob.cpp,
- lang/qt/src/qgpgmeexportjob.h,
- lang/qt/src/qgpgmeimportfromkeyserverjob.cpp,
- lang/qt/src/qgpgmeimportfromkeyserverjob.h,
- lang/qt/src/qgpgmeimportjob.cpp,
- lang/qt/src/qgpgmeimportjob.h,
- lang/qt/src/qgpgmekeygenerationjob.cpp,
- lang/qt/src/qgpgmekeygenerationjob.h,
- lang/qt/src/qgpgmekeylistjob.cpp,
- lang/qt/src/qgpgmekeylistjob.h,
- lang/qt/src/qgpgmelistallkeysjob.cpp,
- lang/qt/src/qgpgmelistallkeysjob.h,
- lang/qt/src/qgpgmenewcryptoconfig.cpp,
- lang/qt/src/qgpgmenewcryptoconfig.h,
- lang/qt/src/qgpgmerefreshkeysjob.cpp,
- lang/qt/src/qgpgmerefreshkeysjob.h,
- lang/qt/src/qgpgmesecretkeyexportjob.cpp,
- lang/qt/src/qgpgmesecretkeyexportjob.h,
- lang/qt/src/qgpgmesignencryptjob.cpp,
- lang/qt/src/qgpgmesignencryptjob.h,
- lang/qt/src/qgpgmesignjob.cpp,
- lang/qt/src/qgpgmesignjob.h,
- lang/qt/src/qgpgmesignkeyjob.cpp,
- lang/qt/src/qgpgmesignkeyjob.h,
- lang/qt/src/qgpgmeverifydetachedjob.cpp,
- lang/qt/src/qgpgmeverifydetachedjob.h,
- lang/qt/src/qgpgmeverifyopaquejob.cpp,
- lang/qt/src/qgpgmeverifyopaquejob.h,
- lang/qt/src/refreshkeysjob.h,
- lang/qt/src/signencryptjob.h,
- lang/qt/src/signjob.h,
- lang/qt/src/signkeyjob.h,
- lang/qt/src/specialjob.h,
- lang/qt/src/threadedjobmixin.cpp,
- lang/qt/src/threadedjobmixin.h,
- lang/qt/src/verifydetachedjob.h,
- lang/qt/src/verifyopaquejob.h: New.
- * lang/qt/src/Makefile.am:
-
-2016-03-08 Andre Heinecke <aheinecke@intevation.de>
-
- Add qgpgme as qt language binding.
- + commit 8347f3d5fc3e476aa767fbbaf09a1310a6154280
- * configure.ac: Add version defines. Check for qt if neccessary.
- * lang/README: Mention qt
- * lang/cpp/src/GpgmeppConfig.cmake.in.in: Remove comment. Find qgpgme.
- * lang/qt/src/Makefile.am: New. Build qgpgme.
- * lang/qt/README,
- lang/qt/src/Makefile.am,
- lang/qt/src/QGpgmeConfig.cmake.in.in,
- lang/qt/src/QGpgmeConfigVersion.cmake.in,
- lang/qt/src/dataprovider.cpp,
- lang/qt/src/dataprovider.h,
- lang/qt/src/qgpgme_export.h,
- m4/qt.m4: New.
- * lang/cpp/src/GpgmeppConfig.cmake.in.in,
- lang/cpp/src/Makefile.am: Fix generated config file.
-
- Remove obsolete w32-qt code.
- + commit 58ed9c17f00f420035ecc6973a6c6ed948757a9a
- * configure.ac (w32-qt): Remove option and Qt checks.
- * src/Makefile.am: Remove BUILD_W32_QT handling.
- * src/kdpipeiodevice.cpp,
- src/kdpipeiodevice.h,
- src/kdpipeiodevice.moc,
- src/w32-qt-io.cpp: Removed.
-
-2016-03-02 Andre Heinecke <aheinecke@intevation.de>
-
- Add version info for gpgmepp.
- + commit a06603d75e80aba58df58f9a41770c56b6a1f0b8
- * lang/cpp/src/Makefile.am (libgpgmepp_la_LDFLAGS): Add version info.
-
- Add cmake configuration files.
- + commit 77c3fb450c7adf36804a55d76ff49a06a71d22a0
- * configure.ac: Add libgpgmepp version. Configure cmake files.
- * lang/cpp/src/Makefile.am: Add targets for cmake files.
- (EXTRA_DIST): Add cmake files.
-
- Fix export header and windows export macros.
- + commit 98e5b672422ca1e38ca38ff0357cee6cc936aee0
- * lang/cpp/src/gpgme_export.h: Fix variable name. Add Windows ifdefs.
-
- Add header installation.
- + commit c5291a88913ace8f2115021b69c7aeb59b4f79d4
- * lang/cpp/src/Makefile.am: Add headers as deps and install them.
- (AM_CPPFLAGS): Add BUILDING_GPGMEPP to be used in export macros.
-
- Add enable-languages build option.
- + commit a313b3e28cc42785365822519b25d6a87dfdf0c9
- * acinclude.m4 (LIST_MEMBER): New macro.
- * configure.ac (enable-languages): New option. Add info output.
- * lang/Makefile.am: Only add enabled language subdirs.
-
-2016-02-22 Andre Heinecke <aheinecke@intevation.de>
-
- Add README for gpgmepp.
- + commit 7286fc7f3d51d475f82c7c9821d031290f5b0066
- * lang/README: Note down cpp.
- * cpp/README: Add README based on original repo version.
-
- Add buildsystem for Gpgmepp.
- + commit f5fd787b5b45cb14d539b5c26f44066eb9ac0f75
- * configure.ac: Configure Makefiles.
- * lang/Makefile.am: Add cpp subdir
- * lang/cpp/Makefile.am: New. Add src subdir.
- * lang/cpp/src/Makefile.am: New. Basic buildsystem.
-
- Remove feature check ifdefs.
- + commit 433bb8e84b2d1e50b5c5b9f7f2006b60cd7d7785
- * lang/cpp/src/assuanresult.cpp,
- lang/cpp/src/callbacks.cpp,
- lang/cpp/src/configuration.cpp,
- lang/cpp/src/context.cpp,
- lang/cpp/src/context_glib.cpp,
- lang/cpp/src/context_qt.cpp,
- lang/cpp/src/context_vanilla.cpp,
- lang/cpp/src/data.cpp,
- lang/cpp/src/decryptionresult.cpp,
- lang/cpp/src/defaultassuantransaction.cpp,
- lang/cpp/src/editinteractor.cpp,
- lang/cpp/src/encryptionresult.cpp,
- lang/cpp/src/engineinfo.cpp,
- lang/cpp/src/eventloopinteractor.cpp,
- lang/cpp/src/global.h,
- lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
- lang/cpp/src/importresult.cpp,
- lang/cpp/src/interfaces/assuantransaction.h,
- lang/cpp/src/key.cpp,
- lang/cpp/src/keygenerationresult.cpp,
- lang/cpp/src/keylistresult.cpp,
- lang/cpp/src/scdgetinfoassuantransaction.cpp,
- lang/cpp/src/signingresult.cpp,
- lang/cpp/src/trustitem.cpp,
- lang/cpp/src/util.h,
- lang/cpp/src/verificationresult.cpp,
- lang/cpp/src/vfsmountresult.cpp: Remove feature checks.
-
- Initial checkin of gpgmepp sources.
- + commit 0855a1296a1908016f011eb5e6552854ac53e63a
- Based on git.kde.org/pim/gpgmepp rev. 0e3ebc02
-
- * lang/cpp/src/assuanresult.cpp,
- lang/cpp/src/assuanresult.h,
- lang/cpp/src/callbacks.cpp,
- lang/cpp/src/callbacks.h,
- lang/cpp/src/configuration.cpp,
- lang/cpp/src/configuration.h,
- lang/cpp/src/context.cpp,
- lang/cpp/src/context.h,
- lang/cpp/src/context_glib.cpp,
- lang/cpp/src/context_p.h,
- lang/cpp/src/context_qt.cpp,
- lang/cpp/src/context_vanilla.cpp,
- lang/cpp/src/data.cpp,
- lang/cpp/src/data.h,
- lang/cpp/src/data_p.h,
- lang/cpp/src/decryptionresult.cpp,
- lang/cpp/src/decryptionresult.h,
- lang/cpp/src/defaultassuantransaction.cpp,
- lang/cpp/src/defaultassuantransaction.h,
- lang/cpp/src/editinteractor.cpp,
- lang/cpp/src/editinteractor.h,
- lang/cpp/src/encryptionresult.cpp,
- lang/cpp/src/encryptionresult.h,
- lang/cpp/src/engineinfo.cpp,
- lang/cpp/src/engineinfo.h,
- lang/cpp/src/error.h,
- lang/cpp/src/eventloopinteractor.cpp,
- lang/cpp/src/eventloopinteractor.h,
- lang/cpp/src/exception.cpp,
- lang/cpp/src/exception.h,
- lang/cpp/src/global.h,
- lang/cpp/src/gpgadduserideditinteractor.cpp,
- lang/cpp/src/gpgadduserideditinteractor.h,
- lang/cpp/src/gpgagentgetinfoassuantransaction.cpp,
- lang/cpp/src/gpgagentgetinfoassuantransaction.h,
- lang/cpp/src/gpgmefw.h,
- lang/cpp/src/gpgmepp_export.h,
- lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp,
- lang/cpp/src/gpgsetexpirytimeeditinteractor.h,
- lang/cpp/src/gpgsetownertrusteditinteractor.cpp,
- lang/cpp/src/gpgsetownertrusteditinteractor.h,
- lang/cpp/src/gpgsignkeyeditinteractor.cpp,
- lang/cpp/src/gpgsignkeyeditinteractor.h,
- lang/cpp/src/importresult.cpp,
- lang/cpp/src/importresult.h,
- lang/cpp/src/key.cpp,
- lang/cpp/src/key.h,
- lang/cpp/src/keygenerationresult.cpp,
- lang/cpp/src/keygenerationresult.h,
- lang/cpp/src/keylistresult.cpp,
- lang/cpp/src/keylistresult.h,
- lang/cpp/src/notation.h,
- lang/cpp/src/result.h,
- lang/cpp/src/result_p.h,
- lang/cpp/src/scdgetinfoassuantransaction.cpp,
- lang/cpp/src/scdgetinfoassuantransaction.h,
- lang/cpp/src/signingresult.cpp,
- lang/cpp/src/signingresult.h,
- lang/cpp/src/trustitem.cpp,
- lang/cpp/src/trustitem.h,
- lang/cpp/src/util.h,
- lang/cpp/src/verificationresult.cpp,
- lang/cpp/src/verificationresult.h,
- lang/cpp/src/vfsmountresult.cpp,
- lang/cpp/src/vfsmountresult.h,
- lang/cpp/src/interfaces/assuantransaction.h,
- lang/cpp/src/interfaces/dataprovider.h,
- lang/cpp/src/interfaces/passphraseprovider.h,
- lang/cpp/src/interfaces/progressprovider.h: New.
-
-2016-01-15 Werner Koch <wk@gnupg.org>
-
- Fix possible _SC_OPEN_MAX max problem on AIX.
- + commit e79199468ac54ce4fe919603ff7bada97267174f
- * src/posix-io.c [HAVE_STDINT_H]: Include stdint.h.
- (get_max_fds): Limit returned value for too high values.
-
-2015-12-09 Werner Koch <wk@gnupg.org>
-
- w32: Avoid conflict with Mingw-w64 version 4.0.4-1.
- + commit 83415dffaea53611dbce77b50d8ddfb2a50aed2e
- * src/w32-util.c (mkstemp): Rename to my_mkstemp. Change caller.
-
-2015-12-04 Daiki Ueno <ueno@gnu.org>
-
- Return on user cancellation of delete operation.
- + commit 67d7f7a9383763b01daf877c846bf3e32f647fa5
- * src/delete.c (delete_status_handler): Return on ERROR status, if the
- error location is set to "delete_key.secret" and the code is either
- CANCELED or FULLY_CANCELED, which indicates a situation that the user
- selected "No" on the confirmation dialog.
-
- doc: Fix minor errors.
- + commit 3b6e9a3d0afcdd3c2f1de19f15924c3404c7140a
- * doc/gpgme.texi: Fix errors and typos in the cancellation and
- gpgme_import_result_t documentation.
-
-2015-10-29 Ben Kibbey <bjk@luxsci.net>
-
- Make use of user passphrase handler during passwd.
- + commit dfa79f9300b837b0f7f2ea44afa589bfcda1dbd9
- * src/passwd.c (passwd_start): set engine passphrase command handler.
-
-2015-10-28 Werner Koch <wk@gnupg.org>
-
- w32: Add extra diagnostic about possible missing gpgme-w32spawn.exe.
- + commit bb2d11c1eebd4bcfb0f2cfce728026a7420dca47
- * src/w32-io.c (_gpgme_io_spawn): Add a new diagnostic.
-
- w32: Improve locating gpgconf on 64 bit systems.
- + commit a82e9b182f62966207cad0972be6fa284329a5a1
- * src/w32-util.c (find_program_at_standard_place): Fallback to
- CSIDL_PROGRAM_FILESX86.
-
- w32: Add new global flag "w32-inst-dir".
- + commit bb600aa8fd2f9575ee7afc64c978e3e7523b1173
- * src/gpgme.c (gpgme_set_global_flag): Add flag "w32-inst-dir";
- * src/posix-util.c (_gpgme_set_override_inst_dir): New stub.
- * src/w32-util.c (override_inst_dir): New var.
- (_gpgme_get_inst_dir): Return this var is set.
- (_gpgme_set_override_inst_dir): New.
-
-2015-10-16 NIIBE Yutaka <gniibe@fsij.org>
-
- cleanup: Fix type mismatch around gpgme_error_t.
- + commit 0d9d0a6b5b0c6f474a079bbaef11078c5df5f3b5
- * src/data-compat.c (gpgme_error_to_errno): Use gpg_err_code
- to get error code from gpgme_error_t.
- * src/gpgme.c (gpgme_new): Don't use gpgme_error.
-
-2015-08-31 Werner Koch <wk@gnupg.org>
-
- gpgme-tool: Switch to argparse.c for option parsing.
- + commit f0ccce855bd99fca7cfbbcafe3544e3113fedc67
- * src/argparse.c, src/argparse.h: New. Taken from current gnupg.
- * src/Makefile.am (gpgme_tool_SOURCES): New.
- * src/gpgme-tool.c: Remove all argp.h stuff.
- (my_strusage): New.
- (main): Change to use argparse.
-
-2015-08-30 Werner Koch <wk@gnupg.org>
-
- Add gpgme_pubkey_algo_string.
- + commit c4b6b35bfa98e478f1d13f4ce3e664771f2604c2
- * src/gpgme.h.in (GPGME_PK_EDDSA): New.
- (gpgme_pubkey_algo_string): New.
- * src/conversion.c (_gpgme_map_pk_algo): Add new algo.
- * src/gpgme.c (gpgme_pubkey_algo_string): New.
- (gpgme_pubkey_algo_name): Reformat.
-
-2015-08-26 Werner Koch <wk@gnupg.org>
-
- Release 1.6.0.
- + commit 107bff70edb611309f627058dd4777a5da084b1a
- * configure.ac: Set LT version to C25/A14/R0.
-
- Make use of GPGRT macros is available.
- + commit c4f4b5c0a6fc172f7ceedc1a0021169e7f31b941
- * src/gpgme.h.in (_GPGME_INLINE): Define using GPGRT_INLINE if
- possible. Fix problem with -Wundef by adding an extra "defined()".
- (_GPGME_GCC_VERSION): Define using GPGRT_ macro if possible.
-
-2015-08-25 Werner Koch <wk@gnupg.org>
-
- Avoid -Wundef warnings if gpgme.h is used by g++.
- + commit 3f53d3d5d9e73a053b1e89073ef8f7cf01bfc8e6
- * src/gpgme.h.in (_GPGME_INLINE): Move definition into the
- extern-C-scope.
-
- Add configure option --enable-build-timestamp.
- + commit ff91e699f7c14ea6cbc27b487cb40e9f6bd58901
- * configure.ac (BUILD_TIMESTAMP): Set to "<none>" by default.
-
-2015-08-25 Daiki Ueno <ueno@gnu.org>
-
- Relax ttyname_r error checks.
- + commit 028a0ef3336c5180797fb247448683195376c007
- * src/engine-assuan.c (llass_new): Don't treat ttyname_r error as
- fatal.
- * src/engine-g13.c (g13_new): Likewise.
- * src/engine-gpg.c (gpg_new): Likewise.
- * src/engine-gpgsm.c (gpgsm_new): Likewise.
- * src/engine-uiserver.c (uiserver_new): Likewise.
-
-2015-08-25 Werner Koch <wk@gnupg.org>
-
- Cleanup layout of gpgme.h.
- + commit 97f1f3e883808743da5ee144abab25de062f34ac
- * src/gpgme.h.in: Reorder prototypes. Chnage some comments.
-
- Improve error return by checking the FAILURE status.
- + commit 8ddc5801ade02297924447df5745c8877a96e5e3
- * src/gpgme.h.in (GPGME_STATUS_FAILURE): New.
- * src/status-table.c (FAILURE): New.
- * src/op-support.c (_gpgme_parse_failure): New.
- * src/passphrase.c (_gpgme_passphrase_status_handler): Forward FAILURE
- status line to the status callback.
-
- * src/decrypt.c (op_data_t): Add field failure_code.
- (_gpgme_decrypt_status_handler): Parse that code and act upon it on EOF.
- * src/encrypt.c (op_data_t): Add field failure_code.
- (_gpgme_encrypt_status_handler): Parse that code and act upon it on EOF.
- * src/genkey.c (op_data_t): Add field failure_code.
- (genkey_status_handler): Parse that code and act upon it on EOF.
- * src/passwd.c (op_data_t): Add field failure_code.
- (passwd_status_handler): Parse that code and act upon it on EOF.
- * src/sign.c (op_data_t): Add field failure_code.
- (_gpgme_sign_status_handler): Parse that code and act upon it on EOF.
- * src/verify.c (op_data_t): Add field failure_code.
- (_gpgme_verify_status_handler): Parse that code and act upon it on EOF.
-
- tests: Allow using run-sign to test loopback pinentry problems.
- + commit 491fcd91b84564232d5d061942baa50b99e166c0
- * tests/run-sign.c: Add options --status and --loopback.
-
-2015-08-24 Werner Koch <wk@gnupg.org>
-
- Call status_cb for an ERROR status seen in the passphrase handler.
- + commit ad46f4f655e653580343c15f1b0b365b7d307d1b
- * src/passphrase.c (_gpgme_passphrase_status_handler): Call status_cb.
-
- w32: Look for gpgconf in the new GnuPG 2.1 install dir.
- + commit a7dbab23ea4976d106d649aa515ffb2968a085ed
- * src/w32-util.c (_gpgme_get_gpgconf_path): Try another location of
- gpgconf.exe.
-
- w32: Expect gpgme-w32spawn.exe only in the gpgme installation dir.
- + commit 06d6fd8ca01354c8f7cfc847c4ac1b868268cbaa
- * src/w32-util.c (find_program_at_standard_place): Remove.
- (_gpgme_get_gpg_path): Make the search order more explicit.
- (_gpgme_get_gpgconf_path): Ditto.
- (_gpgme_get_w32spawn_path): Search only in the inst_dir.
-
- w32: Print the installation directory in debug mode.
- + commit df098d6a437109c57516db75addf3764a6dfda81
- * src/debug.c (debug_init) [W32]: Show libgpgme installation dir.
-
- Add an export secret key feature.
- + commit 2b632bbb78eee2b94c122f66d171a7c80e9c4fb0
- * src/gpgme.h.in (GPGME_EXPORT_MODE_SECRET): New.
- (GPGME_EXPORT_MODE_RAW): New.
- (GPGME_EXPORT_MODE_PKCS12): New.
- * src/export.c (export_start, export_ext_start): Allow new flags.
- * src/engine-gpg.c (export_common): Support secret key export.
- * src/engine-gpgsm.c (gpgsm_export, gpgsm_export_ext): Ditto.
-
- * src/gpgme-tool.c (cmd_export): Add options --secret, --raw,
- and --pkcs12.
- * tests/run-export.c (main): Likewise.
-
-2015-08-16 Ben Kibbey <bjk@luxsci.net>
-
- Parse INQUIRE_MAXLEN in the passphrase callback.
- + commit ccbaccbf2e0ba582d181b9ee4d8543d7c1248b2c
- * src/passphrase.c (_gpgme_passphrase_status_handler): Parse
- GPGME_STATUS_INQUIRE_MAXLEN.
- * src/passphrase.c (_gpgme_passphrase_command_handler): Send the
- INQUIRE_MAXLEN status message.
-
- Fix gpgme_{get,set}_status_cb to match documentation.
- + commit 70b3e5964ea0592bd09d1877d720b2c63f501970
- * doc/gpgme.texi: Minor fixes.
- * src/gpgme.c (gpgme_get_status_cb): Set return variables to NULL and
- check for a valid ctx pointer.
-
- Parse the INQUIRE_MAXLEN status message.
- + commit 6dd24c3c6133ec54f75abd056191a8027fe01de0
- * src/gpgme.h.in: (gpgme_status_code_t): Add INQUIRE_MAXLEN.
- * src/status-table.c (status_table_s): Ditto.
- * src/genkey.c (genkey_status_handler): Parse INQUIRE_MAXLEN.
- * src/decrypt.c (_gpgme_decrypt_status_handler): Ditto.
- * src/sign.c (_gpgme_sign_status_handler): Ditto.
-
- This status message informs the client of the maximum length of an
- inquired line. It is sent from gpg and forwarded to the client via
- gpgme_status_cb_t.
-
- Add gpgme_set/get_status_cb().
- + commit 4fadcf06ec8b0ebfb05c7622dbc3b73fd3c1bad9
- * src/gpgme.h.in (gpgme_set_status_cb): New.
- (gpgme_get_status_cb): New.
- (gpgme_status_cb_t): New.
- * src/gpgme.c (gpgme_set_status_cb): New.
- (gpgme_get_status_cb): New.
- * src/context.h (status_cb): New.
- (status_cb_value): New.
- * src/gpgme.def: Export new symbols.
- * src/libgpgme.vers: Ditto.
- * doc/gpgme.texi: Document these new functions.
-
- Make use of user passphrase handler during genkey.
- + commit 2b6ae3dadf4432f7a72fd119144b835f7b1adcc4
- * src/genkey.c (genkey_start): set engine passphrase command handler.
-
-2015-08-12 Ben Kibbey <bjk@luxsci.net>
-
- Also check the return code in gpg_sign().
- + commit e07d38f5f9f3b94e403f1265ff7fd3d7009dd557
- * src/engine-gpg.c (gpg_sign): Check return value from start().
-
-2015-08-11 Ben Kibbey <bjk@luxsci.net>
-
- Check the return value when starting gpg.
- + commit 8f28e3caf95d7bc99e9271bfc2b44080166af31f
- * src/engine-gpg.c (gpg_decrypt, gpg_delete, gpg_passwd): Check return
- value of start().
-
-2015-08-02 Ben McGinnes <ben@adversary.org>
-
- More GTK2 removal.
- + commit a7fbd5293ed0ba2c179837a4a2b859376d30e35e
- * Missed a couple of files, these 2 go for the same reason as the
- previous 3.
-
- Removed GUI examples.
- + commit 1cd0aef0afb196094d90673002d4c210a04911c9
- * GUI examples written with pygtk, which has not been ported to Python
- 3 and won't be as it is for GTK2 and GNOME is moving to GTK3.
- * New GUI examples may be required in future using any of several GUI
- frameworks (e.g. wxPython, PyQt, PySide, PyGObject, etc.).
-
-2015-07-31 Andre Heinecke <aheinecke@intevation.de>
-
- Add offline mode support for CMS keylisting.
- + commit 08086dd6901740e155e4361212b4e9cff8a47296
- * doc/gpgme.texi: Document offline mode.
- * src/context.h (gpgme_context): Add offline.
- * src/engine-backend.h (keylist, keylist_ext): Add engine_flags.
- * src/engine.c, src/engine.h (_gpgme_engine_op_keylist): Ditto.
- (_gpgme_engine_op_keylist_ext): Ditto.
- * src/engine.h (GPGME_ENGINE_FLAG_OFFLINE): New.
- * src/engine-gpg.c (gpg_keylist, gpg_keylist_ext): Ditto.
- * src/engine-gpgsm.c (gpgsm_keylist): Handle engine_flags.
- (gpgsm_keylist_ext): Ditto.
- * src/gpgme.c (gpgme_set_offline, gpgme_get_offline): New.
- * src/gpgme.def (gpgme_set_offline, gpgme_get_offline): New.
- * src/gpgme.h.in (gpgme_set_offline, gpgme_get_offline): New.
- * src/libgpgme.vers (gpgme_set_offline, gpgme_get_offline): New.
- * src/keylist.c (gpgme_op_keylist_start): Set offline flag.
- (gpgme_op_keylist_ext_start): Ditto.
- * tests/run-keylist.c (show_usage, main): Add offline argument.
-
-2015-07-23 Peter Wu <peter@lekensteyn.nl>
-
- build: ignore scissor line for the commit-msg hook.
- + commit 157c8be183153ff588f98874a3205aa483d0fd23
- * build-aux/git-hooks/commit-msg: Stop processing more lines when the
- scissor line is encountered.
-
-2015-07-23 Werner Koch <wk@gnupg.org>
-
- Add option --lib-version to gpgme-tool.
- + commit c23f8897105ce2bb6e62d9c44ca0779fcc08a919
- * src/gpgme-tool.c (options, parse_options): Add --lib-version
- (CMD_LIBVERSION): New.
- (main): Implement.
-
-2015-06-08 Werner Koch <wk@gnupg.org>
-
- Release 1.5.5.
- + commit 052a9e3c5671d1ab69551f7b0abd0bbf859d4aba
-
-
- Fix regression with gpgsm 2.0 due to "OPTION with-secret".
- + commit ddbd54ef881bd2c3481d62b89bef7241667b64ee
- * src/engine-gpgsm.c (gpgsm_assuan_simple_command): Do not terminate
- on a status lines.
-
- tests: Add option --secret to run-keylist.
- + commit 7addffc0826e7f36afcc7f66268e9ee2a37e2042
-
-
- Fix compiler warnings about unused value in TRACE macros.
- + commit 8b9f84828cd04a7dab37e219123edc1905da8e6b
- * src/debug.h: Change macros to not have a literal 0 as last
- expression of the comma operator.
- * src/debug.c (_gpgme_debug_frame_end): Return 0.
- (_gpgme_debug): Return 0.
-
- Fix test suite for GnuPG 2.1 which uses pubring.kbx.
- + commit a5b040cc57c65b3d105666b90c7eb59ee6ff3882
- * tests/gpgsm/final.test: New.
- * tests/gpgsm/initial.test: New.
- * tests/gpg/start-stop-agent: Move to ../.
- * tests/gpgsm/Makefile.am (TESTS_ENVIRONMENT): Export top_srcdir.
- (TESTS): Add intial.test and final.test.
- (AM_LDFLAGS): Add -no-install.
- (clean-local): Use start-stop-agent
- (initial.test): Add dependency.
- * tests/gpg/Makefile.am (top_srcdir): Export top_srcdir.
- (AM_LDFLAGS): Add -no-install.
- (check-local): Depend on pubring-stamp instead of pubring.gpg.
- (initial.test): Depend on check-local.
- (./pubring-gpg): Replace by rule for ./pubring-stamp.
-
-2015-06-05 Matthew Barnes <mbarnes@redhat.com>
-
- Set GPGME_SIGSUM_KEY_REVOKED also for gpg.
- + commit 87d713ff41454bd08a345c63605f6fc7ac854dd4
- * src/verify.c (calc_sig_summary): Handle GPG_ERR_CERT_REVOKED.
-
-2015-06-05 Werner Koch <wk@gnupg.org>
-
- Fix segv for userids with a backslash.
- + commit 0d28a696163677d6b34a802b6beddecd805d0fc7
- * src/engine-gpg.c (gpg_keylist_preprocess): Increment SRC for a
- backslash.
-
-2015-05-16 Ben McGinnes <ben@adversary.org>
-
- Python 3 port of PyME.
- + commit 90405ac84b78ba7e5458ea09986749594a01195a
- * Port of PyME 0.9.0 for Python 2 to Python 3 along with most of the
- example scripts.
- * Intended to be developed in parallel with the original Python 2
- version until such time as a rewrite of GPGME leads to developing an
- IO API in Python 3 from scratch.
- * Python 3 PyME and API maintainer has entered, stage left with current
- GPG key ID 0x321E4E2373590E5D, primary fingerprint is "DB47 24E6 FA42
- 86C9 2B4E 55C4 321E 4E23 7359 0E5D" and signing subkey fingerprint is
- "B7F0 FE75 9387 430D D0C5 8BDB 7FF2 D371 35C7 553C" for future
- reference with git commit signatures.
-
- Explaining why not all scripts work.
- + commit 29887c9b28c0db14bf75e227a8082d23a2c151d2
- * Some of them cannot be properly tested on OS X, especially with GTK in
- the mix (it works on OS X, but is unlikely to be as easily accessible
- as Cocoa or Qt).
- * Most major functions are showcased and do work, albeit sometimes with
- false positives of error messages, at least on OS X.
-
- Byte encoding.
- + commit c39cea7a07cec9ab34cd2026f47b6fba80fea3c8
- * More string updates.
- * verifydetails.py still fails, but as Bernhard is still contactable, it
- might be worth him checking on it instead.
-
- No change, note added to explain why.
- + commit 0e6e6689ef1aea36c1cb3cb47e94f1f2ebbd97cb
-
-
- Strings vs. Bytes.
- + commit 40290507bcdc63ab9023393d071167d455d70737
- * CLI input must be byte encoded.
-
- More byte changes and passphrase changes.
- + commit 325b0ca341ae3ac8c3232f557ea2c381b4843969
- * exportimport works, but will still segfault for an as yet unknown
- reason.
- * genkey produces a traceback error, but does create the key as
- intended.
- * matched passphrase in signverify.
-
- More bytes good.
- + commit ba3c9f2617955dc828309a4800e4f5b3f1c3a949
- * Another string to byte change.
-
- Updated encrypt-to-all.
- + commit 1c87ecb86ae364b18f69bca726021271fefaa1c1
- * Changed plaintext string to byte literal.
- * Nested key selection in a try/except statement in case of
- UnicodeEncodeError instances.
- * Tested successfully on over 9,000 keys.
-
- Passphrase update.
- + commit 24c738f5bb5c253a17962c62867d6c847250b41e
- * Changed example passphrase to something that meets the current minimum
- requirements.
-
- example email.
- + commit 8345bf6f43c4f671124eaa1b713a7f5ac5780cbd
- * changed joe@foo.bar to joe@example.org as it is only a matter of time
- before ICANN actually creates bar as a gTLD, if they haven't already.
-
- Updated string and key data.
- + commit 4fc123981514c7087114e08ee8ca63de1a1db59f
- * Text changed to byte literals.
- * Changed key type to RSA/RSA.
- * Changed expiry to the future (2020).
-
-2015-05-08 Ben McGinnes <ben@adversary.org>
-
- String type.
- + commit 90079786c5cde4dd8ceb2e0fcda7605b08ccd021
- * the plain text string must be bytes and not unicode.
- * Expect most of the example code to have similar issues at present.
-
-2015-05-05 Ben McGinnes <ben@adversary.org>
-
- Python 3 port of PyME.
- + commit ebd8734ad705afa4edc409787a00d4968d25e018
- * The entirety of the Python 3 port of PyME up to commit
- 2145348ec54c6027f2ea20f695de0277e2871405
- * The old commit log has been saved as
- lang/py3-pyme/docs/old-commits.log
- * Can be viewed as a normal (separate) git repository at
- https://github.com/adversary-org/pyme3
- * Utilising the submodule feature of git was deliberately skipped on
- humanitarian grounds (in order to prevent pain and suffering on the
- part of anyone having to manage this repository).
-
-2015-04-13 Werner Koch <wk@gnupg.org>
-
- Release 1.5.4.
- + commit d2712d9f6f086911184453219a096c61f6829d3b
-
-
- w32: Use -static-libgcc to avoid linking to libgcc_s_sjlj-1.dll.
- + commit 524dacfbb6bb131f05a4ecab3d7bcd91c1b43d33
- * src/Makefile.am (extra_ltoptions): New.
- (libgpgme_la_LDFLAGS): Use it.
- (libgpgme_pthread_la_LDFLAGS): Ditto.
- (libgpgme_glib_la_LDFLAGS): Ditto.
-
-2015-03-16 Werner Koch <wk@gnupg.org>
-
- Fix potential crash in trace macro.
- + commit 8cfcdfe5564f87362e5ec1bfdca5c14aed9c45f0
- * src/signers.c (gpgme_signers_add): Avoid deref of a NULL KEY in the
- trace macro.
- * src/engine-spawn.c (engspawn_release): Remove always true condition.
- * src/engine-gpg.c (gpg_release): Ditto.
-
- Fix one byte too short malloc.
- + commit 119f27032b822ace8c012b96f9e41bcf23251a54
- * src/engine-spawn.c (add_data): Fix malloc
-
-2015-01-30 Werner Koch <wk@gnupg.org>
-
- Switch to automake 1.14 and update build-aux files.
- + commit 428ea7696585bc24d127b903840554ca659069b6
-
-
-2014-12-11 Werner Koch <wk@gnupg.org>
-
- Release 1.5.3.
- + commit 37d927a9706fff6d8ef8d45073984ea2f92afb31
- * configure.ac: Set LT version to C24/A13/R2.
-
-2014-12-08 Werner Koch <wk@gnupg.org>
-
- Return an error for some export key operations.
- + commit 05258d427513a933f01d4df13aca834d797f91e7
- * src/context.h (OPDATA_EXPORT): New.
- * src/export.c (op_data_t): New.
- (release_op_data): New.
- (parse_error): New.
- (export_status_handler): New.
- (export_start, export_ext_start): Prepare op_data.
- (gpgme_op_export_ext, gpgme_op_export_keys): Return an error from the
- status handler.
-
-2014-11-21 Werner Koch <wk@gnupg.org>
-
- Release 1.5.2.
- + commit c62ce32b9c01ee9ceb1d69e7344fb79a9162d232
- * configure.ac: Set LT version to C24/A13/R1.
-
- Update the previous commit.
- + commit 81ce87111f5a3f966188629abb07a4d0702e6db0
- * src/sign.c (gpgme_op_sign_result): Reformat and take care of failed
- malloc.
-
-2014-11-21 Ben Kibbey <bjk@luxsci.net>
-
- Fix returning new signatures when there are none.
- + commit 5942b0c7e0593b82b4c4a142c214d7a2649de104
- * src/sign.c (gpgme_op_sign_result): Test that invalid and valid
- signatures add up to gpgme_signers_count().
-
-2014-11-06 Werner Koch <wk@gnupg.org>
-
- Improve the debug output a bit.
- + commit 8031341283f4fcb1f226aa6f66bc5a6042586815
- * src/debug.h (TRACE_ERR): Include the line number in the output.
-
-2014-10-02 Werner Koch <wk@gnupg.org>
-
- build: Implement SYSROOT feature.
- + commit 4027a0a89724df3aeef8a964c529548d724b6a5a
- * configure.ac: Document SYSROOT.
- * m4/gpg-error.m4: Update from libgpg-error master.
- * src/gpgme.m4: Implement SYSROOT stuff.
-
-2014-09-24 Werner Koch <wk@gnupg.org>
-
- tests: Delay some test file extraction until "make check".
- + commit 2e8ecc24cf74f918c303c315da3bb18636a5e288
- * tests/gpg/Makefile.am (all-local): Change to check-local.
- * tests/gpgsm/Makefile.am (all-local): Ditto.
-
-2014-09-24 Daniel Kahn Gillmor <dkg@fifthhorseman.net>
-
- Clean up gpgme's tests/gpg when gpg2.1 is available.
- + commit 36997e0f746ce2d38de997055141542583cc0f52
- * tests/gpg/Makefile.am: Clean up .gpg-v21-migrated
-
-2014-08-12 Werner Koch <wk@gnupg.org>
-
- gpgme-tool: Print fingerprint and keyid with keyservers.
- + commit 4160ef90a1b1b778c735f31f98a6966ba3b3ea90
- * src/gpgme-tool.c (cmd_keylist): Print keyid. Print FPR only if
- available.
-
- Handle modern keyserver output which may emit the fingerprint.
- + commit 3450bff52baef2c14118958cf79ead46940d58f0
- * src/engine-gpg.c (read_colon_line): Split preprocessed lines.
- (gpg_keylist_preprocess): Limit keyid field and print fingerprint.
-
- gpgme-tool: Install gpgme-tool.
- + commit 488e44cdb531035fa8813b95b212f9728abc7e62
- * src/Makefile.am (bin_PROGRAMS): New. Add gpgme-tools.
- (noinst_PROGRAMS): Remove.
-
- gpgme-tool: Fix segv for external key listing.
- + commit e5ab11607281b9838da2728268a8f9f0daa2b04d
- * src/gpgme-tool.c (result_xml_escape): Allow for DATA being NULL.
-
-2014-07-30 Werner Koch <wk@gnupg.org>
-
- Release 1.5.1.
- + commit 16835c3b5d1cea18512b2c93e884d8ca513a2ee7
- * configure.ac: Change LT version to C24/A13/R0.
-
- Fix possible realloc overflow for gpgsm and uiserver engines.
- + commit 2cbd76f7911fc215845e89b50d6af5ff4a83dd77
- * src/engine-gpgsm.c (status_handler):
- * src/engine-uiserver.c (status_handler):
-
-2014-06-26 Werner Koch <wk@gnupg.org>
-
- w32: Get IOSPAWN flag back in sync with spawn helper.
- + commit 68116fa5f67238a60bb8be375cc959262fa021d3
- * src/gpgme-w32spawn.c: Include priv-io.h.
-
-2014-06-10 Werner Koch <wk@gnupg.org>
-
- Add new reason codes to the INV_RECP status code.
- + commit 86260b47c9e306e325103d1af767842357647e60
- * src/op-support.c (_gpgme_parse_inv_recp): Add codes 13 and 14.
-
-2014-06-04 Werner Koch <wk@gnupg.org>
-
- Add new keylist mode GPGME_KEYLIST_MODE_WITH_SECRET.
- + commit 4dc9af24156b4fd52c7b76e7522b9b7a64e5386a
- * src/gpgme.h.in (GPGME_KEYLIST_MODE_WITH_SECRET): New.
- * src/engine-gpg.c (gpg_keylist_build_options): Handle new mode.
- * src/engine-gpgsm.c (gpgsm_keylist, gpgsm_keylist_ext): Ditto.
- * src/keylist.c (parse_sec_field15): Add arg key and take care of
- --with-secret output.
-
- * src/gpgme-tool.c (gt_get_keylist_mode, cmd_keylist_mode): Add
- "with_secret". Print card info and and secret flag for subkeys.
-
-2014-05-21 Werner Koch <wk@gnupg.org>
-
- Release 1.5.0.
- + commit 0eca21113c1d1ab2aea58e1ea21075f472f99c23
- * configure.ac: Change LT version to C22/A11/R0.
-
-2014-05-13 Werner Koch <wk@gnupg.org>
-
- Add 6 new GPGME_STATUS_ codes.
- + commit de6caeed6d6432101c673c35717f152d5facf823
- * src/status-table.c: Also add missing DECRYPTION_INFO entry.
-
-2014-05-08 Werner Koch <wk@gnupg.org>
-
- Add field CURVE to the key info.
- + commit 88f15336ec0eadde68ff2618349efb9006b8e801
- * src/gpgme.h.in (struct _gpgme_subkey): Add field CURVE.
- * src/key.c (gpgme_key_unref): Free CURVE.
- * src/keylist.c (keylist_colon_handler): Set CURVE.
-
- * src/gpgme.c (gpgme_release): For failsafe reasons reset engine and
- engine info after freeing.
-
- Fix a memory access and a double slash bug.
- + commit de4a1ea684e1591975feb801e7651309e1ee2c49
- * src/engine-spawn.c (engspawn_start): Allocate space for list
- terminator.
- * src/posix-util.c (walk_path): Fix trailing slash detection.
-
- Map public key algos returned by gpg to gpgme values.
- + commit d5fb92cdaed21eea2f1a921e4f11df72635a8462
- * src/conversion.c (_gpgme_map_pk_algo): New.
- * src/decrypt.c (parse_enc_to): Add arg PROTOCOL and map pubkey algo.
- (_gpgme_decrypt_status_handler): Map pubkey algo.
- * src/keylist.c (keylist_colon_handler): Map pubkey algo.
- * src/sign.c (parse_sig_created): Add arg PROTOCOL and map pubkey
- algo.
- * src/verify.c (parse_new_sig): Ditto.
- (parse_valid_sig): Ditto.
-
- * src/gpgme.h.in (GPGME_PK_ECC): New.
- (GPGME_MD_SHA224): New.
- * src/gpgme.c (gpgme_pubkey_algo_name): Add GPGME_PK_ECC case.
- (gpgme_hash_algo_name): Add GPGME_MD_SHA224.
-
- Add GPGME_ENCRYPT_NO_COMPRESS flag.
- + commit 991cde9e79fec70aad093ded383c5574d30f9388
- * src/gpgme.h.in (GPGME_ENCRYPT_NO_COMPRESS): New.
- * src/engine-gpg.c (gpg_encrypt, gpg_encrypt_sign): Implement it.
- * src/gpgme-tool.c (_cmd_sign_encrypt): Add option --no-compress.
-
-2014-04-16 Werner Koch <wk@gnupg.org>
-
- w32: Fix another memleak on error.
- + commit 62711e5614e44e65a7c7bb7d21493d09d3081271
- * src/w32-io.c (create_reader): free CTX.
-
-2014-04-15 Werner Koch <wk@gnupg.org>
-
- w32: Fix memleak in an error code paths.
- + commit 85a07ca7e3dffdefc8ae74beebb59e47a6e6bd1b
- * src/w32-io.c (create_writer): Free CTX in cased of bad FD.
- * src/w32-util.c (_gpgme_mkstemp): Free TMPNAME in case of a failed
- mkstemp.
-
- Fix possible zombie processes.
- + commit 2bb26185e3b9a048033c559517d6ba7d2eb47066
- * src/posix-io.c (_gpgme_io_waitpid): Protect waitpid agains EINTR.
- (_gpgme_io_dup): Likewise.
- (_gpgme_io_connect): Likewise.
-
-2014-04-10 Werner Koch <wk@gnupg.org>
-
- Actually implement flags for gpgme_op_spawn.
- + commit d3bd8fff863f62b6d0e228aea754efbbde861e9a
- * src/spawn.c (gpgme_op_spawn_start, gpgme_op_spawn): Pass FLAGS dow
- to spawn_start and add FLAGS args along the call path.
- * src/engine-spawn.c (engspawn_start): Hack to automagically provide
- argv[0].
-
- Add GPGME_PROTOCOL_SPAWN and gpgme_op_spawn.
- + commit 4f2d652e60700e03809307a10015ff9003ac3579
- * src/gpgme.h.in (GPGME_PROTOCOL_SPAWN): New.
- (GPGME_SPAWN_DETACHED, GPGME_SPAWN_ALLOW_SET_FG): New.
- * src/gpgme.c (gpgme_set_protocol): Add new protocol.
- (gpgme_get_protocol_name): Ditto.
- * src/spawn.c: New.
- * src/libgpgme.vers, src/gpgme.def: Add new public functions.
- * src/engine-spawn.c: New.
- * src/Makefile.am: Add new files.
- * src/engine-backend.h (struct engine_ops): Add OPSPAWN.
- * src/engine.c (engine_ops): Add _gpgme_engine_ops_spawn.
- (gpgme_get_engine_info): Add Spawn to the list of protocols.
- (_gpgme_engine_op_spawn): New.
-
- * src/gpgme-tool.c (gt_protocol_from_name): Add new protocol.
- (gt_spawn, cmd_spawn): New.
-
- Add gpgme_get_dirinfo.
- + commit 77931a9a1468b0cfbaafd4153867d90764a6d258
- * src/dirinfo.c (gpgme_get_dirinfo): New.
- * tests/t-engine-info.c (main): Print results from that function.
-
- Make use of internal iospawn flags more flexible.
- + commit 443f6b76a964b77e2e61c03592a83ffa0a6da4b1
- * src/priv-io.h (IOSPAWN_FLAG_DETACHED): New. Renumber the others.
- * src/w32-io.c (_gpgme_io_spawn): Use DETACHED_PROCESS process only if
- IOSPAWN_FLAG_DETACHED is given.
- * src/w32-qt-io.cpp (_gpgme_io_spawn): Ditto.
- * src/w32-glib-io.c (_gpgme_io_spawn): Ditto.
- * src/assuan-support.c (my_spawn): Pass IOSPAWN_FLAG_DETACHED flags.
- * src/dirinfo.c (read_gpgconf_dirs): Ditto.
- * src/engine-gpg.c (start): Ditto.
- * src/engine-gpgconf.c (gpgconf_read, gpgconf_write): Ditto.
- * src/version.c (_gpgme_get_program_version): Ditto.
-
- Make sure a spawned process has all standard fds connected.
- + commit 617d3be629229cbebfdc2d26a4e854bc4fe38a68
- * src/posix-io.c (_gpgme_io_spawn): dup /dev/null also to unsued
- stdout.
-
-2014-03-13 Werner Koch <wk@gnupg.org>
-
- Add configure option --enable-fixed-path.
- + commit 766355b5d4f63261c428531fdbdafb8b67de9369
- * configure.ac: Add option --enable-fixed-path.
- (FIXED_SEARCH_PATH): New ac_define.
- * src/posix-util.c (walk_path): Make use of the option. Remove
- current directory from fallback PATH.
-
-2014-03-11 Werner Koch <wk@gnupg.org>
-
- Avoid pointer arithmetic on void pointer.
- + commit dd9c8c56719db093b8daa23aa40b2be71bbd1526
- * src/gpgme.c (gpgme_io_writen): Use new var buffer.
-
- Change implementation return type to match the definition.
- + commit 75a6255935f450d56f3637cbb2b6c8161ace57ab
- * src/gpgme.c (gpgme_get_sub_protocol): Change return type to
- gpgme_protocol_t.
-
-2014-03-05 Daiki Ueno <ueno@gnu.org>
-
- doc: Fix documentation of struct data types.
- + commit 40938feb3f3393b0cdc6ec61ca2e77ff0b82c69a
- * gpgme.texi (Key Management): Document is_cardkey and card_number
- members of gpgme_subkey_t.
- (Decrypt): Remove description of the non-existent wrong_key_usage
- member of gpgme_recipient_t.
- (Verify): Document pka_address member of gpgme_signature_t.
- (Creating a Signature): Add missing member names in
- gpgme_new_signature_t.
- (Registering I/O Callbacks): Fix reference of gpgme_io_cbs struct.
-
-2014-02-21 Werner Koch <wk@gnupg.org>
-
- Always pass correct name to argv[0]. Ignore GPG_AGENT_INFO for gpg2.
- + commit 651d9e1c6bc1cab248024c3850ef64698247588f
- * src/dirinfo.c (WANT_GPG_ONE_MODE): New.
- (struct dirinfo): Add field "gpg_one_mode".
- (get_gpgconf_item): Set that field and return it if requested.
- (_gpgme_in_gpg_one_mode): New.
- * src/engine-gpg.c (build_argv): Check GPG_AGENT_INFO only in gpg-1
- mode.
-
- * src/dirinfo.c (_gpgme_get_basename): New.
- * src/engine-g13.c (g13_new): Take argv[0] from the pgmname.
- * src/engine-gpgsm.c (gpgsm_new): Ditto.
- * src/engine-gpg.c (build_argv): Ditto. Add arg PGMNAME.
- (start): Pass PGMNAME to buildargv.
-
-2014-02-12 Werner Koch <wk@gnupg.org>
-
- Fix type inconsistency between gpgme.h and gpgme.c.
- + commit f916ab753b7d17210cd455666870038949f72851
- * src/gpgme.c (gpgme_set_pinentry_mode): Fix type of MODE.
-
-2014-01-10 Werner Koch <wk@gnupg.org>
-
- Use the generic autogen.sh script.
- + commit 1a504aab384947c1a6e949affd14bc696297fc8d
- * autogen.rc: New.
- * Makefile.am (EXTRA_DIST): Add it.
- * autogen.sh: Update from GnuPG.
-
- * configure.ac (AM_SILENT_RULES): New.
-
-2014-01-07 Werner Koch <wk@gnupg.org>
-
- Make gpgconf engine work again - fixes 02ba35c1.
- + commit ab6e718327451e418782990c5a0a4e72588e3f0b
- * src/gpgconf.c: Remove ENABLE_GPGCONF and move prototypes to ...
- * src/engine-backend.h: ... here.
-
- Make gpgme_new return a proper error if no engines are installed.
- + commit 121efcc5618374a1b4450b1d6a18bb3c35edb1fd
- * src/engine.c (gpgme_get_engine_info): Improve error handling.
- (_gpgme_engine_info_copy): Ditto.
- * src/gpgme.c (gpgme_new): Return error GPG_ERR_NO_ENGINE.
-
- Print the full PATH in the log if gpg was not found.
- + commit d63058b852b83515e7715103c04a684ecf59838a
- * src/posix-util.c (walk_path): Keep a copy of PATH.
-
-2014-01-06 Werner Koch <wk@gnupg.org>
-
- Add global flags disable-gpgconf, gpgconf-name, and gpg-name.
- + commit 6564e5e78e8c6e5a120675a5699b5b75248cfbc7
- * src/gpgme.c (gpgme_set_global_flag): Add names "disable-gpgconf",
- "gpgconf-name", and "gpg-name".
- * src/dirinfo.c (_gpgme_dirinfo_disable_gpgconf): New.
- (get_gpgconf_item): Minor debug info change.
- * src/posix-util.c (default_gpg_name, default_gpgconf_name): Add vars.
- (_gpgme_set_default_gpg_name): New.
- (_gpgme_set_default_gpgconf_name): New.
- (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Use new vars.
- (walk_path): Add debug output on failure.
- * src/w32-util.c (default_gpg_name, default_gpgconf_name): Add vars.
- (replace_slashes): New.
- (get_basename): New.
- (_gpgme_set_default_gpg_name): New.
- (_gpgme_set_default_gpgconf_name): New.
- (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Use new vars.
-
- * tests/t-engine-info.c (main): Add --verbose and --set-global-flag
- options.
-
-2013-12-27 Werner Koch <wk@gnupg.org>
-
- Locate engine names only at runtime and prefer GnuPG-2.
- + commit 02ba35c1b6a2cbb3361b2f2ad507c53564b2be0b
- * configure.ac (NEED_GPG_VERSION, NEED_GPGSM_VERSION)
- (NEED_G13_VERSION, NEED_GPGCONF_VERSION): Remove vars and all related
- checks. Do not check for any engine version.
- (HAVE_ASSUAN): Remove AM conditional.
- * src/Makefile.am: Remove separate component vars and always build all
- engines but uiserver.
- * src/dirinfo.c (WANT_GPGCONF_NAME): New.
- (struct dirinfo): Add field gpgconf_name.
- (_gpgme_get_default_gpgconf_name): Use WANT_GPGCONF_NAME.
- (get_gpgconf_item): Set gpgconf name and adjust for _gpgme_get_*_path
- now returning a malloced string.
- * src/engine.c (engine_ops): Always init all engines except for
- uiserver.
- * src/posix-util.c (_gpgme_get_gpgsm_path, _gpgme_get_g13_path):
- Remove unused functions.
- (walk_path): New.
- (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path ): Re-implement using
- walk_path.
- * src/w32-util.c (_gpgme_get_gpgsm_path, _gpgme_get_g13_path): Remove
- unused functions.
- (_gpgme_get_gpg_path, _gpgme_get_gpgconf_path): Return a malloced
- string.
- * src/engine-g13.c (g13_get_req_version): Use a hardwired string with
- the required version. This info belongs into this file.
- * src/engine-gpg.c (gpg_get_req_version): Ditto.
- * src/engine-gpgconf.c (gpgconf_get_req_version): Ditto.
- * src/engine-gpgsm.c (gpgsm_get_req_version): Ditto.
- * tests/t-engine-info.c: Replace now useless test by an info output.
- * tests/gpg/Makefile.am (GPG, GPG_AGENT): Hardwire gpg and gpg-agent.
- * tests/gpgsm/Makefile.am (GPGSM): Hardwire gpgsm.
-
-2013-08-19 Werner Koch <wk@gnupg.org>
-
- Document API change for GPGME_EVENT_DONE from 2009.
- + commit b0aaa3f9aef36634b5c391812362f016114f02ba
- * doc/gpgme.texi (I/O Callback Interface): Fix description for the
- event arg.
-
- Fix possible segv in the gpgme_op_card_edit.
- + commit 372bd439834c69d502668007c8c683233d676bd5
- * src/edit.c (gpgme_op_edit_start, gpgme_op_card_edit_start): Do not
- deref a NULL KEY in TRACE_BEG.
-
- tests: Fix NULL ptr deref in gpgsm/t-verify.
- + commit eae9c32bd9c80ca4a4ecf794808211808f2ebbdd
- * tests/gpgsm/t-verify.c (check_result): Do not dereference a sig or
- sig->fpr if NULL.
-
-2013-08-12 Werner Koch <wk@gnupg.org>
-
- Release 1.4.3.
- + commit d788c35e19df9eade8eb0b880ca1dc47ae7928ad
- * configure.ac: Change LT version to C22/A11/R0.
-
- Make test suite workable with GnuPG 2.1.
- + commit 3ca7e96e384d5872c71ceb3b2e2a05b0c1b7e1a0
- * tests/gpg/start-stop-agent: New.
- * tests/gpg/initial.test: New.
- * tests/gpg/final.test: New.
- * tests/gpg/Makefile.am (c_tests): New.
- (TESTS): Move all to c_tests. Add initial.test, final.test, and
- c_tests.
- (TESTS_ENVIRONMENT): Add C_ALL=C
- (private_keys): New.
- (EXTRA_DIST): Add new files.
- (./private-keys-v1.d/gpg-sample.stamp): Copy private keys.
- (all-local): Depend on gpg-sample.stamp.
- * tests/gpg/13CBE3758AFE42B5E5E2AE4CED27AFA455E3F87F: New.
- * tests/gpg/13CD0F3BDF24BE53FE192D62F18737256FF6E4FD: New.
- * tests/gpg/76F7E2B35832976B50A27A282D9B87E44577EB66: New.
- * tests/gpg/7A030357C0F253A5BBCD282FFC4E521B37558F5C: New.
- * tests/gpg/A0747D5F9425E6664F4FFBEED20FBCA79FDED2BD: New.
-
- Improve detection of default gpg by configure.
- + commit 069ac580373923f5635b7172ecff79eb189f6944
- * configure.ac: Move test for gpgconf before test for gpg.
- (GPG, GPGSM, G13): Use gpgconf instead of AC_PATH_PROG if possible.
-
-2013-08-09 Werner Koch <wk@gnupg.org>
-
- Add function gpgme_data_identify.
- + commit 8579091c4f6a36e6bb06fcfbd147a776166fd3ea
- * src/gpgme.h.in (gpgme_data_type_t): New.
- (gpgme_data_identify): New prototype.
- * src/data-identify.c: New.
- * src/parsetlv.c, src/parsetlv.h: New. Take from gpa.
- * src/libgpgme.vers, src/gpgme.def: Add gpgme_data_identify.
- * src/gpgme-tool.c (status): Add STATUS_IDENTIFY_RESULT.
- (gt_identify): New.
- (cmd_identify): New.
-
- (hlp_passwd): Move close to cmd_passwd.
-
-2013-08-02 Werner Koch <wk@gnupg.org>
-
- Prefer GnuPG-2 engines over GnuPG-1.
- + commit a4c80126ae4754c8478c69a8a24a6ffd975485fc
- * src/util.h: Move some prototypes to ...
- * src/sys-util.h: New.
- * src/Makefile.am (main_sources): Add sys-util.h.
- * configure.ac (AH_VERBATIM): Add DIRSEP_C and DIRSEP_S.
- * src/dirinfo.c: Include sys-util.h.
- (WANT_GPG_NAME, WANT_GPGSM_NAME, WANT_G13_NAME)
- (WANT_UISRV_SOCKET): New.
- (dirinfo): Add corresponding fields.
- (parse_output): Add arg COMPONENTS and set new fields.
- (read_gpgconf_dirs): Add arg components and act upon it.
- (get_gpgconf_item): Call read_gpgconf_dirs two times. Add debug
- output.
- (_gpgme_get_default_gpg_name): New.
- (_gpgme_get_default_gpgsm_name): New.
- (_gpgme_get_default_g13_name): New.
- (_gpgme_get_default_gpgconf_name): New.
- (_gpgme_get_default_uisrv_socket): New.
- * src/engine-gpg.c, src/engine-g13.c, src/engine-gpgconf.c
- * src/engine-gpgsm.c, src/engine-uiserver.c: Change to use
- _gpgme_get_default_ instead of those from sys-util.h.
- * src/posix-util.c (_gpgme_get_gpg_path): Include sys-util.h.
- (_gpgme_get_uiserver_socket_path): Remove.
- * src/w32-util.c (_gpgme_get_gpg_path): Include sys-util.h.
- (_gpgme_get_uiserver_socket_path): Remove.
-
- w32: Try to locate gpg in the gpgme installation dir.
- + commit 3881ea4e83d1533ef497b7332398fc1850e29205
- * src/w32-util.c (my_hmodule): New.
- (wchar_to_utf8): New.
- (DllMain): New.
- (_gpgme_get_inst_dir): New.
- (find_program_in_dir): New.
- (find_program_in_inst_dir): Add arg INST_DIR.
- (_gpgme_get_gpg_path): Get inst_dir before acquiring the lock.
- (_gpgme_get_gpgconf_path): Ditto.
- (_gpgme_get_g13_path): Ditto.
- (_gpgme_get_w32spawn_path): Ditto.
-
-2013-07-31 Werner Koch <wk@gnupg.org>
-
- doc: Add --binary option for the OUTPUT command of an uiserver.
- + commit 393a9471f2f3ac0a5b14f3534a5bfc7ffe948567
-
-
-2013-06-18 Werner Koch <wk@gnupg.org>
-
- Add function gpgme_signers_count.
- + commit f2eeccbdfaf855a81abb92abe5ab4c702712bac7
- * src/signers.c (gpgme_signers_count): New.
- * src/libgpgme.vers, src/gpgme.def: Add as external symbol.
- * src/gpgme.h.in: Add prototype.
-
-2013-05-28 Werner Koch <wk@gnupg.org>
-
- Release 1.4.2.
- + commit 009e26a989f8a251563303f155c51fe012af52a4
- * configure.ac: Set LT version to C21/A10/R0.
-
- Add convenience macro GPGME_PROTOCOL_OPENPGP.
- + commit 2e8feb6016dede400053f76fc3a418e1dd567bef
- * src/gpgme.h.in (GPGME_PROTOCOL_OPENPGP): New.
-
-2013-05-23 Werner Koch <wk@gnupg.org>
-
- w32: Fix installing of .def file.
- + commit c29dad2315406bed75b9547103650bef642e6aa7
- * src/Makefile.am (install-def-file): Create libdir first.
-
- Fix libtool 2.4.2 to correctly detect .def files.
- + commit d739d4d8cf9c873b0f3bb7836aaf3d0ba31a7b7f
- * build-aux/ltmain.sh (sed_uncomment_deffile): New.
- (orig_export_symbols): Uncomment def file before testing for EXPORTS.
- * m4/libtool.m4: Do the same for the generated code.
-
-2013-05-22 Werner Koch <wk@gnupg.org>
-
- Support --no-encrypt-to also with gpgme_op_encrypt_sign.
- + commit d4371ed30da2e8b3d9f440613af299a952bde2b1
- * src/engine-gpg.c (gpg_encrypt_sign): Support the
- GPGME_ENCRYPT_NO_ENCRYPT_TO flag.
-
-2013-05-22 Werner Koch <wk@gnupg.org>
- Kyle L. Huff <g10bts@curetheitch.com>
-
- Allow symmetric encryption with gpgme_op_encrypt_sign.
- + commit 567e6481d767af60390d649897b897a8b0e7e9a5
- * src/encrypt-sign.c (encrypt_sym_status_handler): New.
- (encrypt_sign_start): Handle recp == NULL case.
- * src/engine-gpg.c (gpg_encrypt_sign): Implement symmetric encryption.
- * tests/gpg/t-encrypt-sign.c (main): Add a test case for this.
-
-2013-05-22 Werner Koch <wk@gnupg.org>
-
- gpgme-tool: Allow for symmetric encryption.
- + commit 0c1de7abd57b677998792e6cd5df5ddfb6e451b7
- * src/gpgme-tool.c (gt_sign_encrypt): Pass NULL for recp if no
- recipients are given.
-
- tests: Print auditlog in plain text format.
- + commit 18254f88f82da7542a986dca60917fb48d5bccd3
- * tests/gpgsm/t-verify.c (show_auditlog): Use plain text format.
-
-2013-05-18 Werner Koch <wk@gnupg.org>
-
- Improve C++ compatibility of previous patch.
- + commit e99356306d7bda61802530ebeb07d9ba73c4dec0
- * src/gpgme.h.in: Move gpgme_sssize_t and gpgme_off_t typedefs into
- the extern "C" scope.
-
-2013-05-16 Werner Koch <wk@gnupg.org>
-
- Make definition of off_t robust against misbehaving w32 toolchains.
- + commit 6d0d8e7ba0bb989c251545fa8af35b97d1a703ba
- * configure.ac (NEED__FILE_OFFSET_BITS): Change to define gpgme_off_t
- and gpgme_ssize_t.
- (API__OFF_T, API__SSIZE_T): New ac_subst.
- * src/gpgme.h.in: Replace all ssize_t and off_t by ac_subst macros.
- * src/assuan-support.c, src/ath-pthread.c, src/ath.c, src/ath.h
- * src/data-compat.c, src/data-fd.c, src/data-mem.c, src/data-stream.c
- * src/data-user.c, src/data.c, src/data.h, src/engine-gpgsm.c
- * src/engine-uiserver.c, src/gpgme-tool.c, src/gpgme.c: Replace off_t
- by gpgme_off_t and sszie_t by gpgme_ssize_t.
- * src/ath-pthread.c, src/ath.h: Include gpgme.h.
-
-2013-05-11 Werner Koch <wk@gnupg.org>
-
- w32: Change the way the I/O threads are cleaned up.
- + commit 9e7df9aa6d81f0abbabb03a2346d80eb5d375f81
- * src/w32-io.c (reader_context_s, create_reader)
- (writer_context_s, create_writer): Rename STOPPED to CLOSE_EV.
- (reader, writer): Remove setting of STOPPED. Wait for CLOSE_EV and
- then release the context.
- (destroy_reader, destroy_writer): Do not wait but set the CLOSE_EV.
- (kill_reader, kill_writer): Remove.
- (_gpgme_io_close): Add code from kill_reader and kill_writer.
-
-2013-05-08 Werner Koch <wk@gnupg.org>
-
- Fix hang in socket closing.
- + commit 9f330be8210d2498fe93d4166b6f6c02fca76475
- * src/w32-io.c (destroy_reader): Call shutdown.
- (reader): Do not print an error in the shutdown case.
-
- Improve debug output of the I/O reader and writer.
- + commit 2118f497010a9a41c29d062a7605ff2e136f8f4e
- * src/w32-io.c (reader, writer): Also print file_sock.
-
-2013-05-06 Werner Koch <wk@gnupg.org>
-
- Simplify a debug code function.
- + commit a7e5f1096f02af7bfb678b0bea8da6ccfc28cc79
- * src/debug.c (_gpgme_debug): Remove static space string.
-
-2013-05-01 Werner Koch <wk@gnupg.org>
-
- Release 1.4.1.
- + commit 5075c0da7c464af2a45cd36db134ed7e88f155af
- * configure.ac: Bump LT version to C20/A9/R1.
-
- Disable fd-passing for Apple.
- + commit ef5b4ae37d13142e89a051908dc080cda3d24baa
- * configure.ac: Disable fd-passing by default for Apple.
-
-2013-04-30 Werner Koch <wk@gnupg.org>
-
- Allow reading of long gpgconf output lines.
- + commit f623a6b94c527795d0b6f7e66a3966e5d9e1c454
- * src/engine-gpgconf.c (gpgconf_read): Rewrite to allow for line
- lengths up to 64k.
-
-2013-04-29 Werner Koch <wk@gnupg.org>
-
- Fix for i686-w64-mingw32.
- + commit 867b950b9306904a0ff522d0ef4a43789393cfc4
- * configure.ac (NEED__FILE_OFFSET_BITS): Do not define under Windows.
-
-2013-02-26 Werner Koch <wk@gnupg.org>
-
- Release 1.4.0.
- + commit ef5cd38123dfbef7843f374ee697b0b5e8730c46
- * configure.ac: Bump LT version to C20/A9/R0.
-
- Enable FD passing and thus building of the UI-server.
- + commit 5090f6f246bfad2eb80f3cc222963f73996d8028
- * configure.ac: Make --enable-fd-passing the default.
- * src/engine-uiserver.c (_gpgme_engine_ops_uiserver): Syntax fix.
-
- w32: Hacks for building with 32 bit mingw64.
- + commit cdae524b282ef0ea67c3880b3e0f852c84c351ce
- * configure.ac (INSERT__TYPEDEFS_FOR_GPGME_H): Add hacks for 32 bit
- mingw64.
- * src/util.h [W32]: Include winsock2.h before windows to make mingw64
- happy.
- * src/w32-util.c (_WIN32_IE): Need to use 5.1 for mingw64.
-
- Improve missing libgpg-error reporting in configure.
- + commit 787b5f14b933e5cee2624f79a23a60947f8134c8
- * configure.ac (NEED_GPG_ERROR_VERSION): New. Improve reporting for
- missing libgpg-error.
-
- Change the various version numbers to the new scheme.
- + commit d8b46c919f45666af0d541e00dcedf57e6c4b66f
- * configure.ac: Rename my_foo variables to mym4_foo variables to make
- clear that they are processed by m4.
- (VERSION_NUMBER): New ac_subst.
- (AH_BOTTOM): Add CRIGHTBLURB macro.
- (BUILD_REVISION, BUILD_FILEVERSION, BUILD_TIMESTAMP): Change them to
- work similar to libgpg-error et al.
- * src/versioninfo.rc.in: Remove use of BUILD_NUMBER and get it in line
- with gpg-error et al.
- * src/version.c (cright_blurb): New.
- (gpgme_check_version_internal): Add magic to display the above
- information.
- * tests/t-version.c (main): Add option --verbose.
-
- Update GnuPG related m4 files.
- + commit 863c0f2a3eaf2a5d46c5518e5ac3486cc1a49bd3
- * m4/gpg-error.m4: Update from libgpg-error.
- * m4/libassuan.m4: Update from libassuan.
-
- Update helper scripts.
- + commit fdcd5736e610cd64e47da73dcafe8bc4a6a67666
- * configure.ac: Use AC_CONFIG_AUX_DIR. Remove args from
- AM_INIT_AUTOMAKE. Replace AM_CONFIG_HEADER by AC_CONFIG_HEADER.
- * compile, config.guess, config.sub, depcomp, install-sh, ltmain.sh
- * mkinstalldirs, texinfo.texi: Move to build-aux/ and update from
- gnulib (c042abf).
- * build-aux/mdate-sh, build-aux/missing: Install via automake -a -c.
- Update autogen.sh for changed config dir.
- * autogen.sh: Adjust for scripts dir change. Update W32 toolprefix
- list.
-
-2013-02-25 Werner Koch <wk@gnupg.org>
-
- Remove included gitlog-to-changelog.
- + commit 967e043ac42330ee692f23d05ce3a0dd457f2119
- * build-aux/gitlog-to-changelog: Remove.
- * configure.ac (GITLOG_TO_CHANGELOG): Default to just
- gitlog-to-changelog.
-
-2013-02-12 Werner Koch <wk@gnupg.org>
-
- Add macro GPGME_VERSION_NUMBER.
- + commit f48f75b1e812d33b76e439412efffa8277ab9abe
- * src/gpgme.h.in (GPGME_VERSION_NUMBER): New.
- * configure.ac (my_version_major, my_version_minor)
- (my_version_micro): New m4 macros.
- (my_version): Build from new m4 macros.
- (VERSION_NUMBER): New ac_subst.
-
- Add public function gpgme_get_pinentry_mode.
- + commit 4f381554411ef019d79492f1751543f145604bcf
- * src/gpgme.c (gpgme_get_pinentry_mode): New.
-
-2013-02-07 Werner Koch <wk@gnupg.org>
-
- gpgme_tool: Support GPG's new pinentry-mode.
- + commit 02a2cf0ccb4d01700adf6d18316d7705d519a048
- * src/gpgme-tool.c (log_error): Do not always print the error source.
- (gt_set_pinentry_mode): New.
- (server_passphrase_cb): New.
- (cmd_pinentry_mode): New.
- (register_commands): Add cmd_pinentry_mode.
- (options): Add option --gpg-binary.
- (struct args): Add field gpg-binary.
- (parse_options, main): Implement that option.
-
- Add public function gpgme_set_pinentry_mode.
- + commit 61a0d92b679f248505f1bf16386bc41a5bf2ba1d
- * src/gpgme.c (gpgme_set_pinentry_mode): New.
- * src/gpgme.h.in (gpgme_pinentry_t): New.
- (gpgme_set_pinentry_mode): New.
- * src/context.h (struct gpgme_context): Add field pinentry_mode.
- * src/engine-backend.h (struct engine_ops): Add field
- set_pinentry_mode.
- * src/engine-gpg.c (struct engine_gpg): Add field pinentry_mode.
- (build_argv): Implement pinentry_mode.
- (gpg_set_pinentry_mode): New.
- (_gpgme_engine_ops_gpg): Register gpg_set_pinentry_mode.
-
- Add public function gpgme_io_writen.
- + commit 29eced50687dd8a39dafe704102ae09ea8e8533a
- * src/gpgme.c (gpgme_io_read): New.
-
-2012-11-16 Werner Koch <wk@gnupg.org>
-
- Improve parsing of the GIT revision number.
- + commit 322552a88db47896881e55c00ca301137cd160c6
- * configure.ac (git_revision): Use git rev-parse.
-
- Fix non-portable use of chmod in autogen.sh.
- + commit cd6de92f42cb6e5b85bc376d5544496cb4d6a88a
- * autogen.sh: Remove option -c from chmod.
-
-2012-11-15 Werner Koch <wk@gnupg.org>
-
- Make _gpgme_encode_percent_string work for memory buffers.
- + commit 1a17acd8e9b7c0ef924f98bfb1502fe12e83c363
- * src/conversion.c (D_gpgme_encode_percent_string): Remove stray
- semicolon. Reported by Xi Wang.
-
-2012-10-24 Werner Koch <wk@gnupg.org>
-
- Make local variables configure hack more robust.
- + commit c97d067f27899d890a99036fcbed9263f4f68875
- * configure.ac (emacs_local_vars_begin): Use extra m4 quoting so that
- newer Emscasen won't take it up as Local Variables for this file.
-
- Fix ttyname problem on Android.
- + commit 12a0c93433a0b1d7e8019fc35a63476db39327fa
- * configure.ac: Define macro and conditional HAVE_ANDROID_SYSTEM.
- * m4/gnupg-ttyname.m4: Force use of replacement on Android.
- * src/ttyname_r.c: Ditto.
-
- tests: Adhere to the docs and call gpgme_check_version.
- + commit cc59b75b21516198b39a56950afbcec140d8ba48
- * tests/t-engine-info.c: Call gpgme_check_version.
-
-2012-10-19 Werner Koch <wk@gnupg.org>
-
- Trace the use of GPG_ERR_INV_ENGINE.
- + commit bd24feaa86f8154e550107990392ac9ac05e60d4
- * src/debug.h: Include "gpgme.h"
- (_gpgme_trace_gpgme_error): New.
- (trace_gpg_error): New macro. Use it in all files where we return
- GPG_ERR_INV_ENGINE; also "include debug.h" as needed.
-
- Avoid warning about initialized but not used variable.
- + commit 14a8fd4eec126cad282a85c5aa336a6b55229b52
- * src/engine-gpgsm.c (gpgsm_set_fd): Do not set DIR if not needed.
-
-2012-10-11 Werner Koch <wk@gnupg.org>
-
- gpgme-tool: Use membuf functions to build up strings.
- + commit e11e7fc5586613525035c3358e15ae24accb96ea
- * src/gpgme-tool.c (clear_membuf, init_membuf, put_membuf)
- (put_membuf_str, get_membuf, peek_membuf): Add membuf functions.
- Take from GnuPG master's common/membuf.[ch] and patch for our use.
- (result_xml_escape): Rewrite using new functions.
-
- gpgme-tool: Change license from LPGLv2+ to GPLv3+
- + commit aa30b47aa010bf46876f2335e288f8bd8718e396
- * src/gpgme-tool.c: Change license notice.
-
-2012-10-11 W. Trevor King <wking@tremily.us>
-
- gpgme-tool: escape special characters in output XML data (<, >, and &).
- + commit 3f1329e1c9b99b1632cc4c4eec2e4399676fd93d
-
- src/gpgme-tool.c (result_xml_escape_replacement, result_xml_escape):
- New.
- (result_xml_tag_data): Use result_xml_escape() to escape data.
- (result_add_error): Use unescaped < and >.
-
- gpgme-tool: Fix chain_id -> chain-id in KEYLIST XML.
- + commit c28ebca9f2e21344d68e9fdcec60553f225c2e54
-
- src/gpgme-tool.c (cmd_keylist): Use <chain-id> instead of <chain_id>.
-
-2012-09-28 W. Trevor King <wking@tremily.us>
-
- gpgme-tool: Return more detailed XML from KEYLIST.
- + commit 3d69b51f7f083193db28f364da4590c33b5e44e6
- src/gpgme-tool.c (cmd_keylist): Convert output from a list of
- to more detailed XML.
- (xml_preamble1, xml_preamble2, xml_end): Make global.
- (result_add_protocol, result_add_validity): New functions for
- generating XML from GPGME types.
- (result_add_string): Treat NULL strings as "".
- (result_xml_tag_data): Make 'data' a 'const char' so we can use the
- value returned by gpgme_get_protocol_name directly.
-
- gpgme-tool: Initialize input_fd and output_fd.
- + commit dda3702a9024a08da7bb949e15b63a47d23d59f5
- * src/gpgme-tool.c (gpgme_server): Initialize input_fd and output_fd.
-
-2012-09-26 Werner Koch <wk@gnupg.org>
-
- gpgme-tool: Fix handling of file descriptors.
- + commit 193eb62538b9413e0dfbd04c075f871d5aa9130b
- * src/gpgme-tool.c (server_reset_fds): Use close/CloseHandle instead
- of the assuan close functions.
- (_cmd_decrypt_verify, _cmd_sign_encrypt, cmd_verify, cmd_import)
- (cmd_export, cmd_genkey, cmd_getauditlog): Use SERVER object instead
- of assuan_get_*_fd functions.
-
-2012-09-25 Werner Koch <wk@gnupg.org>
-
- Document contribution rules.
- + commit db33945ab3b8c173a3fc2dd1a0d22d7fc15d8730
- * doc/HACKING (License policy): New.
- * doc/DCO: New.
- * AUTHORS: Change maintainer address.
-
- Add gpgme_set_global_flag to help debugging.
- + commit c62b79a1d6e576d94e08cb81c2f5dbcb42ecf8cf
- * src/gpgme.c (gpgme_set_global_flag): New.
- * src/gpgme.h.in (gpgme_set_global_flag): New.
- * src/gpgme.def, src/libgpgme.vers: Add new public function.
- * src/debug.c (envvar_override): New.:
- (_gpgme_debug_set_debug_envvar): New.
- (debug_init): Take ENVVAR_OVERRIDE in account.
-
-2012-07-28 Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
-
- Add two recent contributors.
- + commit 83e74202cd7c4c975d149c49e2507fdb0e60ef32
-
-
- Fix sign error in position calculation for mem_seek.
- + commit 8384ccbd1a51447dccbd608fc5df3c24cb8999b1
- * data-mem.c (mem_seek): Fix sign error in position calculation.
-
- Allow null context on gpgme_set_locale.
- + commit 434735f71e6969248651ac01c6bd6f6789a6305d
- * gpgme.c (gpgme_set_locale): Allow CTX to be a null pointer.
-
-2012-07-13 Werner Koch <wk@gnupg.org>
-
- Do not include the removed file status-table.h.
- + commit e7aeaebb01395b170c91f290bf3ff5021023420f
- * src/engine-uiserver.c: Remove status-table.h which is not anymore
- built. Fixes bug#1412.
-
- Make handling of new conf values more robust (bug#1413).
- + commit 9f081da7356288a96e8ea4d81a74ff706c00b0cd
- * src/engine-gpgconf.c (arg_to_data): Allow for NULL as value.string.
-
-2012-05-02 Werner Koch <wk@gnupg.org>
-
- Release 1.3.2.
- + commit 9c8608f702ec0f44ae55cd7f33bd8df0a2d48508
- * configure.ac: Bump LT version to C19/A8/R1.
-
- * configure.ac (GITLOG_TO_CHANGELOG): Define.
- * Makefile.am (gen-ChangeLog): Use it.
-
- Remove unused pth stuff from gpgme-config.
- + commit 295dd3f238fa656493d34e8a718958d62226b56c
- * src/gpgme-config.in: Remove unused pth stuff.
-
- Update signature summary for the case of missing X.509 keys.
- + commit d6402b888fd00b883bbfc00c91a2aa9706e4377e
- * src/verify.c (gpgme_op_verify_result): Update summary field.
-
-2012-04-30 Werner Koch <wk@gnupg.org>
-
- Fix timestamp parsing for y2038 hack.
- + commit 1a21574b48ee91eedbf95251ee600648b377d1e7
- * src/conversion.c (_gpgme_parse_timestamp): Set ENDP before year 2038
- check.
-
-2012-04-20 W. Trevor King <wking@drexel.edu>
-
- .gitignore: flesh out rules and add subdirectory-.gitignores.
- + commit 4cb408d33efe80e7d102049dea244d22907d8395
-
-
-2012-04-13 W. Trevor King <wking@drexel.edu>
-
- status-table.c: include string.h for strcmp.
- + commit 62bbe58280737d73badbe518f140e40480205176
- * status-table.c: include string.h to avoid `warning: implicit
- declaration of function 'strcmp'`.
-
-2012-04-03 W. Trevor King <wking@drexel.edu>
-
- gpgme-tool: add help messages for a number of commands.
- + commit c318e69d8fa5f9e92d4aac3dd44fae5adcaade72
- * src/gpgme-tool.c (hlp_engine, hlp_sub_protocol, hlp_armor, hlp_textmode,
- hlp_include_certs, hlp_keylist_mode, hlp_input, hlp_output, hlp_message,
- hlp_recipient, hlp_signer, hlp_signers_clear, hlp_decrypt, hlp_decrypt_verify,
- hlp_encrypt, hlp_sign_encrypt, hlp_sign, hlp_verify, hlp_import): New strings.
- (hlp_protocol): Fix typo.
- (register_commands): Add documentation strings.
- (doc): Mention Assuan.
-
- uiserver.texi: fix decryption -> encryption typo in PREP_ENCRYPT discussion.
- + commit bb62104adf78e8416b3c56b8b2621edd723b56cd
- * doc/uiserver.texi (PREP_ENCRYPT): Fix documentation.
-
- Update Werner Koch's distribution signing key in the README.
- + commit 6ec9e21dd1ea2f8509700bce018aef6ad7e9a927
- * README: Update signing key.
-
-2012-03-12 Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
-
- Do not rely on glibc name of syscall.
- + commit ff0a640a18e7b7457e6c2edfdc8307bf44628b60
- * src/ath.c (ath_self): Use __NR_gettid, not SYS_gettid.
-
- Update config.guess and config.sub to latest version.
- + commit ced1ad01aed32d1e4c5000f3b901db018ef7bf1e
- * config.guess, config.sub: Update to latest version.
-
-2012-02-14 Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de>
-
- Rework status table to be less dynamically generated.
- + commit 885243e05467e79e2375b3febe7904053ab45dfc
- * src/Makefile.am (EXTRA_DIST): Remove mkstatus.
- (BUILT_SOURCE, MOSTLYCLEANFILES): Remove.
- (main_sources): Remove status-table.h, extra-stati.h.
- Add status-table.c.
- (status-table.h): Remove rules for built source.
- * src/decrypt.c: Don't include extra-stati.h.
- * src/engine-gpg.c: Don't include status-table.h.
- (status_cmp): Remove function.
- (read_status): Use _gpgme_parse_status.
- * src/engine-gpgsm.c: Don't include status-table.h.
- (status_cmp, parse_status): Remove function.
- (gpgsm_assuan_simple_command, status_handler): Use _gpgme_parse_status.
- * src/engine-uiserver.c: Don't include status-table.h.
- (status_cmp, parse_status): Remove function.
- (uiserver_assuan_simple_command, status_handler): Use
- _gpgme_parse_status.
- * src/gpgme.h.in (gpgme_status_code_t): Add
- GPGME_STATUS_DECRYPTION_INFO.
- * src/util.h (_gpgme_status_init,_gpgme_parse_status): New declaration.
- * src/status-table.c: New file.
- * src/extra-stati.h, src/mkstatus: Files removed.
- * version.c (do_subsystem_inits): Call _gpgme_status_init.
-
-2012-02-08 Marcus Brinkmann <mb@g10code.com>
-
- Use gpgme interface for error handling to avoid linking with gpg-error.
- + commit dae3073aaa8b7feb1c844fdaf711f79141b9cc65
- * tests/t-data.c, tests/run-export.c, tests/run-keylist.c,
- tests/run-support.h, tests/run-verify.c, tests/gpg/t-decrypt-verify.c,
- tests/gpg/t-edit.c, tests/gpg/t-eventloop.c, tests/gpg/t-keylist-sig.c,
- tests/gpg/t-keylist.c, tests/gpg/t-support.h, tests/gpg/t-trustlist.c,
- tests/gpg/t-verify.c, tests/gpg/t-wait.c, tests/gpgsm/cms-decrypt.c,
- tests/gpgsm/cms-keylist.c, tests/gpgsm/t-keylist.c,
- tests/gpgsm/t-support.h, tests/gpgsm/t-verify.c,
- tests/opassuan/t-command.c: Use gpgme interface for gpg-error functions.
-
- Link the thread test to pthread.
- + commit 0052a72f89c6830818e354358fdd84702d3494c8
- * tests/gpg/Makefile.am (t_thread1_LDADD): Add -lpthread.
-
- Link gpgme-tool directly to libassuan, as it uses its interface.
- + commit 3f03897cbd223d4a75eb62c3b7bdfeb800661641
- * src/Makefile.am (gpgme_tool_LDADD): Add @LIBASSUAN_LIBS@.
-
-2012-01-19 Werner Koch <wk@gnupg.org>
-
- Support the mingw-w64 toolchain.
- + commit 24a10a4af948ebb1c767b69a92fa5bbe933a417c
- * autogen.sh (build-w32): Add i686-w64-mingw32 to the toolprefix.
-
- Fix Solaris problems with ttyname_r.
- + commit 2f304957f5122a5d9da643dc9951ee67ece06eaf
- * m4/gnupg-ttyname.m4: New. Based on ttyname_r from gnulib.
- * src/ttyname_r.c (_gpgme_ttyname_r): Rename from ttyname_r.
- Implement hacks required for Solaris and possible other non-fully
- Posix systems.
- * src/util.h: Include unistd.h. Redefine ttyname_r depending on
- REPLACE_TTYNAME_R and put it into the gpgme name space.
-
- Try to make configure.ac a bit smaller.
- + commit c96778297f5477448a676fcf0c61044bdbccc86d
- * configure.ac: Move header checks.
-
- For W32 use a build number instead of abbreviated commit id.
- + commit 574b087e84f5652cf9d8eba8aa16b8d6bb988035
- We would need to use a shortened commit id so that it fits into an 16
- bit Windows variable. Further it is a random number and not something
- increasing. Thus a build number made up from the day of the year and
- the hour is much more useful to describe a build number for a specific
- revision.
- * configure.ac [W32]: Replace BUILD_REVISION by BUILD_NUMBER.
- * src/versioninfo.rc.in: Ditto.
-
- Adjust configure.ac for modern autoconf.
- + commit a0149630ce6d3e17a7475e20e8b2e31ed5ba57fd
- * configure.ac: Minor cleanups.
-
- Update to libtool 2.4.2.
- + commit 4cfddadcd0a569f0b204dccea3c975ce0bdfb232
- * ltmain.sh, m4/libtool.m4, m4/ltoptions.m4, m4/ltversion.m4,
- * m4/lt~obsolete.m4: Update.
-
- Add ttyname_r check macro from gnulib.
- + commit 3ef528b63679df912551d5d21fc36e465cf50c40
- * m4/gnupg-ttyname.m4: New. Taken from current gnulib.
-
-2011-12-02 Werner Koch <wk@gnupg.org>
-
- Generate the ChangeLog from commit logs.
- + commit a4c4ee1aaea4359432bdf60dd572f549ef8dee83
- * build-aux/gitlog-to-changelog: New script. Taken from gnulib.
- * build-aux/git-log-fix: New file.
- * build-aux/git-log-footer: New file.
- * build-aux/git-hook/commit-msg: New script.
- * doc/HACKING: New file.
- * ChangeLog: New file.
- * Makefile.am (EXTRA_DIST): Add new files.
- (gen-ChangeLog): New.
- (dist-hook): Run gen-ChangeLog.
- * autogen.sh: Install commit-msg hook for git.
-
- Rename all ChangeLog files to ChangeLog-2011.
2011-12-02 Werner Koch <wk@gnupg.org>
EXTRA_DIST = autogen.sh autogen.rc gpgme.spec.in \
ChangeLog-2011 m4/ChangeLog-2011 \
+ build-aux/libtool-patch.sed \
conf/whatisthis VERSION LICENSES
+# This artificial line is to put a dependency to conf/config.h for 'all'
+BUILT_SOURCES = conf/config.h
if RUN_GPG_TESTS
tests = tests
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-CSCOPE = cscope
DIST_SUBDIRS = src tests doc lang
am__DIST_COMMON = $(srcdir)/Makefile.in \
$(top_srcdir)/build-aux/compile \
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
DISTCHECK_CONFIGURE_FLAGS =
EXTRA_DIST = autogen.sh autogen.rc gpgme.spec.in \
ChangeLog-2011 m4/ChangeLog-2011 \
+ build-aux/libtool-patch.sed \
conf/whatisthis VERSION LICENSES
+
+# This artificial line is to put a dependency to conf/config.h for 'all'
+BUILT_SOURCES = conf/config.h
@RUN_GPG_TESTS_FALSE@tests =
@RUN_GPG_TESTS_TRUE@tests = tests
SUBDIRS = src ${tests} doc lang
# Macro to help the release target.
RELEASE_NAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)
-all: all-recursive
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh: Makefile
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
-check: check-recursive
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
-install: install-recursive
-install-exec: install-exec-recursive
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
uninstall-am:
-.MAKE: $(am__recursive_targets) install-am install-strip
+.MAKE: $(am__recursive_targets) all check install install-am \
+ install-exec install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
am--refresh check check-am clean clean-cscope clean-generic \
+Noteworthy changes in version 1.23.1 (2023-10-27)
+-------------------------------------------------
+
+ * w32: Change gpgme-w32-spawn to use Unicode arguments. [T6728]
+
+ [c=C43/A32/R0 cpp=C26/A20/R0 qt=C20/A5/R0]
+
+ Release-info: https://dev.gnupg.org/T6774
+
+
+Noteworthy changes in version 1.23.0 (2023-10-25)
+-------------------------------------------------
+
+ * Support GPGME_ENCRYPT_ALWAYS_TRUST also for S/MIME. [T6559]
+
+ * New keylist mode GPGME_KEYLIST_MODE_WITH_V5FPR. [T6705]
+
+ * New key capability flags has_*. [T6748]
+
+ * gpgme-tool: Support use of Windows HANDLE. [T6634]
+
+ * qt: Support refreshing keys via WKD. [T6672]
+
+ * qt: Handle cancel in changeexpiryjob. [T6754]
+
+ * Interface changes relative to the 1.22.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ GPGME_KEYLIST_MODE_WITH_V5FPR NEW.
+ gpgme_key_t EXTENDED: New field has_encrypt.
+ gpgme_key_t EXTENDED: New field has_sign.
+ gpgme_key_t EXTENDED: New field has_certify.
+ gpgme_key_t EXTENDED: New field has_authenticate.
+ cpp: Key::canCertify NEW.
+ cpp: Key::canSign NEW.
+ cpp: Key::canEncrypt NEW.
+ cpp: Key::canAuthenticate NEW.
+ qt: Protocol::wkdRefreshJob NEW.
+ qt: WKDRefreshJob NEW.
+
+ [c=C43/A32/R0 cpp=C26/A20/R0 qt=C20/A5/R0]
+
+ Release-info: https://dev.gnupg.org/T6774
+
+
+Noteworthy changes in version 1.22.0 (2023-08-21)
+-------------------------------------------------
+
+ * Prevent wrong plaintext when verifying clearsigned signature. [T6622]
+
+ * Return bad data error instead of general error on unexpected data.
+ [T6617]
+
+ * Take care of offline mode for all operations of gpgsm engine.
+ [T6648]
+
+ * Prepare the use of the forthcoming libassuan version 3.
+
+ * New configure option --with-libtool-modification. [T6619]
+
+ * cpp: Expose gpgme_decrypt_result_t.is_mime. [T6199]
+
+ * qt: Clean up after failure or cancel of sign/encrypt archive
+ operation. [T6584]
+
+ * qt: Add setInputEncoding to QGpgMe::EncryptJob. [T6166]
+
+ * qt: Make toLogString helper public. [T6584]
+
+ * Interface changes relative to the 1.21.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ qt: EncryptJob::setInputEncoding NEW.
+ qt: DecryptionResult::isMime NEW.
+ qt: toLogString NEW.
+
+ [c=C42/A31/R0 cpp=C25/A19/R0 qt=C19/A4/R0]
+
+ Release-info: https://dev.gnupg.org/T6668
+
+
+Noteworthy changes in version 1.21.0 (2023-07-07)
+-------------------------------------------------
+
+ * Extended gpgme_op_encrypt, gpgme_op_encrypt_sign, and gpgme_op_sign
+ to allow writing the output directly to a file. [T6530]
+
+ * Extended gpgme_op_decrypt and gpgme_op_verify to allow reading the
+ input data directly from files. [T6530]
+
+ * For key signing and uid revoking allow an empty user id.
+ [rMfbc3963d62]
+
+ * Pass an input-size-hint also to the gpgsm engine. [T6534]
+
+ * qt: Allow writing the created archives directly to a
+ file. [T6530]
+
+ * qt: Allow reading the signed/encrypted archive to decrypt
+ or verify directly from a file. [T6530]
+
+ * qt: Qt Jobs working with QIODeviceDataProvider now properly
+ handle input-size hints and progress for files larger.
+ 2^32 bytes in 32 bit builds. [T6534]
+
+ * cpp: Error::isCanceled now also returns true for error code
+ GPG_ERR_FULLY_CANCELED. [T6510]
+
+ * python: Fix wrong use of write. [T6501]
+
+ * Interface changes relative to the 1.20.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ cpp: Data::setFlag NEW.
+ cpp: Data::setSizeHint NEW.
+ qt: Job::startIt NEW.
+ qt: DecryptVerifyArchiveJob::setInputFile NEW.
+ qt: DecryptVerifyArchiveJob::inputFile NEW.
+ qt: EncryptArchiveJob::setRecipients NEW.
+ qt: EncryptArchiveJob::recipients NEW.
+ qt: EncryptArchiveJob::setInputPaths NEW.
+ qt: EncryptArchiveJob::inputPaths NEW.
+ qt: EncryptArchiveJob::setOutputFile NEW.
+ qt: EncryptArchiveJob::outputFile NEW.
+ qt: EncryptArchiveJob::setEncryptionFlags NEW.
+ qt: EncryptArchiveJob::encryptionFlags NEW.
+ qt: SignArchiveJob::setSigners NEW.
+ qt: SignArchiveJob::signers NEW.
+ qt: SignArchiveJob::setInputPaths NEW.
+ qt: SignArchiveJob::inputPaths NEW.
+ qt: SignArchiveJob::setOutputFile NEW.
+ qt: SignArchiveJob::outputFile NEW.
+ qt: SignEncryptArchiveJob::setSigners NEW.
+ qt: SignEncryptArchiveJob::signers NEW.
+ qt: SignEncryptArchiveJob::setRecipients NEW.
+ qt: SignEncryptArchiveJob::recipients NEW.
+ qt: SignEncryptArchiveJob::setInputPaths NEW.
+ qt: SignEncryptArchiveJob::inputPaths NEW.
+ qt: SignEncryptArchiveJob::setOutputFile NEW.
+ qt: SignEncryptArchiveJob::outputFile NEW.
+ qt: SignEncryptArchiveJob::setEncryptionFlags NEW.
+ qt: SignEncryptArchiveJob::encryptionFlags NEW.
+
+ [c=C41/A30/R0 cpp=C24/A18/R0 qt=C18/A3/R0]
+
+ Release-info: https://dev.gnupg.org/T6585
+
+
+Noteworthy changes in version 1.20.0 (2023-04-20)
+-------------------------------------------------
+
+ * On Windows, the gettext functions provided by gpgrt are switched
+ into utf8 mode, so that all localized texts returned by GpgME or
+ gpgrt, e.g. the texts for error codes are now UTF-8 encoded.
+ [T5960]
+
+ * Key::canSign now returns false for OpenPGP keys without signing
+ (sub)key. [T6456]
+
+ * The new macOS Homebrew location is now by default supported.
+ [T6440]
+
+ * Fix regression in 1.19.0. [rMb608c084b9]
+
+ * Fix invocation of gpgtar on Windows. [rM0c29119e06]
+
+ * Interface changes relative to the 1.19.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_subkey_t EXTENDED: New field 'can_renc'.
+ gpgme_subkey_t EXTENDED: New field 'can_timestamp'.
+ gpgme_subkey_t EXTENDED: New field 'is_group_owned'.
+ cpp: Subkey::canRenc NEW.
+ cpp: Subkey::canTimestamp NEW.
+ cpp: Subkey::isGroupOwned NEW.
+ cpp: Key::canReallySign DEPRECATED.
+
+ [c=C40/A29/R0 cpp=C23/A17/R0 qt=C17/A2/R1]
+
+ Release-info: https://dev.gnupg.org/T6463
+
+
+Noteworthy changes in version 1.19.0 (2023-03-17)
+-------------------------------------------------
+
+ * New convenience option --identify for gpgme-json.
+
+ * New context flag "no-auto-check-trustdb". [T6261]
+
+ * Optionally, build QGpgME for Qt 6
+
+ * Support component "gpgtar-name" in gpgme_get_dirinfo. [T6342]
+
+ * Extended gpgme_op_encrypt*, gpgme_op_encrypt_sign*, and
+ gpgme_op_sign* to allow creating an encrypted and/or signed
+ archive. [T6342]
+
+ * Extended gpgme_op_decrypt*, gpgme_op_decrypt_verify*, and gpgme_op_verify*
+ to allow extracting an encrypted and/or signed archive. [T6342]
+
+ * cpp: Handle error when trying to sign expired keys. [T6155]
+
+ * cpp: Support encryption flags ThrowKeyIds, EncryptWrap, and WantAddress.
+ [T6359]
+
+ * cpp, qt: Fix building with C++11. [T6141]
+
+ * qt: Fix problem with expiration dates after 2038-01-19 on 32-bit systems
+ when adding an existing subkey to another key. [T6137]
+
+ * cpp: Allow setting the curve to use when generating ECC keys
+ for smart cards. [T4429]
+
+ * qt: Extend ListAllKeysJob to allow disabling the automatic trust database
+ check when listing all keys. [T6261]
+
+ * qt: Allow deferred start of import jobs. [T6323]
+
+ * qt: Support creating and extracting signed and encrypted archives. [T6342]
+
+ * Interface changes relative to the 1.18.0 release:
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ gpgme_get_ctx_flag EXTENDED: New flag 'no-auto-check-trustdb'.
+ gpgme_set_ctx_flag EXTENDED: New flag 'no-auto-check-trustdb'.
+ GPGME_DECRYPT_ARCHIVE NEW.
+ GPGME_ENCRYPT_ARCHIVE NEW.
+ GPGME_SIG_MODE_ARCHIVE NEW.
+ GPGME_VERIFY_ARCHIVE NEW.
+ gpgme_verify_flags_t NEW.
+ gpgme_op_verify_ext_start NEW.
+ gpgme_op_verify_ext NEW.
+ cpp: GpgGenCardKeyInteractor::Curve NEW.
+ cpp: GpgGenCardKeyInteractor::setCurve NEW.
+ cpp: Context::WantAddress NEW.
+ cpp: Context::DecryptArchive NEW.
+ cpp: Context::EncryptArchive NEW.
+ cpp: SignArchive NEW.
+ cpp: Data::setFileName EXTENDED: New overload
+ qt: ListAllKeysJob::Option NEW.
+ qt: ListAllKeysJob::Options NEW.
+ qt: ListAllKeysJob::setOptions NEW.
+ qt: ListAllKeysJob::options NEW.
+ qt: Job::startNow NEW.
+ qt: ImportJob::startLater NEW.
+ qt: FileListDataProvider NEW.
+ qt: DecryptVerifyArchiveJob NEW.
+ qt: EncryptArchiveJob NEW.
+ qt: SignArchiveJob NEW.
+ qt: SignEncryptArchiveJob NEW.
+ qt: Protocol::decryptVerifyArchiveJob NEW.
+ qt: Protocol::encryptArchiveJob NEW.
+ qt: Protocol::signArchiveJob NEW.
+ qt: Protocol::signEncryptArchiveJob NEW.
+ qt: Job::jobProgress NEW.
+ qt: Job::rawProgress NEW.
+ qt: Job::progress DEPRECATED.
+
+ [c=C39/A28/R0 cpp=C22/A16/R0 qt=C17/A2/R0]
+
+ Release-info: https://dev.gnupg.org/T6341
+
+
Noteworthy changes in version 1.18.0 (2022-08-10)
-------------------------------------------------
* Several fixes to the Common Lisp bindings.
- * Fixed minor bugs in gpgme-json. [#4331,#4341,#4342,#4343
+ * Fixed minor bugs in gpgme-json. [#4331,#4341,#4342,#4343]
* Require trace level 8 to dump all I/O data.
GPGME - GnuPG Made Easy
---------------------------
-Copyright 2001-2021 g10 Code GmbH
+Copyright 2001-2023 g10 Code GmbH
This file is free software; as a special exception the author gives
unlimited permission to copy and/or distribute it, with or without
Check that you have unmodified sources. See below on how to do this.
Don't skip it - this is an important step!
-To build GPGME, you need to install libgpg-error (>= 1.24) and
+To build GPGME, you need to install libgpg-error (>= 1.36) and
Libassuan (>= 2.4.2).
-For support of the OpenPGP and the CMS protocols, you should use the
-latest version of GnuPG (>= 2.1.18) , available at:
+For support of the OpenPGP and the CMS protocols, you should use at
+least GnuPG version 2.2.41 or 2.4.3, available at:
https://gnupg.org/ftp/gcrypt/gnupg/.
For building the Git version of GPGME please see the file README.GIT
-# generated automatically by aclocal 1.16.3 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.5 -*- Autoconf -*-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
-[m4_warning([this file was generated for autoconf 2.69.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],,
+[m4_warning([this file was generated for autoconf 2.71.
You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
-# Copyright (C) 2002-2020 Free Software Foundation, Inc.
+# Copyright (C) 2002-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
[am__api_version='1.16'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro.
-m4_if([$1], [1.16.3], [],
+m4_if([$1], [1.16.5], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.3])dnl
+[AM_AUTOMAKE_VERSION([1.16.5])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# AM_COND_IF -*- Autoconf -*-
-# Copyright (C) 2008-2020 Free Software Foundation, Inc.
+# Copyright (C) 2008-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# AM_CONDITIONAL -*- Autoconf -*-
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
Usually this means the macro was only invoked conditionally.]])
fi])])
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Generate code to set up dependency tracking. -*- Autoconf -*-
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.65])dnl
+m4_ifdef([_$0_ALREADY_INIT],
+ [m4_fatal([$0 expanded multiple times
+]m4_defn([_$0_ALREADY_INIT]))],
+ [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
[_AM_SET_OPTIONS([$1])dnl
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
m4_if(
- m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+ m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]),
[ok:ok],,
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
[m4_define([AC_PROG_OBJCXX],
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
])
+# Variables for tags utilities; see am/tags.am
+if test -z "$CTAGS"; then
+ CTAGS=ctags
+fi
+AC_SUBST([CTAGS])
+if test -z "$ETAGS"; then
+ ETAGS=etags
+fi
+AC_SUBST([ETAGS])
+if test -z "$CSCOPE"; then
+ CSCOPE=cscope
+fi
+AC_SUBST([CSCOPE])
+
AC_REQUIRE([AM_SILENT_RULES])dnl
dnl The testsuite driver may need to know about EXEEXT, so add the
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
fi
AC_SUBST([install_sh])])
-# Copyright (C) 2003-2020 Free Software Foundation, Inc.
+# Copyright (C) 2003-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
# From Jim Meyering
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Check to see how 'make' treats includes. -*- Autoconf -*-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Helper functions for option handling. -*- Autoconf -*-
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
-# Copyright (C) 1999-2020 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# For backward compatibility.
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
rm -f conftest.file
])
-# Copyright (C) 2009-2020 Free Software Foundation, Inc.
+# Copyright (C) 2009-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
])
-# Copyright (C) 2001-2020 Free Software Foundation, Inc.
+# Copyright (C) 2001-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])])
-# Copyright (C) 2006-2020 Free Software Foundation, Inc.
+# Copyright (C) 2006-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# Check how to create a tarball. -*- Autoconf -*-
-# Copyright (C) 2004-2020 Free Software Foundation, Inc.
+# Copyright (C) 2004-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
+m4_include([m4/ax_check_compile_flag.m4])
m4_include([m4/ax_cxx_compile_stdcxx.m4])
m4_include([m4/ax_gcc_func_attribute.m4])
m4_include([m4/ax_pkg_swig.m4])
m4_include([m4/lt~obsolete.m4])
m4_include([m4/pkg.m4])
m4_include([m4/python.m4])
-m4_include([m4/qt.m4])
+m4_include([m4/qt5.m4])
+m4_include([m4/qt6.m4])
m4_include([acinclude.m4])
esac
-final_info="./configure --enable-maintainer-mode && make"
+final_info="mkdir build && cd build && ../configure --enable-maintainer-mode && make"
#! /bin/sh
# autogen.sh
-# Copyright (C) 2003, 2014, 2017, 2018 g10 Code GmbH
+# Copyright (C) 2003, 2014, 2017, 2018, 2022 g10 Code GmbH
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# configure it for the respective package. It is maintained as part of
# GnuPG and source copied by other packages.
#
-# Version: 2018-07-10
+# Version: 2023-03-15
configure_ac="configure.ac"
# List of optional variables sourced from autogen.rc and ~/.gnupg-autogen.rc
w32_toolprefixes=
w32_extraoptions=
-w32ce_toolprefixes=
-w32ce_extraoptions=
w64_toolprefixes=
w64_extraoptions=
amd64_toolprefixes=
# What follows are variables which are sourced but default to
# environment variables or lacking them hardcoded values.
#w32root=
-#w32ce_root=
#w64root=
#amd64root=
myhost="w32"
shift
;;
- --build-w32ce)
- myhost="w32"
- myhostsub="ce"
- shift
- ;;
--build-w64)
myhost="w32"
myhostsub="64"
die_p
make || fatal "error running make"
die_p
- make check || fatal "error running male check"
+ make check || fatal "error running make check"
die_p
exit 0
fi
if [ -z "$micro" ]; then
matchstr1="$package-$major.[0-9]*"
matchstr2="$package-$major-base"
+ matchstr3=""
vers="$major.$minor"
else
matchstr1="$package-$major.$minor.[0-9]*"
- matchstr2="$package-$major.$minor-base"
+ matchstr2="$package-$major.[0-9]*-base"
+ matchstr3="$package-$major-base"
vers="$major.$minor.$micro"
fi
if [ -e .git ]; then
ingit=yes
tmp=$(git describe --match "${matchstr1}" --long 2>/dev/null)
- tmp=$(echo "$tmp" | sed s/^"$package"//)
if [ -n "$tmp" ]; then
- tmp=$(echo "$tmp" | sed s/^"$package"// \
- | awk -F- '$3!=0 && $3 !~ /^beta/ {print"-beta"$3}')
+ tmp=$(echo "$tmp" | sed s/^"$package"// \
+ | awk -F- '$3!=0 && $3 !~ /^beta/ {print"-beta"$3}')
else
- tmp=$(git describe --match "${matchstr2}" --long 2>/dev/null \
- | awk -F- '$4!=0{print"-beta"$4}')
+ # (due tof "-base" in the tag we need to take the 4th field)
+ tmp=$(git describe --match "${matchstr2}" --long 2>/dev/null)
+ if [ -n "$tmp" ]; then
+ tmp=$(echo "$tmp" | sed s/^"$package"// \
+ | awk -F- '$4!=0 && $4 !~ /^beta/ {print"-beta"$4}')
+ elif [ -n "${matchstr3}" ]; then
+ tmp=$(git describe --match "${matchstr3}" --long 2>/dev/null)
+ if [ -n "$tmp" ]; then
+ tmp=$(echo "$tmp" | sed s/^"$package"// \
+ | awk -F- '$4!=0 && $4 !~ /^beta/ {print"-beta"$4}')
+ fi
+ fi
fi
[ -n "$tmp" ] && beta=yes
rev=$(git rev-parse --short HEAD | tr -d '\n\r')
# ******************
if [ "$myhost" = "w32" ]; then
case $myhostsub in
- ce)
- w32root="$w32ce_root"
- [ -z "$w32root" ] && w32root="$HOME/w32ce_root"
- toolprefixes="$w32ce_toolprefixes arm-mingw32ce"
- extraoptions="$extraoptions $w32ce_extraoptions"
- ;;
64)
w32root="$w64root"
[ -z "$w32root" ] && w32root="$HOME/w64root"
--- /dev/null
+#
+# This is a sed script to patch the generated libtool,
+# which works well against both of libtool 2.4.2 and 2.4.7.
+#
+# You may use this work under the terms of a Creative Commons CC0 1.0
+# License/Waiver.
+#
+# CC0 Public Domain Dedication
+# https://creativecommons.org/publicdomain/zero/1.0/
+
+#
+# This sed script applys two hunks of the patch:
+#
+# Part1: after the comment "# bleh windows"
+# Part2: after the comment "#extension on DOS 8.3..."
+#
+# Only when those two parts are patched correctly, it exits with 0 or
+# else, it exits with 1
+#
+
+# Find the part 1, by the comment
+/^[ \t]*# bleh windows$/b part1_start
+# Not found the part1, raise an error
+$ q1
+b
+
+:part1_start
+n
+# The first line in the part 1 must be the begining of the case statement.
+/^[ \t]*case \$host in$/! q1
+n
+# Insert the entry for x86_64-*mingw32*, for modified versuffix.
+i\
+ x86_64-*mingw32*)
+i\
+ func_arith $current - $age
+i\
+ major=$func_arith_result
+i\
+ versuffix="6-$major"
+i\
+ ;;
+:part1_0
+# Find the end of the case statement
+/^[ \t]*esac$/b find_part2
+# Not found the end of the case statement, raise an error
+$ q1
+n
+b part1_0
+
+:find_part2
+/^[ \t]*# extension on DOS 8.3 file.*systems.$/b part2_process
+# Not found the part2, raise an error
+$ q1
+n
+b find_part2
+
+:part2_process
+$ q1
+s/^[ \t]*\(versuffix=\)\(.*\)\(-$major\)\(.*\)$/\t case \$host in\n\t x86_64-*mingw32*)\n\t \1\26\3\4\n\t ;;\n\t *)\n\t \1\2\3\4\n\t ;;\n\t esac/
+t part2_done
+n
+b part2_process
+
+:part2_done
+$ q0
+n
+b part2_done
% \def\foo{\parsearg\Xfoo}
% \def\Xfoo#1{...}
%
-% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% Actually, I use \csname\string\foo\endcsname, i.e. \\foo, as it is my
% favourite TeX trick. --kasal, 16nov03
\def\parseargdef#1{%
/* define if the compiler supports basic C++11 syntax */
#undef HAVE_CXX11
+/* define if the compiler supports basic C++17 syntax */
+#undef HAVE_CXX17
+
/* Define to 1 if you have the declaration of `ttyname_r', and to 0 if you
don't. */
#undef HAVE_DECL_TTYNAME_R
/* Defined if we build for an MacOS system */
#undef HAVE_MACOS_SYSTEM
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
+/* Define to 1 if you have the <minix/config.h> header file. */
+#undef HAVE_MINIX_CONFIG_H
/* Define to 1 if you have the `nanosleep' function. */
#undef HAVE_NANOSLEEP
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Defined if we run on a 64 bit W32 API based system */
#undef HAVE_W64_SYSTEM
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Requested API version for libassuan */
+#undef LIBASSUAN_API_REQUESTED
+
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR
/* The size of `unsigned int', as computed by sizeof. */
#undef SIZEOF_UNSIGNED_INT
-/* Define to 1 if you have the ANSI C header files. */
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+ required in a freestanding environment). This macro is provided for
+ backward compatibility; new code need not use it. */
#undef STDC_HEADERS
/* Defined if descriptor passing is enabled and supported */
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
+/* Enable general extensions on macOS. */
+#ifndef _DARWIN_C_SOURCE
+# undef _DARWIN_C_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
-/* Enable threading extensions on Solaris. */
+/* Enable X/Open compliant socket functions that do not require linking
+ with -lxnet on HP-UX 11.11. */
+#ifndef _HPUX_ALT_XOPEN_SOCKET_API
+# undef _HPUX_ALT_XOPEN_SOCKET_API
+#endif
+/* Identify the host operating system as Minix.
+ This macro does not affect the system headers' behavior.
+ A future release of Autoconf may stop defining this macro. */
+#ifndef _MINIX
+# undef _MINIX
+#endif
+/* Enable general extensions on NetBSD.
+ Enable NetBSD compatibility extensions on Minix. */
+#ifndef _NETBSD_SOURCE
+# undef _NETBSD_SOURCE
+#endif
+/* Enable OpenBSD compatibility extensions on NetBSD.
+ Oddly enough, this does nothing on OpenBSD. */
+#ifndef _OPENBSD_SOURCE
+# undef _OPENBSD_SOURCE
+#endif
+/* Define to 1 if needed for POSIX-compatible behavior. */
+#ifndef _POSIX_SOURCE
+# undef _POSIX_SOURCE
+#endif
+/* Define to 2 if needed for POSIX-compatible behavior. */
+#ifndef _POSIX_1_SOURCE
+# undef _POSIX_1_SOURCE
+#endif
+/* Enable POSIX-compatible threading on Solaris. */
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
#endif
+/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+# undef __STDC_WANT_IEC_60559_BFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
+# undef __STDC_WANT_IEC_60559_DFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
+# undef __STDC_WANT_IEC_60559_FUNCS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
+# undef __STDC_WANT_IEC_60559_TYPES_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
+#ifndef __STDC_WANT_LIB_EXT2__
+# undef __STDC_WANT_LIB_EXT2__
+#endif
+/* Enable extensions specified by ISO/IEC 24747:2009. */
+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
+# undef __STDC_WANT_MATH_SPEC_FUNCS__
+#endif
/* Enable extensions on HP NonStop. */
#ifndef _TANDEM_SOURCE
# undef _TANDEM_SOURCE
#endif
-/* Enable general extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
+/* Enable X/Open extensions. Define to 500 only if necessary
+ to make mbstate_t available. */
+#ifndef _XOPEN_SOURCE
+# undef _XOPEN_SOURCE
#endif
/* Expose all libc features (__DARWIN_C_FULL). */
#undef _DARWIN_C_SOURCE
-/* Enable large inode numbers on Mac OS X 10.5. */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES
-/* Define to 1 if on MINIX. */
-#undef _MINIX
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
-#undef _POSIX_1_SOURCE
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-#undef _POSIX_SOURCE
-
/* To allow the use of GPGME in multithreaded programs we have to use
special features from the library.
IMPORTANT: gpgme is not yet fully reentrant and you should use it
# define GPGME_GCC_A_PURE
#endif
+/* Under Windows we use the gettext code from gpgrt. */
+#define GPG_ERR_ENABLE_GETTEXT_MACROS 1
+
/* Under WindowsCE we need gpg-error's strerror macro. */
#define GPG_ERR_ENABLE_ERRNO_MACROS 1
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gpgme 1.18.0.
+# Generated by GNU Autoconf 2.71 for gpgme 1.23.1.
#
# Report bugs to <https://bugs.gnupg.org>.
#
#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Inc.
#
#
# This configure script is free software; the Free Software Foundation
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ as_bourne_compatible="as_nop=:
+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
# is contrary to our usage. Disable this feature.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
-else
+else \$as_nop
case \`(set -o) 2>/dev/null\` in #(
*posix*) :
set -o posix ;; #(
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
-else
+else \$as_nop
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1
test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
PATH=/empty FPATH=/empty; export PATH FPATH
test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
- || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null
+then :
as_have_required=yes
-else
+else $as_nop
as_have_required=no
fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
-else
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
as_found=:
case $as_dir in #(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
+ as_shell=$as_dir$as_base
if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
break 2
fi
fi
esac
as_found=false
done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi
+fi
- if test "x$CONFIG_SHELL" != x; then :
+ if test "x$CONFIG_SHELL" != x
+then :
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ if test x$as_have_required = xno
+then :
+ printf "%s\n" "$0: This script requires a shell more modern than all"
+ printf "%s\n" "$0: the shells that I found on your system."
+ if test ${ZSH_VERSION+y} ; then
+ printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
else
- $as_echo "$0: Please tell bug-autoconf@gnu.org and
+ printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and
$0: https://bugs.gnupg.org about your system, including any
$0: error possibly output before this message. Then install
$0: a modern shell, or manually run the script under such a
}
as_unset=as_fn_unset
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
as_fn_set_status $1
exit $1
} # as_fn_exit
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_mkdir_p
# -------------
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
}
fi # as_fn_arith
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
exit
}
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
# Identity of this package.
PACKAGE_NAME='gpgme'
PACKAGE_TARNAME='gpgme'
-PACKAGE_VERSION='1.18.0'
-PACKAGE_STRING='gpgme 1.18.0'
+PACKAGE_VERSION='1.23.1'
+PACKAGE_STRING='gpgme 1.23.1'
PACKAGE_BUGREPORT='https://bugs.gnupg.org'
PACKAGE_URL=''
ac_unique_file="src/gpgme.h.in"
# Factoring default headers for most tests.
ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
+#include <stddef.h>
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
#endif
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
#endif
#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
# include <string.h>
#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif"
-ac_header_list=
+ac_header_c_list=
ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
emacs_local_vars_end
pyexecdir
pkgpythondir
pythondir
-PYTHON_PLATFORM
PYTHON_EXEC_PREFIX
PYTHON_PREFIX
+PYTHON_PLATFORM
PYTHON_VERSION
PYTHON
SWIG_LIB
HAVE_DOXYGEN_TRUE
GRAPHVIZ
DOXYGEN
+WANT_QT6_FALSE
+WANT_QT6_TRUE
+WANT_QT5_FALSE
+WANT_QT5_TRUE
+GPGME_CPP_CFLAGS
+HAVE_CXX11
+HAVE_CXX17
+GPGME_QT6TEST_LIBS
+GPGME_QT6TEST_CFLAGS
+GPGME_QT6_LIBS
+GPGME_QT6_CFLAGS
QTCHOOSER
MOC2
MOC
-GPGME_QTTEST_LIBS
-GPGME_QTTEST_CFLAGS
-GPGME_QT_LIBS
-GPGME_QT_CFLAGS
-GPGME_CPP_CFLAGS
-HAVE_CXX11
+GPGME_QT5TEST_LIBS
+GPGME_QT5TEST_CFLAGS
+GPGME_QT5_LIBS
+GPGME_QT5_CFLAGS
BUILD_W32_GLIB_FALSE
BUILD_W32_GLIB_TRUE
HAVE_MACOS_SYSTEM_FALSE
DUMPBIN
LD
FGREP
+EGREP
+GREP
SED
LIBTOOL
OBJDUMP
ac_ct_CXX
CXXFLAGS
CXX
-LDADD_FOR_TESTS_KLUDGE
-EGREP
-GREP
CPP
+LDADD_FOR_TESTS_KLUDGE
am__fastdepCC_FALSE
am__fastdepCC_TRUE
CCDEPMODE
AM_DEFAULT_VERBOSITY
AM_DEFAULT_V
AM_V
+CSCOPE
+ETAGS
+CTAGS
am__untar
am__tar
AMTAR
with_gnu_ld
with_sysroot
enable_libtool_lock
+with_libtool_modification
enable_glibtest
enable_w32_glib
enable_fixed_path
+enable_no_direct_extern_access
enable_languages
+with_python_sys_prefix
+with_python_prefix
+with_python_exec_prefix
enable_build_timestamp
enable_gpgconf_test
enable_gpg_test
CC_FOR_BUILD
CXXCPP
PKG_CONFIG
-GPGME_QT_CFLAGS
-GPGME_QT_LIBS
-GPGME_QTTEST_CFLAGS
-GPGME_QTTEST_LIBS
+GPGME_QT5_CFLAGS
+GPGME_QT5_LIBS
+GPGME_QT5TEST_CFLAGS
+GPGME_QT5TEST_LIBS
+GPGME_QT6_CFLAGS
+GPGME_QT6_LIBS
+GPGME_QT6TEST_CFLAGS
+GPGME_QT6TEST_LIBS
PYTHON
PYTHON_VERSION'
*) ac_optarg=yes ;;
esac
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
case $ac_dashdash$ac_option in
--)
ac_dashdash=yes ;;
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
*)
# FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
: "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
case $enable_option_checking in
no) ;;
fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
X"$as_myself" : 'X\(//\)[^/]' \| \
X"$as_myself" : 'X\(//\)$' \| \
X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures gpgme 1.18.0 to adapt to many kinds of systems.
+\`configure' configures gpgme 1.23.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of gpgme 1.18.0:";;
+ short | recursive ) echo "Configuration of gpgme 1.23.1:";;
esac
cat <<\_ACEOF
--enable-w32-glib build GPGME Glib for W32
--enable-fixed-path=PATH
locate binaries only via this PATH
+ --enable-no-direct-extern-access
+ build Qt 6 bindinds with -mno-direct-extern-access
--enable-languages=languages
- enable only specific language bindings
+ enable only specific language bindings: cl cpp
+ python qt qt5 qt6 (qt selects qt5 or qt6, and qt5
+ and qt6 exclude each other)
--enable-build-timestamp
set an explicit build timestamp for reproducibility.
(default is the current time in ISO-8601 format)
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
--with-sysroot=DIR Search for dependent libraries within DIR
(or the compiler's sysroot if not specified).
+ --with-libtool-modification=apply|never|try
+ how to handle libtool modification (default=never)
+ --with-python-sys-prefix
+ use Python's sys.prefix and sys.exec_prefix values
+ --with-python_prefix override the default PYTHON_PREFIX
+ --with-python_exec_prefix
+ override the default PYTHON_EXEC_PREFIX
--with-libgpg-error-prefix=PFX
prefix where GPG Error is installed (optional)
build system C compiler
CXXCPP C++ preprocessor
PKG_CONFIG path to pkg-config utility
- GPGME_QT_CFLAGS
- C compiler flags for GPGME_QT, overriding pkg-config
- GPGME_QT_LIBS
- linker flags for GPGME_QT, overriding pkg-config
- GPGME_QTTEST_CFLAGS
- C compiler flags for GPGME_QTTEST, overriding pkg-config
- GPGME_QTTEST_LIBS
- linker flags for GPGME_QTTEST, overriding pkg-config
+ GPGME_QT5_CFLAGS
+ C compiler flags for GPGME_QT5, overriding pkg-config
+ GPGME_QT5_LIBS
+ linker flags for GPGME_QT5, overriding pkg-config
+ GPGME_QT5TEST_CFLAGS
+ C compiler flags for GPGME_QT5TEST, overriding pkg-config
+ GPGME_QT5TEST_LIBS
+ linker flags for GPGME_QT5TEST, overriding pkg-config
+ GPGME_QT6_CFLAGS
+ C compiler flags for GPGME_QT6, overriding pkg-config
+ GPGME_QT6_LIBS
+ linker flags for GPGME_QT6, overriding pkg-config
+ GPGME_QT6TEST_CFLAGS
+ C compiler flags for GPGME_QT6TEST, overriding pkg-config
+ GPGME_QT6TEST_LIBS
+ linker flags for GPGME_QT6TEST, overriding pkg-config
PYTHON the Python interpreter
PYTHON_VERSION
The installed Python version to use, for example '2.3'. This
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
+ # Check for configure.gnu first; this name is used for a wrapper for
+ # Metaconfig's "Configure" on case-insensitive file systems.
if test -f "$ac_srcdir/configure.gnu"; then
echo &&
$SHELL "$ac_srcdir/configure.gnu" --help=recursive
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-gpgme configure 1.18.0
-generated by GNU Autoconf 2.69
+gpgme configure 1.23.1
+generated by GNU Autoconf 2.71
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
+ rm -f conftest.$ac_objext conftest.beam
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
+ } && test -s conftest.$ac_objext
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
} # ac_fn_c_try_compile
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } > conftest.i && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------------- ##
-## Report this to https://bugs.gnupg.org ##
-## ------------------------------------- ##"
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- ac_retval=0
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=$ac_status
-fi
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists and can be compiled using the include files in
ac_fn_c_check_header_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
#include <$2>
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_compile
ac_fn_c_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
+ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
test -x conftest$ac_exeext
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
} # ac_fn_c_try_link
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }
+then :
+ ac_retval=0
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
# ac_fn_cxx_try_compile LINENO
# ----------------------------
# Try to compile conftest.$ac_ext, and return whether this succeeded.
ac_fn_cxx_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
+ rm -f conftest.$ac_objext conftest.beam
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
+ } && test -s conftest.$ac_objext
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
ac_fn_c_check_func ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
#define $2 innocuous_$2
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $2 (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+ which can conflict with char $2 (); below. */
+#include <limits.h>
#undef $2
/* Override any GCC internal prototype to avoid an error.
#endif
int
-main ()
+main (void)
{
return $2 ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } > conftest.i && {
test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
test ! -s conftest.err
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
ac_fn_cxx_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
+ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
test -x conftest$ac_exeext
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
} # ac_fn_cxx_try_link
-# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
-# --------------------------------------------
-# Tries to find the compile-time value of EXPR in a program that includes
-# INCLUDES, setting VAR accordingly. Returns whether the value could be
-# computed
-ac_fn_c_compute_int ()
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
+# executables *can* be run.
+ac_fn_c_try_run ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if test "$cross_compiling" = yes; then
- # Depending upon the size, compute the lo and hi bounds.
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-int
-main ()
-{
-static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0;
-return test_array [0];
-
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then :
+ ac_retval=0
+else $as_nop
+ printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+ printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main (void)
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=0 ac_mid=0
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid; break
-else
+else $as_nop
as_fn_arith $ac_mid + 1 && ac_lo=$as_val
if test $ac_lo -le $ac_mid; then
ac_lo= ac_hi=
fi
as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) < 0)];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=-1 ac_mid=-1
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) >= $ac_mid)];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=$ac_mid; break
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
if test $ac_mid -le $ac_hi; then
ac_lo= ac_hi=
fi
as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
ac_lo= ac_hi=
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
# Binary search between lo and hi bounds.
while test "x$ac_lo" != "x$ac_hi"; do
as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
case $ac_lo in #((
?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
+static long int longval (void) { return $2; }
+static unsigned long int ulongval (void) { return $2; }
#include <stdio.h>
#include <stdlib.h>
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.val", "w");
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
+else $as_nop
ac_retval=1
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
ac_fn_c_check_type ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
eval "$3=no"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof ($2))
return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof (($2)))
return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
eval "$3=yes"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_type
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
+# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
+# ------------------------------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
+ac_fn_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+printf %s "checking whether $as_decl_name is declared... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ eval ac_save_FLAGS=\$$6
+ as_fn_append $6 " $5"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
#ifndef $as_decl_name
#ifdef __cplusplus
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ eval $6=\$ac_save_FLAGS
+
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-} # ac_fn_c_check_decl
+} # ac_fn_check_decl
# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
# ----------------------------------------------------
ac_fn_c_check_member ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+printf %s "checking for $2.$3... " >&6; }
+if eval test \${$4+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (ac_aggr.$3)
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (sizeof ac_aggr.$3)
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
eval "$4=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$4
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_member
+ac_configure_args_raw=
+for ac_arg
+do
+ case $ac_arg in
+ *\'*)
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+ *$as_nl*)
+ ac_safe_unquote= ;;
+ *)
+ ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab.
+ ac_unsafe_a="$ac_unsafe_z#~"
+ ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+ ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
+
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by gpgme $as_me 1.18.0, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+It was created by gpgme $as_me 1.23.1, which was
+generated by GNU Autoconf 2.71. Invocation command line was
- $ $0 $@
+ $ $0$ac_configure_args_raw
_ACEOF
exec 5>>config.log
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ printf "%s\n" "PATH: $as_dir"
done
IFS=$as_save_IFS
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
# WARNING: Use '\'' to represent an apostrophe within the trap.
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
trap 'exit_status=$?
+ # Sanitize IFS.
+ IFS=" "" $as_nl"
# Save into config.log some information that might help in debugging.
{
echo
- $as_echo "## ---------------- ##
+ printf "%s\n" "## ---------------- ##
## Cache variables. ##
## ---------------- ##"
echo
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
)
echo
- $as_echo "## ----------------- ##
+ printf "%s\n" "## ----------------- ##
## Output variables. ##
## ----------------- ##"
echo
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
+ printf "%s\n" "## ------------------- ##
## File substitutions. ##
## ------------------- ##"
echo
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
if test -s confdefs.h; then
- $as_echo "## ----------- ##
+ printf "%s\n" "## ----------- ##
## confdefs.h. ##
## ----------- ##"
echo
echo
fi
test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
+ printf "%s\n" "$as_me: caught signal $ac_signal"
+ printf "%s\n" "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in #((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
+ ac_site_files="$CONFIG_SITE"
elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
+ ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
+ ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ case $ac_site_file in #(
+ */*) :
+ ;; #(
+ *) :
+ ac_site_file=./$ac_site_file ;;
+esac
+ if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
See \`config.log' for more details" "$LINENO" 5; }
fi
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
-as_fn_append ac_header_list " locale.h"
-as_fn_append ac_header_list " sys/select.h"
-as_fn_append ac_header_list " sys/uio.h"
-as_fn_append ac_header_list " argp.h"
-as_fn_append ac_header_list " stdint.h"
-as_fn_append ac_header_list " unistd.h"
-as_fn_append ac_header_list " poll.h"
-as_fn_append ac_header_list " sys/time.h"
-as_fn_append ac_header_list " sys/types.h"
-as_fn_append ac_header_list " sys/stat.h"
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
- eval ac_old_set=\$ac_cv_env_${ac_var}_set
- eval ac_new_set=\$ac_env_${ac_var}_set
- eval ac_old_val=\$ac_cv_env_${ac_var}_value
- eval ac_new_val=\$ac_env_${ac_var}_value
- case $ac_old_set,$ac_new_set in
- set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
- ac_cache_corrupted=: ;;
- ,);;
- *)
- if test "x$ac_old_val" != "x$ac_new_val"; then
- # differences in whitespace do not lead to failure.
- ac_old_val_w=`echo x $ac_old_val`
- ac_new_val_w=`echo x $ac_new_val`
- if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- ac_cache_corrupted=:
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
- eval $ac_var=\$ac_old_val
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
- fi;;
- esac
- # Pass precious variables to config.status.
- if test "$ac_new_set" = set; then
- case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
- *) ac_arg=$ac_var=$ac_new_val ;;
- esac
- case " $ac_configure_args " in
- *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
- *) as_fn_append ac_configure_args " '$ac_arg'" ;;
- esac
- fi
-done
-if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+ Do not test the value of __STDC__, because some compilers set it to 0
+ while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+#include <stddef.h>
+#include <stdarg.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */
+struct buf { int x; };
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not \xHH hex character constants.
+ These do not provoke an error unfortunately, instead are silently treated
+ as an "x". The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously \x00 != x always comes out true, for an
+ array size at least. It is necessary to write \x00 == 0 to get something
+ that is true only with -std. */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
-# LT Version numbers, remember to change them just *before* a release.
-# (Code changed: REVISION++)
-# (Interfaces added/removed/changed: CURRENT++, REVISION=0)
-# (Interfaces added: AGE++)
-# (Interfaces removed: AGE=0)
-#
-LIBGPGME_LT_CURRENT=38
-LIBGPGME_LT_AGE=27
-LIBGPGME_LT_REVISION=0
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+ int, int);'
-# If there is an ABI break in gpgmepp or qgpgme also bump the
-# version in IMPORTED_LOCATION in the GpgmeppConfig-w32.cmake.in.in
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
-LIBGPGMEPP_LT_CURRENT=21
-LIBGPGMEPP_LT_AGE=15
-LIBGPGMEPP_LT_REVISION=0
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+// Does the compiler advertise C99 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
-LIBQGPGME_LT_CURRENT=16
-LIBQGPGME_LT_AGE=1
-LIBQGPGME_LT_REVISION=0
-################################################
+#include <stdbool.h>
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ #error "your preprocessor is broken"
+#endif
+#if BIG_OK
+#else
+ #error "your preprocessor is broken"
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+typedef const char *ccp;
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
+ continue;
+ return 0;
+}
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+ const char *str = "";
+ int number = 0;
+ float fnumber = 0;
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case '\''s'\'': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case '\''d'\'': // int
+ number = va_arg (args_copy, int);
+ break;
+ case '\''f'\'': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+ return *str && number && fnumber;
+}
+'
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
+ // Check bool.
+ _Bool success = false;
+ success |= (argc != 0);
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[0] = argv[0][0];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+ || dynamic_array[ni.number - 1] != 543);
+'
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+// Does the compiler advertise C11 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
-# If the API is changed in an incompatible way: increment the next counter.
-GPGME_CONFIG_API_VERSION=1
-##############################################
+// Check _Alignof.
+enum
+{
+ int_alignment = _Alignof (int),
+ int_array_alignment = _Alignof (int[100]),
+ char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
-NEED_GPG_ERROR_VERSION=1.36
-NEED_LIBASSUAN_API=2
-NEED_LIBASSUAN_VERSION=2.4.2
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+// Check _Static_assert.
+struct test_static_assert
+{
+ int x;
+ _Static_assert (sizeof (int) <= sizeof (long int),
+ "_Static_assert does not work in struct");
+ long int y;
+};
-VERSION_MAJOR=1
-VERSION_MINOR=18
-VERSION_MICRO=0
-
-ac_aux_dir=
-for ac_dir in build-aux "$srcdir"/build-aux; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5
-fi
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+ union {
+ struct { int i; int j; };
+ struct { int k; long int l; } w;
+ };
+ int m;
+} v1;
+'
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+ _Static_assert ((offsetof (struct anonymous, i)
+ == offsetof (struct anonymous, w.k)),
+ "Anonymous union alignment botch");
+ v1.i = 2;
+ v1.w.k = 5;
+ ok |= v1.i != 5;
+'
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
-ac_config_headers="$ac_config_headers conf/config.h"
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ ${ac_c_conftest_c11_main}
+ return ok;
+}
+"
-am__api_version='1.16'
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
-if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
+as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
+# Test code for whether the C++ compiler supports C++98 (global declarations)
+ac_cxx_conftest_cxx98_globals='
+// Does the compiler advertise C++98 conformance?
+#if !defined __cplusplus || __cplusplus < 199711L
+# error "Compiler does not advertise C++98 conformance"
+#endif
+
+// These inclusions are to reject old compilers that
+// lack the unsuffixed header files.
+#include <cstdlib>
+#include <exception>
+
+// <cassert> and <cstring> are *not* freestanding headers in C++98.
+extern void assert (int);
+namespace std {
+ extern int strcmp (const char *, const char *);
+}
+
+// Namespaces, exceptions, and templates were all added after "C++ 2.0".
+using std::exception;
+using std::strcmp;
+
+namespace {
+
+void test_exception_syntax()
+{
+ try {
+ throw "test";
+ } catch (const char *s) {
+ // Extra parentheses suppress a warning when building autoconf itself,
+ // due to lint rules shared with more typical C programs.
+ assert (!(strcmp) (s, "test"));
+ }
+}
+
+template <typename T> struct test_template
+{
+ T const val;
+ explicit test_template(T t) : val(t) {}
+ template <typename U> T add(U u) { return static_cast<T>(u) + val; }
+};
+
+} // anonymous namespace
+'
+
+# Test code for whether the C++ compiler supports C++98 (body of main)
+ac_cxx_conftest_cxx98_main='
+ assert (argc);
+ assert (! argv[0]);
+{
+ test_exception_syntax ();
+ test_template<double> tt (2.0);
+ assert (tt.add (4) == 6.0);
+ assert (true && !false);
+}
+'
+
+# Test code for whether the C++ compiler supports C++11 (global declarations)
+ac_cxx_conftest_cxx11_globals='
+// Does the compiler advertise C++ 2011 conformance?
+#if !defined __cplusplus || __cplusplus < 201103L
+# error "Compiler does not advertise C++11 conformance"
+#endif
+
+namespace cxx11test
+{
+ constexpr int get_val() { return 20; }
+
+ struct testinit
+ {
+ int i;
+ double d;
+ };
+
+ class delegate
+ {
+ public:
+ delegate(int n) : n(n) {}
+ delegate(): delegate(2354) {}
+
+ virtual int getval() { return this->n; };
+ protected:
+ int n;
+ };
+
+ class overridden : public delegate
+ {
+ public:
+ overridden(int n): delegate(n) {}
+ virtual int getval() override final { return this->n * 2; }
+ };
+
+ class nocopy
+ {
+ public:
+ nocopy(int i): i(i) {}
+ nocopy() = default;
+ nocopy(const nocopy&) = delete;
+ nocopy & operator=(const nocopy&) = delete;
+ private:
+ int i;
+ };
+
+ // for testing lambda expressions
+ template <typename Ret, typename Fn> Ret eval(Fn f, Ret v)
+ {
+ return f(v);
+ }
+
+ // for testing variadic templates and trailing return types
+ template <typename V> auto sum(V first) -> V
+ {
+ return first;
+ }
+ template <typename V, typename... Args> auto sum(V first, Args... rest) -> V
+ {
+ return first + sum(rest...);
+ }
+}
+'
+
+# Test code for whether the C++ compiler supports C++11 (body of main)
+ac_cxx_conftest_cxx11_main='
+{
+ // Test auto and decltype
+ auto a1 = 6538;
+ auto a2 = 48573953.4;
+ auto a3 = "String literal";
+
+ int total = 0;
+ for (auto i = a3; *i; ++i) { total += *i; }
+
+ decltype(a2) a4 = 34895.034;
+}
+{
+ // Test constexpr
+ short sa[cxx11test::get_val()] = { 0 };
+}
+{
+ // Test initializer lists
+ cxx11test::testinit il = { 4323, 435234.23544 };
+}
+{
+ // Test range-based for
+ int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3,
+ 14, 19, 17, 8, 6, 20, 16, 2, 11, 1};
+ for (auto &x : array) { x += 23; }
+}
+{
+ // Test lambda expressions
+ using cxx11test::eval;
+ assert (eval ([](int x) { return x*2; }, 21) == 42);
+ double d = 2.0;
+ assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0);
+ assert (d == 5.0);
+ assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0);
+ assert (d == 5.0);
+}
+{
+ // Test use of variadic templates
+ using cxx11test::sum;
+ auto a = sum(1);
+ auto b = sum(1, 2);
+ auto c = sum(1.0, 2.0, 3.0);
+}
+{
+ // Test constructor delegation
+ cxx11test::delegate d1;
+ cxx11test::delegate d2();
+ cxx11test::delegate d3(45);
+}
+{
+ // Test override and final
+ cxx11test::overridden o1(55464);
+}
+{
+ // Test nullptr
+ char *c = nullptr;
+}
+{
+ // Test template brackets
+ test_template<::test_template<int>> v(test_template<int>(12));
+}
+{
+ // Unicode literals
+ char const *utf8 = u8"UTF-8 string \u2500";
+ char16_t const *utf16 = u"UTF-8 string \u2500";
+ char32_t const *utf32 = U"UTF-32 string \u2500";
+}
+'
+
+# Test code for whether the C compiler supports C++11 (complete).
+ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals}
+${ac_cxx_conftest_cxx11_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_cxx_conftest_cxx98_main}
+ ${ac_cxx_conftest_cxx11_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C++98 (complete).
+ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals}
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_cxx_conftest_cxx98_main}
+ return ok;
+}
+"
+
+as_fn_append ac_header_c_list " locale.h locale_h HAVE_LOCALE_H"
+as_fn_append ac_header_c_list " sys/select.h sys_select_h HAVE_SYS_SELECT_H"
+as_fn_append ac_header_c_list " sys/uio.h sys_uio_h HAVE_SYS_UIO_H"
+as_fn_append ac_header_c_list " argp.h argp_h HAVE_ARGP_H"
+as_fn_append ac_header_c_list " poll.h poll_h HAVE_POLL_H"
+as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H"
+
+# Auxiliary files required by this configure script.
+ac_aux_files="ltmain.sh compile config.guess config.sub missing install-sh"
+
+# Locations in which to look for auxiliary files.
+ac_aux_dir_candidates="${srcdir}/build-aux"
+
+# Search for a directory containing all of the required auxiliary files,
+# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates.
+# If we don't find one directory that contains all the files we need,
+# we report the set of missing files from the *first* directory in
+# $ac_aux_dir_candidates and give up.
+ac_missing_aux_files=""
+ac_first_candidate=:
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in $ac_aux_dir_candidates
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ as_found=:
+
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5
+ ac_aux_dir_found=yes
+ ac_install_sh=
+ for ac_aux in $ac_aux_files
+ do
+ # As a special case, if "install-sh" is required, that requirement
+ # can be satisfied by any of "install-sh", "install.sh", or "shtool",
+ # and $ac_install_sh is set appropriately for whichever one is found.
+ if test x"$ac_aux" = x"install-sh"
+ then
+ if test -f "${as_dir}install-sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5
+ ac_install_sh="${as_dir}install-sh -c"
+ elif test -f "${as_dir}install.sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5
+ ac_install_sh="${as_dir}install.sh -c"
+ elif test -f "${as_dir}shtool"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5
+ ac_install_sh="${as_dir}shtool install -c"
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} install-sh"
+ else
+ break
+ fi
+ fi
+ else
+ if test -f "${as_dir}${ac_aux}"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}"
+ else
+ break
+ fi
+ fi
+ fi
+ done
+ if test "$ac_aux_dir_found" = yes; then
+ ac_aux_dir="$as_dir"
+ break
+ fi
+ ac_first_candidate=false
+
+ as_found=false
+done
+IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+fi
+
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+if test -f "${ac_aux_dir}config.guess"; then
+ ac_config_guess="$SHELL ${ac_aux_dir}config.guess"
+fi
+if test -f "${ac_aux_dir}config.sub"; then
+ ac_config_sub="$SHELL ${ac_aux_dir}config.sub"
+fi
+if test -f "$ac_aux_dir/configure"; then
+ ac_configure="$SHELL ${ac_aux_dir}configure"
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+ and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# LT Version numbers, remember to change them just *before* a release.
+# (Code changed: REVISION++)
+# (Interfaces added/removed/changed: CURRENT++, REVISION=0)
+# (Interfaces added: AGE++)
+# (Interfaces removed: AGE=0)
+#
+LIBGPGME_LT_CURRENT=43
+LIBGPGME_LT_AGE=32
+LIBGPGME_LT_REVISION=0
+
+# If there is an ABI break in gpgmepp or qgpgme also bump the
+# version in IMPORTED_LOCATION in the GpgmeppConfig-w32.cmake.in.in
+
+LIBGPGMEPP_LT_CURRENT=26
+LIBGPGMEPP_LT_AGE=20
+LIBGPGMEPP_LT_REVISION=0
+
+LIBQGPGME_LT_CURRENT=20
+LIBQGPGME_LT_AGE=5
+LIBQGPGME_LT_REVISION=0
+################################################
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If the API is changed in an incompatible way: increment the next counter.
+GPGME_CONFIG_API_VERSION=1
+##############################################
+
+NEED_GPG_ERROR_VERSION=1.36
+NEED_LIBASSUAN_API=2
+NEED_LIBASSUAN_VERSION=2.4.2
+
+
+VERSION_MAJOR=1
+VERSION_MINOR=23
+VERSION_MICRO=1
+
+
+
+
+ac_config_headers="$ac_config_headers conf/config.h"
+
+am__api_version='1.16'
+
+
+
+ # Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+printf %s "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test ${ac_cv_path_install+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ # Account for fact that we put trailing slashes in our PATH walk.
+case $as_dir in #((
+ ./ | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
/usr/ucb/* ) ;;
*)
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# program-specific install script used by HP pwplus--don't use.
:
else
echo one > conftest.one
echo two > conftest.two
mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" &&
test -s conftest.one && test -s conftest.two &&
test -s conftest.dir/conftest.one &&
test -s conftest.dir/conftest.two
then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c"
break 3
fi
fi
rm -rf conftest.one conftest.two conftest.dir
fi
- if test "${ac_cv_path_install+set}" = set; then
+ if test ${ac_cv_path_install+y}; then
INSTALL=$ac_cv_path_install
else
# As a last resort, use the slow shell script. Don't cache a
INSTALL=$ac_install_sh
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+printf "%s\n" "$INSTALL" >&6; }
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
-$as_echo_n "checking whether build environment is sane... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+printf %s "checking whether build environment is sane... " >&6; }
# Reject unsafe characters in $srcdir or the absolute working directory
# name. Accept space and tab only in the latter.
am_lf='
as_fn_error $? "newly created file is older than distributed files!
Check your system clock" "$LINENO" 5
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
# If we didn't sleep, we still need to ensure time stamps of config.status and
# generated files are strictly newer.
am_sleep_pid=
# Double any \ or $.
# By default was `s,x,x', remove it if useless.
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
-program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"`
+
# Expand $ac_aux_dir to an absolute path.
am_aux_dir=`cd "$ac_aux_dir" && pwd`
-if test x"${MISSING+set}" != xset; then
+
+ if test x"${MISSING+set}" != xset; then
MISSING="\${SHELL} '$am_aux_dir/missing'"
fi
# Use eval to expand $SHELL
am_missing_run="$MISSING "
else
am_missing_run=
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
fi
if test x"${install_sh+set}" != xset; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$STRIP"; then
ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
STRIP=$ac_cv_prog_STRIP
if test -n "$STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+printf "%s\n" "$STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_STRIP=$STRIP
# Extract the first word of "strip", so it can be a program name with args.
set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_STRIP"; then
ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n "$ac_ct_STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+printf "%s\n" "$ac_ct_STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_STRIP" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
STRIP=$ac_ct_STRIP
fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5
+printf %s "checking for a race-free mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
- if ${ac_cv_path_mkdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${ac_cv_path_mkdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
- 'mkdir (GNU coreutils) '* | \
- 'mkdir (coreutils) '* | \
+ as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir ('*'coreutils) '* | \
+ 'BusyBox '* | \
'mkdir (fileutils) '4.1*)
- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext
break 3;;
esac
done
fi
test -d ./--version && rmdir ./--version
- if test "${ac_cv_path_mkdir+set}" = set; then
+ if test ${ac_cv_path_mkdir+y}; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
# As a last resort, use the slow shell script. Don't cache a
MKDIR_P="$ac_install_sh -d"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+printf "%s\n" "$MKDIR_P" >&6; }
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AWK+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+printf "%s\n" "$AWK" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
test -n "$AWK" && break
done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval test \${ac_cv_prog_make_${ac_make}_set+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat >conftest.make <<\_ACEOF
SHELL = /bin/sh
all:
rm -f conftest.make
fi
if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
SET_MAKE=
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
SET_MAKE="MAKE=${MAKE-make}"
fi
rmdir .tst 2>/dev/null
# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
+if test ${enable_silent_rules+y}
+then :
enableval=$enable_silent_rules;
fi
*) AM_DEFAULT_VERBOSITY=1;;
esac
am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if $as_echo 'TRUE=$(BAR$(V))
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+printf %s "checking whether $am_make supports nested variables... " >&6; }
+if test ${am_cv_make_support_nested_variables+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if printf "%s\n" 'TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
am_cv_make_support_nested_variables=no
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+printf "%s\n" "$am_cv_make_support_nested_variables" >&6; }
if test $am_cv_make_support_nested_variables = yes; then
AM_V='$(V)'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
# Define the identity of the package.
PACKAGE='gpgme'
- VERSION='1.18.0'
+ VERSION='1.23.1'
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
+printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define VERSION "$VERSION"
-_ACEOF
+printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h
# Some tools Automake needs.
+# Variables for tags utilities; see am/tags.am
+if test -z "$CTAGS"; then
+ CTAGS=ctags
+fi
+
+if test -z "$ETAGS"; then
+ ETAGS=etags
+fi
+
+if test -z "$CSCOPE"; then
+ CSCOPE=cscope
+fi
+
+
# POSIX will say in a future version that running "rm -f" with no argument
# is OK; and we want to be able to make that assumption in our Makefile
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
-$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
# Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then :
+if test ${enable_maintainer_mode+y}
+then :
enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
-else
+else $as_nop
USE_MAINTAINER_MODE=no
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
-$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+printf "%s\n" "$USE_MAINTAINER_MODE" >&6; }
if test $USE_MAINTAINER_MODE = yes; then
MAINTAINER_MODE_TRUE=
MAINTAINER_MODE_FALSE='#'
MAINT=$MAINTAINER_MODE_TRUE
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+ # Make sure we can run config.sub.
+$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+printf %s "checking build system type... " >&6; }
+if test ${ac_cv_build+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_build_alias=$build_alias
test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+ ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
test "x$ac_build_alias" = x &&
as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+printf "%s\n" "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+printf %s "checking host system type... " >&6; }
+if test ${ac_cv_host+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "x$host_alias" = x; then
ac_cv_host=$ac_cv_build
else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+ ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+printf "%s\n" "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
# Check whether --enable-silent-rules was given.
-if test "${enable_silent_rules+set}" = set; then :
+if test ${enable_silent_rules+y}
+then :
enableval=$enable_silent_rules;
fi
*) AM_DEFAULT_VERBOSITY=1;;
esac
am_make=${MAKE-make}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
-$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
-if ${am_cv_make_support_nested_variables+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if $as_echo 'TRUE=$(BAR$(V))
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+printf %s "checking whether $am_make supports nested variables... " >&6; }
+if test ${am_cv_make_support_nested_variables+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if printf "%s\n" 'TRUE=$(BAR$(V))
BAR0=false
BAR1=true
V=1
am_cv_make_support_nested_variables=no
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
-$as_echo "$am_cv_make_support_nested_variables" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+printf "%s\n" "$am_cv_make_support_nested_variables" >&6; }
if test $am_cv_make_support_nested_variables = yes; then
AM_V='$(V)'
AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
# Enable GNU extensions on systems that have them.
+
+
+
+
+
+
+
+
+
DEPDIR="${am__leading_dot}deps"
ac_config_commands="$ac_config_commands depfiles"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
-$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; }
cat > confinc.mk << 'END'
am__doit:
@echo this is the am__doit target >confinc.out
fi
done
rm -f confinc.* confmf.*
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
-$as_echo "${_am_result}" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+printf "%s\n" "${_am_result}" >&6; }
# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
+if test ${enable_dependency_tracking+y}
+then :
enableval=$enable_dependency_tracking;
fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
fi
ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
fi
fi
fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
fi
+else
+ CC="$ac_cv_prog_CC"
fi
fi
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "no acceptable C compiler found in \$PATH
See \`config.log' for more details" "$LINENO" 5; }
# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
+for ac_option in --version -v -V -qversion -version; do
{ { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+printf %s "checking whether the C compiler works... " >&6; }
+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link_default") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
# in a Makefile. We should not override ac_cv_exeext if it was cached,
# certainly right.
break;;
*.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
then :; else
ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
fi
done
test "$ac_cv_exeext" = no && ac_cv_exeext=
-else
+else $as_nop
ac_file=''
fi
-if test -z "$ac_file"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "C compiler cannot create executables
See \`config.log' for more details" "$LINENO" 5; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+printf %s "checking for C compiler default output file name... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf "%s\n" "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+printf %s "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
# work properly (i.e., refer to `conftest.exe'), while it won't with
* ) break;;
esac
done
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of executables: cannot compile and link
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf "%s\n" "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
/* end confdefs.h. */
#include <stdio.h>
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.out", "w");
return ferror (f) || fclose (f) != 0;
ac_clean_files="$ac_clean_files conftest.out"
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+printf %s "checking whether we are cross compiling... " >&6; }
if test "$cross_compiling" != yes; then
{ { ac_try="$ac_link"
case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if { ac_try='./conftest$ac_cv_exeext'
{ { case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details" "$LINENO" 5; }
fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf "%s\n" "$cross_compiling" >&6; }
rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+printf %s "checking for suffix of object files... " >&6; }
+if test ${ac_cv_objext+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
for ac_file in conftest.o conftest.obj conftest.*; do
test -f "$ac_file" || continue;
case $ac_file in
break;;
esac
done
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of object files: cannot compile
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf "%s\n" "$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_compiler_gnu=yes
-else
+else $as_nop
ac_compiler_gnu=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
if test $ac_compiler_gnu = yes; then
GCC=yes
else
GCC=
fi
-ac_test_CFLAGS=${CFLAGS+set}
+ac_test_CFLAGS=${CFLAGS+y}
ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
ac_cv_prog_cc_g=no
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
-else
+else $as_nop
CFLAGS=""
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
CFLAGS=
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c11=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+$ac_c_conftest_c11_program
+_ACEOF
+for ac_arg in '' -std=gnu11
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c11=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c11" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c11" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+ CC="$CC $ac_cv_prog_cc_c11"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+ ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c99_program
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c99" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+ CC="$CC $ac_cv_prog_cc_c99"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+ ac_prog_cc_stdc=c99
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c89_program
_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
do
CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_c89=$ac_arg
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
test "x$ac_cv_prog_cc_c89" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
-
fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c89" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+ CC="$CC $ac_cv_prog_cc_c89"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+ ac_prog_cc_stdc=c89
+fi
fi
ac_ext=c
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-ac_ext=c
+
+ ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+printf %s "checking whether $CC understands -c and -o together... " >&6; }
+if test ${am_cv_prog_cc_c_o+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
rm -f core conftest*
unset am_i
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+printf "%s\n" "$am_cv_prog_cc_c_o" >&6; }
if test "$am_cv_prog_cc_c_o" != yes; then
# Losing compiler, so override with the script.
# FIXME: It is wrong to rewrite CC.
depcc="$CC" am_compiler_list=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+printf %s "checking dependency style of $depcc... " >&6; }
+if test ${am_cv_CC_dependencies_compiler_type+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; }
CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
if
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+ if test $ac_cache; then
+ ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+ if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+ printf "%s\n" "#define $ac_item 1" >> confdefs.h
+ fi
+ ac_header= ac_cache=
+ elif test $ac_header; then
+ ac_cache=$ac_item
+ else
+ ac_header=$ac_item
+ fi
+done
+
+
+
+
+
+
+
+
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
+
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
-else
- # Broken: fails on valid input.
-continue
fi
-rm -f conftest.err conftest.i conftest.$ac_ext
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
+
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test ${ac_cv_safe_to_define___extensions__+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
- break
-fi
-
- done
- ac_cv_prog_CPP=$CPP
-
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+# define __EXTENSIONS__ 1
+ $ac_includes_default
+int
+main (void)
+{
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
+ ;
+ return 0;
+}
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_EGREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_EGREP=$EGREP
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_safe_to_define___extensions__=yes
+else $as_nop
+ ac_cv_safe_to_define___extensions__=no
fi
-
- fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
+printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; }
+if test ${ac_cv_should_define__xopen_source+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_should_define__xopen_source=no
+ if test $ac_cv_header_wchar_h = yes
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
+ #include <wchar.h>
+ mbstate_t x;
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
+if ac_fn_c_try_compile "$LINENO"
+then :
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+ #define _XOPEN_SOURCE 500
+ #include <wchar.h>
+ mbstate_t x;
int
-main ()
+main (void)
{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
+
+ ;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_should_define__xopen_source=yes
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
+printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+ printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h
-fi
+ printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h
-fi
+ printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h
-done
+ printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
- ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
- MINIX=yes
-else
- MINIX=
-fi
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h
- if test "$MINIX" = yes; then
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h
-$as_echo "#define _MINIX 1" >>confdefs.h
+ printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h
- fi
+ if test $ac_cv_header_minix_config_h = yes
+then :
+ MINIX=yes
+ printf "%s\n" "#define _MINIX 1" >>confdefs.h
+ printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h
-# define __EXTENSIONS__ 1
- $ac_includes_default
-int
-main ()
-{
+else $as_nop
+ MINIX=
+fi
+ if test $ac_cv_safe_to_define___extensions__ = yes
+then :
+ printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_safe_to_define___extensions__=yes
-else
- ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
- test $ac_cv_safe_to_define___extensions__ = yes &&
- $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
- $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
-
- $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
- $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
- $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+ if test $ac_cv_should_define__xopen_source = yes
+then :
+ printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h
+fi
# Taken from mpfr-4.0.1, then modified for LDADD_FOR_TESTS_KLUDGE
saved_LDFLAGS="$LDFLAGS"
LDADD_FOR_TESTS_KLUDGE="-Wl,--disable-new-dtags"
LDFLAGS="$LDFLAGS $LDADD_FOR_TESTS_KLUDGE"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether --disable-new-dtags is supported by the linker" >&5
-$as_echo_n "checking whether --disable-new-dtags is supported by the linker... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether --disable-new-dtags is supported by the linker" >&5
+printf %s "checking whether --disable-new-dtags is supported by the linker... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int main (void) { return 0; }
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (use it since LD_LIBRARY_PATH is set)" >&5
-$as_echo "yes (use it since LD_LIBRARY_PATH is set)" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (use it since LD_LIBRARY_PATH is set)" >&5
+printf "%s\n" "yes (use it since LD_LIBRARY_PATH is set)" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
LDADD_FOR_TESTS_KLUDGE=""
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS="$saved_LDFLAGS"
fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
fi
ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
fi
fi
fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
fi
+else
+ CC="$ac_cv_prog_CC"
fi
fi
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "no acceptable C compiler found in \$PATH
See \`config.log' for more details" "$LINENO" 5; }
# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
+for ac_option in --version -v -V -qversion -version; do
{ { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_compiler_gnu=yes
-else
+else $as_nop
ac_compiler_gnu=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
if test $ac_compiler_gnu = yes; then
GCC=yes
else
GCC=
fi
-ac_test_CFLAGS=${CFLAGS+set}
+ac_test_CFLAGS=${CFLAGS+y}
ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
ac_cv_prog_cc_g=no
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
-else
+else $as_nop
CFLAGS=""
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
CFLAGS=
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c11=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+$ac_c_conftest_c11_program
+_ACEOF
+for ac_arg in '' -std=gnu11
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c11=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c11" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c11" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+ CC="$CC $ac_cv_prog_cc_c11"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+ ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c99_program
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c99" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+ CC="$CC $ac_cv_prog_cc_c99"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+ ac_prog_cc_stdc=c99
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c89_program
_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
do
CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_c89=$ac_arg
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
test "x$ac_cv_prog_cc_c89" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
-
fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c89" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+ CC="$CC $ac_cv_prog_cc_c89"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+ ac_prog_cc_stdc=c89
+fi
fi
ac_ext=c
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-ac_ext=c
+
+ ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+printf %s "checking whether $CC understands -c and -o together... " >&6; }
+if test ${am_cv_prog_cc_c_o+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
rm -f core conftest*
unset am_i
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+printf "%s\n" "$am_cv_prog_cc_c_o" >&6; }
if test "$am_cv_prog_cc_c_o" != yes; then
# Losing compiler, so override with the script.
# FIXME: It is wrong to rewrite CC.
depcc="$CC" am_compiler_list=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+printf %s "checking dependency style of $depcc... " >&6; }
+if test ${am_cv_CC_dependencies_compiler_type+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; }
CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
if
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ if test ${ac_cv_prog_CPP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ # Double quotes because $CC needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
do
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
Syntax error
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
break
fi
else
ac_cv_prog_CPP=$CPP
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
Syntax error
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details" "$LINENO" 5; }
fi
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
CXX=$CCC
else
if test -n "$ac_tool_prefix"; then
- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CXX"; then
ac_cv_prog_CXX="$CXX" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
CXX=$ac_cv_prog_CXX
if test -n "$CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
-$as_echo "$CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+printf "%s\n" "$CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
fi
if test -z "$CXX"; then
ac_ct_CXX=$CXX
- for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CXX"; then
ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
if test -n "$ac_ct_CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
-$as_echo "$ac_ct_CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+printf "%s\n" "$ac_ct_CXX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CXX=$ac_ct_CXX
fi
fi
# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
set X $ac_compile
ac_compiler=$2
for ac_option in --version -v -V -qversion; do
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
-$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
-if ${ac_cv_cxx_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5
+printf %s "checking whether the compiler supports GNU C++... " >&6; }
+if test ${ac_cv_cxx_compiler_gnu+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
return 0;
}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_compile "$LINENO"
+then :
ac_compiler_gnu=yes
-else
+else $as_nop
ac_compiler_gnu=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
-$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
if test $ac_compiler_gnu = yes; then
GXX=yes
else
GXX=
fi
-ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_test_CXXFLAGS=${CXXFLAGS+y}
ac_save_CXXFLAGS=$CXXFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
-$as_echo_n "checking whether $CXX accepts -g... " >&6; }
-if ${ac_cv_prog_cxx_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+printf %s "checking whether $CXX accepts -g... " >&6; }
+if test ${ac_cv_prog_cxx_g+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
ac_cxx_werror_flag=yes
ac_cv_prog_cxx_g=no
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_compile "$LINENO"
+then :
ac_cv_prog_cxx_g=yes
-else
+else $as_nop
CXXFLAGS=""
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_compile "$LINENO"
+then :
-else
+else $as_nop
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
CXXFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
+if ac_fn_cxx_try_compile "$LINENO"
+then :
ac_cv_prog_cxx_g=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
-$as_echo "$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+printf "%s\n" "$ac_cv_prog_cxx_g" >&6; }
+if test $ac_test_CXXFLAGS; then
CXXFLAGS=$ac_save_CXXFLAGS
elif test $ac_cv_prog_cxx_g = yes; then
if test "$GXX" = yes; then
CXXFLAGS=
fi
fi
+ac_prog_cxx_stdcxx=no
+if test x$ac_prog_cxx_stdcxx = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5
+printf %s "checking for $CXX option to enable C++11 features... " >&6; }
+if test ${ac_cv_prog_cxx_cxx11+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cxx_cxx11=no
+ac_save_CXX=$CXX
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_cxx_conftest_cxx11_program
+_ACEOF
+for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA
+do
+ CXX="$ac_save_CXX $ac_arg"
+ if ac_fn_cxx_try_compile "$LINENO"
+then :
+ ac_cv_prog_cxx_cxx11=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cxx_cxx11" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CXX=$ac_save_CXX
+fi
+
+if test "x$ac_cv_prog_cxx_cxx11" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cxx_cxx11" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5
+printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; }
+ CXX="$CXX $ac_cv_prog_cxx_cxx11"
+fi
+ ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11
+ ac_prog_cxx_stdcxx=cxx11
+fi
+fi
+if test x$ac_prog_cxx_stdcxx = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5
+printf %s "checking for $CXX option to enable C++98 features... " >&6; }
+if test ${ac_cv_prog_cxx_cxx98+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cxx_cxx98=no
+ac_save_CXX=$CXX
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_cxx_conftest_cxx98_program
+_ACEOF
+for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA
+do
+ CXX="$ac_save_CXX $ac_arg"
+ if ac_fn_cxx_try_compile "$LINENO"
+then :
+ ac_cv_prog_cxx_cxx98=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cxx_cxx98" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CXX=$ac_save_CXX
+fi
+
+if test "x$ac_cv_prog_cxx_cxx98" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cxx_cxx98" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5
+printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; }
+ CXX="$CXX $ac_cv_prog_cxx_cxx98"
+fi
+ ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98
+ ac_prog_cxx_stdcxx=cxx98
+fi
+fi
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
depcc="$CXX" am_compiler_list=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+printf %s "checking dependency style of $depcc... " >&6; }
+if test ${am_cv_CXX_dependencies_compiler_type+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+printf "%s\n" "$am_cv_CXX_dependencies_compiler_type" >&6; }
CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
if
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_GITLOG_TO_CHANGELOG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_GITLOG_TO_CHANGELOG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$GITLOG_TO_CHANGELOG"; then
ac_cv_prog_GITLOG_TO_CHANGELOG="$GITLOG_TO_CHANGELOG" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_GITLOG_TO_CHANGELOG="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
GITLOG_TO_CHANGELOG=$ac_cv_prog_GITLOG_TO_CHANGELOG
if test -n "$GITLOG_TO_CHANGELOG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GITLOG_TO_CHANGELOG" >&5
-$as_echo "$GITLOG_TO_CHANGELOG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GITLOG_TO_CHANGELOG" >&5
+printf "%s\n" "$GITLOG_TO_CHANGELOG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-VERSION_NUMBER=0x011200
+VERSION_NUMBER=0x011701
# We need to compile and run a program on the build machine. A
# newer version of that macro, we assume that it is also broken for
# autoconf 2.61 and thus we use a simple but usually sufficient
# approach.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cc for build" >&5
-$as_echo_n "checking for cc for build... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cc for build" >&5
+printf %s "checking for cc for build... " >&6; }
if test "$cross_compiling" = "yes"; then
CC_FOR_BUILD="${CC_FOR_BUILD-cc}"
else
CC_FOR_BUILD="${CC_FOR_BUILD-$CC}"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
-$as_echo "$CC_FOR_BUILD" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC_FOR_BUILD" >&5
+printf "%s\n" "$CC_FOR_BUILD" >&6; }
case `pwd` in
*\ * | *\ *)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
esac
+
ltmain="$ac_aux_dir/ltmain.sh"
# Backslashify metacharacters that are still active within
ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+printf %s "checking how to print strings... " >&6; }
# Test print first, because it will be a builtin if present.
if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
}
case "$ECHO" in
- printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
- print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
+ printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+printf "%s\n" "printf" >&6; } ;;
+ print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+printf "%s\n" "print -r" >&6; } ;;
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+printf "%s\n" "cat" >&6; } ;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+printf %s "checking for a sed that does not truncate output... " >&6; }
+if test ${ac_cv_path_SED+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
for ac_i in 1 2 3 4 5 6 7; do
ac_script="$ac_script$as_nl$ac_script"
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in sed gsed; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in sed gsed
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_SED="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
# Check for GNU $ac_path_SED
ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ printf %s 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo '' >> "conftest.nl"
+ printf "%s\n" '' >> "conftest.nl"
"$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+printf "%s\n" "$ac_cv_path_SED" >&6; }
SED="$ac_cv_path_SED"
rm -f conftest.sed
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
- then ac_cv_path_FGREP="$GREP -F"
- else
- if test -z "$FGREP"; then
- ac_path_FGREP_found=false
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+printf %s "checking for grep that handles long lines and -e... " >&6; }
+if test ${ac_cv_path_GREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
# Loop through the user's path and test for each of PROGNAME-LIST
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in fgrep; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in grep ggrep
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_FGREP" || continue
-# Check for GNU ac_path_FGREP and select it if it is found.
- # Check for GNU $ac_path_FGREP
-case `"$ac_path_FGREP" --version 2>&1` in
+ ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
*GNU*)
- ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ printf %s 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo 'FGREP' >> "conftest.nl"
- "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ printf "%s\n" 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
# Best one so far, save it but keep looking for a better one
- ac_cv_path_FGREP="$ac_path_FGREP"
- ac_path_FGREP_max=$ac_count
- fi
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+printf "%s\n" "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+printf %s "checking for egrep... " >&6; }
+if test ${ac_cv_path_EGREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in egrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+printf "%s\n" "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+printf %s "checking for fgrep... " >&6; }
+if test ${ac_cv_path_FGREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in fgrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
# 10*(2^10) chars as input seems more than enough
test $ac_count -gt 10 && break
done
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+printf "%s\n" "$ac_cv_path_FGREP" >&6; }
FGREP="$ac_cv_path_FGREP"
# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
+if test ${with_gnu_ld+y}
+then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
+else $as_nop
with_gnu_ld=no
fi
ac_prog=ld
if test "$GCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+printf %s "checking for ld used by $CC... " >&6; }
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return which upsets mingw
;;
esac
elif test "$with_gnu_ld" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+printf %s "checking for GNU ld... " >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+printf %s "checking for non-GNU ld... " >&6; }
fi
-if ${lt_cv_path_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${lt_cv_path_LD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -z "$LD"; then
lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
LD="$lt_cv_path_LD"
if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+printf %s "checking if the linker ($LD) is GNU ld... " >&6; }
+if test ${lt_cv_prog_gnu_ld+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# I'd rather use --version here, but apparently some GNU lds only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; }
with_gnu_ld=$lt_cv_prog_gnu_ld
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test ${lt_cv_path_NM+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$NM"; then
# Let the user override the test.
lt_cv_path_NM="$NM"
: ${lt_cv_path_NM=no}
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+printf "%s\n" "$lt_cv_path_NM" >&6; }
if test "$lt_cv_path_NM" != "no"; then
NM="$lt_cv_path_NM"
else
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DUMPBIN+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$DUMPBIN"; then
ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
DUMPBIN=$ac_cv_prog_DUMPBIN
if test -n "$DUMPBIN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+printf "%s\n" "$DUMPBIN" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DUMPBIN+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_DUMPBIN"; then
ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
if test -n "$ac_ct_DUMPBIN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+printf "%s\n" "$ac_ct_DUMPBIN" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
DUMPBIN=$ac_ct_DUMPBIN
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+printf %s "checking the name lister ($NM) interface... " >&6; }
+if test ${lt_cv_nm_interface+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
(eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
fi
rm -f conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+printf "%s\n" "$lt_cv_nm_interface" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+printf %s "checking whether ln -s works... " >&6; }
LN_S=$as_ln_s
if test "$LN_S" = "ln -s"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+printf "%s\n" "no, using $LN_S" >&6; }
fi
# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+printf %s "checking the maximum length of command line arguments... " >&6; }
+if test ${lt_cv_sys_max_cmd_len+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
i=0
teststring="ABCD"
fi
if test -n $lt_cv_sys_max_cmd_len ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5
+printf "%s\n" "none" >&6; }
fi
max_cmd_len=$lt_cv_sys_max_cmd_len
: ${MV="mv -f"}
: ${RM="rm -f"}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+printf %s "checking whether the shell understands some XSI constructs... " >&6; }
# Try some XSI features
xsi_shell=no
( _lt_dummy="a/b/c"
&& eval 'test $(( 1 + 1 )) -eq 2 \
&& test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
&& xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+printf "%s\n" "$xsi_shell" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+printf %s "checking whether the shell understands \"+=\"... " >&6; }
lt_shell_append=no
( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
>/dev/null 2>&1 \
&& lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+printf "%s\n" "$lt_shell_append" >&6; }
if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+printf %s "checking how to convert $build file names to $host format... " >&6; }
+if test ${lt_cv_to_host_file_cmd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $host in
*-*-mingw* )
case $build in
fi
to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+printf %s "checking how to convert $build file names to toolchain format... " >&6; }
+if test ${lt_cv_to_tool_file_cmd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
#assume ordinary cross tools, or native build.
lt_cv_to_tool_file_cmd=func_convert_file_noop
case $host in
fi
to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+printf %s "checking for $LD option to reload object files... " >&6; }
+if test ${lt_cv_ld_reload_flag+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ld_reload_flag='-r'
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+printf "%s\n" "$lt_cv_ld_reload_flag" >&6; }
reload_flag=$lt_cv_ld_reload_flag
case $reload_flag in
"" | " "*) ;;
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OBJDUMP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$OBJDUMP"; then
ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
OBJDUMP=$ac_cv_prog_OBJDUMP
if test -n "$OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+printf "%s\n" "$OBJDUMP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_OBJDUMP=$OBJDUMP
# Extract the first word of "objdump", so it can be a program name with args.
set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OBJDUMP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_OBJDUMP"; then
ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OBJDUMP="objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
if test -n "$ac_ct_OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+printf "%s\n" "$ac_ct_OBJDUMP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_OBJDUMP" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
OBJDUMP=$ac_ct_OBJDUMP
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+printf %s "checking how to recognize dependent libraries... " >&6; }
+if test ${lt_cv_deplibs_check_method+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_file_magic_cmd='$MAGIC_CMD'
lt_cv_file_magic_test_file=
lt_cv_deplibs_check_method='unknown'
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+printf "%s\n" "$lt_cv_deplibs_check_method" >&6; }
file_magic_glob=
want_nocaseglob=no
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DLLTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$DLLTOOL"; then
ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
DLLTOOL=$ac_cv_prog_DLLTOOL
if test -n "$DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+printf "%s\n" "$DLLTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_DLLTOOL=$DLLTOOL
# Extract the first word of "dlltool", so it can be a program name with args.
set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DLLTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_DLLTOOL"; then
ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DLLTOOL="dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
if test -n "$ac_ct_DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+printf "%s\n" "$ac_ct_DLLTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_DLLTOOL" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
DLLTOOL=$ac_ct_DLLTOOL
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+printf %s "checking how to associate runtime and link libraries... " >&6; }
+if test ${lt_cv_sharedlib_from_linklib_cmd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_sharedlib_from_linklib_cmd='unknown'
case $host_os in
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AR"; then
ac_cv_prog_AR="$AR" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+printf "%s\n" "$AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_AR"; then
ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+printf "%s\n" "$ac_ct_AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+printf %s "checking for archiver @FILE support... " >&6; }
+if test ${lt_cv_ar_at_file+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ar_at_file=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
echo conftest.$ac_objext > conftest.lst
lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
(eval $lt_ar_try) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if test "$ac_status" -eq 0; then
# Ensure the archiver fails upon bogus file names.
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
(eval $lt_ar_try) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if test "$ac_status" -ne 0; then
lt_cv_ar_at_file=@
rm -f conftest.* libconftest.a
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+printf "%s\n" "$lt_cv_ar_at_file" >&6; }
if test "x$lt_cv_ar_at_file" = xno; then
archiver_list_spec=
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$STRIP"; then
ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
STRIP=$ac_cv_prog_STRIP
if test -n "$STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+printf "%s\n" "$STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_STRIP=$STRIP
# Extract the first word of "strip", so it can be a program name with args.
set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_STRIP"; then
ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n "$ac_ct_STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+printf "%s\n" "$ac_ct_STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_STRIP" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
STRIP=$ac_ct_STRIP
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
RANLIB=$ac_cv_prog_RANLIB
if test -n "$RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+printf "%s\n" "$RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_RANLIB=$RANLIB
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_RANLIB"; then
ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
if test -n "$ac_ct_RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+printf "%s\n" "$ac_ct_RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_RANLIB" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
RANLIB=$ac_ct_RANLIB
# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+printf %s "checking command to parse $NM output from $compiler object... " >&6; }
+if test ${lt_cv_sys_global_symbol_pipe+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# These are sane defaults that work on at least a few old systems.
# [They come from Ultrix. What could be older than Ultrix?!! ;)]
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
# Now try to grab the symbols.
nlist=conftest.nm
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
(eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s "$nlist"; then
# Try sorting and uniquifying the output.
if sort "$nlist" | uniq > "$nlist"T; then
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
(eval $ac_link) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s conftest${ac_exeext}; then
pipe_works=yes
fi
lt_cv_sys_global_symbol_to_cdecl=
fi
if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+printf "%s\n" "ok" >&6; }
fi
# Response file support.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+printf %s "checking for sysroot... " >&6; }
# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
+if test ${with_sysroot+y}
+then :
withval=$with_sysroot;
-else
+else $as_nop
with_sysroot=no
fi
no|'')
;; #(
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+printf "%s\n" "${with_sysroot}" >&6; }
as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+printf "%s\n" "${lt_sysroot:-no}" >&6; }
# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
+if test ${enable_libtool_lock+y}
+then :
enableval=$enable_libtool_lock;
fi
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
case `/usr/bin/file conftest.$ac_objext` in
*ELF-32*)
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
if test "$lt_cv_prog_gnu_ld" = yes; then
case `/usr/bin/file conftest.$ac_objext` in
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
case `/usr/bin/file conftest.o` in
*32-bit*)
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+printf %s "checking whether the C compiler needs -belf... " >&6; }
+if test ${lt_cv_cc_needs_belf+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_cv_cc_needs_belf=yes
-else
+else $as_nop
lt_cv_cc_needs_belf=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+printf "%s\n" "$lt_cv_cc_needs_belf" >&6; }
if test x"$lt_cv_cc_needs_belf" != x"yes"; then
# this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
CFLAGS="$SAVE_CFLAGS"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
case `/usr/bin/file conftest.o` in
*64-bit*)
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_MANIFEST_TOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$MANIFEST_TOOL"; then
ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
if test -n "$MANIFEST_TOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+printf "%s\n" "$MANIFEST_TOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
# Extract the first word of "mt", so it can be a program name with args.
set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_MANIFEST_TOOL"; then
ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
if test -n "$ac_ct_MANIFEST_TOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_MANIFEST_TOOL" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
fi
test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if test ${lt_cv_path_mainfest_tool+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_path_mainfest_tool=no
echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
$MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
fi
rm -f conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; }
if test "x$lt_cv_path_mainfest_tool" != xyes; then
MANIFEST_TOOL=:
fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DSYMUTIL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$DSYMUTIL"; then
ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
DSYMUTIL=$ac_cv_prog_DSYMUTIL
if test -n "$DSYMUTIL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+printf "%s\n" "$DSYMUTIL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_DSYMUTIL=$DSYMUTIL
# Extract the first word of "dsymutil", so it can be a program name with args.
set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DSYMUTIL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_DSYMUTIL"; then
ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
if test -n "$ac_ct_DSYMUTIL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+printf "%s\n" "$ac_ct_DSYMUTIL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_DSYMUTIL" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
DSYMUTIL=$ac_ct_DSYMUTIL
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_NMEDIT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$NMEDIT"; then
ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
NMEDIT=$ac_cv_prog_NMEDIT
if test -n "$NMEDIT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+printf "%s\n" "$NMEDIT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_NMEDIT=$NMEDIT
# Extract the first word of "nmedit", so it can be a program name with args.
set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_NMEDIT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_NMEDIT"; then
ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_NMEDIT="nmedit"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
if test -n "$ac_ct_NMEDIT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+printf "%s\n" "$ac_ct_NMEDIT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_NMEDIT" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
NMEDIT=$ac_ct_NMEDIT
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LIPO+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$LIPO"; then
ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
LIPO=$ac_cv_prog_LIPO
if test -n "$LIPO"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+printf "%s\n" "$LIPO" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_LIPO=$LIPO
# Extract the first word of "lipo", so it can be a program name with args.
set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_LIPO+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_LIPO"; then
ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_LIPO="lipo"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
if test -n "$ac_ct_LIPO"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+printf "%s\n" "$ac_ct_LIPO" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_LIPO" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
LIPO=$ac_ct_LIPO
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$OTOOL"; then
ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
OTOOL=$ac_cv_prog_OTOOL
if test -n "$OTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+printf "%s\n" "$OTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_OTOOL=$OTOOL
# Extract the first word of "otool", so it can be a program name with args.
set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_OTOOL"; then
ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL="otool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
if test -n "$ac_ct_OTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+printf "%s\n" "$ac_ct_OTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_OTOOL" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
OTOOL=$ac_ct_OTOOL
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OTOOL64+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$OTOOL64"; then
ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
OTOOL64=$ac_cv_prog_OTOOL64
if test -n "$OTOOL64"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+printf "%s\n" "$OTOOL64" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_OTOOL64=$OTOOL64
# Extract the first word of "otool64", so it can be a program name with args.
set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OTOOL64+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_OTOOL64"; then
ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL64="otool64"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
if test -n "$ac_ct_OTOOL64"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+printf "%s\n" "$ac_ct_OTOOL64" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_OTOOL64" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
OTOOL64=$ac_ct_OTOOL64
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+printf %s "checking for -single_module linker flag... " >&6; }
+if test ${lt_cv_apple_cc_single_mod+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_apple_cc_single_mod=no
if test -z "${LT_MULTI_MODULE}"; then
# By default we will add the -single_module flag. You can override
rm -f conftest.*
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+printf %s "checking for -exported_symbols_list linker flag... " >&6; }
+if test ${lt_cv_ld_exported_symbols_list+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ld_exported_symbols_list=no
save_LDFLAGS=$LDFLAGS
echo "_main" > conftest.sym
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_cv_ld_exported_symbols_list=yes
-else
+else $as_nop
lt_cv_ld_exported_symbols_list=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS="$save_LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+printf %s "checking for -force_load linker flag... " >&6; }
+if test ${lt_cv_ld_force_load+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ld_force_load=no
cat > conftest.c << _LT_EOF
int forced_loaded() { return 2;}
rm -rf conftest.dSYM
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+printf "%s\n" "$lt_cv_ld_force_load" >&6; }
case $host_os in
rhapsody* | darwin1.[012])
_lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
;;
esac
-for ac_header in dlfcn.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
+if test "x$ac_cv_header_dlfcn_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h
fi
-done
-
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
set dummy ${ac_tool_prefix}as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AS+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AS"; then
ac_cv_prog_AS="$AS" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AS="${ac_tool_prefix}as"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
AS=$ac_cv_prog_AS
if test -n "$AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+printf "%s\n" "$AS" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_AS=$AS
# Extract the first word of "as", so it can be a program name with args.
set dummy as; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AS+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_AS+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_AS"; then
ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AS="as"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_AS=$ac_cv_prog_ac_ct_AS
if test -n "$ac_ct_AS"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+printf "%s\n" "$ac_ct_AS" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_AS" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
AS=$ac_ct_AS
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DLLTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$DLLTOOL"; then
ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
DLLTOOL=$ac_cv_prog_DLLTOOL
if test -n "$DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+printf "%s\n" "$DLLTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_DLLTOOL=$DLLTOOL
# Extract the first word of "dlltool", so it can be a program name with args.
set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DLLTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_DLLTOOL"; then
ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DLLTOOL="dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
if test -n "$ac_ct_DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+printf "%s\n" "$ac_ct_DLLTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_DLLTOOL" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
DLLTOOL=$ac_ct_DLLTOOL
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OBJDUMP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$OBJDUMP"; then
ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
OBJDUMP=$ac_cv_prog_OBJDUMP
if test -n "$OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+printf "%s\n" "$OBJDUMP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_OBJDUMP=$OBJDUMP
# Extract the first word of "objdump", so it can be a program name with args.
set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OBJDUMP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_OBJDUMP"; then
ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OBJDUMP="objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
if test -n "$ac_ct_OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+printf "%s\n" "$ac_ct_OBJDUMP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_OBJDUMP" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
OBJDUMP=$ac_ct_OBJDUMP
# Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
+if test ${enable_static+y}
+then :
enableval=$enable_static; p=${PACKAGE-default}
case $enableval in
yes) enable_static=yes ;;
IFS="$lt_save_ifs"
;;
esac
-else
+else $as_nop
enable_static=no
fi
# Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
+if test ${enable_shared+y}
+then :
enableval=$enable_shared; p=${PACKAGE-default}
case $enableval in
yes) enable_shared=yes ;;
IFS="$lt_save_ifs"
;;
esac
-else
+else $as_nop
enable_shared=yes
fi
# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
+if test ${with_pic+y}
+then :
withval=$with_pic; lt_p=${PACKAGE-default}
case $withval in
yes|no) pic_mode=$withval ;;
IFS="$lt_save_ifs"
;;
esac
-else
+else $as_nop
pic_mode=default
fi
# Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
+if test ${enable_fast_install+y}
+then :
enableval=$enable_fast_install; p=${PACKAGE-default}
case $enableval in
yes) enable_fast_install=yes ;;
IFS="$lt_save_ifs"
;;
esac
-else
+else $as_nop
enable_fast_install=yes
fi
setopt NO_GLOB_SUBST
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+printf %s "checking for objdir... " >&6; }
+if test ${lt_cv_objdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
rm -f .libs 2>/dev/null
mkdir .libs 2>/dev/null
if test -d .libs; then
fi
rmdir .libs 2>/dev/null
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+printf "%s\n" "$lt_cv_objdir" >&6; }
objdir=$lt_cv_objdir
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
+printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h
case $deplibs_check_method in
file_magic*)
if test "$file_magic_cmd" = '$MAGIC_CMD'; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+printf %s "checking for ${ac_tool_prefix}file... " >&6; }
+if test ${lt_cv_path_MAGIC_CMD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
if test -n "$MAGIC_CMD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+printf "%s\n" "$MAGIC_CMD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test -z "$lt_cv_path_MAGIC_CMD"; then
if test -n "$ac_tool_prefix"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+printf %s "checking for file... " >&6; }
+if test ${lt_cv_path_MAGIC_CMD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
if test -n "$MAGIC_CMD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+printf "%s\n" "$MAGIC_CMD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test ${lt_cv_prog_compiler_rtti_exceptions+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_rtti_exceptions=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+printf %s "checking for $compiler option to produce PIC... " >&6; }
+if test ${lt_cv_prog_compiler_pic+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; }
lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
#
# Check to make sure the PIC flag actually works.
#
if test -n "$lt_prog_compiler_pic"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test ${lt_cv_prog_compiler_pic_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_pic_works=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; }
if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
case $lt_prog_compiler_pic in
# Check to make sure the static flag actually works.
#
wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test ${lt_cv_prog_compiler_static_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_static_works=no
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
LDFLAGS="$save_LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; }
if test x"$lt_cv_prog_compiler_static_works" = xyes; then
:
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test ${lt_cv_prog_compiler_c_o+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_c_o=no
$RM -r conftest 2>/dev/null
mkdir conftest
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test ${lt_cv_prog_compiler_c_o+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_c_o=no
$RM -r conftest 2>/dev/null
mkdir conftest
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
hard_links="nottested"
if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
# do not overwrite the value of need_locks provided by the user
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+printf %s "checking if we can lock with hard links... " >&6; }
hard_links=yes
$RM conftest*
ln conftest.a conftest.b 2>/dev/null && hard_links=no
touch conftest.a
ln conftest.a conftest.b 2>&5 || hard_links=no
ln conftest.a conftest.b 2>/dev/null && hard_links=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+printf "%s\n" "$hard_links" >&6; }
if test "$hard_links" = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+printf "%s\n" "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
need_locks=warn
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
runpath_var=
allow_undefined_flag=
if test "${lt_cv_aix_libpath+set}" = set; then
aix_libpath=$lt_cv_aix_libpath
else
- if ${lt_cv_aix_libpath_+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_aix_libpath_+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath_"; then
lt_cv_aix_libpath_="/usr/lib:/lib"
if test "${lt_cv_aix_libpath+set}" = set; then
aix_libpath=$lt_cv_aix_libpath
else
- if ${lt_cv_aix_libpath_+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_aix_libpath_+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath_"; then
lt_cv_aix_libpath_="/usr/lib:/lib"
# Older versions of the 11.00 compiler do not understand -b yet
# (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+printf %s "checking if $CC understands -b... " >&6; }
+if test ${lt_cv_prog_compiler__b+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler__b=no
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -b"
LDFLAGS="$save_LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+printf "%s\n" "$lt_cv_prog_compiler__b" >&6; }
if test x"$lt_cv_prog_compiler__b" = xyes; then
archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
# work, assume that -exports_file does not work either and
# implicitly export all symbols.
# This should be the same for all languages, so no per-tag cache variable.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if test ${lt_cv_irix_exported_symbol+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int foo (void) { return 0; }
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_cv_irix_exported_symbol=yes
-else
+else $as_nop
lt_cv_irix_exported_symbol=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS="$save_LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
if test "$lt_cv_irix_exported_symbol" = yes; then
archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+printf "%s\n" "$ld_shlibs" >&6; }
test "$ld_shlibs" = no && can_build_shared=no
with_gnu_ld=$with_gnu_ld
# Test whether the compiler implicitly links with -lc since on some
# systems, -lgcc has to come before -lc. If gcc already passes -lc
# to ld, don't add -lc before -lgcc.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+printf %s "checking whether -lc should be explicitly linked in... " >&6; }
+if test ${lt_cv_archive_cmds_need_lc+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
$RM conftest*
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } 2>conftest.err; then
soname=conftest
lib=conftest
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
(eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
then
lt_cv_archive_cmds_need_lc=no
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; }
archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+printf %s "checking dynamic linker characteristics... " >&6; }
if test "$GCC" = yes; then
case $host_os in
shlibpath_overrides_runpath=no
# Some binutils ld are patched to set DT_RUNPATH
- if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_shlibpath_overrides_runpath+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_shlibpath_overrides_runpath=no
save_LDFLAGS=$LDFLAGS
save_libdir=$libdir
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+if ac_fn_c_try_link "$LINENO"
+then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null
+then :
lt_cv_shlibpath_overrides_runpath=yes
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$save_LDFLAGS
libdir=$save_libdir
dynamic_linker=no
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+printf "%s\n" "$dynamic_linker" >&6; }
test "$dynamic_linker" = no && can_build_shared=no
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+printf %s "checking how to hardcode library paths into programs... " >&6; }
hardcode_action=
if test -n "$hardcode_libdir_flag_spec" ||
test -n "$runpath_var" ||
# directories.
hardcode_action=unsupported
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+printf "%s\n" "$hardcode_action" >&6; }
if test "$hardcode_action" = relink ||
test "$inherit_rpath" = yes; then
darwin*)
# if libdl is installed we need to link against it
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+printf %s "checking for dlopen in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dl_dlopen=yes
-else
+else $as_nop
ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
+else $as_nop
lt_cv_dlopen="dyld"
lt_cv_dlopen_libs=
*)
ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
+if test "x$ac_cv_func_shl_load" = xyes
+then :
lt_cv_dlopen="shl_load"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+printf %s "checking for shl_load in -ldld... " >&6; }
+if test ${ac_cv_lib_dld_shl_load+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char shl_load ();
int
-main ()
+main (void)
{
return shl_load ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dld_shl_load=yes
-else
+else $as_nop
ac_cv_lib_dld_shl_load=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes
+then :
lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
+else $as_nop
ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
+if test "x$ac_cv_func_dlopen" = xyes
+then :
lt_cv_dlopen="dlopen"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+printf %s "checking for dlopen in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dl_dlopen=yes
-else
+else $as_nop
ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+printf %s "checking for dlopen in -lsvld... " >&6; }
+if test ${ac_cv_lib_svld_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsvld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_svld_dlopen=yes
-else
+else $as_nop
ac_cv_lib_svld_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes
+then :
lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+printf %s "checking for dld_link in -ldld... " >&6; }
+if test ${ac_cv_lib_dld_dld_link+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dld_link ();
int
-main ()
+main (void)
{
return dld_link ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dld_dld_link=yes
-else
+else $as_nop
ac_cv_lib_dld_dld_link=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes
+then :
lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
fi
save_LIBS="$LIBS"
LIBS="$lt_cv_dlopen_libs $LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+printf %s "checking whether a program can dlopen itself... " >&6; }
+if test ${lt_cv_dlopen_self+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "$cross_compiling" = yes; then :
lt_cv_dlopen_self=cross
else
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
(eval $ac_link) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
(./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+printf "%s\n" "$lt_cv_dlopen_self" >&6; }
if test "x$lt_cv_dlopen_self" = xyes; then
wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+printf %s "checking whether a statically linked program can dlopen itself... " >&6; }
+if test ${lt_cv_dlopen_self_static+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "$cross_compiling" = yes; then :
lt_cv_dlopen_self_static=cross
else
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
(eval $ac_link) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
(./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+printf "%s\n" "$lt_cv_dlopen_self_static" >&6; }
fi
CPPFLAGS="$save_CPPFLAGS"
striplib=
old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+printf %s "checking whether stripping libraries is possible... " >&6; }
if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
# FIXME - insert some real tests, host_os isn't really good enough
case $host_os in
if test -n "$STRIP" ; then
striplib="$STRIP -x"
old_striplib="$STRIP -S"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
;;
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
esac
fi
# Report which library types will actually be built
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+printf %s "checking if libtool supports shared libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+printf "%s\n" "$can_build_shared" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+printf %s "checking whether to build shared libraries... " >&6; }
test "$can_build_shared" = "no" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
fi
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+printf "%s\n" "$enable_shared" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+printf %s "checking whether to build static libraries... " >&6; }
# Make sure either enable_shared or enable_static is yes.
test "$enable_shared" = yes || enable_static=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+printf "%s\n" "$enable_static" >&6; }
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
-$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+printf %s "checking how to run the C++ preprocessor... " >&6; }
if test -z "$CXXCPP"; then
- if ${ac_cv_prog_CXXCPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CXXCPP needs to be expanded
- for CXXCPP in "$CXX -E" "/lib/cpp"
+ if test ${ac_cv_prog_CXXCPP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ # Double quotes because $CXX needs to be expanded
+ for CXXCPP in "$CXX -E" cpp /lib/cpp
do
ac_preproc_ok=false
for ac_cxx_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
Syntax error
_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
+if ac_fn_cxx_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
+if ac_fn_cxx_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
break
fi
else
ac_cv_prog_CXXCPP=$CXXCPP
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
-$as_echo "$CXXCPP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+printf "%s\n" "$CXXCPP" >&6; }
ac_preproc_ok=false
for ac_cxx_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
Syntax error
_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
+if ac_fn_cxx_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if ac_fn_cxx_try_cpp "$LINENO"; then :
+if ac_fn_cxx_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
See \`config.log' for more details" "$LINENO" 5; }
fi
# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
+if test ${with_gnu_ld+y}
+then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
+else $as_nop
with_gnu_ld=no
fi
ac_prog=ld
if test "$GCC" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+printf %s "checking for ld used by $CC... " >&6; }
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return which upsets mingw
;;
esac
elif test "$with_gnu_ld" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+printf %s "checking for GNU ld... " >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+printf %s "checking for non-GNU ld... " >&6; }
fi
-if ${lt_cv_path_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${lt_cv_path_LD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -z "$LD"; then
lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
LD="$lt_cv_path_LD"
if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+printf %s "checking if the linker ($LD) is GNU ld... " >&6; }
+if test ${lt_cv_prog_gnu_ld+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# I'd rather use --version here, but apparently some GNU lds only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; }
with_gnu_ld=$lt_cv_prog_gnu_ld
fi
# PORTME: fill in a description of your system's C++ link characteristics
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
ld_shlibs_CXX=yes
case $host_os in
aix3*)
if test "${lt_cv_aix_libpath+set}" = set; then
aix_libpath=$lt_cv_aix_libpath
else
- if ${lt_cv_aix_libpath__CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_aix_libpath__CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"
+then :
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath__CXX"; then
lt_cv_aix_libpath__CXX="/usr/lib:/lib"
if test "${lt_cv_aix_libpath+set}" = set; then
aix_libpath=$lt_cv_aix_libpath
else
- if ${lt_cv_aix_libpath__CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_aix_libpath__CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
+if ac_fn_cxx_try_link "$LINENO"
+then :
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath__CXX"; then
lt_cv_aix_libpath__CXX="/usr/lib:/lib"
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+printf "%s\n" "$ld_shlibs_CXX" >&6; }
test "$ld_shlibs_CXX" = no && can_build_shared=no
GCC_CXX="$GXX"
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
# Parse the compiler output and extract the necessary
# objects, libraries and library flags.
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+printf %s "checking for $compiler option to produce PIC... " >&6; }
+if test ${lt_cv_prog_compiler_pic_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
+printf "%s\n" "$lt_cv_prog_compiler_pic_CXX" >&6; }
lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
#
# Check to make sure the PIC flag actually works.
#
if test -n "$lt_prog_compiler_pic_CXX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if test ${lt_cv_prog_compiler_pic_works_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_pic_works_CXX=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+printf "%s\n" "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
case $lt_prog_compiler_pic_CXX in
# Check to make sure the static flag actually works.
#
wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test ${lt_cv_prog_compiler_static_works_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_static_works_CXX=no
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
LDFLAGS="$save_LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+printf "%s\n" "$lt_cv_prog_compiler_static_works_CXX" >&6; }
if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
:
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test ${lt_cv_prog_compiler_c_o_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_c_o_CXX=no
$RM -r conftest 2>/dev/null
mkdir conftest
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test ${lt_cv_prog_compiler_c_o_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_c_o_CXX=no
$RM -r conftest 2>/dev/null
mkdir conftest
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+printf "%s\n" "$lt_cv_prog_compiler_c_o_CXX" >&6; }
hard_links="nottested"
if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
# do not overwrite the value of need_locks provided by the user
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+printf %s "checking if we can lock with hard links... " >&6; }
hard_links=yes
$RM conftest*
ln conftest.a conftest.b 2>/dev/null && hard_links=no
touch conftest.a
ln conftest.a conftest.b 2>&5 || hard_links=no
ln conftest.a conftest.b 2>/dev/null && hard_links=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+printf "%s\n" "$hard_links" >&6; }
if test "$hard_links" = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+printf "%s\n" "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
need_locks=warn
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
-$as_echo "$ld_shlibs_CXX" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+printf "%s\n" "$ld_shlibs_CXX" >&6; }
test "$ld_shlibs_CXX" = no && can_build_shared=no
with_gnu_ld_CXX=$with_gnu_ld
# Test whether the compiler implicitly links with -lc since on some
# systems, -lgcc has to come before -lc. If gcc already passes -lc
# to ld, don't add -lc before -lgcc.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+printf %s "checking whether -lc should be explicitly linked in... " >&6; }
+if test ${lt_cv_archive_cmds_need_lc_CXX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
$RM conftest*
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } 2>conftest.err; then
soname=conftest
lib=conftest
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
(eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
then
lt_cv_archive_cmds_need_lc_CXX=no
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+printf "%s\n" "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+printf %s "checking dynamic linker characteristics... " >&6; }
library_names_spec=
libname_spec='lib$name'
shlibpath_overrides_runpath=no
# Some binutils ld are patched to set DT_RUNPATH
- if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_shlibpath_overrides_runpath+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_shlibpath_overrides_runpath=no
save_LDFLAGS=$LDFLAGS
save_libdir=$libdir
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
- if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+if ac_fn_cxx_try_link "$LINENO"
+then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null
+then :
lt_cv_shlibpath_overrides_runpath=yes
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$save_LDFLAGS
libdir=$save_libdir
dynamic_linker=no
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+printf "%s\n" "$dynamic_linker" >&6; }
test "$dynamic_linker" = no && can_build_shared=no
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+printf %s "checking how to hardcode library paths into programs... " >&6; }
hardcode_action_CXX=
if test -n "$hardcode_libdir_flag_spec_CXX" ||
test -n "$runpath_var_CXX" ||
# directories.
hardcode_action_CXX=unsupported
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
-$as_echo "$hardcode_action_CXX" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+printf "%s\n" "$hardcode_action_CXX" >&6; }
if test "$hardcode_action_CXX" = relink ||
test "$inherit_rpath_CXX" = yes; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
set dummy ${ac_tool_prefix}windres; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_RC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$RC"; then
ac_cv_prog_RC="$RC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_RC="${ac_tool_prefix}windres"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
RC=$ac_cv_prog_RC
if test -n "$RC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RC" >&5
-$as_echo "$RC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RC" >&5
+printf "%s\n" "$RC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
ac_ct_RC=$RC
# Extract the first word of "windres", so it can be a program name with args.
set dummy windres; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_RC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_RC"; then
ac_cv_prog_ac_ct_RC="$ac_ct_RC" # Let the user override the test.
else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RC="windres"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
ac_ct_RC=$ac_cv_prog_ac_ct_RC
if test -n "$ac_ct_RC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5
-$as_echo "$ac_ct_RC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RC" >&5
+printf "%s\n" "$ac_ct_RC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_RC" = x; then
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
RC=$ac_ct_RC
;;
*-apple-darwin*)
-$as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h
-$as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h
+printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h
;;
esac
fi
+#
+# Specify how we support our local modification of libtool for Windows
+# 64-bit. Options are:
+#
+# (1) apply: when appying patch fails, it results failure of entire build
+# (2) never: never apply the patch (no try)
+# (3) try: use patched if it goes well, use original if fails
+#
+
+# Check whether --with-libtool-modification was given.
+if test ${with_libtool_modification+y}
+then :
+ withval=$with_libtool_modification; build_libtool_modification=$withval
+else $as_nop
+ build_libtool_modification=never
+fi
+
+
+#
+# Apply a patch (locally maintained one of ours) to libtool
+#
+case $host in
+ x86_64-*mingw32*)
+ac_config_commands="$ac_config_commands libtool-patch"
+
+ ;;
+ *)
+ ;;
+esac
+
GPG_DEFAULT=no
GPGSM_DEFAULT=no
GPGCONF_DEFAULT=no
have_macos_system=no
build_w32_glib=no
build_w32_qt=no
-available_languages="cl cpp python qt"
+available_languages="cl cpp python qt qt5 qt6"
default_languages="cl cpp python qt"
case "${host}" in
x86_64-*mingw32*)
#component_system='COM+'
# Check whether --enable-glibtest was given.
-if test "${enable_glibtest+set}" = set; then :
+if test ${enable_glibtest+y}
+then :
enableval=$enable_glibtest;
-else
+else $as_nop
enable_glibtest=yes
fi
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKG_CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+printf "%s\n" "$PKG_CONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
fi
min_glib_version=2.0.0
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5
-$as_echo_n "checking for GLIB - version >= $min_glib_version... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GLIB - version >= $min_glib_version" >&5
+printf %s "checking for GLIB - version >= $min_glib_version... " >&6; }
if test x$PKG_CONFIG != xno ; then
## don't try to run the test against uninstalled libtool libs
CFLAGS="$CFLAGS $GLIB_CFLAGS"
LIBS="$GLIB_LIBS $LIBS"
rm -f conf.glibtest
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
echo $ac_n "cross compiling; assumed OK... $ac_c"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
-else
+else $as_nop
no_glib=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
if test "x$no_glib" = x ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5
-$as_echo "yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&5
+printf "%s\n" "yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version)" >&6; }
:
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
if test "$PKG_CONFIG" = "no" ; then
echo "*** A new enough version of pkg-config was not found."
echo "*** See https://www.freedesktop.org/software/pkgconfig/"
#include <stdio.h>
int
-main ()
+main (void)
{
return ((glib_major_version) || (glib_minor_version) || (glib_micro_version));
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding GLIB or finding the wrong"
echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
echo "***"
echo "*** If you have an old version installed, it is best to remove it, although"
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
-else
+else $as_nop
echo "*** The test program failed to compile or link. See the file config.log for the"
echo "*** exact error that occurred. This usually means GLIB is incorrectly installed."
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
rm -f conf.glibtest
# Check whether --enable-w32-glib was given.
-if test "${enable_w32_glib+set}" = set; then :
+if test ${enable_w32_glib+y}
+then :
enableval=$enable_w32_glib; build_w32_glib=$enableval
fi
if test "$have_dosish_system" = yes; then
-$as_echo "#define HAVE_DOSISH_SYSTEM 1" >>confdefs.h
+printf "%s\n" "#define HAVE_DOSISH_SYSTEM 1" >>confdefs.h
fi
if test "$have_dosish_system" = yes; then
if test "$have_w32_system" = yes; then
-$as_echo "#define HAVE_W32_SYSTEM 1" >>confdefs.h
+printf "%s\n" "#define HAVE_W32_SYSTEM 1" >>confdefs.h
fi
if test "$have_w32_system" = yes; then
if test "$have_w64_system" = yes; then
-$as_echo "#define HAVE_W64_SYSTEM 1" >>confdefs.h
+printf "%s\n" "#define HAVE_W64_SYSTEM 1" >>confdefs.h
fi
if test "$have_w64_system" = yes; then
if test "$have_android_system" = yes; then
-$as_echo "#define HAVE_ANDROID_SYSTEM 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ANDROID_SYSTEM 1" >>confdefs.h
fi
if test "$have_android_system" = yes; then
if test "$have_macos_system" = yes; then
-$as_echo "#define HAVE_MACOS_SYSTEM 1" >>confdefs.h
+printf "%s\n" "#define HAVE_MACOS_SYSTEM 1" >>confdefs.h
fi
if test "$have_macos_system" = yes; then
# Check whether --enable-fixed-path was given.
-if test "${enable_fixed_path+set}" = set; then :
+if test ${enable_fixed_path+y}
+then :
enableval=$enable_fixed_path; fixed_search_path="$enableval"
-else
+else $as_nop
fixed_search_path=""
fi
if test x$fixed_search_path != x ; then
-cat >>confdefs.h <<_ACEOF
-#define FIXED_SEARCH_PATH "$fixed_search_path"
+printf "%s\n" "#define FIXED_SEARCH_PATH \"$fixed_search_path\"" >>confdefs.h
+
+fi
+
+# Option --enable-no-direct-extern-access
+#
+# Some distributions build Qt 6 with -mno-direct-extern-access. Libraries and
+# applications using Qt then must also be build with this flag. As workaround
+# for a bug in Qt's pkgconfig files which don't have this flag we allow
+# building with this flag explicitly.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts -mno-direct-extern-access" >&5
+printf %s "checking whether C++ compiler accepts -mno-direct-extern-access... " >&6; }
+if test ${ax_cv_check_cxxflags__Werror__mno_direct_extern_access+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ ax_check_save_flags=$CXXFLAGS
+ CXXFLAGS="$CXXFLAGS -Werror -mno-direct-extern-access"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"
+then :
+ ax_cv_check_cxxflags__Werror__mno_direct_extern_access=yes
+else $as_nop
+ ax_cv_check_cxxflags__Werror__mno_direct_extern_access=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ CXXFLAGS=$ax_check_save_flags
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cxxflags__Werror__mno_direct_extern_access" >&5
+printf "%s\n" "$ax_cv_check_cxxflags__Werror__mno_direct_extern_access" >&6; }
+if test "x$ax_cv_check_cxxflags__Werror__mno_direct_extern_access" = xyes
+then :
+ have_no_direct_extern_access="yes"
+else $as_nop
+ have_no_direct_extern_access="no"
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+# Check whether --enable-no-direct-extern-access was given.
+if test ${enable_no_direct_extern_access+y}
+then :
+ enableval=$enable_no_direct_extern_access; use_no_direct_extern_access="$enableval"
+else $as_nop
+ use_no_direct_extern_access=""
fi
+
# Note: You need to declare all possible languages also in
# lang/Makefile.am's DIST_SUBDIRS.
# Check whether --enable-languages was given.
-if test "${enable_languages+set}" = set; then :
+if test ${enable_languages+y}
+then :
enableval=$enable_languages; enabled_languages=`echo $enableval | \
tr ',:' ' ' | tr 'A-Z' 'a-z' | \
sed 's/c++/cpp/'`
-else
+else $as_nop
enabled_languages="maybe"
fi
fi
done
-# Enable C++ 11 if cpp language is requested
+# Check whether Qt5 and/or Qt6 are enabled explicitly
+want_qt5="no";
-name="cpp"
+name="qt5"
list=$enabled_languages
found=0
done
if test "$found" = "1"; then
- ax_cxx_compile_cxx11_required=false
- ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- ac_success=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5
-$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; }
-if ${ax_cv_cxx_compile_cxx11+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ want_qt5="yes";
+ # Remove qt5; further down qt will be added
+ enabled_languages=$(echo $enabled_languages | sed 's/qt5//')
+fi
+want_qt6="no";
+name="qt6"
+list=$enabled_languages
+found=0
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
+for n in $list; do
+ if test "x$name" = "x$n"; then
+ found=1
+ fi
+done
-#ifndef __cplusplus
+if test "$found" = "1"; then
+ want_qt6="yes";
+ # Remove qt6; further down qt will be added
+ enabled_languages=$(echo $enabled_languages | sed 's/qt6//')
+fi
+if test "$want_qt5" = "yes" -a "$want_qt6" = "yes"; then
+ as_fn_error $? "
+***
+*** The bindings for Qt5 and Qt6 cannot be built simultaneously.
+***" "$LINENO" 5
+fi
-#error "This is not a C++ compiler"
+# Ensure that pkg-config is available for all calls of FIND_QT5/FIND_QT6
-#elif __cplusplus < 201103L
-#error "This is not a C++11 compiler"
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKG_CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
-#else
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+printf "%s\n" "$PKG_CONFIG" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
-namespace cxx11
-{
- namespace test_static_assert
- {
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKG_CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
- template <typename T>
- struct check
- {
- static_assert(sizeof(int) <= sizeof(T), "not big enough");
- };
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
- }
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
- namespace test_final_override
- {
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ PKG_CONFIG=""
+ fi
- struct Base
- {
- virtual void f() {}
- };
+fi
- struct Derived : public Base
- {
- virtual void f() override {}
- };
+# If the generic qt is enabled, then check for Qt5 or Qt6 (in this order)
- }
+name="qt"
+list=$enabled_languages
+found=0
- namespace test_double_right_angle_brackets
- {
+for n in $list; do
+ if test "x$name" = "x$n"; then
+ found=1
+ fi
+done
- template < typename T >
- struct check {};
+if test "$found" = "1"; then
+ # Remove the generic qt (qt5 and qt6 have already been removed)
+ enabled_languages=$(echo $enabled_languages | sed 's/qt//')
- typedef check<void> single_type;
- typedef check<check<void>> double_type;
- typedef check<check<check<void>>> triple_type;
- typedef check<check<check<check<void>>>> quadruple_type;
+ have_qt5_libs="no";
- }
- namespace test_decltype
- {
+pkg_failed=no
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GPGME_QT5" >&5
+printf %s "checking for GPGME_QT5... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT5_CFLAGS"; then
+ pkg_cv_GPGME_QT5_CFLAGS="$GPGME_QT5_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Core >= 5.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt5Core >= 5.0.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT5_CFLAGS=`$PKG_CONFIG --cflags "Qt5Core >= 5.0.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT5_LIBS"; then
+ pkg_cv_GPGME_QT5_LIBS="$GPGME_QT5_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Core >= 5.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt5Core >= 5.0.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT5_LIBS=`$PKG_CONFIG --libs "Qt5Core >= 5.0.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GPGME_QT5_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt5Core >= 5.0.0"`
+ else
+ GPGME_QT5_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt5Core >= 5.0.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GPGME_QT5_PKG_ERRORS" >&5
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ have_qt5_libs="no"
+elif test $pkg_failed = untried; then
+ have_qt5_libs="no"
+else
+ GPGME_QT5_CFLAGS=$pkg_cv_GPGME_QT5_CFLAGS
+ GPGME_QT5_LIBS=$pkg_cv_GPGME_QT5_LIBS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ have_qt5_libs="yes"
+fi
+
+
+pkg_failed=no
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GPGME_QT5TEST" >&5
+printf %s "checking for GPGME_QT5TEST... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT5TEST_CFLAGS"; then
+ pkg_cv_GPGME_QT5TEST_CFLAGS="$GPGME_QT5TEST_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Test >= 5.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt5Test >= 5.0.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT5TEST_CFLAGS=`$PKG_CONFIG --cflags "Qt5Test >= 5.0.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT5TEST_LIBS"; then
+ pkg_cv_GPGME_QT5TEST_LIBS="$GPGME_QT5TEST_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Test >= 5.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt5Test >= 5.0.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT5TEST_LIBS=`$PKG_CONFIG --libs "Qt5Test >= 5.0.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GPGME_QT5TEST_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt5Test >= 5.0.0"`
+ else
+ GPGME_QT5TEST_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt5Test >= 5.0.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GPGME_QT5TEST_PKG_ERRORS" >&5
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ have_qt5test_libs="no"
+elif test $pkg_failed = untried; then
+ have_qt5test_libs="no"
+else
+ GPGME_QT5TEST_CFLAGS=$pkg_cv_GPGME_QT5TEST_CFLAGS
+ GPGME_QT5TEST_LIBS=$pkg_cv_GPGME_QT5TEST_LIBS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ have_qt5test_libs="yes"
+fi
+
+ if ! test "$have_w32_system" = yes; then
+ if "$PKG_CONFIG" --variable qt_config Qt5Core | grep -q "reduce_relocations"; then
+ GPGME_QT5_CFLAGS="$GPGME_QT5_CFLAGS -fpic"
+ fi
+ fi
+ if test "$have_qt5_libs" = "yes"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}moc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}moc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_MOC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$MOC"; then
+ ac_cv_prog_MOC="$MOC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MOC="${ac_tool_prefix}moc"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MOC=$ac_cv_prog_MOC
+if test -n "$MOC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MOC" >&5
+printf "%s\n" "$MOC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MOC"; then
+ ac_ct_MOC=$MOC
+ # Extract the first word of "moc", so it can be a program name with args.
+set dummy moc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_MOC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_MOC"; then
+ ac_cv_prog_ac_ct_MOC="$ac_ct_MOC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_MOC="moc"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MOC=$ac_cv_prog_ac_ct_MOC
+if test -n "$ac_ct_MOC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MOC" >&5
+printf "%s\n" "$ac_ct_MOC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_MOC" = x; then
+ MOC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MOC=$ac_ct_MOC
+ fi
+else
+ MOC="$ac_cv_prog_MOC"
+fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking moc version" >&5
+printf %s "checking moc version... " >&6; }
+ mocversion=`$MOC -v 2>&1`
+ mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc 5"`
+ if test x"$mocversiongrep" != x"$mocversion"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ # moc was not the qt5 one, try with moc-qt5
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}moc-qt5", so it can be a program name with args.
+set dummy ${ac_tool_prefix}moc-qt5; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_MOC2+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$MOC2"; then
+ ac_cv_prog_MOC2="$MOC2" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MOC2="${ac_tool_prefix}moc-qt5"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MOC2=$ac_cv_prog_MOC2
+if test -n "$MOC2"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MOC2" >&5
+printf "%s\n" "$MOC2" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MOC2"; then
+ ac_ct_MOC2=$MOC2
+ # Extract the first word of "moc-qt5", so it can be a program name with args.
+set dummy moc-qt5; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_MOC2+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_MOC2"; then
+ ac_cv_prog_ac_ct_MOC2="$ac_ct_MOC2" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_MOC2="moc-qt5"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MOC2=$ac_cv_prog_ac_ct_MOC2
+if test -n "$ac_ct_MOC2"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MOC2" >&5
+printf "%s\n" "$ac_ct_MOC2" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_MOC2" = x; then
+ MOC2=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MOC2=$ac_ct_MOC2
+ fi
+else
+ MOC2="$ac_cv_prog_MOC2"
+fi
+
+ mocversion=`$MOC2 -v 2>&1`
+ mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc-qt5 5|moc 5"`
+ if test x"$mocversiongrep" != x"$mocversion"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}qtchooser", so it can be a program name with args.
+set dummy ${ac_tool_prefix}qtchooser; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_QTCHOOSER+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$QTCHOOSER"; then
+ ac_cv_prog_QTCHOOSER="$QTCHOOSER" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_QTCHOOSER="${ac_tool_prefix}qtchooser"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+QTCHOOSER=$ac_cv_prog_QTCHOOSER
+if test -n "$QTCHOOSER"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $QTCHOOSER" >&5
+printf "%s\n" "$QTCHOOSER" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_QTCHOOSER"; then
+ ac_ct_QTCHOOSER=$QTCHOOSER
+ # Extract the first word of "qtchooser", so it can be a program name with args.
+set dummy qtchooser; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_QTCHOOSER+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_QTCHOOSER"; then
+ ac_cv_prog_ac_ct_QTCHOOSER="$ac_ct_QTCHOOSER" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_QTCHOOSER="qtchooser"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_QTCHOOSER=$ac_cv_prog_ac_ct_QTCHOOSER
+if test -n "$ac_ct_QTCHOOSER"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_QTCHOOSER" >&5
+printf "%s\n" "$ac_ct_QTCHOOSER" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_QTCHOOSER" = x; then
+ QTCHOOSER=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ QTCHOOSER=$ac_ct_QTCHOOSER
+ fi
+else
+ QTCHOOSER="$ac_cv_prog_QTCHOOSER"
+fi
+
+ qt5tooldir=`QT_SELECT=qt5 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2`
+ mocversion=`$qt5tooldir/moc -v 2>&1`
+ mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc 5"`
+ if test x"$mocversiongrep" != x"$mocversion"; then
+ # no valid moc found
+ have_qt5_libs="no";
+ else
+ MOC=$qt5tooldir/moc
+ fi
+ else
+ MOC=$MOC2
+ fi
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $mocversion" >&5
+printf "%s\n" "$mocversion" >&6; }
+ fi
+ if test "$have_qt5_libs" = "yes"; then
+ OLDCPPFLAGS=$CPPFLAGS
+ CPPFLAGS=$GPGME_QT5_CFLAGS
+ OLDLIBS=$LIBS
+ LIBS=$GPGME_QT5_LIBS
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a simple qt program can be built" >&5
+printf %s "checking whether a simple qt program can be built... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <QCoreApplication>
+ int main (int argc, char **argv) {
+ QCoreApplication app(argc, argv);
+ app.exec();
+ }
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"
+then :
+ have_qt5_libs='yes'
+else $as_nop
+ have_qt5_libs='no'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_qt5_libs" >&5
+printf "%s\n" "$have_qt5_libs" >&6; }
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ CPPFLAGS=$OLDCPPFLAGS
+ LIBS=$OLDLIBS
+ fi
+
+ if test "$have_qt5_libs" = "yes"; then
+ want_qt5="yes";
+ else
+
+ have_qt6_libs="no";
+
+
+pkg_failed=no
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GPGME_QT6" >&5
+printf %s "checking for GPGME_QT6... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT6_CFLAGS"; then
+ pkg_cv_GPGME_QT6_CFLAGS="$GPGME_QT6_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Core >= 6.4.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt6Core >= 6.4.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT6_CFLAGS=`$PKG_CONFIG --cflags "Qt6Core >= 6.4.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT6_LIBS"; then
+ pkg_cv_GPGME_QT6_LIBS="$GPGME_QT6_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Core >= 6.4.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt6Core >= 6.4.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT6_LIBS=`$PKG_CONFIG --libs "Qt6Core >= 6.4.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GPGME_QT6_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt6Core >= 6.4.0"`
+ else
+ GPGME_QT6_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt6Core >= 6.4.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GPGME_QT6_PKG_ERRORS" >&5
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ have_qt6_libs="no"
+elif test $pkg_failed = untried; then
+ have_qt6_libs="no"
+else
+ GPGME_QT6_CFLAGS=$pkg_cv_GPGME_QT6_CFLAGS
+ GPGME_QT6_LIBS=$pkg_cv_GPGME_QT6_LIBS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ have_qt6_libs="yes"
+fi
+
+
+pkg_failed=no
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GPGME_QT6TEST" >&5
+printf %s "checking for GPGME_QT6TEST... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT6TEST_CFLAGS"; then
+ pkg_cv_GPGME_QT6TEST_CFLAGS="$GPGME_QT6TEST_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Test >= 6.4.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt6Test >= 6.4.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT6TEST_CFLAGS=`$PKG_CONFIG --cflags "Qt6Test >= 6.4.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT6TEST_LIBS"; then
+ pkg_cv_GPGME_QT6TEST_LIBS="$GPGME_QT6TEST_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Test >= 6.4.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt6Test >= 6.4.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT6TEST_LIBS=`$PKG_CONFIG --libs "Qt6Test >= 6.4.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GPGME_QT6TEST_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt6Test >= 6.4.0"`
+ else
+ GPGME_QT6TEST_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt6Test >= 6.4.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GPGME_QT6TEST_PKG_ERRORS" >&5
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ have_qt6test_libs="no"
+elif test $pkg_failed = untried; then
+ have_qt6test_libs="no"
+else
+ GPGME_QT6TEST_CFLAGS=$pkg_cv_GPGME_QT6TEST_CFLAGS
+ GPGME_QT6TEST_LIBS=$pkg_cv_GPGME_QT6TEST_LIBS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ have_qt6test_libs="yes"
+fi
+
+ if test "$have_qt6_libs" = "yes"; then
+ # Qt6 moved moc to libexec
+ qt6libexecdir=$($PKG_CONFIG --variable=libexecdir 'Qt6Core >= 6.4.0')
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}moc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}moc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_MOC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $MOC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MOC="$MOC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $qt6libexecdir
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_MOC="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MOC=$ac_cv_path_MOC
+if test -n "$MOC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MOC" >&5
+printf "%s\n" "$MOC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_MOC"; then
+ ac_pt_MOC=$MOC
+ # Extract the first word of "moc", so it can be a program name with args.
+set dummy moc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_MOC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $ac_pt_MOC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_MOC="$ac_pt_MOC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $qt6libexecdir
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_MOC="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_MOC=$ac_cv_path_ac_pt_MOC
+if test -n "$ac_pt_MOC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_MOC" >&5
+printf "%s\n" "$ac_pt_MOC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_pt_MOC" = x; then
+ MOC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MOC=$ac_pt_MOC
+ fi
+else
+ MOC="$ac_cv_path_MOC"
+fi
+
+ if test -z "$MOC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: moc not found - Qt 6 binding will not be built." >&5
+printf "%s\n" "$as_me: WARNING: moc not found - Qt 6 binding will not be built." >&2;}
+ have_qt6_libs="no";
+ fi
+ fi
+
+ if test "$have_qt6_libs" = "yes"; then
+ if test "$have_no_direct_extern_access" = yes; then
+ if test -z "$use_no_direct_extern_access" && test "$have_w32_system" != yes; then
+ mkspecsdir=$($PKG_CONFIG --variable mkspecsdir Qt6Platform)
+ if test -n "$mkspecsdir"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Qt was built with -mno-direct-extern-access" >&5
+printf %s "checking whether Qt was built with -mno-direct-extern-access... " >&6; }
+ if grep -q "QT_CONFIG .* no_direct_extern_access" $mkspecsdir/qconfig.pri; then
+ use_no_direct_extern_access="yes"
+ else
+ use_no_direct_extern_access="no"
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $use_no_direct_extern_access" >&5
+printf "%s\n" "$use_no_direct_extern_access" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Failed to determine Qt's mkspecs directory. Cannot check its build configuration." >&5
+printf "%s\n" "$as_me: WARNING: Failed to determine Qt's mkspecs directory. Cannot check its build configuration." >&2;}
+ fi
+ fi
+ if test "$use_no_direct_extern_access" = yes; then
+ GPGME_QT6_CFLAGS="$GPGME_QT6_CFLAGS -mno-direct-extern-access"
+ fi
+ fi
+
+ OLDCPPFLAGS=$CPPFLAGS
+ OLDLIBS=$LIBS
+
+ CPPFLAGS=$GPGME_QT6_CFLAGS
+ LIBS=$GPGME_QT6_LIBS
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a simple Qt program can be built" >&5
+printf %s "checking whether a simple Qt program can be built... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <QCoreApplication>
+ int main (int argc, char **argv) {
+ QCoreApplication app(argc, argv);
+ app.exec();
+ }
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"
+then :
+ have_qt6_libs='yes'
+else $as_nop
+ have_qt6_libs='no'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_qt6_libs" >&5
+printf "%s\n" "$have_qt6_libs" >&6; }
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ CPPFLAGS=$OLDCPPFLAGS
+ LIBS=$OLDLIBS
+ fi
+
+ if test "$have_qt6_libs" = "yes"; then
+ want_qt6="yes";
+ else
+ if test "$explicit_languages" = "1"; then
+ as_fn_error $? "
+***
+*** Qt5 (Qt5Core) or Qt6 (Qt6Core) is required for the Qt binding.
+***" "$LINENO" 5
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
+***
+*** Qt5 (Qt5Core) and Qt6 (Qt6Core) not found. Qt Binding will be disabled.
+***" >&5
+printf "%s\n" "$as_me: WARNING:
+***
+*** Qt5 (Qt5Core) and Qt6 (Qt6Core) not found. Qt Binding will be disabled.
+***" >&2;}
+ fi
+ fi
+ fi
+elif test "$want_qt5" = "yes"; then
+
+ have_qt5_libs="no";
+
+
+pkg_failed=no
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GPGME_QT5" >&5
+printf %s "checking for GPGME_QT5... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT5_CFLAGS"; then
+ pkg_cv_GPGME_QT5_CFLAGS="$GPGME_QT5_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Core >= 5.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt5Core >= 5.0.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT5_CFLAGS=`$PKG_CONFIG --cflags "Qt5Core >= 5.0.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT5_LIBS"; then
+ pkg_cv_GPGME_QT5_LIBS="$GPGME_QT5_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Core >= 5.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt5Core >= 5.0.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT5_LIBS=`$PKG_CONFIG --libs "Qt5Core >= 5.0.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GPGME_QT5_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt5Core >= 5.0.0"`
+ else
+ GPGME_QT5_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt5Core >= 5.0.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GPGME_QT5_PKG_ERRORS" >&5
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ have_qt5_libs="no"
+elif test $pkg_failed = untried; then
+ have_qt5_libs="no"
+else
+ GPGME_QT5_CFLAGS=$pkg_cv_GPGME_QT5_CFLAGS
+ GPGME_QT5_LIBS=$pkg_cv_GPGME_QT5_LIBS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ have_qt5_libs="yes"
+fi
+
+
+pkg_failed=no
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GPGME_QT5TEST" >&5
+printf %s "checking for GPGME_QT5TEST... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT5TEST_CFLAGS"; then
+ pkg_cv_GPGME_QT5TEST_CFLAGS="$GPGME_QT5TEST_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Test >= 5.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt5Test >= 5.0.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT5TEST_CFLAGS=`$PKG_CONFIG --cflags "Qt5Test >= 5.0.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT5TEST_LIBS"; then
+ pkg_cv_GPGME_QT5TEST_LIBS="$GPGME_QT5TEST_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Test >= 5.0.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt5Test >= 5.0.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT5TEST_LIBS=`$PKG_CONFIG --libs "Qt5Test >= 5.0.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GPGME_QT5TEST_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt5Test >= 5.0.0"`
+ else
+ GPGME_QT5TEST_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt5Test >= 5.0.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GPGME_QT5TEST_PKG_ERRORS" >&5
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ have_qt5test_libs="no"
+elif test $pkg_failed = untried; then
+ have_qt5test_libs="no"
+else
+ GPGME_QT5TEST_CFLAGS=$pkg_cv_GPGME_QT5TEST_CFLAGS
+ GPGME_QT5TEST_LIBS=$pkg_cv_GPGME_QT5TEST_LIBS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ have_qt5test_libs="yes"
+fi
+
+ if ! test "$have_w32_system" = yes; then
+ if "$PKG_CONFIG" --variable qt_config Qt5Core | grep -q "reduce_relocations"; then
+ GPGME_QT5_CFLAGS="$GPGME_QT5_CFLAGS -fpic"
+ fi
+ fi
+ if test "$have_qt5_libs" = "yes"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}moc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}moc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_MOC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$MOC"; then
+ ac_cv_prog_MOC="$MOC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MOC="${ac_tool_prefix}moc"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MOC=$ac_cv_prog_MOC
+if test -n "$MOC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MOC" >&5
+printf "%s\n" "$MOC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MOC"; then
+ ac_ct_MOC=$MOC
+ # Extract the first word of "moc", so it can be a program name with args.
+set dummy moc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_MOC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_MOC"; then
+ ac_cv_prog_ac_ct_MOC="$ac_ct_MOC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_MOC="moc"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MOC=$ac_cv_prog_ac_ct_MOC
+if test -n "$ac_ct_MOC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MOC" >&5
+printf "%s\n" "$ac_ct_MOC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_MOC" = x; then
+ MOC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MOC=$ac_ct_MOC
+ fi
+else
+ MOC="$ac_cv_prog_MOC"
+fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking moc version" >&5
+printf %s "checking moc version... " >&6; }
+ mocversion=`$MOC -v 2>&1`
+ mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc 5"`
+ if test x"$mocversiongrep" != x"$mocversion"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ # moc was not the qt5 one, try with moc-qt5
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}moc-qt5", so it can be a program name with args.
+set dummy ${ac_tool_prefix}moc-qt5; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_MOC2+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$MOC2"; then
+ ac_cv_prog_MOC2="$MOC2" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MOC2="${ac_tool_prefix}moc-qt5"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MOC2=$ac_cv_prog_MOC2
+if test -n "$MOC2"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MOC2" >&5
+printf "%s\n" "$MOC2" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MOC2"; then
+ ac_ct_MOC2=$MOC2
+ # Extract the first word of "moc-qt5", so it can be a program name with args.
+set dummy moc-qt5; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_MOC2+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_MOC2"; then
+ ac_cv_prog_ac_ct_MOC2="$ac_ct_MOC2" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_MOC2="moc-qt5"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MOC2=$ac_cv_prog_ac_ct_MOC2
+if test -n "$ac_ct_MOC2"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MOC2" >&5
+printf "%s\n" "$ac_ct_MOC2" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_MOC2" = x; then
+ MOC2=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MOC2=$ac_ct_MOC2
+ fi
+else
+ MOC2="$ac_cv_prog_MOC2"
+fi
+
+ mocversion=`$MOC2 -v 2>&1`
+ mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc-qt5 5|moc 5"`
+ if test x"$mocversiongrep" != x"$mocversion"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}qtchooser", so it can be a program name with args.
+set dummy ${ac_tool_prefix}qtchooser; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_QTCHOOSER+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$QTCHOOSER"; then
+ ac_cv_prog_QTCHOOSER="$QTCHOOSER" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_QTCHOOSER="${ac_tool_prefix}qtchooser"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+QTCHOOSER=$ac_cv_prog_QTCHOOSER
+if test -n "$QTCHOOSER"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $QTCHOOSER" >&5
+printf "%s\n" "$QTCHOOSER" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_QTCHOOSER"; then
+ ac_ct_QTCHOOSER=$QTCHOOSER
+ # Extract the first word of "qtchooser", so it can be a program name with args.
+set dummy qtchooser; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_QTCHOOSER+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_QTCHOOSER"; then
+ ac_cv_prog_ac_ct_QTCHOOSER="$ac_ct_QTCHOOSER" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_QTCHOOSER="qtchooser"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_QTCHOOSER=$ac_cv_prog_ac_ct_QTCHOOSER
+if test -n "$ac_ct_QTCHOOSER"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_QTCHOOSER" >&5
+printf "%s\n" "$ac_ct_QTCHOOSER" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_QTCHOOSER" = x; then
+ QTCHOOSER=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ QTCHOOSER=$ac_ct_QTCHOOSER
+ fi
+else
+ QTCHOOSER="$ac_cv_prog_QTCHOOSER"
+fi
+
+ qt5tooldir=`QT_SELECT=qt5 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2`
+ mocversion=`$qt5tooldir/moc -v 2>&1`
+ mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc 5"`
+ if test x"$mocversiongrep" != x"$mocversion"; then
+ # no valid moc found
+ have_qt5_libs="no";
+ else
+ MOC=$qt5tooldir/moc
+ fi
+ else
+ MOC=$MOC2
+ fi
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $mocversion" >&5
+printf "%s\n" "$mocversion" >&6; }
+ fi
+ if test "$have_qt5_libs" = "yes"; then
+ OLDCPPFLAGS=$CPPFLAGS
+ CPPFLAGS=$GPGME_QT5_CFLAGS
+ OLDLIBS=$LIBS
+ LIBS=$GPGME_QT5_LIBS
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a simple qt program can be built" >&5
+printf %s "checking whether a simple qt program can be built... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <QCoreApplication>
+ int main (int argc, char **argv) {
+ QCoreApplication app(argc, argv);
+ app.exec();
+ }
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"
+then :
+ have_qt5_libs='yes'
+else $as_nop
+ have_qt5_libs='no'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_qt5_libs" >&5
+printf "%s\n" "$have_qt5_libs" >&6; }
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ CPPFLAGS=$OLDCPPFLAGS
+ LIBS=$OLDLIBS
+ fi
+
+ if test "$have_qt5_libs" != "yes"; then
+ as_fn_error $? "
+***
+*** Qt5 (Qt5Core) is required for the Qt 5 binding.
+***" "$LINENO" 5
+ fi
+elif test "$want_qt6" = "yes"; then
+
+ have_qt6_libs="no";
+
+
+pkg_failed=no
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GPGME_QT6" >&5
+printf %s "checking for GPGME_QT6... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT6_CFLAGS"; then
+ pkg_cv_GPGME_QT6_CFLAGS="$GPGME_QT6_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Core >= 6.4.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt6Core >= 6.4.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT6_CFLAGS=`$PKG_CONFIG --cflags "Qt6Core >= 6.4.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT6_LIBS"; then
+ pkg_cv_GPGME_QT6_LIBS="$GPGME_QT6_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Core >= 6.4.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt6Core >= 6.4.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT6_LIBS=`$PKG_CONFIG --libs "Qt6Core >= 6.4.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GPGME_QT6_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt6Core >= 6.4.0"`
+ else
+ GPGME_QT6_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt6Core >= 6.4.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GPGME_QT6_PKG_ERRORS" >&5
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ have_qt6_libs="no"
+elif test $pkg_failed = untried; then
+ have_qt6_libs="no"
+else
+ GPGME_QT6_CFLAGS=$pkg_cv_GPGME_QT6_CFLAGS
+ GPGME_QT6_LIBS=$pkg_cv_GPGME_QT6_LIBS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ have_qt6_libs="yes"
+fi
+
+
+pkg_failed=no
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GPGME_QT6TEST" >&5
+printf %s "checking for GPGME_QT6TEST... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT6TEST_CFLAGS"; then
+ pkg_cv_GPGME_QT6TEST_CFLAGS="$GPGME_QT6TEST_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Test >= 6.4.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt6Test >= 6.4.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT6TEST_CFLAGS=`$PKG_CONFIG --cflags "Qt6Test >= 6.4.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GPGME_QT6TEST_LIBS"; then
+ pkg_cv_GPGME_QT6TEST_LIBS="$GPGME_QT6TEST_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt6Test >= 6.4.0\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "Qt6Test >= 6.4.0") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GPGME_QT6TEST_LIBS=`$PKG_CONFIG --libs "Qt6Test >= 6.4.0" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GPGME_QT6TEST_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt6Test >= 6.4.0"`
+ else
+ GPGME_QT6TEST_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt6Test >= 6.4.0"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GPGME_QT6TEST_PKG_ERRORS" >&5
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ have_qt6test_libs="no"
+elif test $pkg_failed = untried; then
+ have_qt6test_libs="no"
+else
+ GPGME_QT6TEST_CFLAGS=$pkg_cv_GPGME_QT6TEST_CFLAGS
+ GPGME_QT6TEST_LIBS=$pkg_cv_GPGME_QT6TEST_LIBS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ have_qt6test_libs="yes"
+fi
+
+ if test "$have_qt6_libs" = "yes"; then
+ # Qt6 moved moc to libexec
+ qt6libexecdir=$($PKG_CONFIG --variable=libexecdir 'Qt6Core >= 6.4.0')
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}moc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}moc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_MOC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $MOC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MOC="$MOC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $qt6libexecdir
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_MOC="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MOC=$ac_cv_path_MOC
+if test -n "$MOC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MOC" >&5
+printf "%s\n" "$MOC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_MOC"; then
+ ac_pt_MOC=$MOC
+ # Extract the first word of "moc", so it can be a program name with args.
+set dummy moc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_MOC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $ac_pt_MOC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_MOC="$ac_pt_MOC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $qt6libexecdir
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_MOC="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_MOC=$ac_cv_path_ac_pt_MOC
+if test -n "$ac_pt_MOC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_MOC" >&5
+printf "%s\n" "$ac_pt_MOC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_pt_MOC" = x; then
+ MOC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ MOC=$ac_pt_MOC
+ fi
+else
+ MOC="$ac_cv_path_MOC"
+fi
+
+ if test -z "$MOC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: moc not found - Qt 6 binding will not be built." >&5
+printf "%s\n" "$as_me: WARNING: moc not found - Qt 6 binding will not be built." >&2;}
+ have_qt6_libs="no";
+ fi
+ fi
+
+ if test "$have_qt6_libs" = "yes"; then
+ if test "$have_no_direct_extern_access" = yes; then
+ if test -z "$use_no_direct_extern_access" && test "$have_w32_system" != yes; then
+ mkspecsdir=$($PKG_CONFIG --variable mkspecsdir Qt6Platform)
+ if test -n "$mkspecsdir"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Qt was built with -mno-direct-extern-access" >&5
+printf %s "checking whether Qt was built with -mno-direct-extern-access... " >&6; }
+ if grep -q "QT_CONFIG .* no_direct_extern_access" $mkspecsdir/qconfig.pri; then
+ use_no_direct_extern_access="yes"
+ else
+ use_no_direct_extern_access="no"
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $use_no_direct_extern_access" >&5
+printf "%s\n" "$use_no_direct_extern_access" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Failed to determine Qt's mkspecs directory. Cannot check its build configuration." >&5
+printf "%s\n" "$as_me: WARNING: Failed to determine Qt's mkspecs directory. Cannot check its build configuration." >&2;}
+ fi
+ fi
+ if test "$use_no_direct_extern_access" = yes; then
+ GPGME_QT6_CFLAGS="$GPGME_QT6_CFLAGS -mno-direct-extern-access"
+ fi
+ fi
+
+ OLDCPPFLAGS=$CPPFLAGS
+ OLDLIBS=$LIBS
+
+ CPPFLAGS=$GPGME_QT6_CFLAGS
+ LIBS=$GPGME_QT6_LIBS
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a simple Qt program can be built" >&5
+printf %s "checking whether a simple Qt program can be built... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <QCoreApplication>
+ int main (int argc, char **argv) {
+ QCoreApplication app(argc, argv);
+ app.exec();
+ }
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"
+then :
+ have_qt6_libs='yes'
+else $as_nop
+ have_qt6_libs='no'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_qt6_libs" >&5
+printf "%s\n" "$have_qt6_libs" >&6; }
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+ CPPFLAGS=$OLDCPPFLAGS
+ LIBS=$OLDLIBS
+ fi
+
+ if test "$have_qt6_libs" != "yes"; then
+ as_fn_error $? "
+***
+*** Qt6 (Qt6Core) is required for the Qt 6 binding.
+***" "$LINENO" 5
+ fi
+fi
+
+# Check that cpp is enabled if qt5 or qt6 is enabled
+if test "$want_qt5" = "yes" -o "$want_qt6" = "yes"; then
+
+name="cpp"
+list=$enabled_languages
+found=0
+
+for n in $list; do
+ if test "x$name" = "x$n"; then
+ found=1
+ fi
+done
+
+ if test "$found" = "0"; then
+ as_fn_error $? "
+***
+*** The Qt bindings depend on the C++ binding.
+***" "$LINENO" 5
+ fi
+fi
+
+# Enable C++ 17 if qt6 is requested
+if test "$want_qt6" = "yes"; then
+ ax_cxx_compile_alternatives="17 1z" ax_cxx_compile_cxx17_required=false
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+ ac_success=no
+
+
+
+
+
+ if test x$ac_success = xno; then
+ for alternative in ${ax_cxx_compile_alternatives}; do
+ for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
+ cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx17_$switch" | $as_tr_sh`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++17 features with $switch" >&5
+printf %s "checking whether $CXX supports C++17 features with $switch... " >&6; }
+if eval test \${$cachevar+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_save_CXX="$CXX"
+ CXX="$CXX $switch"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+// MSVC always sets __cplusplus to 199711L in older versions; newer versions
+// only set it correctly if /Zc:__cplusplus is specified as well as a
+// /std:c++NN switch:
+// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
+#elif __cplusplus < 201103L && !defined _MSC_VER
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+ namespace test_static_assert
+ {
+
+ template <typename T>
+ struct check
+ {
+ static_assert(sizeof(int) <= sizeof(T), "not big enough");
+ };
+
+ }
+
+ namespace test_final_override
+ {
+
+ struct Base
+ {
+ virtual ~Base() {}
+ virtual void f() {}
+ };
+
+ struct Derived : public Base
+ {
+ virtual ~Derived() override {}
+ virtual void f() override {}
+ };
+
+ }
+
+ namespace test_double_right_angle_brackets
+ {
+
+ template < typename T >
+ struct check {};
+
+ typedef check<void> single_type;
+ typedef check<check<void>> double_type;
+ typedef check<check<check<void>>> triple_type;
+ typedef check<check<check<check<void>>>> quadruple_type;
+
+ }
+
+ namespace test_decltype
+ {
+
+ int
+ f()
+ {
+ int a = 1;
+ decltype(a) b = 2;
+ return a + b;
+ }
+
+ }
+
+ namespace test_type_deduction
+ {
+
+ template < typename T1, typename T2 >
+ struct is_same
+ {
+ static const bool value = false;
+ };
+
+ template < typename T >
+ struct is_same<T, T>
+ {
+ static const bool value = true;
+ };
+
+ template < typename T1, typename T2 >
+ auto
+ add(T1 a1, T2 a2) -> decltype(a1 + a2)
+ {
+ return a1 + a2;
+ }
+
+ int
+ test(const int c, volatile int v)
+ {
+ static_assert(is_same<int, decltype(0)>::value == true, "");
+ static_assert(is_same<int, decltype(c)>::value == false, "");
+ static_assert(is_same<int, decltype(v)>::value == false, "");
+ auto ac = c;
+ auto av = v;
+ auto sumi = ac + av + 'x';
+ auto sumf = ac + av + 1.0;
+ static_assert(is_same<int, decltype(ac)>::value == true, "");
+ static_assert(is_same<int, decltype(av)>::value == true, "");
+ static_assert(is_same<int, decltype(sumi)>::value == true, "");
+ static_assert(is_same<int, decltype(sumf)>::value == false, "");
+ static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+ return (sumf > 0.0) ? sumi : add(c, v);
+ }
+
+ }
+
+ namespace test_noexcept
+ {
+
+ int f() { return 0; }
+ int g() noexcept { return 0; }
+
+ static_assert(noexcept(f()) == false, "");
+ static_assert(noexcept(g()) == true, "");
+
+ }
+
+ namespace test_constexpr
+ {
+
+ template < typename CharT >
+ unsigned long constexpr
+ strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+ {
+ return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+ }
+
+ template < typename CharT >
+ unsigned long constexpr
+ strlen_c(const CharT *const s) noexcept
+ {
+ return strlen_c_r(s, 0UL);
+ }
+
+ static_assert(strlen_c("") == 0UL, "");
+ static_assert(strlen_c("1") == 1UL, "");
+ static_assert(strlen_c("example") == 7UL, "");
+ static_assert(strlen_c("another\0example") == 7UL, "");
+
+ }
+
+ namespace test_rvalue_references
+ {
+
+ template < int N >
+ struct answer
+ {
+ static constexpr int value = N;
+ };
+
+ answer<1> f(int&) { return answer<1>(); }
+ answer<2> f(const int&) { return answer<2>(); }
+ answer<3> f(int&&) { return answer<3>(); }
+
+ void
+ test()
+ {
+ int i = 0;
+ const int c = 0;
+ static_assert(decltype(f(i))::value == 1, "");
+ static_assert(decltype(f(c))::value == 2, "");
+ static_assert(decltype(f(0))::value == 3, "");
+ }
+
+ }
+
+ namespace test_uniform_initialization
+ {
+
+ struct test
+ {
+ static const int zero {};
+ static const int one {1};
+ };
+
+ static_assert(test::zero == 0, "");
+ static_assert(test::one == 1, "");
+
+ }
+
+ namespace test_lambdas
+ {
+
+ void
+ test1()
+ {
+ auto lambda1 = [](){};
+ auto lambda2 = lambda1;
+ lambda1();
+ lambda2();
+ }
+
+ int
+ test2()
+ {
+ auto a = [](int i, int j){ return i + j; }(1, 2);
+ auto b = []() -> int { return '0'; }();
+ auto c = [=](){ return a + b; }();
+ auto d = [&](){ return c; }();
+ auto e = [a, &b](int x) mutable {
+ const auto identity = [](int y){ return y; };
+ for (auto i = 0; i < a; ++i)
+ a += b--;
+ return x + identity(a + b);
+ }(0);
+ return a + b + c + d + e;
+ }
+
+ int
+ test3()
+ {
+ const auto nullary = [](){ return 0; };
+ const auto unary = [](int x){ return x; };
+ using nullary_t = decltype(nullary);
+ using unary_t = decltype(unary);
+ const auto higher1st = [](nullary_t f){ return f(); };
+ const auto higher2nd = [unary](nullary_t f1){
+ return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+ };
+ return higher1st(nullary) + higher2nd(nullary)(unary);
+ }
+
+ }
+
+ namespace test_variadic_templates
+ {
+
+ template <int...>
+ struct sum;
+
+ template <int N0, int... N1toN>
+ struct sum<N0, N1toN...>
+ {
+ static constexpr auto value = N0 + sum<N1toN...>::value;
+ };
+
+ template <>
+ struct sum<>
+ {
+ static constexpr auto value = 0;
+ };
+
+ static_assert(sum<>::value == 0, "");
+ static_assert(sum<1>::value == 1, "");
+ static_assert(sum<23>::value == 23, "");
+ static_assert(sum<1, 2>::value == 3, "");
+ static_assert(sum<5, 5, 11>::value == 21, "");
+ static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+ }
+
+ // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+ // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+ // because of this.
+ namespace test_template_alias_sfinae
+ {
+
+ struct foo {};
+
+ template<typename T>
+ using member = typename T::member_type;
+
+ template<typename T>
+ void func(...) {}
+
+ template<typename T>
+ void func(member<T>*) {}
+
+ void test();
+
+ void test() { func<foo>(0); }
+
+ }
+
+} // namespace cxx11
+
+#endif // __cplusplus >= 201103L
+
+
+
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L && !defined _MSC_VER
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+ namespace test_polymorphic_lambdas
+ {
+
+ int
+ test()
+ {
+ const auto lambda = [](auto&&... args){
+ const auto istiny = [](auto x){
+ return (sizeof(x) == 1UL) ? 1 : 0;
+ };
+ const int aretiny[] = { istiny(args)... };
+ return aretiny[0];
+ };
+ return lambda(1, 1L, 1.0f, '1');
+ }
+
+ }
+
+ namespace test_binary_literals
+ {
+
+ constexpr auto ivii = 0b0000000000101010;
+ static_assert(ivii == 42, "wrong value");
+
+ }
+
+ namespace test_generalized_constexpr
+ {
+
+ template < typename CharT >
+ constexpr unsigned long
+ strlen_c(const CharT *const s) noexcept
+ {
+ auto length = 0UL;
+ for (auto p = s; *p; ++p)
+ ++length;
+ return length;
+ }
+
+ static_assert(strlen_c("") == 0UL, "");
+ static_assert(strlen_c("x") == 1UL, "");
+ static_assert(strlen_c("test") == 4UL, "");
+ static_assert(strlen_c("another\0test") == 7UL, "");
+
+ }
+
+ namespace test_lambda_init_capture
+ {
+
+ int
+ test()
+ {
+ auto x = 0;
+ const auto lambda1 = [a = x](int b){ return a + b; };
+ const auto lambda2 = [a = lambda1(x)](){ return a; };
+ return lambda2();
+ }
+
+ }
+
+ namespace test_digit_separators
+ {
+
+ constexpr auto ten_million = 100'000'000;
+ static_assert(ten_million == 100000000, "");
+
+ }
+
+ namespace test_return_type_deduction
+ {
+
+ auto f(int& x) { return x; }
+ decltype(auto) g(int& x) { return x; }
+
+ template < typename T1, typename T2 >
+ struct is_same
+ {
+ static constexpr auto value = false;
+ };
+
+ template < typename T >
+ struct is_same<T, T>
+ {
+ static constexpr auto value = true;
+ };
+
+ int
+ test()
+ {
+ auto x = 0;
+ static_assert(is_same<int, decltype(f(x))>::value, "");
+ static_assert(is_same<int&, decltype(g(x))>::value, "");
+ return x;
+ }
+
+ }
+
+} // namespace cxx14
+
+#endif // __cplusplus >= 201402L
+
+
+
+
+// If the compiler admits that it is not ready for C++17, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201703L && !defined _MSC_VER
+
+#error "This is not a C++17 compiler"
+
+#else
+
+#include <initializer_list>
+#include <utility>
+#include <type_traits>
+
+namespace cxx17
+{
+
+ namespace test_constexpr_lambdas
+ {
+
+ constexpr int foo = [](){return 42;}();
+
+ }
+
+ namespace test::nested_namespace::definitions
+ {
+
+ }
+
+ namespace test_fold_expression
+ {
+
+ template<typename... Args>
+ int multiply(Args... args)
+ {
+ return (args * ... * 1);
+ }
+
+ template<typename... Args>
+ bool all(Args... args)
+ {
+ return (args && ...);
+ }
+
+ }
+
+ namespace test_extended_static_assert
+ {
+
+ static_assert (true);
+
+ }
+
+ namespace test_auto_brace_init_list
+ {
+
+ auto foo = {5};
+ auto bar {5};
+
+ static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
+ static_assert(std::is_same<int, decltype(bar)>::value);
+ }
+
+ namespace test_typename_in_template_template_parameter
+ {
+
+ template<template<typename> typename X> struct D;
+
+ }
+
+ namespace test_fallthrough_nodiscard_maybe_unused_attributes
+ {
+
+ int f1()
+ {
+ return 42;
+ }
+
+ [[nodiscard]] int f2()
+ {
+ [[maybe_unused]] auto unused = f1();
+
+ switch (f1())
+ {
+ case 17:
+ f1();
+ [[fallthrough]];
+ case 42:
+ f1();
+ }
+ return f1();
+ }
+
+ }
+
+ namespace test_extended_aggregate_initialization
+ {
+
+ struct base1
+ {
+ int b1, b2 = 42;
+ };
+
+ struct base2
+ {
+ base2() {
+ b3 = 42;
+ }
+ int b3;
+ };
+
+ struct derived : base1, base2
+ {
+ int d;
+ };
+
+ derived d1 {{1, 2}, {}, 4}; // full initialization
+ derived d2 {{}, {}, 4}; // value-initialized bases
+
+ }
+
+ namespace test_general_range_based_for_loop
+ {
+
+ struct iter
+ {
+ int i;
+
+ int& operator* ()
+ {
+ return i;
+ }
+
+ const int& operator* () const
+ {
+ return i;
+ }
+
+ iter& operator++()
+ {
+ ++i;
+ return *this;
+ }
+ };
+
+ struct sentinel
+ {
+ int i;
+ };
+
+ bool operator== (const iter& i, const sentinel& s)
+ {
+ return i.i == s.i;
+ }
+
+ bool operator!= (const iter& i, const sentinel& s)
+ {
+ return !(i == s);
+ }
+
+ struct range
+ {
+ iter begin() const
+ {
+ return {0};
+ }
+
+ sentinel end() const
+ {
+ return {5};
+ }
+ };
+
+ void f()
+ {
+ range r {};
+
+ for (auto i : r)
+ {
+ [[maybe_unused]] auto v = i;
+ }
+ }
+
+ }
+
+ namespace test_lambda_capture_asterisk_this_by_value
+ {
+
+ struct t
+ {
+ int i;
+ int foo()
+ {
+ return [*this]()
+ {
+ return i;
+ }();
+ }
+ };
+
+ }
+
+ namespace test_enum_class_construction
+ {
+
+ enum class byte : unsigned char
+ {};
+
+ byte foo {42};
+
+ }
+
+ namespace test_constexpr_if
+ {
+
+ template <bool cond>
+ int f ()
+ {
+ if constexpr(cond)
+ {
+ return 13;
+ }
+ else
+ {
+ return 42;
+ }
+ }
+
+ }
+
+ namespace test_selection_statement_with_initializer
+ {
+
+ int f()
+ {
+ return 13;
+ }
+
+ int f2()
+ {
+ if (auto i = f(); i > 0)
+ {
+ return 3;
+ }
+
+ switch (auto i = f(); i + 4)
+ {
+ case 17:
+ return 2;
+
+ default:
+ return 1;
+ }
+ }
+
+ }
+
+ namespace test_template_argument_deduction_for_class_templates
+ {
+
+ template <typename T1, typename T2>
+ struct pair
+ {
+ pair (T1 p1, T2 p2)
+ : m1 {p1},
+ m2 {p2}
+ {}
+
+ T1 m1;
+ T2 m2;
+ };
+
+ void f()
+ {
+ [[maybe_unused]] auto p = pair{13, 42u};
+ }
+
+ }
+
+ namespace test_non_type_auto_template_parameters
+ {
+
+ template <auto n>
+ struct B
+ {};
+
+ B<5> b1;
+ B<'a'> b2;
+
+ }
+
+ namespace test_structured_bindings
+ {
+
+ int arr[2] = { 1, 2 };
+ std::pair<int, int> pr = { 1, 2 };
+
+ auto f1() -> int(&)[2]
+ {
+ return arr;
+ }
+
+ auto f2() -> std::pair<int, int>&
+ {
+ return pr;
+ }
+
+ struct S
+ {
+ int x1 : 2;
+ volatile double y1;
+ };
+
+ S f3()
+ {
+ return {};
+ }
+
+ auto [ x1, y1 ] = f1();
+ auto& [ xr1, yr1 ] = f1();
+ auto [ x2, y2 ] = f2();
+ auto& [ xr2, yr2 ] = f2();
+ const auto [ x3, y3 ] = f3();
+
+ }
+
+ namespace test_exception_spec_type_system
+ {
+
+ struct Good {};
+ struct Bad {};
+
+ void g1() noexcept;
+ void g2();
+
+ template<typename T>
+ Bad
+ f(T*, T*);
+
+ template<typename T1, typename T2>
+ Good
+ f(T1*, T2*);
+
+ static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
+
+ }
+
+ namespace test_inline_variables
+ {
+
+ template<class T> void f(T)
+ {}
+
+ template<class T> inline T g(T)
+ {
+ return T{};
+ }
+
+ template<> inline void f<>(int)
+ {}
+
+ template<> int g<>(int)
+ {
+ return 5;
+ }
+
+ }
+
+} // namespace cxx17
+
+#endif // __cplusplus < 201703L && !defined _MSC_VER
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"
+then :
+ eval $cachevar=yes
+else $as_nop
+ eval $cachevar=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ CXX="$ac_save_CXX"
+fi
+eval ac_res=\$$cachevar
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ if eval test x\$$cachevar = xyes; then
+ CXX="$CXX $switch"
+ if test -n "$CXXCPP" ; then
+ CXXCPP="$CXXCPP $switch"
+ fi
+ ac_success=yes
+ break
+ fi
+ done
+ if test x$ac_success = xyes; then
+ break
+ fi
+ done
+ fi
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ if test x$ax_cxx_compile_cxx17_required = xtrue; then
+ if test x$ac_success = xno; then
+ as_fn_error $? "*** A compiler with support for C++17 language features is required." "$LINENO" 5
+ fi
+ fi
+ if test x$ac_success = xno; then
+ HAVE_CXX17=0
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No compiler with C++17 support was found" >&5
+printf "%s\n" "$as_me: No compiler with C++17 support was found" >&6;}
+ else
+ HAVE_CXX17=1
+
+printf "%s\n" "#define HAVE_CXX17 1" >>confdefs.h
+
+ fi
+
+
+ if test "$HAVE_CXX17" != "1"; then
+ if test "$explicit_languages" = "1"; then
+ as_fn_error $? "
+***
+*** A compiler with c++17 support is required for the Qt 6 binding.
+***" "$LINENO" 5
+ else
+ want_qt6="no"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
+***
+*** No c++17 support detected. Qt 6 binding will be disabled.
+***" >&5
+printf "%s\n" "$as_me: WARNING:
+***
+*** No c++17 support detected. Qt 6 binding will be disabled.
+***" >&2;}
+ fi
+ fi
+fi
+
+# Enable C++ 11 if cpp is requested (unless C++ 17 was already enabled)
+
+name="cpp"
+list=$enabled_languages
+found=0
+
+for n in $list; do
+ if test "x$name" = "x$n"; then
+ found=1
+ fi
+done
+
+if test "$found" = "1" -a "$HAVE_CXX17" != "1"; then
+ ax_cxx_compile_alternatives="11 0x" ax_cxx_compile_cxx11_required=false
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+ ac_success=no
+
+
+
+
+
+ if test x$ac_success = xno; then
+ for alternative in ${ax_cxx_compile_alternatives}; do
+ for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
+ cachevar=`printf "%s\n" "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
+printf %s "checking whether $CXX supports C++11 features with $switch... " >&6; }
+if eval test \${$cachevar+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_save_CXX="$CXX"
+ CXX="$CXX $switch"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+// MSVC always sets __cplusplus to 199711L in older versions; newer versions
+// only set it correctly if /Zc:__cplusplus is specified as well as a
+// /std:c++NN switch:
+// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
+#elif __cplusplus < 201103L && !defined _MSC_VER
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+ namespace test_static_assert
+ {
+
+ template <typename T>
+ struct check
+ {
+ static_assert(sizeof(int) <= sizeof(T), "not big enough");
+ };
+
+ }
+
+ namespace test_final_override
+ {
+
+ struct Base
+ {
+ virtual ~Base() {}
+ virtual void f() {}
+ };
+
+ struct Derived : public Base
+ {
+ virtual ~Derived() override {}
+ virtual void f() override {}
+ };
+
+ }
+
+ namespace test_double_right_angle_brackets
+ {
+
+ template < typename T >
+ struct check {};
+
+ typedef check<void> single_type;
+ typedef check<check<void>> double_type;
+ typedef check<check<check<void>>> triple_type;
+ typedef check<check<check<check<void>>>> quadruple_type;
+
+ }
+
+ namespace test_decltype
+ {
int
f()
}
-} // namespace cxx11
+} // namespace cxx11
+
+#endif // __cplusplus >= 201103L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"
+then :
+ eval $cachevar=yes
+else $as_nop
+ eval $cachevar=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ CXX="$ac_save_CXX"
+fi
+eval ac_res=\$$cachevar
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+ if eval test x\$$cachevar = xyes; then
+ CXX="$CXX $switch"
+ if test -n "$CXXCPP" ; then
+ CXXCPP="$CXXCPP $switch"
+ fi
+ ac_success=yes
+ break
+ fi
+ done
+ if test x$ac_success = xyes; then
+ break
+ fi
+ done
+ fi
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ if test x$ax_cxx_compile_cxx11_required = xtrue; then
+ if test x$ac_success = xno; then
+ as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5
+ fi
+ fi
+ if test x$ac_success = xno; then
+ HAVE_CXX11=0
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
+printf "%s\n" "$as_me: No compiler with C++11 support was found" >&6;}
+ else
+ HAVE_CXX11=1
+
+printf "%s\n" "#define HAVE_CXX11 1" >>confdefs.h
+
+ fi
+
+
+ if test "$HAVE_CXX11" != "1"; then
+ if test "$explicit_languages" = "1"; then
+ as_fn_error $? "
+***
+*** A compiler with c++11 support is required for the C++ binding.
+***" "$LINENO" 5
+ else
+ enabled_languages=$(echo $enabled_languages | sed 's/cpp//')
+ want_qt5="no"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
+***
+*** No c++11 support detected. C++ and Qt 5 bindings will be disabled.
+***" >&5
+printf "%s\n" "$as_me: WARNING:
+***
+*** No c++11 support detected. C++ and Qt 5 bindings will be disabled.
+***" >&2;}
+ fi
+ fi
+fi
+
+# Now append qt to the list of language bindings
+if test "$want_qt5" = "yes" -o "$want_qt6" = "yes"; then
+ enabled_languages=$(echo $enabled_languages qt)
+fi
+
+# Check whether compiler supports visibility attribute (if cpp language is enabled)
+
+name="cpp"
+list=$enabled_languages
+found=0
+
+for n in $list; do
+ if test "x$name" = "x$n"; then
+ found=1
+ fi
+done
+
+if test "$found" = "1"; then
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility))" >&5
+printf %s "checking for __attribute__((visibility))... " >&6; }
+if test ${ax_cv_have_func_attribute_visibility+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+
+ int foo_def( void ) __attribute__((visibility("default")));
+ int foo_hid( void ) __attribute__((visibility("hidden")));
+ int foo_int( void ) __attribute__((visibility("internal")));
+ int foo_pro( void ) __attribute__((visibility("protected")));
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ if grep -- -Wattributes conftest.err
+then :
+ ax_cv_have_func_attribute_visibility=no
+else $as_nop
+ ax_cv_have_func_attribute_visibility=yes
+fi
+else $as_nop
+ ax_cv_have_func_attribute_visibility=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_func_attribute_visibility" >&5
+printf "%s\n" "$ax_cv_have_func_attribute_visibility" >&6; }
+
+ if test yes = $ax_cv_have_func_attribute_visibility
+then :
+
+printf "%s\n" "#define HAVE_FUNC_ATTRIBUTE_VISIBILITY 1" >>confdefs.h
+
+fi
+
+
+
+ if test "$ax_cv_have_func_attribute_visibility" = "yes"; then
+ GPGME_CPP_CFLAGS="$GPGME_CPP_CFLAGS -fvisibility=hidden"
+ if test "$want_qt5" = "yes"; then
+ GPGME_QT5_CFLAGS="$GPGME_QT5_CFLAGS -fvisibility=hidden"
+ fi
+ if test "$want_qt6" = "yes"; then
+ GPGME_QT6_CFLAGS="$GPGME_QT6_CFLAGS -fvisibility=hidden"
+ fi
+ fi
+fi
+
+
+ if test "$want_qt5" = yes; then
+ WANT_QT5_TRUE=
+ WANT_QT5_FALSE='#'
+else
+ WANT_QT5_TRUE='#'
+ WANT_QT5_FALSE=
+fi
+
+ if test "$want_qt6" = yes; then
+ WANT_QT6_TRUE=
+ WANT_QT6_FALSE='#'
+else
+ WANT_QT6_TRUE='#'
+ WANT_QT6_FALSE=
+fi
+
+
+# Check for tools for building the Qt binding docs
+if test "$want_qt5" = "yes" -o "$want_qt6" = "yes"; then
+ for ac_prog in doxygen
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DOXYGEN+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$DOXYGEN"; then
+ ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DOXYGEN="$ac_prog"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DOXYGEN=$ac_cv_prog_DOXYGEN
+if test -n "$DOXYGEN"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
+printf "%s\n" "$DOXYGEN" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ test -n "$DOXYGEN" && break
+done
+
+ if test -z "$DOXYGEN"; then
+ # This is not highlighted because it's not really important.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen not found - Qt binding doc will not be built." >&5
+printf "%s\n" "$as_me: WARNING: Doxygen not found - Qt binding doc will not be built." >&2;}
+ fi
+ for ac_prog in dot
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_GRAPHVIZ+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$GRAPHVIZ"; then
+ ac_cv_prog_GRAPHVIZ="$GRAPHVIZ" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_GRAPHVIZ="$ac_prog"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+GRAPHVIZ=$ac_cv_prog_GRAPHVIZ
+if test -n "$GRAPHVIZ"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GRAPHVIZ" >&5
+printf "%s\n" "$GRAPHVIZ" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
-#endif // __cplusplus >= 201103L
+ test -n "$GRAPHVIZ" && break
+done
+ if test -z "$GRAPHVIZ"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Graphviz not found - Qt binding doc will not have diagrams." >&5
+printf "%s\n" "$as_me: WARNING: Graphviz not found - Qt binding doc will not have diagrams." >&2;}
+ fi
+fi
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
- ax_cv_cxx_compile_cxx11=yes
+ if test -n "$DOXYGEN"; then
+ HAVE_DOXYGEN_TRUE=
+ HAVE_DOXYGEN_FALSE='#'
else
- ax_cv_cxx_compile_cxx11=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ HAVE_DOXYGEN_TRUE='#'
+ HAVE_DOXYGEN_FALSE=
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5
-$as_echo "$ax_cv_cxx_compile_cxx11" >&6; }
- if test x$ax_cv_cxx_compile_cxx11 = xyes; then
- ac_success=yes
- fi
-
-
- if test x$ac_success = xno; then
- for switch in -std=c++11 -std=c++0x +std=c++11 "-h std=c++11"; do
- cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5
-$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; }
-if eval \${$cachevar+:} false; then :
- $as_echo_n "(cached) " >&6
+if test -n "$GRAPHVIZ"; then
+ HAVE_DOT="YES"
else
- ac_save_CXX="$CXX"
- CXX="$CXX $switch"
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
+ HAVE_DOT="NO"
+fi
-#ifndef __cplusplus
-#error "This is not a C++ compiler"
+# Python bindings.
-#elif __cplusplus < 201103L
+name="python"
+list=$enabled_languages
+found=0
-#error "This is not a C++11 compiler"
+for n in $list; do
+ if test "x$name" = "x$n"; then
+ found=1
+ fi
+done
-#else
+found_py=$found
+if test "$found_py" = "1"; then
-namespace cxx11
-{
+ # Ubuntu has swig 2.0 as /usr/bin/swig2.0
+ for ac_prog in swig swig2.0
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_SWIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $SWIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_SWIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
- namespace test_static_assert
- {
+ ;;
+esac
+fi
+SWIG=$ac_cv_path_SWIG
+if test -n "$SWIG"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5
+printf "%s\n" "$SWIG" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
- template <typename T>
- struct check
- {
- static_assert(sizeof(int) <= sizeof(T), "not big enough");
- };
- }
+ test -n "$SWIG" && break
+done
- namespace test_final_override
- {
+ if test -z "$SWIG" ; then
+ :
+ elif test -n "" ; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SWIG version" >&5
+printf %s "checking SWIG version... " >&6; }
+ swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5
+printf "%s\n" "$swig_version" >&6; }
+ if test -n "$swig_version" ; then
+ # Calculate the required version number components
+ required=
+ required_major=`echo $required | sed 's/[^0-9].*//'`
+ if test -z "$required_major" ; then
+ required_major=0
+ fi
+ required=`echo $required | sed 's/[0-9]*[^0-9]//'`
+ required_minor=`echo $required | sed 's/[^0-9].*//'`
+ if test -z "$required_minor" ; then
+ required_minor=0
+ fi
+ required=`echo $required | sed 's/[0-9]*[^0-9]//'`
+ required_patch=`echo $required | sed 's/[^0-9].*//'`
+ if test -z "$required_patch" ; then
+ required_patch=0
+ fi
+ # Calculate the available version number components
+ available=$swig_version
+ available_major=`echo $available | sed 's/[^0-9].*//'`
+ if test -z "$available_major" ; then
+ available_major=0
+ fi
+ available=`echo $available | sed 's/[0-9]*[^0-9]//'`
+ available_minor=`echo $available | sed 's/[^0-9].*//'`
+ if test -z "$available_minor" ; then
+ available_minor=0
+ fi
+ available=`echo $available | sed 's/[0-9]*[^0-9]//'`
+ available_patch=`echo $available | sed 's/[^0-9].*//'`
+ if test -z "$available_patch" ; then
+ available_patch=0
+ fi
+ # Convert the version tuple into a single number for easier comparison.
+ # Using base 100 should be safe since SWIG internally uses BCD values
+ # to encode its version number.
+ required_swig_vernum=`expr $required_major \* 10000 \
+ \+ $required_minor \* 100 \+ $required_patch`
+ available_swig_vernum=`expr $available_major \* 10000 \
+ \+ $available_minor \* 100 \+ $available_patch`
- struct Base
- {
- virtual void f() {}
- };
+ if test $available_swig_vernum -lt $required_swig_vernum; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= is required. You have $swig_version." >&5
+printf "%s\n" "$as_me: WARNING: SWIG version >= is required. You have $swig_version." >&2;}
+ SWIG=''
- struct Derived : public Base
- {
- virtual void f() override {}
- };
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SWIG library" >&5
+printf %s "checking for SWIG library... " >&6; }
+ SWIG_LIB=`$SWIG -swiglib`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG_LIB" >&5
+printf "%s\n" "$SWIG_LIB" >&6; }
- }
+ fi
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5
+printf "%s\n" "$as_me: WARNING: cannot determine SWIG version" >&2;}
+ SWIG=''
- namespace test_double_right_angle_brackets
- {
+ fi
+ fi
- template < typename T >
- struct check {};
- typedef check<void> single_type;
- typedef check<check<void>> double_type;
- typedef check<check<check<void>>> triple_type;
- typedef check<check<check<check<void>>>> quadruple_type;
+ if test -z "$SWIG"; then
+ if test "$explicit_languages" = "1"; then
+ as_fn_error $? "
+***
+*** You need SWIG to build the Python bindings.
+***" "$LINENO" 5
+ else
+ enabled_languages=$(echo $enabled_languages | sed 's/python//')
+ fi
+ else
+ # Reset the version collecting vars.
+ PYTHONS=
+ PYTHON_VERSIONS=
- }
+ if test "$found_py" = "1" -o "$found_py3" = "1"; then
+ # Reset everything, so that we can look for another Python.
+ unset PYTHON
+ unset PYTHON_VERSION
+ unset PYTHON_CPPFLAGS
+ unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
+ unset PYTHON_SITE_PKG
+ unset PYTHON_EXTRA_LIBS
+ unset PYTHON_EXTRA_LDFLAGS
+ unset ac_cv_path_PYTHON
+ unset am_cv_pathless_PYTHON
+ unset am_cv_python_version
+ unset am_cv_python_platform
+ unset am_cv_python_pythondir
+ unset am_cv_python_pyexecdir
- namespace test_decltype
- {
- int
- f()
- {
- int a = 1;
- decltype(a) b = 2;
- return a + b;
- }
- }
- namespace test_type_deduction
- {
- template < typename T1, typename T2 >
- struct is_same
- {
- static const bool value = false;
- };
- template < typename T >
- struct is_same<T, T>
- {
- static const bool value = true;
- };
+ if test -n "$PYTHON"; then
+ # If the user set $PYTHON, use it and don't search something else.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.7" >&5
+printf %s "checking whether $PYTHON version is >= 2.7... " >&6; }
+ prog="import sys
+# split strings by '.' and convert to numeric. Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+ if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
+ ($PYTHON -c "$prog") >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ as_fn_error $? "Python interpreter is too old" "$LINENO" 5
+fi
+ am_display_PYTHON=$PYTHON
+ else
+ # Otherwise, try each interpreter until we find one that satisfies
+ # VERSION.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.7" >&5
+printf %s "checking for a Python interpreter with version >= 2.7... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
- template < typename T1, typename T2 >
- auto
- add(T1 a1, T2 a2) -> decltype(a1 + a2)
- {
- return a1 + a2;
- }
+ for am_cv_pathless_PYTHON in python2.7 none; do
+ test "$am_cv_pathless_PYTHON" = none && break
+ prog="import sys
+# split strings by '.' and convert to numeric. Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+ if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
+ ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+then :
+ break
+fi
+ done
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
+ # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+ if test "$am_cv_pathless_PYTHON" = none; then
+ PYTHON=:
+ else
+ # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
+set dummy $am_cv_pathless_PYTHON; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $PYTHON in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
- int
- test(const int c, volatile int v)
- {
- static_assert(is_same<int, decltype(0)>::value == true, "");
- static_assert(is_same<int, decltype(c)>::value == false, "");
- static_assert(is_same<int, decltype(v)>::value == false, "");
- auto ac = c;
- auto av = v;
- auto sumi = ac + av + 'x';
- auto sumf = ac + av + 1.0;
- static_assert(is_same<int, decltype(ac)>::value == true, "");
- static_assert(is_same<int, decltype(av)>::value == true, "");
- static_assert(is_same<int, decltype(sumi)>::value == true, "");
- static_assert(is_same<int, decltype(sumf)>::value == false, "");
- static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
- return (sumf > 0.0) ? sumi : add(c, v);
- }
+ ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
- }
- namespace test_noexcept
- {
+ fi
+ am_display_PYTHON=$am_cv_pathless_PYTHON
+ fi
- int f() { return 0; }
- int g() noexcept { return 0; }
- static_assert(noexcept(f()) == false, "");
- static_assert(noexcept(g()) == true, "");
+ if test "$PYTHON" = :; then
+ :
+ else
- }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
+ PYTHON_VERSION=$am_cv_python_version
- namespace test_constexpr
- {
- template < typename CharT >
- unsigned long constexpr
- strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
- {
- return *s ? strlen_c_r(s + 1, acc + 1) : acc;
- }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
+ PYTHON_PLATFORM=$am_cv_python_platform
- template < typename CharT >
- unsigned long constexpr
- strlen_c(const CharT *const s) noexcept
- {
- return strlen_c_r(s, 0UL);
- }
- static_assert(strlen_c("") == 0UL, "");
- static_assert(strlen_c("1") == 1UL, "");
- static_assert(strlen_c("example") == 7UL, "");
- static_assert(strlen_c("another\0example") == 7UL, "");
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+
+# Check whether --with-python-sys-prefix was given.
+if test ${with_python_sys_prefix+y}
+then :
+ withval=$with_python_sys_prefix; am_use_python_sys=:
+else $as_nop
+ am_use_python_sys=false
+fi
+
+
+ # Allow user to override whatever the default Python prefix is.
+
+# Check whether --with-python_prefix was given.
+if test ${with_python_prefix+y}
+then :
+ withval=$with_python_prefix; am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+else $as_nop
+
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
+printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
+if test ${am_cv_python_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
+printf "%s\n" "$am_python_prefix" >&6; }
+ fi
+fi
- }
+ # Substituting python_prefix_subst value.
+ PYTHON_PREFIX=$am_python_prefix_subst
+
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+
+# Check whether --with-python_exec_prefix was given.
+if test ${with_python_exec_prefix+y}
+then :
+ withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ if test -n "$with_python_prefix"
+then :
+ am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
+if test ${am_cv_python_exec_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
+printf "%s\n" "$am_python_exec_prefix" >&6; }
+ fi
+fi
+fi
- namespace test_rvalue_references
- {
+ # Substituting python_exec_prefix_subst.
+ PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
- template < int N >
- struct answer
- {
- static constexpr int value = N;
- };
- answer<1> f(int&) { return answer<1>(); }
- answer<2> f(const int&) { return answer<2>(); }
- answer<3> f(int&&) { return answer<3>(); }
+ # Factor out some code duplication into this shell variable.
+ am_python_setup_sysconfig="\
+import sys
+# Prefer sysconfig over distutils.sysconfig, for better compatibility
+# with python 3.x. See automake bug#10227.
+try:
+ import sysconfig
+except ImportError:
+ can_use_sysconfig = 0
+else:
+ can_use_sysconfig = 1
+# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
+# <https://github.com/pypa/virtualenv/issues/118>
+try:
+ from platform import python_implementation
+ if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
+ can_use_sysconfig = 0
+except ImportError:
+ pass"
- void
- test()
- {
- int i = 0;
- const int c = 0;
- static_assert(decltype(f(i))::value == 1, "");
- static_assert(decltype(f(c))::value == 2, "");
- static_assert(decltype(f(0))::value == 3, "");
- }
- }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
+printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+else:
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
+ esac
+ ;;
+ esac
- namespace test_uniform_initialization
- {
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
+ pythondir=$am_cv_python_pythondir
- struct test
- {
- static const int zero {};
- static const int one {1};
- };
- static_assert(test::zero == 0, "");
- static_assert(test::one == 1, "");
+ pkgpythondir=\${pythondir}/$PACKAGE
- }
- namespace test_lambdas
- {
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
+printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
+else:
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
+sys.stdout.write(sitedir)"`
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
+ esac
+ ;;
+ esac
- void
- test1()
- {
- auto lambda1 = [](){};
- auto lambda2 = lambda1;
- lambda1();
- lambda2();
- }
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
+ pyexecdir=$am_cv_python_pyexecdir
- int
- test2()
- {
- auto a = [](int i, int j){ return i + j; }(1, 2);
- auto b = []() -> int { return '0'; }();
- auto c = [=](){ return a + b; }();
- auto d = [&](){ return c; }();
- auto e = [a, &b](int x) mutable {
- const auto identity = [](int y){ return y; };
- for (auto i = 0; i < a; ++i)
- a += b--;
- return x + identity(a + b);
- }(0);
- return a + b + c + d + e;
- }
- int
- test3()
- {
- const auto nullary = [](){ return 0; };
- const auto unary = [](int x){ return x; };
- using nullary_t = decltype(nullary);
- using unary_t = decltype(unary);
- const auto higher1st = [](nullary_t f){ return f(); };
- const auto higher2nd = [unary](nullary_t f1){
- return [unary, f1](unary_t f2){ return f2(unary(f1())); };
- };
- return higher1st(nullary) + higher2nd(nullary)(unary);
- }
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
- }
- namespace test_variadic_templates
- {
- template <int...>
- struct sum;
- template <int N0, int... N1toN>
- struct sum<N0, N1toN...>
- {
- static constexpr auto value = N0 + sum<N1toN...>::value;
- };
+ #
+ # Allow the use of a (user set) custom python version
+ #
- template <>
- struct sum<>
- {
- static constexpr auto value = 0;
- };
- static_assert(sum<>::value == 0, "");
- static_assert(sum<1>::value == 1, "");
- static_assert(sum<23>::value == 23, "");
- static_assert(sum<1, 2>::value == 3, "");
- static_assert(sum<5, 5, 11>::value == 21, "");
- static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+ # Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
+set dummy python$PYTHON_VERSION; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $PYTHON in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
- }
+ ;;
+esac
+fi
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
- // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
- // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
- // because of this.
- namespace test_template_alias_sfinae
- {
- struct foo {};
+ if test -z "$PYTHON"; then
+ as_fn_error $? "Cannot find python$PYTHON_VERSION in your system path" "$LINENO" 5
+ PYTHON_VERSION=""
+ fi
- template<typename T>
- using member = typename T::member_type;
+ #
+ # Check for a version of Python >= 2.1.0
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+printf %s "checking for a version of Python >= '2.1.0'... " >&6; }
+ ac_supports_python_ver=`$PYTHON -c "import sys; \
+ ver = sys.version.split ()[0]; \
+ print (ver >= '2.1.0')"`
+ if test "$ac_supports_python_ver" != "True"; then
+ if test -z "$PYTHON_NOVERSIONCHECK"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "
+This version of the AC_PYTHON_DEVEL macro
+doesn't work properly with versions of Python before
+2.1.0. You may need to re-run configure, setting the
+variables PYTHON_CPPFLAGS, PYTHON_LDFLAGS, PYTHON_SITE_PKG,
+PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand.
+Moreover, to disable this check, set PYTHON_NOVERSIONCHECK
+to something else than an empty string.
- template<typename T>
- void func(...) {}
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+printf "%s\n" "skip at user request" >&6; }
+ fi
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ fi
- template<typename T>
- void func(member<T>*) {}
+ #
+ # if the macro parameter ``version'' is set, honour it
+ #
+ if test -n ""; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
+printf %s "checking for a version of Python ... " >&6; }
+ ac_supports_python_ver=`$PYTHON -c "import sys; \
+ ver = sys.version.split ()[0]; \
+ print (ver )"`
+ if test "$ac_supports_python_ver" = "True"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ as_fn_error $? "this package requires Python .
+If you have it installed, but it isn't the default Python
+interpreter in your system path, please pass the PYTHON_VERSION
+variable to configure. See \`\`configure --help'' for reference.
+" "$LINENO" 5
+ PYTHON_VERSION=""
+ fi
+ fi
- void test();
+ #
+ # Check if you have distutils, else fail
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+printf %s "checking for the distutils Python package... " >&6; }
+ ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
+ if test -z "$ac_distutils_result"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ as_fn_error $? "cannot import Python module \"distutils\".
+Please check your Python installation. The error was:
+$ac_distutils_result" "$LINENO" 5
+ PYTHON_VERSION=""
+ fi
- void test() { func<foo>(0); }
+ #
+ # Check for Python include path
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
+ if test -z "$PYTHON_CPPFLAGS"; then
+ python_path=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_inc ());"`
+ plat_python_path=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_inc (plat_specific=1));"`
+ if test -n "${python_path}"; then
+ if test "${plat_python_path}" != "${python_path}"; then
+ python_path="-I$python_path -I$plat_python_path"
+ else
+ python_path="-I$python_path"
+ fi
+ fi
+ PYTHON_CPPFLAGS=$python_path
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
- }
-} // namespace cxx11
+ #
+ # Check for Python library path
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
+ if test -z "$PYTHON_LDFLAGS"; then
+ # (makes two attempts to ensure we've got a version number
+ # from the interpreter)
+ ac_python_version=`cat<<EOD | $PYTHON -
-#endif // __cplusplus >= 201103L
+# join all versioning strings, on some systems
+# major/minor numbers could be in different list elements
+from distutils.sysconfig import *
+e = get_config_var('VERSION')
+if e is not None:
+ print(e)
+EOD`
+ if test -z "$ac_python_version"; then
+ if test -n "$PYTHON_VERSION"; then
+ ac_python_version=$PYTHON_VERSION
+ else
+ ac_python_version=`$PYTHON -c "import sys; \
+ print (sys.version[:3])"`
+ fi
+ fi
+ # Make the versioning information available to the compiler
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
- eval $cachevar=yes
-else
- eval $cachevar=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- CXX="$ac_save_CXX"
-fi
-eval ac_res=\$$cachevar
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- if eval test x\$$cachevar = xyes; then
- CXX="$CXX $switch"
- CXXCPP="$CXXCPP $switch"
- ac_success=yes
- break
- fi
- done
- fi
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ # JW: We don't need it and it interferes with the hack
+ # to detect multiple Pyhton versions
+ #AC_DEFINE_UNQUOTED([HAVE_PYTHON], ["$ac_python_version"],
+ # [If available, contains the Python version number currently in use.])
- if test x$ax_cxx_compile_cxx11_required = xtrue; then
- if test x$ac_success = xno; then
- as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5
- fi
- fi
- if test x$ac_success = xno; then
- HAVE_CXX11=0
- { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5
-$as_echo "$as_me: No compiler with C++11 support was found" >&6;}
- else
- HAVE_CXX11=1
+ # First, the library directory:
+ ac_python_libdir=`cat<<EOD | $PYTHON -
-$as_echo "#define HAVE_CXX11 1" >>confdefs.h
+# There should be only one
+import distutils.sysconfig
+e = distutils.sysconfig.get_config_var('LIBDIR')
+if e is not None:
+ print (e)
+EOD`
- fi
+ # Now, for the library:
+ ac_python_library=`cat<<EOD | $PYTHON -
+import distutils.sysconfig
+c = distutils.sysconfig.get_config_vars()
+if 'LDVERSION' in c:
+ print ('python'+c['LDVERSION'])
+else:
+ print ('python'+c['VERSION'])
+EOD`
- if test "$HAVE_CXX11" != "1"; then
- if test "$explicit_languages" = "1"; then
- as_fn_error $? "
-***
-*** A compiler with c++11 support is required for the c++ binding.
-***" "$LINENO" 5
- else
- enabled_languages=$(echo $enabled_languages | sed 's/cpp//')
- enabled_languages=$(echo $enabled_languages | sed 's/qt//')
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
-***
-*** No c++11 support detected. C++ and Qt bindings will be disabled.
-***" >&5
-$as_echo "$as_me: WARNING:
-***
-*** No c++11 support detected. C++ and Qt bindings will be disabled.
-***" >&2;}
- fi
- fi
-fi
+ # This small piece shamelessly adapted from PostgreSQL python macro;
+ # credits goes to momjian, I think. I'd like to put the right name
+ # in the credits, if someone can point me in the right direction... ?
+ #
+ if test -n "$ac_python_libdir" -a -n "$ac_python_library"
+ then
+ # use the official shared library
+ ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"`
+ PYTHON_LDFLAGS="-L$ac_python_libdir -l$ac_python_library"
+ else
+ # old way: use libpython from python_configdir
+ ac_python_libdir=`$PYTHON -c \
+ "from distutils.sysconfig import get_python_lib as f; \
+ import os; \
+ print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"`
+ PYTHON_LDFLAGS="-L$ac_python_libdir -lpython$ac_python_version"
+ fi
-# Check whether compiler supports visibility attribute (if cpp language is enabled)
+ if test -z "PYTHON_LDFLAGS"; then
+ as_fn_error $? "
+ Cannot determine location of your Python DSO. Please check it was installed with
+ dynamic libraries enabled, or try setting PYTHON_LDFLAGS by hand.
+ " "$LINENO" 5
+ fi
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
-name="cpp"
-list=$enabled_languages
-found=0
-for n in $list; do
- if test "x$name" = "x$n"; then
- found=1
- fi
-done
+ #
+ # Check for site packages
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
+ if test -z "$PYTHON_SITE_PKG"; then
+ PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_lib(0,0));"`
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
-if test "$found" = "1"; then
+ #
+ # libraries which must be linked in when embedding
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+printf %s "checking python extra libraries... " >&6; }
+ if test -z "$PYTHON_EXTRA_LIBS"; then
+ PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
+ conf = distutils.sysconfig.get_config_var; \
+ print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LIBS" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility))" >&5
-$as_echo_n "checking for __attribute__((visibility))... " >&6; }
-if ${ax_cv_have_func_attribute_visibility+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ #
+ # linking flags needed when embedding
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+printf %s "checking python extra linking flags... " >&6; }
+ if test -z "$PYTHON_EXTRA_LDFLAGS"; then
+ PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
+ conf = distutils.sysconfig.get_config_var; \
+ print (conf('LINKFORSHARED'))"`
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LDFLAGS" >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ #
+ # final check to see if everything compiles alright
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
+ # save current global flags
+ ac_save_LIBS="$LIBS"
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ LIBS="$ac_save_LIBS $PYTHON_LDFLAGS $PYTHON_EXTRA_LDFLAGS $PYTHON_EXTRA_LIBS"
+ CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS"
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
- int foo_def( void ) __attribute__((visibility("default")));
- int foo_hid( void ) __attribute__((visibility("hidden")));
- int foo_int( void ) __attribute__((visibility("internal")));
- int foo_pro( void ) __attribute__((visibility("protected")));
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+ #include <Python.h>
int
-main ()
+main (void)
{
-
+Py_Initialize();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- if grep -- -Wattributes conftest.err; then :
- ax_cv_have_func_attribute_visibility=no
-else
- ax_cv_have_func_attribute_visibility=yes
-fi
-else
- ax_cv_have_func_attribute_visibility=no
+if ac_fn_c_try_link "$LINENO"
+then :
+ pythonexists=yes
+else $as_nop
+ pythonexists=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_func_attribute_visibility" >&5
-$as_echo "$ax_cv_have_func_attribute_visibility" >&6; }
-
- if test yes = $ax_cv_have_func_attribute_visibility; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_FUNC_ATTRIBUTE_VISIBILITY 1
-_ACEOF
-
-fi
+ # turn back to default flags
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ LIBS="$ac_save_LIBS"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
+ if test ! "x$pythonexists" = "xyes"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
+ Could not link test program to Python. Maybe the main Python library has been
+ installed in some non-standard library path. If so, pass it to configure,
+ via the LDFLAGS environment variable.
+ Example: ./configure LDFLAGS=\"-L/usr/non-standard-path/python/lib\"
+ ============================================================================
+ You probably have to install the development version of the Python package
+ for your distribution. The exact name of this package varies among them.
+ ============================================================================
+ " >&5
+printf "%s\n" "$as_me: WARNING:
+ Could not link test program to Python. Maybe the main Python library has been
+ installed in some non-standard library path. If so, pass it to configure,
+ via the LDFLAGS environment variable.
+ Example: ./configure LDFLAGS=\"-L/usr/non-standard-path/python/lib\"
+ ============================================================================
+ You probably have to install the development version of the Python package
+ for your distribution. The exact name of this package varies among them.
+ ============================================================================
+ " >&2;}
+ PYTHON_VERSION=""
+ fi
- if test "$ax_cv_have_func_attribute_visibility" = "yes"; then
- GPGME_CPP_CFLAGS="$GPGME_CPP_CFLAGS -fvisibility=hidden"
- fi
-fi
+ #
+ # all done!
+ #
+ if test "$PYTHON_VERSION"; then
+ PYTHONS="$(echo $PYTHONS $PYTHON)"
+ PYTHON_VERSIONS="$(echo $PYTHON_VERSIONS $PYTHON_VERSION)"
+ fi
-# Check that if qt is enabled cpp also is enabled
+ fi
-name="qt"
-list=$enabled_languages
-found=0
+ unset PYTHON
+ unset PYTHON_VERSION
+ unset PYTHON_CPPFLAGS
+ unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
+ unset PYTHON_SITE_PKG
+ unset PYTHON_EXTRA_LIBS
+ unset PYTHON_EXTRA_LDFLAGS
+ unset ac_cv_path_PYTHON
+ unset am_cv_pathless_PYTHON
+ unset am_cv_python_version
+ unset am_cv_python_platform
+ unset am_cv_python_pythondir
+ unset am_cv_python_pyexecdir
-for n in $list; do
- if test "x$name" = "x$n"; then
- found=1
- fi
-done
-if test "$found" = "1"; then
- # We need to ensure that in the language order qt comes after cpp
- # so we remove qt first and explicitly add it as last list member.
- enabled_languages=$(echo $enabled_languages | sed 's/qt//')
-name="cpp"
-list=$enabled_languages
-found=0
-for n in $list; do
- if test "x$name" = "x$n"; then
- found=1
- fi
-done
- if test "$found" = "0"; then
- as_fn_error $? "
-***
-*** Qt language binding depends on cpp binding.
-***" "$LINENO" 5
- fi
+ if test -n "$PYTHON"; then
+ # If the user set $PYTHON, use it and don't search something else.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.4" >&5
+printf %s "checking whether $PYTHON version is >= 3.4... " >&6; }
+ prog="import sys
+# split strings by '.' and convert to numeric. Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '3.4'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+ if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
+ ($PYTHON -c "$prog") >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ as_fn_error $? "Python interpreter is too old" "$LINENO" 5
+fi
+ am_display_PYTHON=$PYTHON
+ else
+ # Otherwise, try each interpreter until we find one that satisfies
+ # VERSION.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.4" >&5
+printf %s "checking for a Python interpreter with version >= 3.4... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $PKG_CONFIG in
+ for am_cv_pathless_PYTHON in python3.4 none; do
+ test "$am_cv_pathless_PYTHON" = none && break
+ prog="import sys
+# split strings by '.' and convert to numeric. Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '3.4'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+ if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
+ ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+then :
+ break
+fi
+ done
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
+ # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+ if test "$am_cv_pathless_PYTHON" = none; then
+ PYTHON=:
+ else
+ # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
+set dummy $am_cv_pathless_PYTHON; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $PYTHON in
[\\/]* | ?:[\\/]*)
- ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
;;
esac
fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+ fi
+ am_display_PYTHON=$am_cv_pathless_PYTHON
+ fi
+
+
+ if test "$PYTHON" = :; then
+ :
+ else
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
+ PYTHON_VERSION=$am_cv_python_version
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
+ PYTHON_PLATFORM=$am_cv_python_platform
+
+
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+
+# Check whether --with-python-sys-prefix was given.
+if test ${with_python_sys_prefix+y}
+then :
+ withval=$with_python_sys_prefix; am_use_python_sys=:
+else $as_nop
+ am_use_python_sys=false
+fi
+
+
+ # Allow user to override whatever the default Python prefix is.
+
+# Check whether --with-python_prefix was given.
+if test ${with_python_prefix+y}
+then :
+ withval=$with_python_prefix; am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+else $as_nop
+
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
+printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
+if test ${am_cv_python_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
+printf "%s\n" "$am_python_prefix" >&6; }
+ fi
+fi
+
+ # Substituting python_prefix_subst value.
+ PYTHON_PREFIX=$am_python_prefix_subst
+
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+
+# Check whether --with-python_exec_prefix was given.
+if test ${with_python_exec_prefix+y}
+then :
+ withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ if test -n "$with_python_prefix"
+then :
+ am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
+if test ${am_cv_python_exec_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
+printf "%s\n" "$am_python_exec_prefix" >&6; }
+ fi
+fi
+fi
+
+ # Substituting python_exec_prefix_subst.
+ PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
+
+
+ # Factor out some code duplication into this shell variable.
+ am_python_setup_sysconfig="\
+import sys
+# Prefer sysconfig over distutils.sysconfig, for better compatibility
+# with python 3.x. See automake bug#10227.
+try:
+ import sysconfig
+except ImportError:
+ can_use_sysconfig = 0
+else:
+ can_use_sysconfig = 1
+# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
+# <https://github.com/pypa/virtualenv/issues/118>
+try:
+ from platform import python_implementation
+ if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
+ can_use_sysconfig = 0
+except ImportError:
+ pass"
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
+printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+else:
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
+ esac
+ ;;
+ esac
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
+ pythondir=$am_cv_python_pythondir
+
+
+ pkgpythondir=\${pythondir}/$PACKAGE
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
+printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
+else:
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
+sys.stdout.write(sitedir)"`
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
+ esac
+ ;;
+ esac
+
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
+ pyexecdir=$am_cv_python_pyexecdir
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
- ac_pt_PKG_CONFIG=$PKG_CONFIG
- # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $ac_pt_PKG_CONFIG in
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
+
+
+
+
+ #
+ # Allow the use of a (user set) custom python version
+ #
+
+
+ # Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
+set dummy python$PYTHON_VERSION; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $PYTHON in
[\\/]* | ?:[\\/]*)
- ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
;;
esac
fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
- if test "x$ac_pt_PKG_CONFIG" = x; then
- PKG_CONFIG=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- PKG_CONFIG=$ac_pt_PKG_CONFIG
- fi
-else
- PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-fi
-if test -n "$PKG_CONFIG"; then
- _pkg_min_version=0.9.0
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
- if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ if test -z "$PYTHON"; then
+ as_fn_error $? "Cannot find python$PYTHON_VERSION in your system path" "$LINENO" 5
+ PYTHON_VERSION=""
+ fi
+
+ #
+ # Check for a version of Python >= 2.1.0
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+printf %s "checking for a version of Python >= '2.1.0'... " >&6; }
+ ac_supports_python_ver=`$PYTHON -c "import sys; \
+ ver = sys.version.split ()[0]; \
+ print (ver >= '2.1.0')"`
+ if test "$ac_supports_python_ver" != "True"; then
+ if test -z "$PYTHON_NOVERSIONCHECK"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "
+This version of the AC_PYTHON_DEVEL macro
+doesn't work properly with versions of Python before
+2.1.0. You may need to re-run configure, setting the
+variables PYTHON_CPPFLAGS, PYTHON_LDFLAGS, PYTHON_SITE_PKG,
+PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand.
+Moreover, to disable this check, set PYTHON_NOVERSIONCHECK
+to something else than an empty string.
+
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+printf "%s\n" "skip at user request" >&6; }
+ fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- PKG_CONFIG=""
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
-fi
+ #
+ # if the macro parameter ``version'' is set, honour it
+ #
+ if test -n ""; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
+printf %s "checking for a version of Python ... " >&6; }
+ ac_supports_python_ver=`$PYTHON -c "import sys; \
+ ver = sys.version.split ()[0]; \
+ print (ver )"`
+ if test "$ac_supports_python_ver" = "True"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ as_fn_error $? "this package requires Python .
+If you have it installed, but it isn't the default Python
+interpreter in your system path, please pass the PYTHON_VERSION
+variable to configure. See \`\`configure --help'' for reference.
+" "$LINENO" 5
+ PYTHON_VERSION=""
+ fi
+ fi
- have_qt5_libs="no";
+ #
+ # Check if you have distutils, else fail
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+printf %s "checking for the distutils Python package... " >&6; }
+ ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
+ if test -z "$ac_distutils_result"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ as_fn_error $? "cannot import Python module \"distutils\".
+Please check your Python installation. The error was:
+$ac_distutils_result" "$LINENO" 5
+ PYTHON_VERSION=""
+ fi
+ #
+ # Check for Python include path
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
+ if test -z "$PYTHON_CPPFLAGS"; then
+ python_path=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_inc ());"`
+ plat_python_path=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_inc (plat_specific=1));"`
+ if test -n "${python_path}"; then
+ if test "${plat_python_path}" != "${python_path}"; then
+ python_path="-I$python_path -I$plat_python_path"
+ else
+ python_path="-I$python_path"
+ fi
+ fi
+ PYTHON_CPPFLAGS=$python_path
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GPGME_QT" >&5
-$as_echo_n "checking for GPGME_QT... " >&6; }
-if test -n "$PKG_CONFIG"; then
- if test -n "$GPGME_QT_CFLAGS"; then
- pkg_cv_GPGME_QT_CFLAGS="$GPGME_QT_CFLAGS"
- else
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Core >= 5.0.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "Qt5Core >= 5.0.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_GPGME_QT_CFLAGS=`$PKG_CONFIG --cflags "Qt5Core >= 5.0.0" 2>/dev/null`
-else
- pkg_failed=yes
-fi
- fi
-else
- pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
- if test -n "$GPGME_QT_LIBS"; then
- pkg_cv_GPGME_QT_LIBS="$GPGME_QT_LIBS"
- else
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Core >= 5.0.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "Qt5Core >= 5.0.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_GPGME_QT_LIBS=`$PKG_CONFIG --libs "Qt5Core >= 5.0.0" 2>/dev/null`
-else
- pkg_failed=yes
-fi
- fi
-else
- pkg_failed=untried
-fi
+ #
+ # Check for Python library path
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
+ if test -z "$PYTHON_LDFLAGS"; then
+ # (makes two attempts to ensure we've got a version number
+ # from the interpreter)
+ ac_python_version=`cat<<EOD | $PYTHON -
+
+# join all versioning strings, on some systems
+# major/minor numbers could be in different list elements
+from distutils.sysconfig import *
+e = get_config_var('VERSION')
+if e is not None:
+ print(e)
+EOD`
+
+ if test -z "$ac_python_version"; then
+ if test -n "$PYTHON_VERSION"; then
+ ac_python_version=$PYTHON_VERSION
+ else
+ ac_python_version=`$PYTHON -c "import sys; \
+ print (sys.version[:3])"`
+ fi
+ fi
+
+ # Make the versioning information available to the compiler
+
+ # JW: We don't need it and it interferes with the hack
+ # to detect multiple Pyhton versions
+ #AC_DEFINE_UNQUOTED([HAVE_PYTHON], ["$ac_python_version"],
+ # [If available, contains the Python version number currently in use.])
+
+ # First, the library directory:
+ ac_python_libdir=`cat<<EOD | $PYTHON -
+
+# There should be only one
+import distutils.sysconfig
+e = distutils.sysconfig.get_config_var('LIBDIR')
+if e is not None:
+ print (e)
+EOD`
+
+ # Now, for the library:
+ ac_python_library=`cat<<EOD | $PYTHON -
+
+import distutils.sysconfig
+c = distutils.sysconfig.get_config_vars()
+if 'LDVERSION' in c:
+ print ('python'+c['LDVERSION'])
+else:
+ print ('python'+c['VERSION'])
+EOD`
+
+ # This small piece shamelessly adapted from PostgreSQL python macro;
+ # credits goes to momjian, I think. I'd like to put the right name
+ # in the credits, if someone can point me in the right direction... ?
+ #
+ if test -n "$ac_python_libdir" -a -n "$ac_python_library"
+ then
+ # use the official shared library
+ ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"`
+ PYTHON_LDFLAGS="-L$ac_python_libdir -l$ac_python_library"
+ else
+ # old way: use libpython from python_configdir
+ ac_python_libdir=`$PYTHON -c \
+ "from distutils.sysconfig import get_python_lib as f; \
+ import os; \
+ print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"`
+ PYTHON_LDFLAGS="-L$ac_python_libdir -lpython$ac_python_version"
+ fi
+
+ if test -z "PYTHON_LDFLAGS"; then
+ as_fn_error $? "
+ Cannot determine location of your Python DSO. Please check it was installed with
+ dynamic libraries enabled, or try setting PYTHON_LDFLAGS by hand.
+ " "$LINENO" 5
+ fi
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
+
+
+ #
+ # Check for site packages
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
+ if test -z "$PYTHON_SITE_PKG"; then
+ PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_lib(0,0));"`
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
+
+
+ #
+ # libraries which must be linked in when embedding
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+printf %s "checking python extra libraries... " >&6; }
+ if test -z "$PYTHON_EXTRA_LIBS"; then
+ PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
+ conf = distutils.sysconfig.get_config_var; \
+ print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LIBS" >&6; }
+ #
+ # linking flags needed when embedding
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+printf %s "checking python extra linking flags... " >&6; }
+ if test -z "$PYTHON_EXTRA_LDFLAGS"; then
+ PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
+ conf = distutils.sysconfig.get_config_var; \
+ print (conf('LINKFORSHARED'))"`
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LDFLAGS" >&6; }
+
+
+ #
+ # final check to see if everything compiles alright
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
+ # save current global flags
+ ac_save_LIBS="$LIBS"
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ LIBS="$ac_save_LIBS $PYTHON_LDFLAGS $PYTHON_EXTRA_LDFLAGS $PYTHON_EXTRA_LIBS"
+ CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS"
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
-if test $pkg_failed = yes; then
+ #include <Python.h>
+int
+main (void)
+{
+Py_Initialize();
+ ;
+ return 0;
+}
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ pythonexists=yes
+else $as_nop
+ pythonexists=no
fi
- if test $_pkg_short_errors_supported = yes; then
- GPGME_QT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt5Core >= 5.0.0"`
- else
- GPGME_QT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt5Core >= 5.0.0"`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$GPGME_QT_PKG_ERRORS" >&5
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- have_qt5_libs="no"
-elif test $pkg_failed = untried; then
- have_qt5_libs="no"
-else
- GPGME_QT_CFLAGS=$pkg_cv_GPGME_QT_CFLAGS
- GPGME_QT_LIBS=$pkg_cv_GPGME_QT_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- have_qt5_libs="yes"
-fi
+ # turn back to default flags
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ LIBS="$ac_save_LIBS"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GPGME_QTTEST" >&5
-$as_echo_n "checking for GPGME_QTTEST... " >&6; }
+ if test ! "x$pythonexists" = "xyes"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
+ Could not link test program to Python. Maybe the main Python library has been
+ installed in some non-standard library path. If so, pass it to configure,
+ via the LDFLAGS environment variable.
+ Example: ./configure LDFLAGS=\"-L/usr/non-standard-path/python/lib\"
+ ============================================================================
+ You probably have to install the development version of the Python package
+ for your distribution. The exact name of this package varies among them.
+ ============================================================================
+ " >&5
+printf "%s\n" "$as_me: WARNING:
+ Could not link test program to Python. Maybe the main Python library has been
+ installed in some non-standard library path. If so, pass it to configure,
+ via the LDFLAGS environment variable.
+ Example: ./configure LDFLAGS=\"-L/usr/non-standard-path/python/lib\"
+ ============================================================================
+ You probably have to install the development version of the Python package
+ for your distribution. The exact name of this package varies among them.
+ ============================================================================
+ " >&2;}
+ PYTHON_VERSION=""
+ fi
-if test -n "$PKG_CONFIG"; then
- if test -n "$GPGME_QTTEST_CFLAGS"; then
- pkg_cv_GPGME_QTTEST_CFLAGS="$GPGME_QTTEST_CFLAGS"
- else
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Test >= 5.0.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "Qt5Test >= 5.0.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_GPGME_QTTEST_CFLAGS=`$PKG_CONFIG --cflags "Qt5Test >= 5.0.0" 2>/dev/null`
-else
- pkg_failed=yes
-fi
- fi
-else
- pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
- if test -n "$GPGME_QTTEST_LIBS"; then
- pkg_cv_GPGME_QTTEST_LIBS="$GPGME_QTTEST_LIBS"
- else
- if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"Qt5Test >= 5.0.0\""; } >&5
- ($PKG_CONFIG --exists --print-errors "Qt5Test >= 5.0.0") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then
- pkg_cv_GPGME_QTTEST_LIBS=`$PKG_CONFIG --libs "Qt5Test >= 5.0.0" 2>/dev/null`
-else
- pkg_failed=yes
-fi
- fi
-else
- pkg_failed=untried
-fi
+ #
+ # all done!
+ #
+ if test "$PYTHON_VERSION"; then
+ PYTHONS="$(echo $PYTHONS $PYTHON)"
+ PYTHON_VERSIONS="$(echo $PYTHON_VERSIONS $PYTHON_VERSION)"
+ fi
+ fi
-if test $pkg_failed = yes; then
+ unset PYTHON
+ unset PYTHON_VERSION
+ unset PYTHON_CPPFLAGS
+ unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
+ unset PYTHON_SITE_PKG
+ unset PYTHON_EXTRA_LIBS
+ unset PYTHON_EXTRA_LDFLAGS
+ unset ac_cv_path_PYTHON
+ unset am_cv_pathless_PYTHON
+ unset am_cv_python_version
+ unset am_cv_python_platform
+ unset am_cv_python_pythondir
+ unset am_cv_python_pyexecdir
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
- _pkg_short_errors_supported=yes
-else
- _pkg_short_errors_supported=no
-fi
- if test $_pkg_short_errors_supported = yes; then
- GPGME_QTTEST_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "Qt5Test >= 5.0.0"`
- else
- GPGME_QTTEST_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "Qt5Test >= 5.0.0"`
- fi
- # Put the nasty error message in config.log where it belongs
- echo "$GPGME_QTTEST_PKG_ERRORS" >&5
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- have_qt5test_libs="no"
-elif test $pkg_failed = untried; then
- have_qt5test_libs="no"
-else
- GPGME_QTTEST_CFLAGS=$pkg_cv_GPGME_QTTEST_CFLAGS
- GPGME_QTTEST_LIBS=$pkg_cv_GPGME_QTTEST_LIBS
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- have_qt5test_libs="yes"
-fi
- if ! test "$have_w32_system" = yes; then
- if "$PKG_CONFIG" --variable qt_config Qt5Core | grep -q "reduce_relocations"; then
- GPGME_QT_CFLAGS="$GPGME_QT_CFLAGS -fpic"
- fi
- fi
- if test "$have_qt5_libs" = "yes"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}moc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}moc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MOC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$MOC"; then
- ac_cv_prog_MOC="$MOC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_MOC="${ac_tool_prefix}moc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
-fi
-fi
-MOC=$ac_cv_prog_MOC
-if test -n "$MOC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MOC" >&5
-$as_echo "$MOC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+ if test -n "$PYTHON"; then
+ # If the user set $PYTHON, use it and don't search something else.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.5" >&5
+printf %s "checking whether $PYTHON version is >= 3.5... " >&6; }
+ prog="import sys
+# split strings by '.' and convert to numeric. Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '3.5'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+ if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
+ ($PYTHON -c "$prog") >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ as_fn_error $? "Python interpreter is too old" "$LINENO" 5
fi
-if test -z "$ac_cv_prog_MOC"; then
- ac_ct_MOC=$MOC
- # Extract the first word of "moc", so it can be a program name with args.
-set dummy moc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MOC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_MOC"; then
- ac_cv_prog_ac_ct_MOC="$ac_ct_MOC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_MOC="moc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
+ am_display_PYTHON=$PYTHON
+ else
+ # Otherwise, try each interpreter until we find one that satisfies
+ # VERSION.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.5" >&5
+printf %s "checking for a Python interpreter with version >= 3.5... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ for am_cv_pathless_PYTHON in python3.5 none; do
+ test "$am_cv_pathless_PYTHON" = none && break
+ prog="import sys
+# split strings by '.' and convert to numeric. Append some zeros
+# because we need at least 4 digits for the hex conversion.
+# map returns an iterator in Python 3.0 and a list in 2.x
+minver = list(map(int, '3.5'.split('.'))) + [0, 0, 0]
+minverhex = 0
+# xrange is not present in Python 3.0 and range returns an iterator
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
+sys.exit(sys.hexversion < minverhex)"
+ if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
+ ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+then :
+ break
fi
+ done
fi
-ac_ct_MOC=$ac_cv_prog_ac_ct_MOC
-if test -n "$ac_ct_MOC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MOC" >&5
-$as_echo "$ac_ct_MOC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
- if test "x$ac_ct_MOC" = x; then
- MOC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- MOC=$ac_ct_MOC
- fi
-else
- MOC="$ac_cv_prog_MOC"
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking moc version" >&5
-$as_echo_n "checking moc version... " >&6; }
- mocversion=`$MOC -v 2>&1`
- mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc 5"`
- if test x"$mocversiongrep" != x"$mocversion"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- # moc was not the qt5 one, try with moc-qt5
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}moc-qt5", so it can be a program name with args.
-set dummy ${ac_tool_prefix}moc-qt5; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MOC2+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$MOC2"; then
- ac_cv_prog_MOC2="$MOC2" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
+ # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
+ if test "$am_cv_pathless_PYTHON" = none; then
+ PYTHON=:
+ else
+ # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
+set dummy $am_cv_pathless_PYTHON; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $PYTHON in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_MOC2="${ac_tool_prefix}moc-qt5"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
+ ;;
+esac
fi
-fi
-MOC2=$ac_cv_prog_MOC2
-if test -n "$MOC2"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MOC2" >&5
-$as_echo "$MOC2" >&6; }
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-fi
-if test -z "$ac_cv_prog_MOC2"; then
- ac_ct_MOC2=$MOC2
- # Extract the first word of "moc-qt5", so it can be a program name with args.
-set dummy moc-qt5; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MOC2+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_MOC2"; then
- ac_cv_prog_ac_ct_MOC2="$ac_ct_MOC2" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_MOC2="moc-qt5"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
+ fi
+ am_display_PYTHON=$am_cv_pathless_PYTHON
+ fi
-fi
-fi
-ac_ct_MOC2=$ac_cv_prog_ac_ct_MOC2
-if test -n "$ac_ct_MOC2"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MOC2" >&5
-$as_echo "$ac_ct_MOC2" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
- if test "x$ac_ct_MOC2" = x; then
- MOC2=""
+ if test "$PYTHON" = :; then
+ :
else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- MOC2=$ac_ct_MOC2
- fi
-else
- MOC2="$ac_cv_prog_MOC2"
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
+ PYTHON_VERSION=$am_cv_python_version
- mocversion=`$MOC2 -v 2>&1`
- mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc-qt5 5|moc 5"`
- if test x"$mocversiongrep" != x"$mocversion"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}qtchooser", so it can be a program name with args.
-set dummy ${ac_tool_prefix}qtchooser; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_QTCHOOSER+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$QTCHOOSER"; then
- ac_cv_prog_QTCHOOSER="$QTCHOOSER" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_QTCHOOSER="${ac_tool_prefix}qtchooser"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
fi
-fi
-QTCHOOSER=$ac_cv_prog_QTCHOOSER
-if test -n "$QTCHOOSER"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QTCHOOSER" >&5
-$as_echo "$QTCHOOSER" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
+ PYTHON_PLATFORM=$am_cv_python_platform
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+
+# Check whether --with-python-sys-prefix was given.
+if test ${with_python_sys_prefix+y}
+then :
+ withval=$with_python_sys_prefix; am_use_python_sys=:
+else $as_nop
+ am_use_python_sys=false
+fi
+
+
+ # Allow user to override whatever the default Python prefix is.
+
+# Check whether --with-python_prefix was given.
+if test ${with_python_prefix+y}
+then :
+ withval=$with_python_prefix; am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+else $as_nop
+
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
+printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
+if test ${am_cv_python_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
+printf "%s\n" "$am_python_prefix" >&6; }
+ fi
fi
-if test -z "$ac_cv_prog_QTCHOOSER"; then
- ac_ct_QTCHOOSER=$QTCHOOSER
- # Extract the first word of "qtchooser", so it can be a program name with args.
-set dummy qtchooser; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_QTCHOOSER+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$ac_ct_QTCHOOSER"; then
- ac_cv_prog_ac_ct_QTCHOOSER="$ac_ct_QTCHOOSER" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_QTCHOOSER="qtchooser"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
+ # Substituting python_prefix_subst value.
+ PYTHON_PREFIX=$am_python_prefix_subst
+
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+
+# Check whether --with-python_exec_prefix was given.
+if test ${with_python_exec_prefix+y}
+then :
+ withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ if test -n "$with_python_prefix"
+then :
+ am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
+if test ${am_cv_python_exec_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
+printf "%s\n" "$am_python_exec_prefix" >&6; }
+ fi
fi
fi
-ac_ct_QTCHOOSER=$ac_cv_prog_ac_ct_QTCHOOSER
-if test -n "$ac_ct_QTCHOOSER"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_QTCHOOSER" >&5
-$as_echo "$ac_ct_QTCHOOSER" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
- if test "x$ac_ct_QTCHOOSER" = x; then
- QTCHOOSER=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- QTCHOOSER=$ac_ct_QTCHOOSER
- fi
-else
- QTCHOOSER="$ac_cv_prog_QTCHOOSER"
-fi
+ # Substituting python_exec_prefix_subst.
+ PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
- qt5tooldir=`QT_SELECT=qt5 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2`
- mocversion=`$qt5tooldir/moc -v 2>&1`
- mocversiongrep=`echo $mocversion | grep -E "Qt 5|moc 5"`
- if test x"$mocversiongrep" != x"$mocversion"; then
- # no valid moc found
- have_qt5_libs="no";
- else
- MOC=$qt5tooldir/moc
- fi
- else
- MOC=$MOC2
- fi
- fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mocversion" >&5
-$as_echo "$mocversion" >&6; }
- OLDCPPFLAGS=$CPPFLAGS
- CPPFLAGS=$GPGME_QT_CFLAGS
- OLDLIBS=$LIBS
- LIBS=$GPGME_QT_LIBS
- ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a simple qt program can be built" >&5
-$as_echo_n "checking whether a simple qt program can be built... " >&6; }
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ # Factor out some code duplication into this shell variable.
+ am_python_setup_sysconfig="\
+import sys
+# Prefer sysconfig over distutils.sysconfig, for better compatibility
+# with python 3.x. See automake bug#10227.
+try:
+ import sysconfig
+except ImportError:
+ can_use_sysconfig = 0
+else:
+ can_use_sysconfig = 1
+# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
+# <https://github.com/pypa/virtualenv/issues/118>
+try:
+ from platform import python_implementation
+ if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
+ can_use_sysconfig = 0
+except ImportError:
+ pass"
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
+printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+else:
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+sys.stdout.write(sitedir)"`
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
+ esac
+ ;;
+ esac
- #include <QCoreApplication>
- int main (int argc, char **argv) {
- QCoreApplication app(argc, argv);
- app.exec();
- }
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
- have_qt5_libs='yes'
-else
- have_qt5_libs='no'
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_qt5_libs" >&5
-$as_echo "$have_qt5_libs" >&6; }
- ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
+ pythondir=$am_cv_python_pythondir
- CPPFLAGS=$OLDCPPFLAGS
- LIBS=$OLDLIBS
- fi
- if test "$have_qt5_libs" != "yes"; then
- if test "$explicit_languages" = "1"; then
- as_fn_error $? "
-***
-*** Qt5 (Qt5Core) is required for Qt binding.
-***" "$LINENO" 5
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
-***
-*** Qt5 (Qt5Core) not found Qt Binding will be disabled.
-***" >&5
-$as_echo "$as_me: WARNING:
-***
-*** Qt5 (Qt5Core) not found Qt Binding will be disabled.
-***" >&2;}
- fi
- else
- enabled_languages=`echo $enabled_languages qt`
+ pkgpythondir=\${pythondir}/$PACKAGE
- for ac_prog in doxygen
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DOXYGEN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$DOXYGEN"; then
- ac_cv_prog_DOXYGEN="$DOXYGEN" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_DOXYGEN="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
+printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
+$am_python_setup_sysconfig
+if can_use_sysconfig:
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
+else:
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
+sys.stdout.write(sitedir)"`
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
+ esac
+ ;;
+ esac
fi
-fi
-DOXYGEN=$ac_cv_prog_DOXYGEN
-if test -n "$DOXYGEN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOXYGEN" >&5
-$as_echo "$DOXYGEN" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
+ pyexecdir=$am_cv_python_pyexecdir
+
+
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
+
+
- test -n "$DOXYGEN" && break
-done
+ #
+ # Allow the use of a (user set) custom python version
+ #
- if test -z "$DOXYGEN";
- # This is not highlighted because it's not really important.
- then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Doxygen not found - Qt binding doc will not be built." >&5
-$as_echo "$as_me: WARNING: Doxygen not found - Qt binding doc will not be built." >&2;}
- fi
- for ac_prog in dot
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_GRAPHVIZ+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$GRAPHVIZ"; then
- ac_cv_prog_GRAPHVIZ="$GRAPHVIZ" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+
+ # Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
+set dummy python$PYTHON_VERSION; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ case $PYTHON in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_GRAPHVIZ="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
+ ;;
+esac
fi
-fi
-GRAPHVIZ=$ac_cv_prog_GRAPHVIZ
-if test -n "$GRAPHVIZ"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GRAPHVIZ" >&5
-$as_echo "$GRAPHVIZ" >&6; }
+PYTHON=$ac_cv_path_PYTHON
+if test -n "$PYTHON"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
- test -n "$GRAPHVIZ" && break
-done
-
- if test -z "$GRAPHVIZ";
- then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Graphviz not found - Qt binding doc will not have diagrams." >&5
-$as_echo "$as_me: WARNING: Graphviz not found - Qt binding doc will not have diagrams." >&2;}
- fi
- fi
-fi
-
-# Check if compiler supports visibility attribute (if qt is enabled)
-
-name="qt"
-list=$enabled_languages
-found=0
-
-for n in $list; do
- if test "x$name" = "x$n"; then
- found=1
- fi
-done
-
-if test "$found" = "1"; then
+ if test -z "$PYTHON"; then
+ as_fn_error $? "Cannot find python$PYTHON_VERSION in your system path" "$LINENO" 5
+ PYTHON_VERSION=""
+ fi
+ #
+ # Check for a version of Python >= 2.1.0
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+printf %s "checking for a version of Python >= '2.1.0'... " >&6; }
+ ac_supports_python_ver=`$PYTHON -c "import sys; \
+ ver = sys.version.split ()[0]; \
+ print (ver >= '2.1.0')"`
+ if test "$ac_supports_python_ver" != "True"; then
+ if test -z "$PYTHON_NOVERSIONCHECK"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "
+This version of the AC_PYTHON_DEVEL macro
+doesn't work properly with versions of Python before
+2.1.0. You may need to re-run configure, setting the
+variables PYTHON_CPPFLAGS, PYTHON_LDFLAGS, PYTHON_SITE_PKG,
+PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand.
+Moreover, to disable this check, set PYTHON_NOVERSIONCHECK
+to something else than an empty string.
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+printf "%s\n" "skip at user request" >&6; }
+ fi
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __attribute__((visibility))" >&5
-$as_echo_n "checking for __attribute__((visibility))... " >&6; }
-if ${ax_cv_have_func_attribute_visibility+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ #
+ # if the macro parameter ``version'' is set, honour it
+ #
+ if test -n ""; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
+printf %s "checking for a version of Python ... " >&6; }
+ ac_supports_python_ver=`$PYTHON -c "import sys; \
+ ver = sys.version.split ()[0]; \
+ print (ver )"`
+ if test "$ac_supports_python_ver" = "True"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ as_fn_error $? "this package requires Python .
+If you have it installed, but it isn't the default Python
+interpreter in your system path, please pass the PYTHON_VERSION
+variable to configure. See \`\`configure --help'' for reference.
+" "$LINENO" 5
+ PYTHON_VERSION=""
+ fi
+ fi
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ #
+ # Check if you have distutils, else fail
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+printf %s "checking for the distutils Python package... " >&6; }
+ ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
+ if test -z "$ac_distutils_result"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ as_fn_error $? "cannot import Python module \"distutils\".
+Please check your Python installation. The error was:
+$ac_distutils_result" "$LINENO" 5
+ PYTHON_VERSION=""
+ fi
+ #
+ # Check for Python include path
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
+ if test -z "$PYTHON_CPPFLAGS"; then
+ python_path=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_inc ());"`
+ plat_python_path=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_inc (plat_specific=1));"`
+ if test -n "${python_path}"; then
+ if test "${plat_python_path}" != "${python_path}"; then
+ python_path="-I$python_path -I$plat_python_path"
+ else
+ python_path="-I$python_path"
+ fi
+ fi
+ PYTHON_CPPFLAGS=$python_path
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
- int foo_def( void ) __attribute__((visibility("default")));
- int foo_hid( void ) __attribute__((visibility("hidden")));
- int foo_int( void ) __attribute__((visibility("internal")));
- int foo_pro( void ) __attribute__((visibility("protected")));
-int
-main ()
-{
+ #
+ # Check for Python library path
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
+ if test -z "$PYTHON_LDFLAGS"; then
+ # (makes two attempts to ensure we've got a version number
+ # from the interpreter)
+ ac_python_version=`cat<<EOD | $PYTHON -
- ;
- return 0;
-}
+# join all versioning strings, on some systems
+# major/minor numbers could be in different list elements
+from distutils.sysconfig import *
+e = get_config_var('VERSION')
+if e is not None:
+ print(e)
+EOD`
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- if grep -- -Wattributes conftest.err; then :
- ax_cv_have_func_attribute_visibility=no
-else
- ax_cv_have_func_attribute_visibility=yes
-fi
-else
- ax_cv_have_func_attribute_visibility=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+ if test -z "$ac_python_version"; then
+ if test -n "$PYTHON_VERSION"; then
+ ac_python_version=$PYTHON_VERSION
+ else
+ ac_python_version=`$PYTHON -c "import sys; \
+ print (sys.version[:3])"`
+ fi
+ fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_func_attribute_visibility" >&5
-$as_echo "$ax_cv_have_func_attribute_visibility" >&6; }
+ # Make the versioning information available to the compiler
- if test yes = $ax_cv_have_func_attribute_visibility; then :
+ # JW: We don't need it and it interferes with the hack
+ # to detect multiple Pyhton versions
+ #AC_DEFINE_UNQUOTED([HAVE_PYTHON], ["$ac_python_version"],
+ # [If available, contains the Python version number currently in use.])
-cat >>confdefs.h <<_ACEOF
-#define HAVE_FUNC_ATTRIBUTE_VISIBILITY 1
-_ACEOF
+ # First, the library directory:
+ ac_python_libdir=`cat<<EOD | $PYTHON -
-fi
+# There should be only one
+import distutils.sysconfig
+e = distutils.sysconfig.get_config_var('LIBDIR')
+if e is not None:
+ print (e)
+EOD`
+ # Now, for the library:
+ ac_python_library=`cat<<EOD | $PYTHON -
+import distutils.sysconfig
+c = distutils.sysconfig.get_config_vars()
+if 'LDVERSION' in c:
+ print ('python'+c['LDVERSION'])
+else:
+ print ('python'+c['VERSION'])
+EOD`
- if test "$ax_cv_have_func_attribute_visibility" = "yes"; then
- GPGME_QT_CFLAGS="$GPGME_QT_CFLAGS -fvisibility=hidden"
- fi
-fi
+ # This small piece shamelessly adapted from PostgreSQL python macro;
+ # credits goes to momjian, I think. I'd like to put the right name
+ # in the credits, if someone can point me in the right direction... ?
+ #
+ if test -n "$ac_python_libdir" -a -n "$ac_python_library"
+ then
+ # use the official shared library
+ ac_python_library=`echo "$ac_python_library" | sed "s/^lib//"`
+ PYTHON_LDFLAGS="-L$ac_python_libdir -l$ac_python_library"
+ else
+ # old way: use libpython from python_configdir
+ ac_python_libdir=`$PYTHON -c \
+ "from distutils.sysconfig import get_python_lib as f; \
+ import os; \
+ print (os.path.join(f(plat_specific=1, standard_lib=1), 'config'));"`
+ PYTHON_LDFLAGS="-L$ac_python_libdir -lpython$ac_python_version"
+ fi
- if test -n "$DOXYGEN"; then
- HAVE_DOXYGEN_TRUE=
- HAVE_DOXYGEN_FALSE='#'
-else
- HAVE_DOXYGEN_TRUE='#'
- HAVE_DOXYGEN_FALSE=
-fi
+ if test -z "PYTHON_LDFLAGS"; then
+ as_fn_error $? "
+ Cannot determine location of your Python DSO. Please check it was installed with
+ dynamic libraries enabled, or try setting PYTHON_LDFLAGS by hand.
+ " "$LINENO" 5
+ fi
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
-if test -n "$GRAPHVIZ"; then
- HAVE_DOT="YES"
-else
- HAVE_DOT="NO"
-fi
+ #
+ # Check for site packages
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
+ if test -z "$PYTHON_SITE_PKG"; then
+ PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
+ print (distutils.sysconfig.get_python_lib(0,0));"`
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
-# Python bindings.
-name="python"
-list=$enabled_languages
-found=0
+ #
+ # libraries which must be linked in when embedding
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+printf %s "checking python extra libraries... " >&6; }
+ if test -z "$PYTHON_EXTRA_LIBS"; then
+ PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
+ conf = distutils.sysconfig.get_config_var; \
+ print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LIBS" >&6; }
-for n in $list; do
- if test "x$name" = "x$n"; then
- found=1
- fi
-done
-found_py=$found
-if test "$found_py" = "1"; then
+ #
+ # linking flags needed when embedding
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+printf %s "checking python extra linking flags... " >&6; }
+ if test -z "$PYTHON_EXTRA_LDFLAGS"; then
+ PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
+ conf = distutils.sysconfig.get_config_var; \
+ print (conf('LINKFORSHARED'))"`
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LDFLAGS" >&6; }
- # Ubuntu has swig 2.0 as /usr/bin/swig2.0
- for ac_prog in swig swig2.0
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_SWIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- case $SWIG in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
- ;;
-esac
-fi
-SWIG=$ac_cv_path_SWIG
-if test -n "$SWIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5
-$as_echo "$SWIG" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
+ #
+ # final check to see if everything compiles alright
+ #
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
+ # save current global flags
+ ac_save_LIBS="$LIBS"
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ LIBS="$ac_save_LIBS $PYTHON_LDFLAGS $PYTHON_EXTRA_LDFLAGS $PYTHON_EXTRA_LIBS"
+ CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS"
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
- test -n "$SWIG" && break
-done
+ #include <Python.h>
+int
+main (void)
+{
+Py_Initialize();
+ ;
+ return 0;
+}
- if test -z "$SWIG" ; then
- :
- elif test -n "" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking SWIG version" >&5
-$as_echo_n "checking SWIG version... " >&6; }
- swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5
-$as_echo "$swig_version" >&6; }
- if test -n "$swig_version" ; then
- # Calculate the required version number components
- required=
- required_major=`echo $required | sed 's/[^0-9].*//'`
- if test -z "$required_major" ; then
- required_major=0
- fi
- required=`echo $required | sed 's/[0-9]*[^0-9]//'`
- required_minor=`echo $required | sed 's/[^0-9].*//'`
- if test -z "$required_minor" ; then
- required_minor=0
- fi
- required=`echo $required | sed 's/[0-9]*[^0-9]//'`
- required_patch=`echo $required | sed 's/[^0-9].*//'`
- if test -z "$required_patch" ; then
- required_patch=0
- fi
- # Calculate the available version number components
- available=$swig_version
- available_major=`echo $available | sed 's/[^0-9].*//'`
- if test -z "$available_major" ; then
- available_major=0
- fi
- available=`echo $available | sed 's/[0-9]*[^0-9]//'`
- available_minor=`echo $available | sed 's/[^0-9].*//'`
- if test -z "$available_minor" ; then
- available_minor=0
- fi
- available=`echo $available | sed 's/[0-9]*[^0-9]//'`
- available_patch=`echo $available | sed 's/[^0-9].*//'`
- if test -z "$available_patch" ; then
- available_patch=0
- fi
- # Convert the version tuple into a single number for easier comparison.
- # Using base 100 should be safe since SWIG internally uses BCD values
- # to encode its version number.
- required_swig_vernum=`expr $required_major \* 10000 \
- \+ $required_minor \* 100 \+ $required_patch`
- available_swig_vernum=`expr $available_major \* 10000 \
- \+ $available_minor \* 100 \+ $available_patch`
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ pythonexists=yes
+else $as_nop
+ pythonexists=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
- if test $available_swig_vernum -lt $required_swig_vernum; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= is required. You have $swig_version." >&5
-$as_echo "$as_me: WARNING: SWIG version >= is required. You have $swig_version." >&2;}
- SWIG=''
+ # turn back to default flags
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ LIBS="$ac_save_LIBS"
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SWIG library" >&5
-$as_echo_n "checking for SWIG library... " >&6; }
- SWIG_LIB=`$SWIG -swiglib`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_LIB" >&5
-$as_echo "$SWIG_LIB" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
- fi
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5
-$as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;}
- SWIG=''
+ if test ! "x$pythonexists" = "xyes"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
+ Could not link test program to Python. Maybe the main Python library has been
+ installed in some non-standard library path. If so, pass it to configure,
+ via the LDFLAGS environment variable.
+ Example: ./configure LDFLAGS=\"-L/usr/non-standard-path/python/lib\"
+ ============================================================================
+ You probably have to install the development version of the Python package
+ for your distribution. The exact name of this package varies among them.
+ ============================================================================
+ " >&5
+printf "%s\n" "$as_me: WARNING:
+ Could not link test program to Python. Maybe the main Python library has been
+ installed in some non-standard library path. If so, pass it to configure,
+ via the LDFLAGS environment variable.
+ Example: ./configure LDFLAGS=\"-L/usr/non-standard-path/python/lib\"
+ ============================================================================
+ You probably have to install the development version of the Python package
+ for your distribution. The exact name of this package varies among them.
+ ============================================================================
+ " >&2;}
+ PYTHON_VERSION=""
+ fi
- fi
- fi
+ #
+ # all done!
+ #
+ if test "$PYTHON_VERSION"; then
+ PYTHONS="$(echo $PYTHONS $PYTHON)"
+ PYTHON_VERSIONS="$(echo $PYTHON_VERSIONS $PYTHON_VERSION)"
+ fi
- if test -z "$SWIG"; then
- if test "$explicit_languages" = "1"; then
- as_fn_error $? "
-***
-*** You need SWIG to build the Python bindings.
-***" "$LINENO" 5
- else
- enabled_languages=$(echo $enabled_languages | sed 's/python//')
- fi
- else
- # Reset the version collecting vars.
- PYTHONS=
- PYTHON_VERSIONS=
+ fi
- if test "$found_py" = "1" -o "$found_py3" = "1"; then
- # Reset everything, so that we can look for another Python.
- unset PYTHON
+ unset PYTHON
unset PYTHON_VERSION
unset PYTHON_CPPFLAGS
unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
unset PYTHON_SITE_PKG
unset PYTHON_EXTRA_LIBS
unset PYTHON_EXTRA_LDFLAGS
if test -n "$PYTHON"; then
# If the user set $PYTHON, use it and don't search something else.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.7" >&5
-$as_echo_n "checking whether $PYTHON version is >= 2.7... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.6" >&5
+printf %s "checking whether $PYTHON version is >= 3.6... " >&6; }
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.6'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "Python interpreter is too old" "$LINENO" 5
fi
am_display_PYTHON=$PYTHON
else
# Otherwise, try each interpreter until we find one that satisfies
# VERSION.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.7" >&5
-$as_echo_n "checking for a Python interpreter with version >= 2.7... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.6" >&5
+printf %s "checking for a Python interpreter with version >= 3.6... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
- for am_cv_pathless_PYTHON in python2.7 none; do
+ for am_cv_pathless_PYTHON in python3.6 none; do
test "$am_cv_pathless_PYTHON" = none && break
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.6'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
+ (exit $ac_status); }
+then :
break
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
if test "$am_cv_pathless_PYTHON" = none; then
PYTHON=:
else
# Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "$PYTHON" = :; then
- :
+ :
else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
PYTHON_VERSION=$am_cv_python_version
-
- PYTHON_PREFIX='${prefix}'
-
- PYTHON_EXEC_PREFIX='${exec_prefix}'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
+ PYTHON_PLATFORM=$am_cv_python_platform
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+
+# Check whether --with-python-sys-prefix was given.
+if test ${with_python_sys_prefix+y}
+then :
+ withval=$with_python_sys_prefix; am_use_python_sys=:
+else $as_nop
+ am_use_python_sys=false
+fi
+
+
+ # Allow user to override whatever the default Python prefix is.
+
+# Check whether --with-python_prefix was given.
+if test ${with_python_prefix+y}
+then :
+ withval=$with_python_prefix; am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+else $as_nop
+
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
+printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
+if test ${am_cv_python_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
+printf "%s\n" "$am_python_prefix" >&6; }
+ fi
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+ # Substituting python_prefix_subst value.
+ PYTHON_PREFIX=$am_python_prefix_subst
+
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+
+# Check whether --with-python_exec_prefix was given.
+if test ${with_python_exec_prefix+y}
+then :
+ withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ if test -n "$with_python_prefix"
+then :
+ am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
+if test ${am_cv_python_exec_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
+printf "%s\n" "$am_python_exec_prefix" >&6; }
+ fi
+fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
- PYTHON_PLATFORM=$am_cv_python_platform
+ # Substituting python_exec_prefix_subst.
+ PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
- # Just factor out some code duplication.
+
+ # Factor out some code duplication into this shell variable.
am_python_setup_sysconfig="\
import sys
# Prefer sysconfig over distutils.sysconfig, for better compatibility
pass"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$prefix" = xNONE
- then
- am_py_prefix=$ac_default_prefix
- else
- am_py_prefix=$prefix
- fi
- am_cv_python_pythondir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
+printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pythondir in
- $am_py_prefix*)
- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
- am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
- ;;
- *)
- case $am_py_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
pythondir=$am_cv_python_pythondir
-
- pkgpythondir=\${pythondir}/$PACKAGE
+ pkgpythondir=\${pythondir}/$PACKAGE
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$exec_prefix" = xNONE
- then
- am_py_exec_prefix=$am_py_prefix
- else
- am_py_exec_prefix=$exec_prefix
- fi
- am_cv_python_pyexecdir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
+printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pyexecdir in
- $am_py_exec_prefix*)
- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
- am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
- ;;
- *)
- case $am_py_exec_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
pyexecdir=$am_cv_python_pyexecdir
-
- pkgpyexecdir=\${pyexecdir}/$PACKAGE
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
# Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
set dummy python$PYTHON_VERSION; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
#
# Check for a version of Python >= 2.1.0
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
-$as_echo_n "checking for a version of Python >= '2.1.0'... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+printf %s "checking for a version of Python >= '2.1.0'... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver >= '2.1.0')"`
if test "$ac_supports_python_ver" != "True"; then
if test -z "$PYTHON_NOVERSIONCHECK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "
This version of the AC_PYTHON_DEVEL macro
doesn't work properly with versions of Python before
See \`config.log' for more details" "$LINENO" 5; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
-$as_echo "skip at user request" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+printf "%s\n" "skip at user request" >&6; }
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
#
# if the macro parameter ``version'' is set, honour it
#
if test -n ""; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
-$as_echo_n "checking for a version of Python ... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
+printf %s "checking for a version of Python ... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver )"`
if test "$ac_supports_python_ver" = "True"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "this package requires Python .
If you have it installed, but it isn't the default Python
interpreter in your system path, please pass the PYTHON_VERSION
#
# Check if you have distutils, else fail
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
-$as_echo_n "checking for the distutils Python package... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+printf %s "checking for the distutils Python package... " >&6; }
ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
if test -z "$ac_distutils_result"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "cannot import Python module \"distutils\".
Please check your Python installation. The error was:
$ac_distutils_result" "$LINENO" 5
#
# Check for Python include path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
-$as_echo_n "checking for Python include path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
if test -z "$PYTHON_CPPFLAGS"; then
python_path=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_inc ());"`
fi
PYTHON_CPPFLAGS=$python_path
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
-$as_echo "$PYTHON_CPPFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
#
# Check for Python library path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
-$as_echo_n "checking for Python library path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
if test -z "$PYTHON_LDFLAGS"; then
# (makes two attempts to ensure we've got a version number
# from the interpreter)
" "$LINENO" 5
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
#
# Check for site packages
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
-$as_echo_n "checking for Python site-packages path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
if test -z "$PYTHON_SITE_PKG"; then
PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_lib(0,0));"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
-$as_echo "$PYTHON_SITE_PKG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
#
# libraries which must be linked in when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
-$as_echo_n "checking python extra libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+printf %s "checking python extra libraries... " >&6; }
if test -z "$PYTHON_EXTRA_LIBS"; then
PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
-$as_echo "$PYTHON_EXTRA_LIBS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LIBS" >&6; }
#
# linking flags needed when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
-$as_echo_n "checking python extra linking flags... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+printf %s "checking python extra linking flags... " >&6; }
if test -z "$PYTHON_EXTRA_LDFLAGS"; then
PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LINKFORSHARED'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
-$as_echo "$PYTHON_EXTRA_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LDFLAGS" >&6; }
#
# final check to see if everything compiles alright
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
-$as_echo_n "checking consistency of all components of python development environment... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
# save current global flags
ac_save_LIBS="$LIBS"
ac_save_CPPFLAGS="$CPPFLAGS"
#include <Python.h>
int
-main ()
+main (void)
{
Py_Initialize();
;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
pythonexists=yes
-else
+else $as_nop
pythonexists=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
-$as_echo "$pythonexists" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
if test ! "x$pythonexists" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
for your distribution. The exact name of this package varies among them.
============================================================================
" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
fi
-
unset PYTHON
unset PYTHON_VERSION
unset PYTHON_CPPFLAGS
unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
unset PYTHON_SITE_PKG
unset PYTHON_EXTRA_LIBS
unset PYTHON_EXTRA_LDFLAGS
if test -n "$PYTHON"; then
# If the user set $PYTHON, use it and don't search something else.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.4" >&5
-$as_echo_n "checking whether $PYTHON version is >= 3.4... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.7" >&5
+printf %s "checking whether $PYTHON version is >= 3.7... " >&6; }
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.4'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.7'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "Python interpreter is too old" "$LINENO" 5
fi
am_display_PYTHON=$PYTHON
else
# Otherwise, try each interpreter until we find one that satisfies
# VERSION.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.4" >&5
-$as_echo_n "checking for a Python interpreter with version >= 3.4... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.7" >&5
+printf %s "checking for a Python interpreter with version >= 3.7... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
- for am_cv_pathless_PYTHON in python3.4 none; do
+ for am_cv_pathless_PYTHON in python3.7 none; do
test "$am_cv_pathless_PYTHON" = none && break
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.4'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.7'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
+ (exit $ac_status); }
+then :
break
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
if test "$am_cv_pathless_PYTHON" = none; then
PYTHON=:
else
# Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "$PYTHON" = :; then
- :
+ :
else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
PYTHON_VERSION=$am_cv_python_version
-
- PYTHON_PREFIX='${prefix}'
-
- PYTHON_EXEC_PREFIX='${exec_prefix}'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
+ PYTHON_PLATFORM=$am_cv_python_platform
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+
+# Check whether --with-python-sys-prefix was given.
+if test ${with_python_sys_prefix+y}
+then :
+ withval=$with_python_sys_prefix; am_use_python_sys=:
+else $as_nop
+ am_use_python_sys=false
+fi
+
+
+ # Allow user to override whatever the default Python prefix is.
+
+# Check whether --with-python_prefix was given.
+if test ${with_python_prefix+y}
+then :
+ withval=$with_python_prefix; am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+else $as_nop
+
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
+printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
+if test ${am_cv_python_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
+printf "%s\n" "$am_python_prefix" >&6; }
+ fi
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+ # Substituting python_prefix_subst value.
+ PYTHON_PREFIX=$am_python_prefix_subst
+
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+
+# Check whether --with-python_exec_prefix was given.
+if test ${with_python_exec_prefix+y}
+then :
+ withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ if test -n "$with_python_prefix"
+then :
+ am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
+if test ${am_cv_python_exec_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
+printf "%s\n" "$am_python_exec_prefix" >&6; }
+ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
- PYTHON_PLATFORM=$am_cv_python_platform
+fi
+
+ # Substituting python_exec_prefix_subst.
+ PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
- # Just factor out some code duplication.
+ # Factor out some code duplication into this shell variable.
am_python_setup_sysconfig="\
import sys
# Prefer sysconfig over distutils.sysconfig, for better compatibility
pass"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$prefix" = xNONE
- then
- am_py_prefix=$ac_default_prefix
- else
- am_py_prefix=$prefix
- fi
- am_cv_python_pythondir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
+printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pythondir in
- $am_py_prefix*)
- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
- am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
- ;;
- *)
- case $am_py_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
pythondir=$am_cv_python_pythondir
+ pkgpythondir=\${pythondir}/$PACKAGE
- pkgpythondir=\${pythondir}/$PACKAGE
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$exec_prefix" = xNONE
- then
- am_py_exec_prefix=$am_py_prefix
- else
- am_py_exec_prefix=$exec_prefix
- fi
- am_cv_python_pyexecdir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
+printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pyexecdir in
- $am_py_exec_prefix*)
- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
- am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
- ;;
- *)
- case $am_py_exec_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
pyexecdir=$am_cv_python_pyexecdir
-
- pkgpyexecdir=\${pyexecdir}/$PACKAGE
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
# Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
set dummy python$PYTHON_VERSION; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
#
# Check for a version of Python >= 2.1.0
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
-$as_echo_n "checking for a version of Python >= '2.1.0'... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+printf %s "checking for a version of Python >= '2.1.0'... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver >= '2.1.0')"`
if test "$ac_supports_python_ver" != "True"; then
if test -z "$PYTHON_NOVERSIONCHECK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "
This version of the AC_PYTHON_DEVEL macro
doesn't work properly with versions of Python before
See \`config.log' for more details" "$LINENO" 5; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
-$as_echo "skip at user request" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+printf "%s\n" "skip at user request" >&6; }
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
#
# if the macro parameter ``version'' is set, honour it
#
if test -n ""; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
-$as_echo_n "checking for a version of Python ... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
+printf %s "checking for a version of Python ... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver )"`
if test "$ac_supports_python_ver" = "True"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "this package requires Python .
If you have it installed, but it isn't the default Python
interpreter in your system path, please pass the PYTHON_VERSION
#
# Check if you have distutils, else fail
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
-$as_echo_n "checking for the distutils Python package... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+printf %s "checking for the distutils Python package... " >&6; }
ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
if test -z "$ac_distutils_result"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "cannot import Python module \"distutils\".
Please check your Python installation. The error was:
$ac_distutils_result" "$LINENO" 5
#
# Check for Python include path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
-$as_echo_n "checking for Python include path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
if test -z "$PYTHON_CPPFLAGS"; then
python_path=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_inc ());"`
fi
PYTHON_CPPFLAGS=$python_path
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
-$as_echo "$PYTHON_CPPFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
#
# Check for Python library path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
-$as_echo_n "checking for Python library path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
if test -z "$PYTHON_LDFLAGS"; then
# (makes two attempts to ensure we've got a version number
# from the interpreter)
" "$LINENO" 5
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
#
# Check for site packages
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
-$as_echo_n "checking for Python site-packages path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
if test -z "$PYTHON_SITE_PKG"; then
PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_lib(0,0));"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
-$as_echo "$PYTHON_SITE_PKG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
#
# libraries which must be linked in when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
-$as_echo_n "checking python extra libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+printf %s "checking python extra libraries... " >&6; }
if test -z "$PYTHON_EXTRA_LIBS"; then
PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
-$as_echo "$PYTHON_EXTRA_LIBS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LIBS" >&6; }
#
# linking flags needed when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
-$as_echo_n "checking python extra linking flags... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+printf %s "checking python extra linking flags... " >&6; }
if test -z "$PYTHON_EXTRA_LDFLAGS"; then
PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LINKFORSHARED'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
-$as_echo "$PYTHON_EXTRA_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LDFLAGS" >&6; }
#
# final check to see if everything compiles alright
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
-$as_echo_n "checking consistency of all components of python development environment... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
# save current global flags
ac_save_LIBS="$LIBS"
ac_save_CPPFLAGS="$CPPFLAGS"
#include <Python.h>
int
-main ()
+main (void)
{
Py_Initialize();
;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
pythonexists=yes
-else
+else $as_nop
pythonexists=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
-$as_echo "$pythonexists" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
if test ! "x$pythonexists" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
for your distribution. The exact name of this package varies among them.
============================================================================
" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
fi
-
unset PYTHON
unset PYTHON_VERSION
unset PYTHON_CPPFLAGS
unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
unset PYTHON_SITE_PKG
unset PYTHON_EXTRA_LIBS
unset PYTHON_EXTRA_LDFLAGS
if test -n "$PYTHON"; then
# If the user set $PYTHON, use it and don't search something else.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.5" >&5
-$as_echo_n "checking whether $PYTHON version is >= 3.5... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.8" >&5
+printf %s "checking whether $PYTHON version is >= 3.8... " >&6; }
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.5'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.8'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "Python interpreter is too old" "$LINENO" 5
fi
am_display_PYTHON=$PYTHON
else
# Otherwise, try each interpreter until we find one that satisfies
# VERSION.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.5" >&5
-$as_echo_n "checking for a Python interpreter with version >= 3.5... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.8" >&5
+printf %s "checking for a Python interpreter with version >= 3.8... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
- for am_cv_pathless_PYTHON in python3.5 none; do
+ for am_cv_pathless_PYTHON in python3.8 none; do
test "$am_cv_pathless_PYTHON" = none && break
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.5'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.8'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
+ (exit $ac_status); }
+then :
break
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
if test "$am_cv_pathless_PYTHON" = none; then
PYTHON=:
else
# Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "$PYTHON" = :; then
- :
+ :
else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
PYTHON_VERSION=$am_cv_python_version
-
- PYTHON_PREFIX='${prefix}'
-
- PYTHON_EXEC_PREFIX='${exec_prefix}'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
+ PYTHON_PLATFORM=$am_cv_python_platform
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+
+# Check whether --with-python-sys-prefix was given.
+if test ${with_python_sys_prefix+y}
+then :
+ withval=$with_python_sys_prefix; am_use_python_sys=:
+else $as_nop
+ am_use_python_sys=false
+fi
+
+
+ # Allow user to override whatever the default Python prefix is.
+
+# Check whether --with-python_prefix was given.
+if test ${with_python_prefix+y}
+then :
+ withval=$with_python_prefix; am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+else $as_nop
+
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
+printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
+if test ${am_cv_python_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
+printf "%s\n" "$am_python_prefix" >&6; }
+ fi
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+ # Substituting python_prefix_subst value.
+ PYTHON_PREFIX=$am_python_prefix_subst
+
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+
+# Check whether --with-python_exec_prefix was given.
+if test ${with_python_exec_prefix+y}
+then :
+ withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ if test -n "$with_python_prefix"
+then :
+ am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
+if test ${am_cv_python_exec_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
+printf "%s\n" "$am_python_exec_prefix" >&6; }
+ fi
+fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
- PYTHON_PLATFORM=$am_cv_python_platform
+ # Substituting python_exec_prefix_subst.
+ PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
- # Just factor out some code duplication.
+
+ # Factor out some code duplication into this shell variable.
am_python_setup_sysconfig="\
import sys
# Prefer sysconfig over distutils.sysconfig, for better compatibility
pass"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$prefix" = xNONE
- then
- am_py_prefix=$ac_default_prefix
- else
- am_py_prefix=$prefix
- fi
- am_cv_python_pythondir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
+printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pythondir in
- $am_py_prefix*)
- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
- am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
- ;;
- *)
- case $am_py_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
pythondir=$am_cv_python_pythondir
-
- pkgpythondir=\${pythondir}/$PACKAGE
+ pkgpythondir=\${pythondir}/$PACKAGE
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$exec_prefix" = xNONE
- then
- am_py_exec_prefix=$am_py_prefix
- else
- am_py_exec_prefix=$exec_prefix
- fi
- am_cv_python_pyexecdir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
+printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pyexecdir in
- $am_py_exec_prefix*)
- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
- am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
- ;;
- *)
- case $am_py_exec_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
pyexecdir=$am_cv_python_pyexecdir
-
- pkgpyexecdir=\${pyexecdir}/$PACKAGE
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
# Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
set dummy python$PYTHON_VERSION; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
#
# Check for a version of Python >= 2.1.0
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
-$as_echo_n "checking for a version of Python >= '2.1.0'... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+printf %s "checking for a version of Python >= '2.1.0'... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver >= '2.1.0')"`
if test "$ac_supports_python_ver" != "True"; then
if test -z "$PYTHON_NOVERSIONCHECK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "
This version of the AC_PYTHON_DEVEL macro
doesn't work properly with versions of Python before
See \`config.log' for more details" "$LINENO" 5; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
-$as_echo "skip at user request" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+printf "%s\n" "skip at user request" >&6; }
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
#
# if the macro parameter ``version'' is set, honour it
#
if test -n ""; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
-$as_echo_n "checking for a version of Python ... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
+printf %s "checking for a version of Python ... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver )"`
if test "$ac_supports_python_ver" = "True"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "this package requires Python .
If you have it installed, but it isn't the default Python
interpreter in your system path, please pass the PYTHON_VERSION
#
# Check if you have distutils, else fail
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
-$as_echo_n "checking for the distutils Python package... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+printf %s "checking for the distutils Python package... " >&6; }
ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
if test -z "$ac_distutils_result"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "cannot import Python module \"distutils\".
Please check your Python installation. The error was:
$ac_distutils_result" "$LINENO" 5
#
# Check for Python include path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
-$as_echo_n "checking for Python include path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
if test -z "$PYTHON_CPPFLAGS"; then
python_path=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_inc ());"`
fi
PYTHON_CPPFLAGS=$python_path
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
-$as_echo "$PYTHON_CPPFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
#
# Check for Python library path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
-$as_echo_n "checking for Python library path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
if test -z "$PYTHON_LDFLAGS"; then
# (makes two attempts to ensure we've got a version number
# from the interpreter)
" "$LINENO" 5
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
#
# Check for site packages
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
-$as_echo_n "checking for Python site-packages path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
if test -z "$PYTHON_SITE_PKG"; then
PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_lib(0,0));"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
-$as_echo "$PYTHON_SITE_PKG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
#
# libraries which must be linked in when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
-$as_echo_n "checking python extra libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+printf %s "checking python extra libraries... " >&6; }
if test -z "$PYTHON_EXTRA_LIBS"; then
PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
-$as_echo "$PYTHON_EXTRA_LIBS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LIBS" >&6; }
#
# linking flags needed when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
-$as_echo_n "checking python extra linking flags... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+printf %s "checking python extra linking flags... " >&6; }
if test -z "$PYTHON_EXTRA_LDFLAGS"; then
PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LINKFORSHARED'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
-$as_echo "$PYTHON_EXTRA_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LDFLAGS" >&6; }
#
# final check to see if everything compiles alright
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
-$as_echo_n "checking consistency of all components of python development environment... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
# save current global flags
ac_save_LIBS="$LIBS"
ac_save_CPPFLAGS="$CPPFLAGS"
#include <Python.h>
int
-main ()
+main (void)
{
Py_Initialize();
;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
pythonexists=yes
-else
+else $as_nop
pythonexists=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
-$as_echo "$pythonexists" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
if test ! "x$pythonexists" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
for your distribution. The exact name of this package varies among them.
============================================================================
" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
fi
-
unset PYTHON
unset PYTHON_VERSION
unset PYTHON_CPPFLAGS
unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
unset PYTHON_SITE_PKG
unset PYTHON_EXTRA_LIBS
unset PYTHON_EXTRA_LDFLAGS
if test -n "$PYTHON"; then
# If the user set $PYTHON, use it and don't search something else.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.6" >&5
-$as_echo_n "checking whether $PYTHON version is >= 3.6... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.9" >&5
+printf %s "checking whether $PYTHON version is >= 3.9... " >&6; }
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.6'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.9'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "Python interpreter is too old" "$LINENO" 5
fi
am_display_PYTHON=$PYTHON
else
# Otherwise, try each interpreter until we find one that satisfies
# VERSION.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.6" >&5
-$as_echo_n "checking for a Python interpreter with version >= 3.6... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.9" >&5
+printf %s "checking for a Python interpreter with version >= 3.9... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
- for am_cv_pathless_PYTHON in python3.6 none; do
+ for am_cv_pathless_PYTHON in python3.9 none; do
test "$am_cv_pathless_PYTHON" = none && break
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.6'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.9'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
+ (exit $ac_status); }
+then :
break
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
if test "$am_cv_pathless_PYTHON" = none; then
PYTHON=:
else
# Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "$PYTHON" = :; then
- :
+ :
else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
PYTHON_VERSION=$am_cv_python_version
-
- PYTHON_PREFIX='${prefix}'
-
- PYTHON_EXEC_PREFIX='${exec_prefix}'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
+ PYTHON_PLATFORM=$am_cv_python_platform
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+
+# Check whether --with-python-sys-prefix was given.
+if test ${with_python_sys_prefix+y}
+then :
+ withval=$with_python_sys_prefix; am_use_python_sys=:
+else $as_nop
+ am_use_python_sys=false
+fi
+
+
+ # Allow user to override whatever the default Python prefix is.
+
+# Check whether --with-python_prefix was given.
+if test ${with_python_prefix+y}
+then :
+ withval=$with_python_prefix; am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+else $as_nop
+
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
+printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
+if test ${am_cv_python_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
+printf "%s\n" "$am_python_prefix" >&6; }
+ fi
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+ # Substituting python_prefix_subst value.
+ PYTHON_PREFIX=$am_python_prefix_subst
+
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+
+# Check whether --with-python_exec_prefix was given.
+if test ${with_python_exec_prefix+y}
+then :
+ withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ if test -n "$with_python_prefix"
+then :
+ am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
+if test ${am_cv_python_exec_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
+printf "%s\n" "$am_python_exec_prefix" >&6; }
+ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
- PYTHON_PLATFORM=$am_cv_python_platform
+fi
+
+ # Substituting python_exec_prefix_subst.
+ PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
- # Just factor out some code duplication.
+ # Factor out some code duplication into this shell variable.
am_python_setup_sysconfig="\
import sys
# Prefer sysconfig over distutils.sysconfig, for better compatibility
pass"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$prefix" = xNONE
- then
- am_py_prefix=$ac_default_prefix
- else
- am_py_prefix=$prefix
- fi
- am_cv_python_pythondir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
+printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pythondir in
- $am_py_prefix*)
- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
- am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
- ;;
- *)
- case $am_py_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
pythondir=$am_cv_python_pythondir
+ pkgpythondir=\${pythondir}/$PACKAGE
- pkgpythondir=\${pythondir}/$PACKAGE
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$exec_prefix" = xNONE
- then
- am_py_exec_prefix=$am_py_prefix
- else
- am_py_exec_prefix=$exec_prefix
- fi
- am_cv_python_pyexecdir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
+printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pyexecdir in
- $am_py_exec_prefix*)
- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
- am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
- ;;
- *)
- case $am_py_exec_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
pyexecdir=$am_cv_python_pyexecdir
-
- pkgpyexecdir=\${pyexecdir}/$PACKAGE
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
# Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
set dummy python$PYTHON_VERSION; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
#
# Check for a version of Python >= 2.1.0
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
-$as_echo_n "checking for a version of Python >= '2.1.0'... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+printf %s "checking for a version of Python >= '2.1.0'... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver >= '2.1.0')"`
if test "$ac_supports_python_ver" != "True"; then
if test -z "$PYTHON_NOVERSIONCHECK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "
This version of the AC_PYTHON_DEVEL macro
doesn't work properly with versions of Python before
See \`config.log' for more details" "$LINENO" 5; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
-$as_echo "skip at user request" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+printf "%s\n" "skip at user request" >&6; }
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
#
# if the macro parameter ``version'' is set, honour it
#
if test -n ""; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
-$as_echo_n "checking for a version of Python ... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
+printf %s "checking for a version of Python ... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver )"`
if test "$ac_supports_python_ver" = "True"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "this package requires Python .
If you have it installed, but it isn't the default Python
interpreter in your system path, please pass the PYTHON_VERSION
#
# Check if you have distutils, else fail
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
-$as_echo_n "checking for the distutils Python package... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+printf %s "checking for the distutils Python package... " >&6; }
ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
if test -z "$ac_distutils_result"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "cannot import Python module \"distutils\".
Please check your Python installation. The error was:
$ac_distutils_result" "$LINENO" 5
#
# Check for Python include path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
-$as_echo_n "checking for Python include path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
if test -z "$PYTHON_CPPFLAGS"; then
python_path=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_inc ());"`
fi
PYTHON_CPPFLAGS=$python_path
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
-$as_echo "$PYTHON_CPPFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
#
# Check for Python library path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
-$as_echo_n "checking for Python library path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
if test -z "$PYTHON_LDFLAGS"; then
# (makes two attempts to ensure we've got a version number
# from the interpreter)
" "$LINENO" 5
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
#
# Check for site packages
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
-$as_echo_n "checking for Python site-packages path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
if test -z "$PYTHON_SITE_PKG"; then
PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_lib(0,0));"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
-$as_echo "$PYTHON_SITE_PKG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
#
# libraries which must be linked in when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
-$as_echo_n "checking python extra libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+printf %s "checking python extra libraries... " >&6; }
if test -z "$PYTHON_EXTRA_LIBS"; then
PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
-$as_echo "$PYTHON_EXTRA_LIBS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LIBS" >&6; }
#
# linking flags needed when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
-$as_echo_n "checking python extra linking flags... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+printf %s "checking python extra linking flags... " >&6; }
if test -z "$PYTHON_EXTRA_LDFLAGS"; then
PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LINKFORSHARED'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
-$as_echo "$PYTHON_EXTRA_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LDFLAGS" >&6; }
#
# final check to see if everything compiles alright
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
-$as_echo_n "checking consistency of all components of python development environment... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
# save current global flags
ac_save_LIBS="$LIBS"
ac_save_CPPFLAGS="$CPPFLAGS"
#include <Python.h>
int
-main ()
+main (void)
{
Py_Initialize();
;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
pythonexists=yes
-else
+else $as_nop
pythonexists=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
-$as_echo "$pythonexists" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
if test ! "x$pythonexists" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
for your distribution. The exact name of this package varies among them.
============================================================================
" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
fi
-
unset PYTHON
unset PYTHON_VERSION
unset PYTHON_CPPFLAGS
unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
unset PYTHON_SITE_PKG
unset PYTHON_EXTRA_LIBS
unset PYTHON_EXTRA_LDFLAGS
if test -n "$PYTHON"; then
# If the user set $PYTHON, use it and don't search something else.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.7" >&5
-$as_echo_n "checking whether $PYTHON version is >= 3.7... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.10" >&5
+printf %s "checking whether $PYTHON version is >= 3.10... " >&6; }
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.7'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.10'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "Python interpreter is too old" "$LINENO" 5
fi
am_display_PYTHON=$PYTHON
else
# Otherwise, try each interpreter until we find one that satisfies
# VERSION.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.7" >&5
-$as_echo_n "checking for a Python interpreter with version >= 3.7... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- for am_cv_pathless_PYTHON in python3.7 none; do
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.10" >&5
+printf %s "checking for a Python interpreter with version >= 3.10... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ for am_cv_pathless_PYTHON in python3.10 none; do
test "$am_cv_pathless_PYTHON" = none && break
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.7'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.10'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
+ (exit $ac_status); }
+then :
break
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
if test "$am_cv_pathless_PYTHON" = none; then
PYTHON=:
else
# Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "$PYTHON" = :; then
- :
+ :
else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
PYTHON_VERSION=$am_cv_python_version
-
- PYTHON_PREFIX='${prefix}'
-
- PYTHON_EXEC_PREFIX='${exec_prefix}'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
+ PYTHON_PLATFORM=$am_cv_python_platform
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+
+# Check whether --with-python-sys-prefix was given.
+if test ${with_python_sys_prefix+y}
+then :
+ withval=$with_python_sys_prefix; am_use_python_sys=:
+else $as_nop
+ am_use_python_sys=false
+fi
+
+
+ # Allow user to override whatever the default Python prefix is.
+
+# Check whether --with-python_prefix was given.
+if test ${with_python_prefix+y}
+then :
+ withval=$with_python_prefix; am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+else $as_nop
+
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
+printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
+if test ${am_cv_python_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
+printf "%s\n" "$am_python_prefix" >&6; }
+ fi
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+ # Substituting python_prefix_subst value.
+ PYTHON_PREFIX=$am_python_prefix_subst
+
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+
+# Check whether --with-python_exec_prefix was given.
+if test ${with_python_exec_prefix+y}
+then :
+ withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ if test -n "$with_python_prefix"
+then :
+ am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
+if test ${am_cv_python_exec_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
+printf "%s\n" "$am_python_exec_prefix" >&6; }
+ fi
+fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
- PYTHON_PLATFORM=$am_cv_python_platform
+ # Substituting python_exec_prefix_subst.
+ PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
- # Just factor out some code duplication.
+
+ # Factor out some code duplication into this shell variable.
am_python_setup_sysconfig="\
import sys
# Prefer sysconfig over distutils.sysconfig, for better compatibility
pass"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$prefix" = xNONE
- then
- am_py_prefix=$ac_default_prefix
- else
- am_py_prefix=$prefix
- fi
- am_cv_python_pythondir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
+printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pythondir in
- $am_py_prefix*)
- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
- am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
- ;;
- *)
- case $am_py_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
pythondir=$am_cv_python_pythondir
-
- pkgpythondir=\${pythondir}/$PACKAGE
+ pkgpythondir=\${pythondir}/$PACKAGE
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$exec_prefix" = xNONE
- then
- am_py_exec_prefix=$am_py_prefix
- else
- am_py_exec_prefix=$exec_prefix
- fi
- am_cv_python_pyexecdir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
+printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pyexecdir in
- $am_py_exec_prefix*)
- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
- am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
- ;;
- *)
- case $am_py_exec_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
pyexecdir=$am_cv_python_pyexecdir
-
- pkgpyexecdir=\${pyexecdir}/$PACKAGE
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
# Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
set dummy python$PYTHON_VERSION; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
#
# Check for a version of Python >= 2.1.0
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
-$as_echo_n "checking for a version of Python >= '2.1.0'... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+printf %s "checking for a version of Python >= '2.1.0'... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver >= '2.1.0')"`
if test "$ac_supports_python_ver" != "True"; then
if test -z "$PYTHON_NOVERSIONCHECK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "
This version of the AC_PYTHON_DEVEL macro
doesn't work properly with versions of Python before
See \`config.log' for more details" "$LINENO" 5; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
-$as_echo "skip at user request" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+printf "%s\n" "skip at user request" >&6; }
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
#
# if the macro parameter ``version'' is set, honour it
#
if test -n ""; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
-$as_echo_n "checking for a version of Python ... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
+printf %s "checking for a version of Python ... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver )"`
if test "$ac_supports_python_ver" = "True"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "this package requires Python .
If you have it installed, but it isn't the default Python
interpreter in your system path, please pass the PYTHON_VERSION
#
# Check if you have distutils, else fail
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
-$as_echo_n "checking for the distutils Python package... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+printf %s "checking for the distutils Python package... " >&6; }
ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
if test -z "$ac_distutils_result"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "cannot import Python module \"distutils\".
Please check your Python installation. The error was:
$ac_distutils_result" "$LINENO" 5
#
# Check for Python include path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
-$as_echo_n "checking for Python include path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
if test -z "$PYTHON_CPPFLAGS"; then
python_path=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_inc ());"`
fi
PYTHON_CPPFLAGS=$python_path
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
-$as_echo "$PYTHON_CPPFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
#
# Check for Python library path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
-$as_echo_n "checking for Python library path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
if test -z "$PYTHON_LDFLAGS"; then
# (makes two attempts to ensure we've got a version number
# from the interpreter)
" "$LINENO" 5
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
#
# Check for site packages
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
-$as_echo_n "checking for Python site-packages path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
if test -z "$PYTHON_SITE_PKG"; then
PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_lib(0,0));"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
-$as_echo "$PYTHON_SITE_PKG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
#
# libraries which must be linked in when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
-$as_echo_n "checking python extra libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+printf %s "checking python extra libraries... " >&6; }
if test -z "$PYTHON_EXTRA_LIBS"; then
PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
-$as_echo "$PYTHON_EXTRA_LIBS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LIBS" >&6; }
#
# linking flags needed when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
-$as_echo_n "checking python extra linking flags... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+printf %s "checking python extra linking flags... " >&6; }
if test -z "$PYTHON_EXTRA_LDFLAGS"; then
PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LINKFORSHARED'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
-$as_echo "$PYTHON_EXTRA_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LDFLAGS" >&6; }
#
# final check to see if everything compiles alright
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
-$as_echo_n "checking consistency of all components of python development environment... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
# save current global flags
ac_save_LIBS="$LIBS"
ac_save_CPPFLAGS="$CPPFLAGS"
#include <Python.h>
int
-main ()
+main (void)
{
Py_Initialize();
;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
pythonexists=yes
-else
+else $as_nop
pythonexists=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
-$as_echo "$pythonexists" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
if test ! "x$pythonexists" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
for your distribution. The exact name of this package varies among them.
============================================================================
" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
fi
-
unset PYTHON
unset PYTHON_VERSION
unset PYTHON_CPPFLAGS
unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
unset PYTHON_SITE_PKG
unset PYTHON_EXTRA_LIBS
unset PYTHON_EXTRA_LDFLAGS
if test -n "$PYTHON"; then
# If the user set $PYTHON, use it and don't search something else.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.8" >&5
-$as_echo_n "checking whether $PYTHON version is >= 3.8... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.11" >&5
+printf %s "checking whether $PYTHON version is >= 3.11... " >&6; }
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.8'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.11'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "Python interpreter is too old" "$LINENO" 5
fi
am_display_PYTHON=$PYTHON
else
# Otherwise, try each interpreter until we find one that satisfies
# VERSION.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.8" >&5
-$as_echo_n "checking for a Python interpreter with version >= 3.8... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- for am_cv_pathless_PYTHON in python3.8 none; do
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.11" >&5
+printf %s "checking for a Python interpreter with version >= 3.11... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ for am_cv_pathless_PYTHON in python3.11 none; do
test "$am_cv_pathless_PYTHON" = none && break
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.8'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.11'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
+ (exit $ac_status); }
+then :
break
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
if test "$am_cv_pathless_PYTHON" = none; then
PYTHON=:
else
# Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "$PYTHON" = :; then
- :
+ :
else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
PYTHON_VERSION=$am_cv_python_version
-
- PYTHON_PREFIX='${prefix}'
-
- PYTHON_EXEC_PREFIX='${exec_prefix}'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
+ PYTHON_PLATFORM=$am_cv_python_platform
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+
+# Check whether --with-python-sys-prefix was given.
+if test ${with_python_sys_prefix+y}
+then :
+ withval=$with_python_sys_prefix; am_use_python_sys=:
+else $as_nop
+ am_use_python_sys=false
+fi
+
+
+ # Allow user to override whatever the default Python prefix is.
+
+# Check whether --with-python_prefix was given.
+if test ${with_python_prefix+y}
+then :
+ withval=$with_python_prefix; am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+else $as_nop
+
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
+printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
+if test ${am_cv_python_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
+printf "%s\n" "$am_python_prefix" >&6; }
+ fi
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+ # Substituting python_prefix_subst value.
+ PYTHON_PREFIX=$am_python_prefix_subst
+
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+
+# Check whether --with-python_exec_prefix was given.
+if test ${with_python_exec_prefix+y}
+then :
+ withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ if test -n "$with_python_prefix"
+then :
+ am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
+if test ${am_cv_python_exec_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
+printf "%s\n" "$am_python_exec_prefix" >&6; }
+ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
- PYTHON_PLATFORM=$am_cv_python_platform
+fi
+
+ # Substituting python_exec_prefix_subst.
+ PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
- # Just factor out some code duplication.
+ # Factor out some code duplication into this shell variable.
am_python_setup_sysconfig="\
import sys
# Prefer sysconfig over distutils.sysconfig, for better compatibility
pass"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$prefix" = xNONE
- then
- am_py_prefix=$ac_default_prefix
- else
- am_py_prefix=$prefix
- fi
- am_cv_python_pythondir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
+printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pythondir in
- $am_py_prefix*)
- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
- am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
- ;;
- *)
- case $am_py_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
pythondir=$am_cv_python_pythondir
+ pkgpythondir=\${pythondir}/$PACKAGE
- pkgpythondir=\${pythondir}/$PACKAGE
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$exec_prefix" = xNONE
- then
- am_py_exec_prefix=$am_py_prefix
- else
- am_py_exec_prefix=$exec_prefix
- fi
- am_cv_python_pyexecdir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
+printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pyexecdir in
- $am_py_exec_prefix*)
- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
- am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
- ;;
- *)
- case $am_py_exec_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
pyexecdir=$am_cv_python_pyexecdir
-
- pkgpyexecdir=\${pyexecdir}/$PACKAGE
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
# Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
set dummy python$PYTHON_VERSION; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
#
# Check for a version of Python >= 2.1.0
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
-$as_echo_n "checking for a version of Python >= '2.1.0'... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+printf %s "checking for a version of Python >= '2.1.0'... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver >= '2.1.0')"`
if test "$ac_supports_python_ver" != "True"; then
if test -z "$PYTHON_NOVERSIONCHECK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "
This version of the AC_PYTHON_DEVEL macro
doesn't work properly with versions of Python before
See \`config.log' for more details" "$LINENO" 5; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
-$as_echo "skip at user request" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+printf "%s\n" "skip at user request" >&6; }
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
#
# if the macro parameter ``version'' is set, honour it
#
if test -n ""; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
-$as_echo_n "checking for a version of Python ... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
+printf %s "checking for a version of Python ... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver )"`
if test "$ac_supports_python_ver" = "True"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "this package requires Python .
If you have it installed, but it isn't the default Python
interpreter in your system path, please pass the PYTHON_VERSION
#
# Check if you have distutils, else fail
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
-$as_echo_n "checking for the distutils Python package... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+printf %s "checking for the distutils Python package... " >&6; }
ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
if test -z "$ac_distutils_result"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "cannot import Python module \"distutils\".
Please check your Python installation. The error was:
$ac_distutils_result" "$LINENO" 5
#
# Check for Python include path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
-$as_echo_n "checking for Python include path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
if test -z "$PYTHON_CPPFLAGS"; then
python_path=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_inc ());"`
fi
PYTHON_CPPFLAGS=$python_path
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
-$as_echo "$PYTHON_CPPFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
#
# Check for Python library path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
-$as_echo_n "checking for Python library path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
if test -z "$PYTHON_LDFLAGS"; then
# (makes two attempts to ensure we've got a version number
# from the interpreter)
" "$LINENO" 5
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
#
# Check for site packages
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
-$as_echo_n "checking for Python site-packages path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
if test -z "$PYTHON_SITE_PKG"; then
PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_lib(0,0));"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
-$as_echo "$PYTHON_SITE_PKG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
#
# libraries which must be linked in when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
-$as_echo_n "checking python extra libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+printf %s "checking python extra libraries... " >&6; }
if test -z "$PYTHON_EXTRA_LIBS"; then
PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
-$as_echo "$PYTHON_EXTRA_LIBS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LIBS" >&6; }
#
# linking flags needed when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
-$as_echo_n "checking python extra linking flags... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+printf %s "checking python extra linking flags... " >&6; }
if test -z "$PYTHON_EXTRA_LDFLAGS"; then
PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LINKFORSHARED'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
-$as_echo "$PYTHON_EXTRA_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LDFLAGS" >&6; }
#
# final check to see if everything compiles alright
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
-$as_echo_n "checking consistency of all components of python development environment... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
# save current global flags
ac_save_LIBS="$LIBS"
ac_save_CPPFLAGS="$CPPFLAGS"
#include <Python.h>
int
-main ()
+main (void)
{
Py_Initialize();
;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
pythonexists=yes
-else
+else $as_nop
pythonexists=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
-$as_echo "$pythonexists" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
if test ! "x$pythonexists" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
for your distribution. The exact name of this package varies among them.
============================================================================
" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
fi
-
unset PYTHON
unset PYTHON_VERSION
unset PYTHON_CPPFLAGS
unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
unset PYTHON_SITE_PKG
unset PYTHON_EXTRA_LIBS
unset PYTHON_EXTRA_LDFLAGS
if test -n "$PYTHON"; then
# If the user set $PYTHON, use it and don't search something else.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.9" >&5
-$as_echo_n "checking whether $PYTHON version is >= 3.9... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.12" >&5
+printf %s "checking whether $PYTHON version is >= 3.12... " >&6; }
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.9'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.12'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "Python interpreter is too old" "$LINENO" 5
fi
am_display_PYTHON=$PYTHON
else
# Otherwise, try each interpreter until we find one that satisfies
# VERSION.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.9" >&5
-$as_echo_n "checking for a Python interpreter with version >= 3.9... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- for am_cv_pathless_PYTHON in python3.9 none; do
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.12" >&5
+printf %s "checking for a Python interpreter with version >= 3.12... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ for am_cv_pathless_PYTHON in python3.12 none; do
test "$am_cv_pathless_PYTHON" = none && break
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
# map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '3.9'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '3.12'.split('.'))) + [0, 0, 0]
minverhex = 0
# xrange is not present in Python 3.0 and range returns an iterator
for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
+ (exit $ac_status); }
+then :
break
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
if test "$am_cv_pathless_PYTHON" = none; then
PYTHON=:
else
# Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "$PYTHON" = :; then
- :
+ :
else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
PYTHON_VERSION=$am_cv_python_version
-
- PYTHON_PREFIX='${prefix}'
-
- PYTHON_EXEC_PREFIX='${exec_prefix}'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
+ PYTHON_PLATFORM=$am_cv_python_platform
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+
+# Check whether --with-python-sys-prefix was given.
+if test ${with_python_sys_prefix+y}
+then :
+ withval=$with_python_sys_prefix; am_use_python_sys=:
+else $as_nop
+ am_use_python_sys=false
+fi
+
+
+ # Allow user to override whatever the default Python prefix is.
+
+# Check whether --with-python_prefix was given.
+if test ${with_python_prefix+y}
+then :
+ withval=$with_python_prefix; am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+else $as_nop
+
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
+printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
+if test ${am_cv_python_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
+printf "%s\n" "$am_python_prefix" >&6; }
+ fi
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+ # Substituting python_prefix_subst value.
+ PYTHON_PREFIX=$am_python_prefix_subst
+
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+
+# Check whether --with-python_exec_prefix was given.
+if test ${with_python_exec_prefix+y}
+then :
+ withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ if test -n "$with_python_prefix"
+then :
+ am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
+if test ${am_cv_python_exec_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
+printf "%s\n" "$am_python_exec_prefix" >&6; }
+ fi
+fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
- PYTHON_PLATFORM=$am_cv_python_platform
+ # Substituting python_exec_prefix_subst.
+ PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
- # Just factor out some code duplication.
+
+ # Factor out some code duplication into this shell variable.
am_python_setup_sysconfig="\
import sys
# Prefer sysconfig over distutils.sysconfig, for better compatibility
pass"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$prefix" = xNONE
- then
- am_py_prefix=$ac_default_prefix
- else
- am_py_prefix=$prefix
- fi
- am_cv_python_pythondir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
+printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pythondir in
- $am_py_prefix*)
- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
- am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
- ;;
- *)
- case $am_py_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
pythondir=$am_cv_python_pythondir
-
- pkgpythondir=\${pythondir}/$PACKAGE
+ pkgpythondir=\${pythondir}/$PACKAGE
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$exec_prefix" = xNONE
- then
- am_py_exec_prefix=$am_py_prefix
- else
- am_py_exec_prefix=$exec_prefix
- fi
- am_cv_python_pyexecdir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
+printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pyexecdir in
- $am_py_exec_prefix*)
- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
- am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
- ;;
- *)
- case $am_py_exec_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
pyexecdir=$am_cv_python_pyexecdir
-
- pkgpyexecdir=\${pyexecdir}/$PACKAGE
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
# Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
set dummy python$PYTHON_VERSION; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
#
# Check for a version of Python >= 2.1.0
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
-$as_echo_n "checking for a version of Python >= '2.1.0'... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+printf %s "checking for a version of Python >= '2.1.0'... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver >= '2.1.0')"`
if test "$ac_supports_python_ver" != "True"; then
if test -z "$PYTHON_NOVERSIONCHECK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "
This version of the AC_PYTHON_DEVEL macro
doesn't work properly with versions of Python before
See \`config.log' for more details" "$LINENO" 5; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
-$as_echo "skip at user request" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+printf "%s\n" "skip at user request" >&6; }
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
#
# if the macro parameter ``version'' is set, honour it
#
if test -n ""; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
-$as_echo_n "checking for a version of Python ... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
+printf %s "checking for a version of Python ... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver )"`
if test "$ac_supports_python_ver" = "True"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "this package requires Python .
If you have it installed, but it isn't the default Python
interpreter in your system path, please pass the PYTHON_VERSION
#
# Check if you have distutils, else fail
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
-$as_echo_n "checking for the distutils Python package... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+printf %s "checking for the distutils Python package... " >&6; }
ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
if test -z "$ac_distutils_result"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "cannot import Python module \"distutils\".
Please check your Python installation. The error was:
$ac_distutils_result" "$LINENO" 5
#
# Check for Python include path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
-$as_echo_n "checking for Python include path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
if test -z "$PYTHON_CPPFLAGS"; then
python_path=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_inc ());"`
fi
PYTHON_CPPFLAGS=$python_path
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
-$as_echo "$PYTHON_CPPFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
#
# Check for Python library path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
-$as_echo_n "checking for Python library path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
if test -z "$PYTHON_LDFLAGS"; then
# (makes two attempts to ensure we've got a version number
# from the interpreter)
" "$LINENO" 5
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
#
# Check for site packages
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
-$as_echo_n "checking for Python site-packages path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
if test -z "$PYTHON_SITE_PKG"; then
PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_lib(0,0));"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
-$as_echo "$PYTHON_SITE_PKG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
#
# libraries which must be linked in when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
-$as_echo_n "checking python extra libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+printf %s "checking python extra libraries... " >&6; }
if test -z "$PYTHON_EXTRA_LIBS"; then
PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
-$as_echo "$PYTHON_EXTRA_LIBS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LIBS" >&6; }
#
# linking flags needed when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
-$as_echo_n "checking python extra linking flags... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+printf %s "checking python extra linking flags... " >&6; }
if test -z "$PYTHON_EXTRA_LDFLAGS"; then
PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LINKFORSHARED'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
-$as_echo "$PYTHON_EXTRA_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LDFLAGS" >&6; }
#
# final check to see if everything compiles alright
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
-$as_echo_n "checking consistency of all components of python development environment... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
# save current global flags
ac_save_LIBS="$LIBS"
ac_save_CPPFLAGS="$CPPFLAGS"
#include <Python.h>
int
-main ()
+main (void)
{
Py_Initialize();
;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
pythonexists=yes
-else
+else $as_nop
pythonexists=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
-$as_echo "$pythonexists" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
if test ! "x$pythonexists" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
for your distribution. The exact name of this package varies among them.
============================================================================
" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
fi
-
unset PYTHON
unset PYTHON_VERSION
unset PYTHON_CPPFLAGS
unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
unset PYTHON_SITE_PKG
unset PYTHON_EXTRA_LIBS
unset PYTHON_EXTRA_LDFLAGS
if test -n "$PYTHON"; then
# If the user set $PYTHON, use it and don't search something else.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= all" >&5
-$as_echo_n "checking whether $PYTHON version is >= all... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= all" >&5
+printf %s "checking whether $PYTHON version is >= all... " >&6; }
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
($PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "Python interpreter is too old" "$LINENO" 5
fi
am_display_PYTHON=$PYTHON
else
# Otherwise, try each interpreter until we find one that satisfies
# VERSION.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= all" >&5
-$as_echo_n "checking for a Python interpreter with version >= all... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= all" >&5
+printf %s "checking for a Python interpreter with version >= all... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
for am_cv_pathless_PYTHON in pythonall none; do
test "$am_cv_pathless_PYTHON" = none && break
($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
+ (exit $ac_status); }
+then :
break
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
if test "$am_cv_pathless_PYTHON" = none; then
PYTHON=:
else
# Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "$PYTHON" = :; then
- :
+ :
else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[:2])"`
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
PYTHON_VERSION=$am_cv_python_version
-
- PYTHON_PREFIX='${prefix}'
-
- PYTHON_EXEC_PREFIX='${exec_prefix}'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
+ PYTHON_PLATFORM=$am_cv_python_platform
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+
+# Check whether --with-python-sys-prefix was given.
+if test ${with_python_sys_prefix+y}
+then :
+ withval=$with_python_sys_prefix; am_use_python_sys=:
+else $as_nop
+ am_use_python_sys=false
+fi
+
+
+ # Allow user to override whatever the default Python prefix is.
+
+# Check whether --with-python_prefix was given.
+if test ${with_python_prefix+y}
+then :
+ withval=$with_python_prefix; am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+else $as_nop
+
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON prefix" >&5
+printf %s "checking for python default $am_display_PYTHON prefix... " >&6; }
+if test ${am_cv_python_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_prefix" >&5
+printf "%s\n" "$am_cv_python_prefix" >&6; }
+
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_prefix" >&5
+printf "%s\n" "$am_python_prefix" >&6; }
+ fi
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
+ # Substituting python_prefix_subst value.
+ PYTHON_PREFIX=$am_python_prefix_subst
+
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+
+# Check whether --with-python_exec_prefix was given.
+if test ${with_python_exec_prefix+y}
+then :
+ withval=$with_python_exec_prefix; am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for explicit $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for explicit $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ if test -n "$with_python_prefix"
+then :
+ am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python_prefix-given $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python_prefix-given $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+else $as_nop
+
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for python default $am_display_PYTHON exec_prefix... " >&6; }
+if test ${am_cv_python_exec_prefix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_exec_prefix" >&5
+printf "%s\n" "$am_cv_python_exec_prefix" >&6; }
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU default $am_display_PYTHON exec_prefix" >&5
+printf %s "checking for GNU default $am_display_PYTHON exec_prefix... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_python_exec_prefix" >&5
+printf "%s\n" "$am_python_exec_prefix" >&6; }
+ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
- PYTHON_PLATFORM=$am_cv_python_platform
+fi
+
+ # Substituting python_exec_prefix_subst.
+ PYTHON_EXEC_PREFIX=$am_python_exec_prefix_subst
- # Just factor out some code duplication.
+ # Factor out some code duplication into this shell variable.
am_python_setup_sysconfig="\
import sys
# Prefer sysconfig over distutils.sysconfig, for better compatibility
pass"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$prefix" = xNONE
- then
- am_py_prefix=$ac_default_prefix
- else
- am_py_prefix=$prefix
- fi
- am_cv_python_pythondir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory (pythondir)" >&5
+printf %s "checking for $am_display_PYTHON script directory (pythondir)... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pythondir in
- $am_py_prefix*)
- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
- am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
- ;;
- *)
- case $am_py_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
pythondir=$am_cv_python_pythondir
+ pkgpythondir=\${pythondir}/$PACKAGE
- pkgpythondir=\${pythondir}/$PACKAGE
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$exec_prefix" = xNONE
- then
- am_py_exec_prefix=$am_py_prefix
- else
- am_py_exec_prefix=$exec_prefix
- fi
- am_cv_python_pyexecdir=`$PYTHON -c "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory (pyexecdir)" >&5
+printf %s "checking for $am_display_PYTHON extension module directory (pyexecdir)... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
$am_python_setup_sysconfig
-if can_use_sysconfig:
- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
-else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
-sys.stdout.write(sitedir)"`
- case $am_cv_python_pyexecdir in
- $am_py_exec_prefix*)
- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
- am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
- ;;
- *)
- case $am_py_exec_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+if can_use_sysconfig:
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
+else:
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
+sys.stdout.write(sitedir)"`
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
+ ;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
pyexecdir=$am_cv_python_pyexecdir
-
- pkgpyexecdir=\${pyexecdir}/$PACKAGE
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
# Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args.
set dummy python$PYTHON_VERSION; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
#
# Check for a version of Python >= 2.1.0
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
-$as_echo_n "checking for a version of Python >= '2.1.0'... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.1.0'" >&5
+printf %s "checking for a version of Python >= '2.1.0'... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver >= '2.1.0')"`
if test "$ac_supports_python_ver" != "True"; then
if test -z "$PYTHON_NOVERSIONCHECK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "
This version of the AC_PYTHON_DEVEL macro
doesn't work properly with versions of Python before
See \`config.log' for more details" "$LINENO" 5; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
-$as_echo "skip at user request" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: skip at user request" >&5
+printf "%s\n" "skip at user request" >&6; }
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
#
# if the macro parameter ``version'' is set, honour it
#
if test -n ""; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
-$as_echo_n "checking for a version of Python ... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a version of Python " >&5
+printf %s "checking for a version of Python ... " >&6; }
ac_supports_python_ver=`$PYTHON -c "import sys; \
ver = sys.version.split ()[0]; \
print (ver )"`
if test "$ac_supports_python_ver" = "True"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "this package requires Python .
If you have it installed, but it isn't the default Python
interpreter in your system path, please pass the PYTHON_VERSION
#
# Check if you have distutils, else fail
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
-$as_echo_n "checking for the distutils Python package... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5
+printf %s "checking for the distutils Python package... " >&6; }
ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`
if test -z "$ac_distutils_result"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "cannot import Python module \"distutils\".
Please check your Python installation. The error was:
$ac_distutils_result" "$LINENO" 5
#
# Check for Python include path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
-$as_echo_n "checking for Python include path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5
+printf %s "checking for Python include path... " >&6; }
if test -z "$PYTHON_CPPFLAGS"; then
python_path=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_inc ());"`
fi
PYTHON_CPPFLAGS=$python_path
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
-$as_echo "$PYTHON_CPPFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CPPFLAGS" >&5
+printf "%s\n" "$PYTHON_CPPFLAGS" >&6; }
#
# Check for Python library path
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
-$as_echo_n "checking for Python library path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5
+printf %s "checking for Python library path... " >&6; }
if test -z "$PYTHON_LDFLAGS"; then
# (makes two attempts to ensure we've got a version number
# from the interpreter)
" "$LINENO" 5
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
-$as_echo "$PYTHON_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_LDFLAGS" >&6; }
#
# Check for site packages
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
-$as_echo_n "checking for Python site-packages path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5
+printf %s "checking for Python site-packages path... " >&6; }
if test -z "$PYTHON_SITE_PKG"; then
PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \
print (distutils.sysconfig.get_python_lib(0,0));"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
-$as_echo "$PYTHON_SITE_PKG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5
+printf "%s\n" "$PYTHON_SITE_PKG" >&6; }
#
# libraries which must be linked in when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
-$as_echo_n "checking python extra libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5
+printf %s "checking python extra libraries... " >&6; }
if test -z "$PYTHON_EXTRA_LIBS"; then
PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LIBS') + ' ' + conf('SYSLIBS'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
-$as_echo "$PYTHON_EXTRA_LIBS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LIBS" >&6; }
#
# linking flags needed when embedding
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
-$as_echo_n "checking python extra linking flags... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python extra linking flags" >&5
+printf %s "checking python extra linking flags... " >&6; }
if test -z "$PYTHON_EXTRA_LDFLAGS"; then
PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \
conf = distutils.sysconfig.get_config_var; \
print (conf('LINKFORSHARED'))"`
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
-$as_echo "$PYTHON_EXTRA_LDFLAGS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LDFLAGS" >&5
+printf "%s\n" "$PYTHON_EXTRA_LDFLAGS" >&6; }
#
# final check to see if everything compiles alright
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
-$as_echo_n "checking consistency of all components of python development environment... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking consistency of all components of python development environment" >&5
+printf %s "checking consistency of all components of python development environment... " >&6; }
# save current global flags
ac_save_LIBS="$LIBS"
ac_save_CPPFLAGS="$CPPFLAGS"
#include <Python.h>
int
-main ()
+main (void)
{
Py_Initialize();
;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
pythonexists=yes
-else
+else $as_nop
pythonexists=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
-$as_echo "$pythonexists" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $pythonexists" >&5
+printf "%s\n" "$pythonexists" >&6; }
if test ! "x$pythonexists" = "xyes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
for your distribution. The exact name of this package varies among them.
============================================================================
" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
Could not link test program to Python. Maybe the main Python library has been
installed in some non-standard library path. If so, pass it to configure,
via the LDFLAGS environment variable.
fi
-
fi
# Recover some values lost in the second attempt to find Python.
#
# Provide information about the build.
#
-BUILD_REVISION="26ff163b"
+BUILD_REVISION="cadcb384"
-cat >>confdefs.h <<_ACEOF
-#define BUILD_REVISION "$BUILD_REVISION"
-_ACEOF
+printf "%s\n" "#define BUILD_REVISION \"$BUILD_REVISION\"" >>confdefs.h
BUILD_VERSION=`echo "$PACKAGE_VERSION" | sed 's/\([0-9.]*\).*/\1./'`
-BUILD_VERSION="${BUILD_VERSION}9983"
+BUILD_VERSION="${BUILD_VERSION}51932"
BUILD_FILEVERSION=`echo "${BUILD_VERSION}" | tr . ,`
# Check whether --enable-build-timestamp was given.
-if test "${enable_build_timestamp+set}" = set; then :
+if test ${enable_build_timestamp+y}
+then :
enableval=$enable_build_timestamp; if test "$enableval" = "yes"; then
BUILD_TIMESTAMP=`date -u +%Y-%m-%dT%H:%M+0000 2>/dev/null || date`
else
BUILD_TIMESTAMP="$enableval"
fi
-else
+else $as_nop
BUILD_TIMESTAMP="<none>"
fi
-cat >>confdefs.h <<_ACEOF
-#define BUILD_TIMESTAMP "$BUILD_TIMESTAMP"
-_ACEOF
+printf "%s\n" "#define BUILD_TIMESTAMP \"$BUILD_TIMESTAMP\"" >>confdefs.h
#
run_gpgconf_test="yes"
# Check whether --enable-gpgconf-test was given.
-if test "${enable_gpgconf_test+set}" = set; then :
+if test ${enable_gpgconf_test+y}
+then :
enableval=$enable_gpgconf_test; run_gpgconf_test=$enableval
fi
run_gpg_test="yes"
# Check whether --enable-gpg-test was given.
-if test "${enable_gpg_test+set}" = set; then :
+if test ${enable_gpg_test+y}
+then :
enableval=$enable_gpg_test; run_gpg_test=$enableval
fi
run_gpgsm_test="yes"
# Check whether --enable-gpgsm-test was given.
-if test "${enable_gpgsm_test+set}" = set; then :
+if test ${enable_gpgsm_test+y}
+then :
enableval=$enable_gpgsm_test; run_gpgsm_test=$enableval
fi
run_g13_test="yes"
# Check whether --enable-g13-test was given.
-if test "${enable_g13_test+set}" = set; then :
+if test ${enable_g13_test+y}
+then :
enableval=$enable_g13_test; run_g13_test=$enableval
fi
- for ac_header in $ac_header_list
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
# Type checks.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+printf %s "checking for inline... " >&6; }
+if test ${ac_cv_c_inline+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifndef __cplusplus
typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
+static $ac_kw foo_t static_foo (void) {return 0; }
+$ac_kw foo_t foo (void) {return 0; }
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_inline=$ac_kw
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
test "$ac_cv_c_inline" != no && break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+printf "%s\n" "$ac_cv_c_inline" >&6; }
case $ac_cv_c_inline in
inline | yes) ;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flexible array members" >&5
-$as_echo_n "checking for flexible array members... " >&6; }
-if ${ac_cv_c_flexmember+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flexible array members" >&5
+printf %s "checking for flexible array members... " >&6; }
+if test ${ac_cv_c_flexmember+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
#include <stddef.h>
struct s { int n; double d[]; };
int
-main ()
+main (void)
{
int m = getchar ();
- struct s *p = malloc (offsetof (struct s, d)
- + m * sizeof (double));
+ struct s *p = (struct s *) malloc (offsetof (struct s, d)
+ + m * sizeof (double));
p->d[0] = 0.0;
return p->d != (double *) NULL;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_flexmember=yes
-else
+else $as_nop
ac_cv_c_flexmember=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5
-$as_echo "$ac_cv_c_flexmember" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5
+printf "%s\n" "$ac_cv_c_flexmember" >&6; }
if test $ac_cv_c_flexmember = yes; then
-$as_echo "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h
+printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h
else
- $as_echo "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h
+ printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h
fi
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned int" >&5
-$as_echo_n "checking size of unsigned int... " >&6; }
-if ${ac_cv_sizeof_unsigned_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned int))" "ac_cv_sizeof_unsigned_int" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of unsigned int" >&5
+printf %s "checking size of unsigned int... " >&6; }
+if test ${ac_cv_sizeof_unsigned_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned int))" "ac_cv_sizeof_unsigned_int" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_unsigned_int" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (unsigned int)
See \`config.log' for more details" "$LINENO" 5; }
else
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_int" >&5
-$as_echo "$ac_cv_sizeof_unsigned_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_int" >&5
+printf "%s\n" "$ac_cv_sizeof_unsigned_int" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int
-_ACEOF
+printf "%s\n" "#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int" >>confdefs.h
# Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
+if test ${enable_largefile+y}
+then :
enableval=$enable_largefile;
fi
if test "$enable_largefile" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+printf %s "checking for special C compiler options needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_sys_largefile_CC=no
if test "$GCC" != yes; then
ac_save_CC=$CC
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
break
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
CC="$CC -n32"
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_largefile_CC=' -n32'; break
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
break
done
CC=$ac_save_CC
rm -f conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
if test "$ac_cv_sys_largefile_CC" != no; then
CC=$CC$ac_cv_sys_largefile_CC
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test ${ac_cv_sys_file_offset_bits+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_file_offset_bits=no; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _FILE_OFFSET_BITS 64
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_file_offset_bits=64; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_sys_file_offset_bits=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
case $ac_cv_sys_file_offset_bits in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
+printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
;;
esac
rm -rf conftest*
if test $ac_cv_sys_file_offset_bits = unknown; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test ${ac_cv_sys_large_files+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_large_files=no; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _LARGE_FILES 1
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_large_files=1; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_sys_large_files=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+printf "%s\n" "$ac_cv_sys_large_files" >&6; }
case $ac_cv_sys_large_files in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
+printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
;;
esac
rm -rf conftest*
fi
-
-
fi
ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
+if test "x$ac_cv_type_off_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define off_t long int
-_ACEOF
+printf "%s\n" "#define off_t long int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default"
-if test "x$ac_cv_type_uintptr_t" = xyes; then :
+if test "x$ac_cv_type_uintptr_t" = xyes
+then :
-$as_echo "#define HAVE_UINTPTR_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_UINTPTR_T 1" >>confdefs.h
-else
+else $as_nop
for ac_type in 'unsigned int' 'unsigned long int' \
'unsigned long long int'; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))];
test_array [0] = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-cat >>confdefs.h <<_ACEOF
-#define uintptr_t $ac_type
-_ACEOF
+printf "%s\n" "#define uintptr_t $ac_type" >>confdefs.h
ac_type=
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
test -z "$ac_type" && break
done
fi
# If -Wno-missing-field-initializers is supported we can expect a
# a larger set of warning options.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc supports -Wno-missing-field-initializers" >&5
-$as_echo_n "checking if gcc supports -Wno-missing-field-initializers... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc supports -Wno-missing-field-initializers" >&5
+printf %s "checking if gcc supports -Wno-missing-field-initializers... " >&6; }
_gcc_cflags_save=$CFLAGS
CFLAGS="-Wno-missing-field-initializers"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
_gcc_wopt=yes
-else
+else $as_nop
_gcc_wopt=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_gcc_wopt" >&5
-$as_echo "$_gcc_wopt" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $_gcc_wopt" >&5
+printf "%s\n" "$_gcc_wopt" >&6; }
CFLAGS=$_gcc_cflags_save;
if test x"$_gcc_wopt" = xyes ; then
CFLAGS="$CFLAGS -Wno-missing-field-initializers"
CFLAGS="$CFLAGS -Wformat -Wformat-security"
CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wno-shadow"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc supports -Wpointer-arith" >&5
-$as_echo_n "checking if gcc supports -Wpointer-arith... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gcc supports -Wpointer-arith" >&5
+printf %s "checking if gcc supports -Wpointer-arith... " >&6; }
_gcc_cflags_save=$CFLAGS
CFLAGS="-Wpointer-arith"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
_gcc_wopt=yes
-else
+else $as_nop
_gcc_wopt=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_gcc_wopt" >&5
-$as_echo "$_gcc_wopt" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $_gcc_wopt" >&5
+printf "%s\n" "$_gcc_wopt" >&6; }
CFLAGS=$_gcc_cflags_save;
if test x"$_gcc_wopt" = xyes ; then
CFLAGS="$CFLAGS -Wpointer-arith"
# Only used for debugging, so no serious test needed (for actual
# functionality you have to test libc as well, this only tests the
# compiler).
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __thread" >&5
-$as_echo_n "checking for __thread... " >&6; }
-if ${gpgme_cv_tls_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __thread" >&5
+printf %s "checking for __thread... " >&6; }
+if test ${gpgme_cv_tls_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
__thread int foo;
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gpgme_cv_tls_works=yes
-else
+else $as_nop
gpgme_cv_tls_works=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gpgme_cv_tls_works" >&5
-$as_echo "$gpgme_cv_tls_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gpgme_cv_tls_works" >&5
+printf "%s\n" "$gpgme_cv_tls_works" >&6; }
if test "$gpgme_cv_tls_works" = yes; then
-$as_echo "#define HAVE_TLS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_TLS 1" >>confdefs.h
fi
# Checks for library functions.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libraries" >&5
-$as_echo "$as_me: checking for libraries" >&6;}
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
-$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_source+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libraries" >&5
+printf "%s\n" "$as_me: checking for libraries" >&6;}
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+printf %s "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_source+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h> /* for off_t */
#include <stdio.h>
int
-main ()
+main (void)
{
int (*fp) (FILE *, off_t, int) = fseeko;
return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_sys_largefile_source=no; break
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h> /* for off_t */
#include <stdio.h>
int
-main ()
+main (void)
{
int (*fp) (FILE *, off_t, int) = fseeko;
return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_sys_largefile_source=1; break
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_cv_sys_largefile_source=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
-$as_echo "$ac_cv_sys_largefile_source" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
+printf "%s\n" "$ac_cv_sys_largefile_source" >&6; }
case $ac_cv_sys_largefile_source in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
-_ACEOF
+printf "%s\n" "#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source" >>confdefs.h
;;
esac
rm -rf conftest*
# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
if test $ac_cv_sys_largefile_source != unknown; then
-$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FSEEKO 1" >>confdefs.h
fi
# Try to find a thread-safe version of ttyname().
-ac_fn_c_check_decl "$LINENO" "ttyname_r" "ac_cv_have_decl_ttyname_r" "$ac_includes_default"
-if test "x$ac_cv_have_decl_ttyname_r" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
-fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
+printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
+if test ${ac_cv_c_undeclared_builtin_options+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_save_CFLAGS=$CFLAGS
+ ac_cv_c_undeclared_builtin_options='cannot detect'
+ for ac_arg in '' -fno-builtin; do
+ CFLAGS="$ac_save_CFLAGS $ac_arg"
+ # This test program should *not* compile successfully.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_TTYNAME_R $ac_have_decl
+int
+main (void)
+{
+(void) strchr;
+ ;
+ return 0;
+}
_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else $as_nop
+ # This test program should compile successfully.
+ # No library function is consistently available on
+ # freestanding implementations, so test against a dummy
+ # declaration. Include always-available headers on the
+ # off chance that they somehow elicit warnings.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <float.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stddef.h>
+extern void ac_decl (int, char *);
+int
+main (void)
+{
+(void) ac_decl (0, (char *) 0);
+ (void) ac_decl;
- for ac_header in unistd.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
-if test "x$ac_cv_header_unistd_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UNISTD_H 1
+ ;
+ return 0;
+}
_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ if test x"$ac_arg" = x
+then :
+ ac_cv_c_undeclared_builtin_options='none needed'
+else $as_nop
+ ac_cv_c_undeclared_builtin_options=$ac_arg
+fi
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ done
+ CFLAGS=$ac_save_CFLAGS
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
+printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
+ case $ac_cv_c_undeclared_builtin_options in #(
+ 'cannot detect') :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot make $CC report undeclared builtins
+See \`config.log' for more details" "$LINENO" 5; } ;; #(
+ 'none needed') :
+ ac_c_undeclared_builtin_options='' ;; #(
+ *) :
+ ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
+esac
+ac_fn_check_decl "$LINENO" "ttyname_r" "ac_cv_have_decl_ttyname_r" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_ttyname_r" = xyes
+then :
+ ac_have_decl=1
+else $as_nop
+ ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_TTYNAME_R $ac_have_decl" >>confdefs.h
-done
+
+ ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
+if test "x$ac_cv_header_unistd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h
+
+fi
HAVE_DECL_TTYNAME_R=0
fi
- for ac_func in ttyname_r
-do :
ac_fn_c_check_func "$LINENO" "ttyname_r" "ac_cv_func_ttyname_r"
-if test "x$ac_cv_func_ttyname_r" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_TTYNAME_R 1
-_ACEOF
+if test "x$ac_cv_func_ttyname_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_TTYNAME_R 1" >>confdefs.h
fi
-done
if test $ac_cv_func_ttyname_r = no; then
HAVE_TTYNAME_R=0
esac
-$as_echo "#define REPLACE_TTYNAME_R 1" >>confdefs.h
+printf "%s\n" "#define REPLACE_TTYNAME_R 1" >>confdefs.h
else
HAVE_TTYNAME_R=1
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ttyname_r is compatible with its POSIX signature" >&5
-$as_echo_n "checking whether ttyname_r is compatible with its POSIX signature... " >&6; }
-if ${gnupg_cv_func_ttyname_r_posix+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ttyname_r is compatible with its POSIX signature" >&5
+printf %s "checking whether ttyname_r is compatible with its POSIX signature... " >&6; }
+if test ${gnupg_cv_func_ttyname_r_posix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stddef.h>
#include <unistd.h>
int
-main ()
+main (void)
{
*ttyname_r (0, NULL, 0);
;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gnupg_cv_func_ttyname_r_posix=no
-else
+else $as_nop
gnupg_cv_func_ttyname_r_posix=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gnupg_cv_func_ttyname_r_posix" >&5
-$as_echo "$gnupg_cv_func_ttyname_r_posix" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gnupg_cv_func_ttyname_r_posix" >&5
+printf "%s\n" "$gnupg_cv_func_ttyname_r_posix" >&6; }
if test $gnupg_cv_func_ttyname_r_posix = no; then
case " $LIBOBJS " in
*" ttyname_r.$ac_objext "* ) ;;
;;
esac
- $as_echo "#define REPLACE_TTYNAME_R 1" >>confdefs.h
+ printf "%s\n" "#define REPLACE_TTYNAME_R 1" >>confdefs.h
elif test "$have_android_system" = yes; then
# Android has ttyname and ttyname_r but they are only stubs and
;;
esac
- $as_echo "#define REPLACE_TTYNAME_R 1" >>confdefs.h
+ printf "%s\n" "#define REPLACE_TTYNAME_R 1" >>confdefs.h
else
-$as_echo "#define HAVE_POSIXDECL_TTYNAME_R 1" >>confdefs.h
+printf "%s\n" "#define HAVE_POSIXDECL_TTYNAME_R 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ttyname_r works with small buffers" >&5
-$as_echo_n "checking whether ttyname_r works with small buffers... " >&6; }
-if ${gnupg_cv_func_ttyname_r_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ttyname_r works with small buffers" >&5
+printf %s "checking whether ttyname_r works with small buffers... " >&6; }
+if test ${gnupg_cv_func_ttyname_r_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case "$host_os" in
# Guess no on Solaris.
# Guess yes otherwise.
*) gnupg_cv_func_ttyname_r_works="guessing yes" ;;
esac
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
:
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
return result;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
gnupg_cv_func_ttyname_r_works=yes
-else
+else $as_nop
case $? in
17 | 18) gnupg_cv_func_ttyname_r_works=no ;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gnupg_cv_func_ttyname_r_works" >&5
-$as_echo "$gnupg_cv_func_ttyname_r_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gnupg_cv_func_ttyname_r_works" >&5
+printf "%s\n" "$gnupg_cv_func_ttyname_r_works" >&6; }
case "$gnupg_cv_func_ttyname_r_works" in
*yes) ;;
*) case " $LIBOBJS " in
;;
esac
- $as_echo "#define REPLACE_TTYNAME_R 1" >>confdefs.h
+ printf "%s\n" "#define REPLACE_TTYNAME_R 1" >>confdefs.h
-$as_echo "#define HAVE_BROKEN_TTYNAME_R 1" >>confdefs.h
+printf "%s\n" "#define HAVE_BROKEN_TTYNAME_R 1" >>confdefs.h
;;
esac
fi
if test "$ac_cv_func_ttyname_r" != yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
***
*** ttyname() is not thread-safe and ttyname_r() does not exist
***" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
***
*** ttyname() is not thread-safe and ttyname_r() does not exist
***" >&2;}
# Try to find a thread-safe version of getenv().
have_thread_safe_getenv=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5
-$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; }
-if ${ac_cv_gnu_library_2_1+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5
+printf %s "checking whether we are using the GNU C Library 2.1 or newer... " >&6; }
+if test ${ac_cv_gnu_library_2_1+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Lucky GNU user" >/dev/null 2>&1; then :
+ $EGREP "Lucky GNU user" >/dev/null 2>&1
+then :
ac_cv_gnu_library_2_1=yes
-else
+else $as_nop
ac_cv_gnu_library_2_1=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
-$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
+printf "%s\n" "$ac_cv_gnu_library_2_1" >&6; }
GLIBC21="$ac_cv_gnu_library_2_1"
fi
if test $have_thread_safe_getenv = yes; then
-$as_echo "#define HAVE_THREAD_SAFE_GETENV 1" >>confdefs.h
+printf "%s\n" "#define HAVE_THREAD_SAFE_GETENV 1" >>confdefs.h
fi
have_getenv_r=no
-for ac_func in getenv_r
+
+ for ac_func in getenv_r
do :
ac_fn_c_check_func "$LINENO" "getenv_r" "ac_cv_func_getenv_r"
-if test "x$ac_cv_func_getenv_r" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETENV_R 1
-_ACEOF
+if test "x$ac_cv_func_getenv_r" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETENV_R 1" >>confdefs.h
have_getenv_r=yes
fi
-done
+done
if test $have_getenv_r = no && test $have_thread_safe_getenv = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
***
*** getenv() is not thread-safe and getenv_r() does not exist
***" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
***
*** getenv() is not thread-safe and getenv_r() does not exist
***" >&2;}
# For converting time strings to seconds since Epoch, we need the timegm
# function.
-for ac_func in timegm
-do :
- ac_fn_c_check_func "$LINENO" "timegm" "ac_cv_func_timegm"
-if test "x$ac_cv_func_timegm" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_TIMEGM 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "timegm" "ac_cv_func_timegm"
+if test "x$ac_cv_func_timegm" = xyes
+then :
+ printf "%s\n" "#define HAVE_TIMEGM 1" >>confdefs.h
fi
-done
if test "$ac_cv_func_timegm" != yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
***
*** timegm() not available - a non-thread-safe kludge will be used
*** and the TZ variable might be changed at runtime.
***" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
***
*** timegm() not available - a non-thread-safe kludge will be used
*** and the TZ variable might be changed at runtime.
***" >&2;}
fi
-for ac_func in setlocale
-do :
- ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
-if test "x$ac_cv_func_setlocale" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SETLOCALE 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
+if test "x$ac_cv_func_setlocale" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h
fi
-done
# Checking for libgpg-error.
have_gpg_error=no
-
gpg_error_config_prefix=""
# Check whether --with-libgpg-error-prefix was given.
-if test "${with_libgpg_error_prefix+set}" = set; then :
+if test ${with_libgpg_error_prefix+y}
+then :
withval=$with_libgpg_error_prefix; gpg_error_config_prefix="$withval"
fi
# Check whether --with-gpg-error-prefix was given.
-if test "${with_gpg_error_prefix+set}" = set; then :
+if test ${with_gpg_error_prefix+y}
+then :
withval=$with_gpg_error_prefix; gpg_error_config_prefix="$withval"
fi
'')
;;
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring \$SYSROOT as it is not an absolute path." >&5
-$as_echo "$as_me: WARNING: Ignoring \$SYSROOT as it is not an absolute path." >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring \$SYSROOT as it is not an absolute path." >&5
+printf "%s\n" "$as_me: WARNING: Ignoring \$SYSROOT as it is not an absolute path." >&2;}
;;
esac
fi
# Extract the first word of "gpg-error-config", so it can be a program name with args.
set dummy gpg-error-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GPG_ERROR_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_GPG_ERROR_CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $GPG_ERROR_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_GPG_ERROR_CONFIG="$GPG_ERROR_CONFIG" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GPG_ERROR_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_GPG_ERROR_CONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
GPG_ERROR_CONFIG=$ac_cv_path_GPG_ERROR_CONFIG
if test -n "$GPG_ERROR_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GPG_ERROR_CONFIG" >&5
-$as_echo "$GPG_ERROR_CONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GPG_ERROR_CONFIG" >&5
+printf "%s\n" "$GPG_ERROR_CONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
- min_gpg_error_version="$NEED_GPG_ERROR_VERSION"
- ok=no
# Extract the first word of "gpgrt-config", so it can be a program name with args.
set dummy gpgrt-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GPGRT_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_GPGRT_CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $GPGRT_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_GPGRT_CONFIG="$GPGRT_CONFIG" # Let the user override the test with a path.
for as_dir in $as_dummy
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GPGRT_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_GPGRT_CONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
GPGRT_CONFIG=$ac_cv_path_GPGRT_CONFIG
if test -n "$GPGRT_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GPGRT_CONFIG" >&5
-$as_echo "$GPGRT_CONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GPGRT_CONFIG" >&5
+printf "%s\n" "$GPGRT_CONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
fi
if test -n "$gpgrt_libdir"; then break; fi
done
- else
- # When we cannot determine system libdir-format, use this:
+ fi
+ if test -z "$gpgrt_libdir"; then
+ # No valid pkgconfig dir in any of the system directories, fallback
gpgrt_libdir=${possible_libdir1}
fi
else
GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
- { $as_echo "$as_me:${as_lineno-$LINENO}: Use gpgrt-config with $gpgrt_libdir as gpg-error-config" >&5
-$as_echo "$as_me: Use gpgrt-config with $gpgrt_libdir as gpg-error-config" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Use gpgrt-config with $gpgrt_libdir as gpg-error-config" >&5
+printf "%s\n" "$as_me: Use gpgrt-config with $gpgrt_libdir as gpg-error-config" >&6;}
gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
else
+ gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
unset GPGRT_CONFIG
fi
elif test "$GPG_ERROR_CONFIG" != "no"; then
gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
unset GPGRT_CONFIG
fi
+
+ min_gpg_error_version="$NEED_GPG_ERROR_VERSION"
+ ok=no
if test "$GPG_ERROR_CONFIG" != "no"; then
req_major=`echo $min_gpg_error_version | \
sed 's/\([0-9]*\)\.\([0-9]*\)/\1/'`
fi
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GPG Error - version >= $min_gpg_error_version" >&5
-$as_echo_n "checking for GPG Error - version >= $min_gpg_error_version... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GPG Error - version >= $min_gpg_error_version" >&5
+printf %s "checking for GPG Error - version >= $min_gpg_error_version... " >&6; }
if test $ok = yes; then
GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG --cflags`
GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG --libs`
GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --variable=mtlibs 2>/dev/null`
GPG_ERROR_MT_LIBS="$GPG_ERROR_LIBS${GPG_ERROR_LIBS:+ }$GPG_ERROR_MT_LIBS"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes ($gpg_error_config_version)" >&5
-$as_echo "yes ($gpg_error_config_version)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($gpg_error_config_version)" >&5
+printf "%s\n" "yes ($gpg_error_config_version)" >&6; }
have_gpg_error=yes
if test -z "$GPGRT_CONFIG"; then
gpg_error_config_host=`$GPG_ERROR_CONFIG --host 2>/dev/null || echo none`
fi
if test x"$gpg_error_config_host" != xnone ; then
if test x"$gpg_error_config_host" != x"$host" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
***
*** The config script \"$GPG_ERROR_CONFIG\" was
*** built for $gpg_error_config_host and thus may not match the
*** You may want to use the configure option --with-libgpg-error-prefix
*** to specify a matching config script or use \$SYSROOT.
***" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
***
*** The config script \"$GPG_ERROR_CONFIG\" was
*** built for $gpg_error_config_host and thus may not match the
GPG_ERROR_LIBS=""
GPG_ERROR_MT_CFLAGS=""
GPG_ERROR_MT_LIBS=""
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
have_gpg_error=no
fi
-$as_echo "#define GPG_ERR_SOURCE_DEFAULT GPG_ERR_SOURCE_GPGME" >>confdefs.h
+printf "%s\n" "#define GPG_ERR_SOURCE_DEFAULT GPG_ERR_SOURCE_GPGME" >>confdefs.h
if test -n "$GPGRT_CONFIG" \
# Check whether --with-libassuan-prefix was given.
-if test "${with_libassuan_prefix+set}" = set; then :
+if test ${with_libassuan_prefix+y}
+then :
withval=$with_libassuan_prefix; libassuan_config_prefix="$withval"
-else
+else $as_nop
libassuan_config_prefix=""
fi
fi
use_gpgrt_config=""
- if test x"${LIBASSUAN_CONFIG}" = x -a x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
+ if test x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
if $GPGRT_CONFIG libassuan --exists; then
LIBASSUAN_CONFIG="$GPGRT_CONFIG libassuan"
- { $as_echo "$as_me:${as_lineno-$LINENO}: Use gpgrt-config as libassuan-config" >&5
-$as_echo "$as_me: Use gpgrt-config as libassuan-config" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Use gpgrt-config as libassuan-config" >&5
+printf "%s\n" "$as_me: Use gpgrt-config as libassuan-config" >&6;}
use_gpgrt_config=yes
fi
fi
if test -z "$use_gpgrt_config"; then
# Extract the first word of "libassuan-config", so it can be a program name with args.
set dummy libassuan-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_LIBASSUAN_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_LIBASSUAN_CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $LIBASSUAN_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_LIBASSUAN_CONFIG="$LIBASSUAN_CONFIG" # Let the user override the test with a path.
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_LIBASSUAN_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_LIBASSUAN_CONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
fi
LIBASSUAN_CONFIG=$ac_cv_path_LIBASSUAN_CONFIG
if test -n "$LIBASSUAN_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBASSUAN_CONFIG" >&5
-$as_echo "$LIBASSUAN_CONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBASSUAN_CONFIG" >&5
+printf "%s\n" "$LIBASSUAN_CONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
min_libassuan_version="$tmp"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBASSUAN - version >= $min_libassuan_version" >&5
-$as_echo_n "checking for LIBASSUAN - version >= $min_libassuan_version... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBASSUAN - version >= $min_libassuan_version" >&5
+printf %s "checking for LIBASSUAN - version >= $min_libassuan_version... " >&6; }
ok=no
if test "$LIBASSUAN_CONFIG" != "no"; then
req_major=`echo $min_libassuan_version | \
fi
if test $ok = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes ($libassuan_config_version)" >&5
-$as_echo "yes ($libassuan_config_version)" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($libassuan_config_version)" >&5
+printf "%s\n" "yes ($libassuan_config_version)" >&6; }
+
+printf "%s\n" "#define LIBASSUAN_API_REQUESTED \$req_libassuan_api" >>confdefs.h
+
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test $ok = yes; then
tmp=`$LIBASSUAN_CONFIG --variable=api_version 2>/dev/null || echo 0`
fi
if test "$tmp" -gt 0 ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking LIBASSUAN API version" >&5
-$as_echo_n "checking LIBASSUAN API version... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LIBASSUAN API version" >&5
+printf %s "checking LIBASSUAN API version... " >&6; }
if test "$req_libassuan_api" -eq "$tmp" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: okay" >&5
-$as_echo "okay" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: okay" >&5
+printf "%s\n" "okay" >&6; }
+ elif test "$req_libassuan_api" -eq 2 -a "$tmp" -eq 3; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: okay" >&5
+printf "%s\n" "okay" >&6; }
else
ok=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: does not match. want=$req_libassuan_api got=$tmp." >&5
-$as_echo "does not match. want=$req_libassuan_api got=$tmp." >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: does not match. want=$req_libassuan_api got=$tmp." >&5
+printf "%s\n" "does not match. want=$req_libassuan_api got=$tmp." >&6; }
fi
fi
fi
fi
if test x"$libassuan_config_host" != xnone ; then
if test x"$libassuan_config_host" != x"$host" ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
***
*** The config script \"$LIBASSUAN_CONFIG\" was
*** built for $libassuan_config_host and thus may not match the
*** You may want to use the configure option --with-libassuan-prefix
*** to specify a matching config script.
***" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
***
*** The config script \"$LIBASSUAN_CONFIG\" was
*** built for $libassuan_config_host and thus may not match the
if test "$have_libassuan" = "yes"; then
-cat >>confdefs.h <<_ACEOF
-#define GPGME_LIBASSUAN_VERSION "$libassuan_version"
-_ACEOF
+printf "%s\n" "#define GPGME_LIBASSUAN_VERSION \"$libassuan_version\"" >>confdefs.h
fi
#
# Check for getgid etc
-for ac_func in getgid getegid closefrom nanosleep
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "getgid" "ac_cv_func_getgid"
+if test "x$ac_cv_func_getgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getegid" "ac_cv_func_getegid"
+if test "x$ac_cv_func_getegid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETEGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "closefrom" "ac_cv_func_closefrom"
+if test "x$ac_cv_func_closefrom" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOSEFROM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep"
+if test "x$ac_cv_func_nanosleep" = xyes
+then :
+ printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h
fi
-done
# Replacement functions.
ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy"
-if test "x$ac_cv_func_stpcpy" = xyes; then :
- $as_echo "#define HAVE_STPCPY 1" >>confdefs.h
+if test "x$ac_cv_func_stpcpy" = xyes
+then :
+ printf "%s\n" "#define HAVE_STPCPY 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" stpcpy.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS stpcpy.$ac_objext"
fi
-
ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv"
-if test "x$ac_cv_func_setenv" = xyes; then :
- $as_echo "#define HAVE_SETENV 1" >>confdefs.h
+if test "x$ac_cv_func_setenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" setenv.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS setenv.$ac_objext"
fi
-
# Assuan check for descriptor passing.
ac_fn_c_check_member "$LINENO" "struct cmsghdr" "cmsg_len" "ac_cv_member_struct_cmsghdr_cmsg_len" "
#include <stdlib.h>
#include <unistd.h>
"
-if test "x$ac_cv_member_struct_cmsghdr_cmsg_len" = xyes; then :
+if test "x$ac_cv_member_struct_cmsghdr_cmsg_len" = xyes
+then :
supports_descriptor_passing=yes
-else
+else $as_nop
supports_descriptor_passing=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING:
***
*** Data structure for sending ancillary data missing.
*** Descriptor passing won't work.
***" >&5
-$as_echo "$as_me: WARNING:
+printf "%s\n" "$as_me: WARNING:
***
*** Data structure for sending ancillary data missing.
*** Descriptor passing won't work.
use_descriptor_passing=yes
# Check whether --enable-fd-passing was given.
-if test "${enable_fd_passing+set}" = set; then :
+if test ${enable_fd_passing+y}
+then :
enableval=$enable_fd_passing; use_descriptor_passing=$enableval
fi
if test "$use_descriptor_passing" = "yes"; then
-$as_echo "#define USE_DESCRIPTOR_PASSING 1" >>confdefs.h
+printf "%s\n" "#define USE_DESCRIPTOR_PASSING 1" >>confdefs.h
fi
fi
if test "$uiserver" != "no"; then
-$as_echo "#define ENABLE_UISERVER 1" >>confdefs.h
+printf "%s\n" "#define ENABLE_UISERVER 1" >>confdefs.h
fi
if test "$uiserver" != "no"; then
# before an exec. This option allows to switch this optimization off.
use_linux_getdents=yes
# Check whether --enable-linux-getdents was given.
-if test "${enable_linux_getdents+set}" = set; then :
+if test ${enable_linux_getdents+y}
+then :
enableval=$enable_linux_getdents; use_linux_getdents=$enableval
fi
case "${host}" in
*-*-linux*)
-$as_echo "#define USE_LINUX_GETDENTS 1" >>confdefs.h
+printf "%s\n" "#define USE_LINUX_GETDENTS 1" >>confdefs.h
;;
esac
-# Substitution used for gpgme-config
+# Substitution used for gpgme-config and gpgme.pc
GPGME_CONFIG_LIBS="-lgpgme"
GPGME_CONFIG_CFLAGS=""
GPGME_CONFIG_HOST="$host"
GPGME_CONFIG_AVAIL_LANG="$enabled_languages"
+case "$includedir" in
+ /usr/include|/include) ;;
+ '${prefix}/include')
+ if test "$prefix" != / -a "$prefix" != /usr; then
+ if test -z "$GPGME_CONFIG_CFLAGS"; then
+ GPGME_CONFIG_CFLAGS="-I\${includedir}"
+ else
+ GPGME_CONFIG_CFLAGS="-I\${includedir} $GPGME_CONFIG_CFLAGS"
+ fi
+ fi
+ ;;
+ *)
+ if test -z "$GPGME_CONFIG_CFLAGS"; then
+ GPGME_CONFIG_CFLAGS="-I\${includedir}"
+ else
+ GPGME_CONFIG_CFLAGS="-I\${includedir} $GPGME_CONFIG_CFLAGS"
+ fi
+ ;;
+esac
+case "$libdir" in
+ /usr/lib|/usr/lib64|/lib|/lib64) ;;
+ '${exec_prefix}/lib'|'${exec_prefix}/lib64')
+ if test "$exec_prefix" = "NONE"; then
+ if test "$prefix" != / -a "$prefix" != /usr; then
+ GPGME_CONFIG_LIBS="-L\${libdir} $GPGME_CONFIG_LIBS"
+ fi
+ elif test "$exec_prefix" != / -a "$exec_prefix" != /usr; then
+ GPGME_CONFIG_LIBS="-L\${libdir} $GPGME_CONFIG_LIBS"
+ fi
+ ;;
+ *) GPGME_CONFIG_LIBS="-L\${libdir} $GPGME_CONFIG_LIBS" ;;
+esac
+
+
# Done at top: AC_CHECK_HEADER([argp.h])
ac_fn_c_check_type "$LINENO" "error_t" "ac_cv_type_error_t" "#include <errno.h>
"
-if test "x$ac_cv_type_error_t" = xyes; then :
+if test "x$ac_cv_type_error_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_ERROR_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_ERROR_T 1" >>confdefs.h
-else
+else $as_nop
-$as_echo "#define error_t int" >>confdefs.h
+printf "%s\n" "#define error_t int" >>confdefs.h
fi
die=no
if test "$have_gpg_error" = "no"; then
die=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}:
***
*** You need libgpg-error to build this program.
** This library is for example available at
*** https://www.gnupg.org/ftp/gcrypt/libgpg-error/
*** (at least version $NEED_GPG_ERROR_VERSION is required.)
***" >&5
-$as_echo "$as_me:
+printf "%s\n" "$as_me:
***
*** You need libgpg-error to build this program.
** This library is for example available at
fi
if test "$have_libassuan" = "no"; then
die=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}:
***
*** You need libassuan to build this program.
*** This library is for example available at
*** https://www.gnupg.org/ftp/gcrypt/libassuan/
*** (at least version $NEED_LIBASSUAN_VERSION (API $NEED_LIBASSUAN_API) is required).
***" >&5
-$as_echo "$as_me:
+printf "%s\n" "$as_me:
***
*** You need libassuan to build this program.
*** This library is for example available at
ac_config_files="$ac_config_files lang/qt/Makefile lang/qt/src/Makefile"
-ac_config_files="$ac_config_files lang/qt/src/QGpgmeConfig-w32.cmake.in"
+if test "$want_qt5" = "yes"; then
+ ac_config_files="$ac_config_files lang/qt/src/QGpgmeConfig-w32.cmake.in"
-ac_config_files="$ac_config_files lang/qt/src/QGpgmeConfig.cmake.in"
+ ac_config_files="$ac_config_files lang/qt/src/QGpgmeConfig.cmake.in"
-ac_config_files="$ac_config_files lang/qt/src/QGpgmeConfigVersion.cmake"
+ ac_config_files="$ac_config_files lang/qt/src/QGpgmeConfigVersion.cmake"
+fi
+if test "$want_qt6" = "yes"; then
+ ac_config_files="$ac_config_files lang/qt/src/QGpgmeQt6Config-w32.cmake.in"
+
+ ac_config_files="$ac_config_files lang/qt/src/QGpgmeQt6Config.cmake.in"
+
+ ac_config_files="$ac_config_files lang/qt/src/QGpgmeQt6ConfigVersion.cmake"
+
+fi
ac_config_files="$ac_config_files lang/qt/tests/Makefile"
ac_config_files="$ac_config_files lang/qt/src/qgpgme_version.h"
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
/^ac_cv_env_/b end
t clear
:clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
t end
s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
if test "x$cache_file" != "x/dev/null"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
if test ! -f "$cache_file" || test -h "$cache_file"; then
cat confcache >"$cache_file"
else
fi
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
LTLIBOBJS=$ac_ltlibobjs
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
-$as_echo_n "checking that generated files are newer than configure... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+printf %s "checking that generated files are newer than configure... " >&6; }
if test -n "$am_sleep_pid"; then
# Hide warnings about reused PIDs.
wait $am_sleep_pid 2>/dev/null
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
-$as_echo "done" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5
+printf "%s\n" "done" >&6; }
if test -n "$EXEEXT"; then
am__EXEEXT_TRUE=
am__EXEEXT_FALSE='#'
as_fn_error $? "conditional \"BUILD_W32_GLIB\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${WANT_QT5_TRUE}" && test -z "${WANT_QT5_FALSE}"; then
+ as_fn_error $? "conditional \"WANT_QT5\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WANT_QT6_TRUE}" && test -z "${WANT_QT6_FALSE}"; then
+ as_fn_error $? "conditional \"WANT_QT6\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${HAVE_DOXYGEN_TRUE}" && test -z "${HAVE_DOXYGEN_FALSE}"; then
as_fn_error $? "conditional \"HAVE_DOXYGEN\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
as_write_fail=0
cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
#! $SHELL
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# as_fn_error STATUS ERROR [LINENO LOG_FD]
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
+
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by gpgme $as_me 1.18.0, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+This file was extended by gpgme $as_me 1.23.1, which was
+generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
Report bugs to <https://bugs.gnupg.org>."
_ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-gpgme config.status 1.18.0
-configured by $0, generated by GNU Autoconf 2.69,
+gpgme config.status 1.23.1
+configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
+ printf "%s\n" "$ac_cs_version"; exit ;;
--config | --confi | --conf | --con | --co | --c )
- $as_echo "$ac_cs_config"; exit ;;
+ printf "%s\n" "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
'') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
--header | --heade | --head | --hea )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
as_fn_append CONFIG_HEADERS " '$ac_optarg'"
ac_need_defaults=false;;
as_fn_error $? "ambiguous option: \`$1'
Try \`$0 --help' for more information.";;
--help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
+ printf "%s\n" "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
if \$ac_cs_recheck; then
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
export CONFIG_SHELL
exec "\$@"
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
- $as_echo "$ac_log"
+ printf "%s\n" "$ac_log"
} >&5
_ACEOF
+build_selection=$build_libtool_modification
_ACEOF
"conf/config.h") CONFIG_HEADERS="$CONFIG_HEADERS conf/config.h" ;;
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "libtool-patch") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool-patch" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
"tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
"lang/qt/src/QGpgmeConfig-w32.cmake.in") CONFIG_FILES="$CONFIG_FILES lang/qt/src/QGpgmeConfig-w32.cmake.in" ;;
"lang/qt/src/QGpgmeConfig.cmake.in") CONFIG_FILES="$CONFIG_FILES lang/qt/src/QGpgmeConfig.cmake.in" ;;
"lang/qt/src/QGpgmeConfigVersion.cmake") CONFIG_FILES="$CONFIG_FILES lang/qt/src/QGpgmeConfigVersion.cmake" ;;
+ "lang/qt/src/QGpgmeQt6Config-w32.cmake.in") CONFIG_FILES="$CONFIG_FILES lang/qt/src/QGpgmeQt6Config-w32.cmake.in" ;;
+ "lang/qt/src/QGpgmeQt6Config.cmake.in") CONFIG_FILES="$CONFIG_FILES lang/qt/src/QGpgmeQt6Config.cmake.in" ;;
+ "lang/qt/src/QGpgmeQt6ConfigVersion.cmake") CONFIG_FILES="$CONFIG_FILES lang/qt/src/QGpgmeQt6ConfigVersion.cmake" ;;
"lang/qt/tests/Makefile") CONFIG_FILES="$CONFIG_FILES lang/qt/tests/Makefile" ;;
"lang/qt/src/qgpgme_version.h") CONFIG_FILES="$CONFIG_FILES lang/qt/src/qgpgme_version.h" ;;
"lang/Makefile") CONFIG_FILES="$CONFIG_FILES lang/Makefile" ;;
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+ test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
+ test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers
+ test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands
fi
# Have a temporary directory for convenience. Make it in the build tree
esac ||
as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
done
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
`' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
fi
# Neutralize special characters interpreted by sed in replacement strings.
case $configure_input in #(
*\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
+ ac_sed_conf_input=`printf "%s\n" "$configure_input" |
sed 's/[\\\\&|]/\\\\&/g'`;; #(
*) ac_sed_conf_input=$configure_input;;
esac
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+printf "%s\n" X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
{ ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
"$ac_tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$ac_tmp/stdin"
#
if test x"$ac_file" != x-; then
{
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
} >"$ac_tmp/config.h" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+printf "%s\n" "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
mv "$ac_tmp/config.h" "$ac_file" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
X"$_am_arg" : 'X\(//\)[^/]' \| \
X"$_am_arg" : 'X\(//\)$' \| \
X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$_am_arg" |
+printf "%s\n" X"$_am_arg" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
s/.*/./; q'`/stamp-h$_am_stamp_count
;;
- :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
+ :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+printf "%s\n" "$as_me: executing $ac_file commands" >&6;}
;;
esac
for am_mf
do
# Strip MF so we end up with the name of the file.
- am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+ am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'`
# Check whether this is an Automake generated Makefile which includes
# dependency-tracking related rules and includes.
# Grep'ing the whole file directly is not great: AIX grep has a line
X"$am_mf" : 'X\(//\)[^/]' \| \
X"$am_mf" : 'X\(//\)$' \| \
X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$am_mf" |
+printf "%s\n" X"$am_mf" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
X"$am_mf" : 'X\(//\)$' \| \
X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$am_mf" |
+printf "%s\n" X/"$am_mf" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
(exit $ac_status); } || am_rc=$?
done
if test $am_rc -ne 0; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "Something went wrong bootstrapping makefile fragments
for automatic dependency tracking. If GNU make was not used, consider
re-running the configure script with MAKE=\"gmake\" (or whatever is
esac
+
ltmain="$ac_aux_dir/ltmain.sh"
fi
if test x"$_lt_function_replace_fail" = x":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+printf "%s\n" "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
fi
_LT_EOF
;;
+ "libtool-patch":C)
+ if test "$build_selection" = never; then
+ echo "patch not applied"
+ elif (mv -f libtool libtool.orig; \
+ sed -f $srcdir/build-aux/libtool-patch.sed libtool.orig >libtool); then
+ echo "applied successfully"
+ elif test "$build_selection" = try; then
+ mv -f libtool.orig libtool
+ echo "patch failed, thus, using original"
+ else
+ echo "patch failed"
+ as_fn_exit 1
+ fi
+ ;;
"src/gpgme-config":F) chmod +x src/gpgme-config ;;
"lang/python/setup.py":F) chmod a+x lang/python/setup.py ;;
$ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
+if test "$want_qt5" = "yes"; then
+ enabled_languages_v=$(echo ${enabled_languages_v:-$enabled_languages} | sed "s/qt/qt (Qt 5)/")
+elif test "$want_qt6" = "yes"; then
+ enabled_languages_v=$(echo ${enabled_languages_v:-$enabled_languages} | sed "s/qt/qt (Qt 6)/")
+fi
+
echo "
GPGME v${VERSION} has been configured as follows:
- Revision: 26ff163b (9983)
+ Revision: cadcb384 (51932)
Platform: $host
UI Server: $uiserver
G10EOF
fi
+
# for the LT versions.
m4_define([mym4_package],[gpgme])
m4_define([mym4_major], [1])
-m4_define([mym4_minor], [18])
-m4_define([mym4_micro], [0])
+m4_define([mym4_minor], [23])
+m4_define([mym4_micro], [1])
# Below is m4 magic to extract and compute the git revision number,
# the decimalized short revision number, a beta version string and a
# (Interfaces added: AGE++)
# (Interfaces removed: AGE=0)
#
-LIBGPGME_LT_CURRENT=38
-LIBGPGME_LT_AGE=27
+LIBGPGME_LT_CURRENT=43
+LIBGPGME_LT_AGE=32
LIBGPGME_LT_REVISION=0
# If there is an ABI break in gpgmepp or qgpgme also bump the
# version in IMPORTED_LOCATION in the GpgmeppConfig-w32.cmake.in.in
-LIBGPGMEPP_LT_CURRENT=21
-LIBGPGMEPP_LT_AGE=15
+LIBGPGMEPP_LT_CURRENT=26
+LIBGPGMEPP_LT_AGE=20
LIBGPGMEPP_LT_REVISION=0
-LIBQGPGME_LT_CURRENT=16
-LIBQGPGME_LT_AGE=1
+LIBQGPGME_LT_CURRENT=20
+LIBQGPGME_LT_AGE=5
LIBQGPGME_LT_REVISION=0
################################################
AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
+#
+# Specify how we support our local modification of libtool for Windows
+# 64-bit. Options are:
+#
+# (1) apply: when appying patch fails, it results failure of entire build
+# (2) never: never apply the patch (no try)
+# (3) try: use patched if it goes well, use original if fails
+#
+AC_ARG_WITH([libtool-modification],
+ AS_HELP_STRING([--with-libtool-modification=apply|never|try],
+ [how to handle libtool modification (default=never)]),
+ build_libtool_modification=$withval,
+ build_libtool_modification=never)
+
+#
+# Apply a patch (locally maintained one of ours) to libtool
+#
+case $host in
+ x86_64-*mingw32*)
+AC_CONFIG_COMMANDS([libtool-patch],[[
+ if test "$build_selection" = never; then
+ echo "patch not applied"
+ elif (mv -f libtool libtool.orig; \
+ sed -f $srcdir/build-aux/libtool-patch.sed libtool.orig >libtool); then
+ echo "applied successfully"
+ elif test "$build_selection" = try; then
+ mv -f libtool.orig libtool
+ echo "patch failed, thus, using original"
+ else
+ echo "patch failed"
+ as_fn_exit 1
+ fi
+]],[build_selection=$build_libtool_modification])
+ ;;
+ *)
+ ;;
+esac
+
GPG_DEFAULT=no
GPGSM_DEFAULT=no
GPGCONF_DEFAULT=no
have_macos_system=no
build_w32_glib=no
build_w32_qt=no
-available_languages="cl cpp python qt"
+available_languages="cl cpp python qt qt5 qt6"
default_languages="cl cpp python qt"
case "${host}" in
x86_64-*mingw32*)
[Locate binaries only via this PATH])
fi
+# Option --enable-no-direct-extern-access
+#
+# Some distributions build Qt 6 with -mno-direct-extern-access. Libraries and
+# applications using Qt then must also be build with this flag. As workaround
+# for a bug in Qt's pkgconfig files which don't have this flag we allow
+# building with this flag explicitly.
+AC_LANG_PUSH(C++)
+AX_CHECK_COMPILE_FLAG([-mno-direct-extern-access],
+ [have_no_direct_extern_access="yes"],
+ [have_no_direct_extern_access="no"],
+ [-Werror])
+AC_LANG_POP()
+AC_ARG_ENABLE([no-direct-extern-access],
+ AS_HELP_STRING([--enable-no-direct-extern-access],
+ [build Qt 6 bindinds with
+ -mno-direct-extern-access]),
+ [use_no_direct_extern_access="$enableval"],
+ [use_no_direct_extern_access=""])
+
# Note: You need to declare all possible languages also in
# lang/Makefile.am's DIST_SUBDIRS.
AC_ARG_ENABLE([languages],
AS_HELP_STRING([--enable-languages=languages],
- [enable only specific language bindings]),
+ [enable only specific language bindings:
+ cl cpp python qt qt5 qt6 (qt selects qt5 or qt6,
+ and qt5 and qt6 exclude each other)]),
[enabled_languages=`echo $enableval | \
tr ',:' ' ' | tr '[A-Z]' '[a-z]' | \
sed 's/c++/cpp/'`],
fi
done
-# Enable C++ 11 if cpp language is requested
-LIST_MEMBER("cpp", $enabled_languages)
+# Check whether Qt5 and/or Qt6 are enabled explicitly
+want_qt5="no";
+LIST_MEMBER("qt5", $enabled_languages)
if test "$found" = "1"; then
- AX_CXX_COMPILE_STDCXX(11, noext, optional)
- if test "$HAVE_CXX11" != "1"; then
- if test "$explicit_languages" = "1"; then
- AC_MSG_ERROR([[
+ want_qt5="yes";
+ # Remove qt5; further down qt will be added
+ enabled_languages=$(echo $enabled_languages | sed 's/qt5//')
+fi
+want_qt6="no";
+LIST_MEMBER("qt6", $enabled_languages)
+if test "$found" = "1"; then
+ want_qt6="yes";
+ # Remove qt6; further down qt will be added
+ enabled_languages=$(echo $enabled_languages | sed 's/qt6//')
+fi
+if test "$want_qt5" = "yes" -a "$want_qt6" = "yes"; then
+ AC_MSG_ERROR([[
***
-*** A compiler with c++11 support is required for the c++ binding.
+*** The bindings for Qt5 and Qt6 cannot be built simultaneously.
***]])
+fi
+
+# Ensure that pkg-config is available for all calls of FIND_QT5/FIND_QT6
+PKG_PROG_PKG_CONFIG
+
+# If the generic qt is enabled, then check for Qt5 or Qt6 (in this order)
+LIST_MEMBER("qt", $enabled_languages)
+if test "$found" = "1"; then
+ # Remove the generic qt (qt5 and qt6 have already been removed)
+ enabled_languages=$(echo $enabled_languages | sed 's/qt//')
+ FIND_QT5
+ if test "$have_qt5_libs" = "yes"; then
+ want_qt5="yes";
+ else
+ FIND_QT6
+ if test "$have_qt6_libs" = "yes"; then
+ want_qt6="yes";
else
- enabled_languages=$(echo $enabled_languages | sed 's/cpp//')
- enabled_languages=$(echo $enabled_languages | sed 's/qt//')
- AC_MSG_WARN([[
+ if test "$explicit_languages" = "1"; then
+ AC_MSG_ERROR([[
***
-*** No c++11 support detected. C++ and Qt bindings will be disabled.
+*** Qt5 (Qt5Core) or Qt6 (Qt6Core) is required for the Qt binding.
***]])
+ else
+ AC_MSG_WARN([[
+***
+*** Qt5 (Qt5Core) and Qt6 (Qt6Core) not found. Qt Binding will be disabled.
+***]])
+ fi
fi
fi
-fi
-
-# Check whether compiler supports visibility attribute (if cpp language is enabled)
-LIST_MEMBER("cpp", $enabled_languages)
-if test "$found" = "1"; then
- AX_GCC_FUNC_ATTRIBUTE(visibility)
- if test "$ax_cv_have_func_attribute_visibility" = "yes"; then
- GPGME_CPP_CFLAGS="$GPGME_CPP_CFLAGS -fvisibility=hidden"
+elif test "$want_qt5" = "yes"; then
+ FIND_QT5
+ if test "$have_qt5_libs" != "yes"; then
+ AC_MSG_ERROR([[
+***
+*** Qt5 (Qt5Core) is required for the Qt 5 binding.
+***]])
+ fi
+elif test "$want_qt6" = "yes"; then
+ FIND_QT6
+ if test "$have_qt6_libs" != "yes"; then
+ AC_MSG_ERROR([[
+***
+*** Qt6 (Qt6Core) is required for the Qt 6 binding.
+***]])
fi
fi
-AC_SUBST(GPGME_CPP_CFLAGS)
-# Check that if qt is enabled cpp also is enabled
-LIST_MEMBER("qt", $enabled_languages)
-if test "$found" = "1"; then
- # We need to ensure that in the language order qt comes after cpp
- # so we remove qt first and explicitly add it as last list member.
- enabled_languages=$(echo $enabled_languages | sed 's/qt//')
+# Check that cpp is enabled if qt5 or qt6 is enabled
+if test "$want_qt5" = "yes" -o "$want_qt6" = "yes"; then
LIST_MEMBER("cpp", $enabled_languages)
if test "$found" = "0"; then
AC_MSG_ERROR([[
***
-*** Qt language binding depends on cpp binding.
+*** The Qt bindings depend on the C++ binding.
***]])
fi
- FIND_QT
- if test "$have_qt5_libs" != "yes"; then
+fi
+
+# Enable C++ 17 if qt6 is requested
+if test "$want_qt6" = "yes"; then
+ AX_CXX_COMPILE_STDCXX(17, noext, optional)
+ if test "$HAVE_CXX17" != "1"; then
if test "$explicit_languages" = "1"; then
- AC_MSG_ERROR([[
+ AC_MSG_ERROR([[
***
-*** Qt5 (Qt5Core) is required for Qt binding.
+*** A compiler with c++17 support is required for the Qt 6 binding.
***]])
else
- AC_MSG_WARN([[
+ want_qt6="no"
+ AC_MSG_WARN([[
***
-*** Qt5 (Qt5Core) not found Qt Binding will be disabled.
+*** No c++17 support detected. Qt 6 binding will be disabled.
***]])
fi
- else
- enabled_languages=`echo $enabled_languages qt`
+ fi
+fi
- AC_CHECK_PROGS([DOXYGEN], [doxygen])
- if test -z "$DOXYGEN";
- # This is not highlighted because it's not really important.
- then AC_MSG_WARN([Doxygen not found - Qt binding doc will not be built.])
- fi
- AC_CHECK_PROGS([GRAPHVIZ], [dot])
- if test -z "$GRAPHVIZ";
- then AC_MSG_WARN([Graphviz not found - Qt binding doc will not have diagrams.])
+# Enable C++ 11 if cpp is requested (unless C++ 17 was already enabled)
+LIST_MEMBER("cpp", $enabled_languages)
+if test "$found" = "1" -a "$HAVE_CXX17" != "1"; then
+ AX_CXX_COMPILE_STDCXX(11, noext, optional)
+ if test "$HAVE_CXX11" != "1"; then
+ if test "$explicit_languages" = "1"; then
+ AC_MSG_ERROR([[
+***
+*** A compiler with c++11 support is required for the C++ binding.
+***]])
+ else
+ enabled_languages=$(echo $enabled_languages | sed 's/cpp//')
+ want_qt5="no"
+ AC_MSG_WARN([[
+***
+*** No c++11 support detected. C++ and Qt 5 bindings will be disabled.
+***]])
fi
fi
fi
-# Check if compiler supports visibility attribute (if qt is enabled)
-LIST_MEMBER("qt", $enabled_languages)
+# Now append qt to the list of language bindings
+if test "$want_qt5" = "yes" -o "$want_qt6" = "yes"; then
+ enabled_languages=$(echo $enabled_languages qt)
+fi
+
+# Check whether compiler supports visibility attribute (if cpp language is enabled)
+LIST_MEMBER("cpp", $enabled_languages)
if test "$found" = "1"; then
AX_GCC_FUNC_ATTRIBUTE(visibility)
if test "$ax_cv_have_func_attribute_visibility" = "yes"; then
- GPGME_QT_CFLAGS="$GPGME_QT_CFLAGS -fvisibility=hidden"
+ GPGME_CPP_CFLAGS="$GPGME_CPP_CFLAGS -fvisibility=hidden"
+ if test "$want_qt5" = "yes"; then
+ GPGME_QT5_CFLAGS="$GPGME_QT5_CFLAGS -fvisibility=hidden"
+ fi
+ if test "$want_qt6" = "yes"; then
+ GPGME_QT6_CFLAGS="$GPGME_QT6_CFLAGS -fvisibility=hidden"
+ fi
+ fi
+fi
+AC_SUBST(GPGME_CPP_CFLAGS)
+
+AM_CONDITIONAL(WANT_QT5, test "$want_qt5" = yes)
+AM_CONDITIONAL(WANT_QT6, test "$want_qt6" = yes)
+
+# Check for tools for building the Qt binding docs
+if test "$want_qt5" = "yes" -o "$want_qt6" = "yes"; then
+ AC_CHECK_PROGS([DOXYGEN], [doxygen])
+ if test -z "$DOXYGEN"; then
+ # This is not highlighted because it's not really important.
+ AC_MSG_WARN([Doxygen not found - Qt binding doc will not be built.])
+ fi
+ AC_CHECK_PROGS([GRAPHVIZ], [dot])
+ if test -z "$GRAPHVIZ"; then
+ AC_MSG_WARN([Graphviz not found - Qt binding doc will not have diagrams.])
fi
fi
if test "$found_py" = "1" -o "$found_py3" = "1"; then
# Reset everything, so that we can look for another Python.
m4_foreach([mym4pythonver],
- [[2.7],[3.4],[3.5],[3.6],[3.7],[3.8],[3.9],[all]],
+ [[2.7],[3.4],[3.5],[3.6],[3.7],[3.8],[3.9],[3.10],
+ [3.11],[3.12],[all]],
[unset PYTHON
unset PYTHON_VERSION
unset PYTHON_CPPFLAGS
unset PYTHON_LDFLAGS
+ unset PYTHON_LIBS
unset PYTHON_SITE_PKG
unset PYTHON_EXTRA_LIBS
unset PYTHON_EXTRA_LDFLAGS
# define GPGME_GCC_A_PURE
#endif
+/* Under Windows we use the gettext code from gpgrt. */
+#define GPG_ERR_ENABLE_GETTEXT_MACROS 1
+
/* Under WindowsCE we need gpg-error's strerror macro. */
#define GPG_ERR_ENABLE_ERRNO_MACROS 1
])
-# Substitution used for gpgme-config
+# Substitution used for gpgme-config and gpgme.pc
GPGME_CONFIG_LIBS="-lgpgme"
GPGME_CONFIG_CFLAGS=""
GPGME_CONFIG_HOST="$host"
GPGME_CONFIG_AVAIL_LANG="$enabled_languages"
+
+case "$includedir" in
+ /usr/include|/include) ;;
+ '${prefix}/include')
+ if test "$prefix" != / -a "$prefix" != /usr; then
+ if test -z "$GPGME_CONFIG_CFLAGS"; then
+ GPGME_CONFIG_CFLAGS="-I\${includedir}"
+ else
+ GPGME_CONFIG_CFLAGS="-I\${includedir} $GPGME_CONFIG_CFLAGS"
+ fi
+ fi
+ ;;
+ *)
+ if test -z "$GPGME_CONFIG_CFLAGS"; then
+ GPGME_CONFIG_CFLAGS="-I\${includedir}"
+ else
+ GPGME_CONFIG_CFLAGS="-I\${includedir} $GPGME_CONFIG_CFLAGS"
+ fi
+ ;;
+esac
+case "$libdir" in
+ /usr/lib|/usr/lib64|/lib|/lib64) ;;
+ '${exec_prefix}/lib'|'${exec_prefix}/lib64')
+ if test "$exec_prefix" = "NONE"; then
+ if test "$prefix" != / -a "$prefix" != /usr; then
+ GPGME_CONFIG_LIBS="-L\${libdir} $GPGME_CONFIG_LIBS"
+ fi
+ elif test "$exec_prefix" != / -a "$exec_prefix" != /usr; then
+ GPGME_CONFIG_LIBS="-L\${libdir} $GPGME_CONFIG_LIBS"
+ fi
+ ;;
+ *) GPGME_CONFIG_LIBS="-L\${libdir} $GPGME_CONFIG_LIBS" ;;
+esac
+
AC_SUBST(GPGME_CONFIG_API_VERSION)
AC_SUBST(GPGME_CONFIG_LIBS)
AC_SUBST(GPGME_CONFIG_CFLAGS)
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfigVersion.cmake)
AC_CONFIG_FILES(lang/cpp/src/gpgmepp_version.h)
AC_CONFIG_FILES(lang/qt/Makefile lang/qt/src/Makefile)
-AC_CONFIG_FILES(lang/qt/src/QGpgmeConfig-w32.cmake.in)
-AC_CONFIG_FILES(lang/qt/src/QGpgmeConfig.cmake.in)
-AC_CONFIG_FILES(lang/qt/src/QGpgmeConfigVersion.cmake)
+if test "$want_qt5" = "yes"; then
+ AC_CONFIG_FILES(lang/qt/src/QGpgmeConfig-w32.cmake.in)
+ AC_CONFIG_FILES(lang/qt/src/QGpgmeConfig.cmake.in)
+ AC_CONFIG_FILES(lang/qt/src/QGpgmeConfigVersion.cmake)
+fi
+if test "$want_qt6" = "yes"; then
+ AC_CONFIG_FILES(lang/qt/src/QGpgmeQt6Config-w32.cmake.in)
+ AC_CONFIG_FILES(lang/qt/src/QGpgmeQt6Config.cmake.in)
+ AC_CONFIG_FILES(lang/qt/src/QGpgmeQt6ConfigVersion.cmake)
+fi
AC_CONFIG_FILES(lang/qt/tests/Makefile)
AC_CONFIG_FILES(lang/qt/src/qgpgme_version.h)
AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd])
AC_CONFIG_FILES([lang/python/setup.py], [chmod a+x lang/python/setup.py])
AC_OUTPUT
+if test "$want_qt5" = "yes"; then
+ enabled_languages_v=$(echo ${enabled_languages_v:-$enabled_languages} | sed "s/qt/qt (Qt 5)/")
+elif test "$want_qt6" = "yes"; then
+ enabled_languages_v=$(echo ${enabled_languages_v:-$enabled_languages} | sed "s/qt/qt (Qt 6)/")
+fi
+
echo "
GPGME v${VERSION} has been configured as follows:
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = doc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
cscope cscopelist:
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
-This is gpgme.info, produced by makeinfo version 6.5 from gpgme.texi.
+This is gpgme.info, produced by makeinfo version 6.8 from gpgme.texi.
Copyright © 2002–2008, 2010, 2012–2018 g10 Code GmbH.
This file documents the GPGME library.
- This is Edition 1.18.0, last updated 3 February 2022, of ‘The ‘GnuPG
-Made Easy’ Reference Manual’, for Version 1.18.0.
+ This is Edition 1.23.0-beta493, last updated 27 April 2022, of ‘The
+‘GnuPG Made Easy’ Reference Manual’, for Version 1.23.0-beta493.
Copyright © 2002–2008, 2010, 2012–2018 g10 Code GmbH.
\1f
Indirect:
-gpgme.info-1: 1673
-gpgme.info-2: 304250
+gpgme.info-1: 1687
+gpgme.info-2: 302067
\1f
Tag Table:
(Indirect)
-Node: Top\7f1673
-Node: Introduction\7f9037
-Node: Getting Started\7f9827
-Node: Features\7f11288
-Node: Overview\7f12600
-Node: Preparation\7f13709
-Node: Header\7f14706
-Node: Building the Source\7f15453
-Node: Largefile Support (LFS)\7f17597
-Node: Using Automake\7f23013
-Node: Using Libtool\7f25402
-Node: Library Version Check\7f25764
-Node: Signal Handling\7f31824
-Node: Multi-Threading\7f33094
-Ref: Multi-Threading-Footnote-1\7f34510
-Node: Protocols and Engines\7f34933
-Node: Engine Version Check\7f37684
-Node: Engine Information\7f40567
-Node: Engine Configuration\7f44427
-Node: OpenPGP\7f45731
-Node: Cryptographic Message Syntax\7f46071
-Node: Assuan\7f46384
-Node: Algorithms\7f46758
-Ref: Algorithms-Footnote-1\7f47237
-Node: Public Key Algorithms\7f47365
-Node: Hash Algorithms\7f49967
-Node: Error Handling\7f51181
-Node: Error Values\7f53055
-Node: Error Sources\7f58258
-Node: Error Codes\7f60698
-Node: Error Strings\7f65491
-Node: Exchanging Data\7f67298
-Node: Creating Data Buffers\7f69183
-Node: Memory Based Data Buffers\7f69699
-Node: File Based Data Buffers\7f73132
-Node: Callback Based Data Buffers\7f76245
-Node: Destroying Data Buffers\7f80436
-Node: Manipulating Data Buffers\7f81943
-Node: Data Buffer I/O Operations\7f82435
-Node: Data Buffer Meta-Data\7f84808
-Node: Data Buffer Convenience\7f90127
-Node: Contexts\7f92347
-Node: Creating Contexts\7f93466
-Node: Destroying Contexts\7f94313
-Node: Result Management\7f94652
-Node: Context Attributes\7f96233
-Node: Protocol Selection\7f97400
-Node: Crypto Engine\7f98446
-Node: Setting the Sender\7f100335
-Node: ASCII Armor\7f101848
-Node: Text Mode\7f102477
-Node: Offline Mode\7f103411
-Node: Pinentry Mode\7f104909
-Node: Included Certificates\7f106803
-Node: Key Listing Mode\7f108249
-Node: Passphrase Callback\7f114337
-Node: Progress Meter Callback\7f117899
-Node: Status Message Callback\7f119884
-Node: Context Flags\7f121649
-Node: Locale\7f129140
-Node: Additional Logs\7f130732
-Node: Key Management\7f132930
-Node: Key objects\7f134154
-Node: Listing Keys\7f149160
-Node: Information About Keys\7f157813
-Node: Manipulating Keys\7f159121
-Node: Generating Keys\7f161627
-Node: Signing Keys\7f179947
-Node: Exporting Keys\7f185706
-Node: Importing Keys\7f193295
-Ref: Importing Keys-Footnote-1\7f202161
-Node: Deleting Keys\7f202289
-Node: Changing Passphrases\7f204569
-Node: Changing TOFU Data\7f205896
-Node: Advanced Key Editing\7f208004
-Node: Crypto Operations\7f210737
-Node: Decrypt\7f211994
-Node: Verify\7f219274
-Node: Decrypt and Verify\7f232367
-Node: Sign\7f235222
-Node: Selecting Signers\7f235786
-Node: Creating a Signature\7f237192
-Node: Signature Notation Data\7f241962
-Node: Encrypt\7f244247
-Node: Encrypting a Plaintext\7f244603
-Node: Miscellaneous\7f259015
-Node: Running other Programs\7f259427
-Node: Using the Assuan protocol\7f261590
-Node: Checking for updates\7f264388
-Node: Run Control\7f269205
-Node: Waiting For Completion\7f269949
-Node: Using External Event Loops\7f272074
-Node: I/O Callback Interface\7f274046
-Node: Registering I/O Callbacks\7f278974
-Node: I/O Callback Example\7f281013
-Node: I/O Callback Example GTK+\7f287638
-Node: I/O Callback Example GDK\7f289427
-Node: I/O Callback Example Qt\7f291069
-Node: Cancellation\7f293357
-Node: UI Server Protocol\7f295665
-Ref: UI Server Protocol-Footnote-1\7f297100
-Node: UI Server Encrypt\7f297219
-Node: UI Server Sign\7f304250
-Node: UI Server Decrypt\7f306603
-Node: UI Server Verify\7f308258
-Node: UI Server Set Input Files\7f311830
-Node: UI Server Sign/Encrypt Files\7f312900
-Node: UI Server Verify/Decrypt Files\7f314708
-Node: UI Server Import/Export Keys\7f316584
-Node: UI Server Checksum Files\7f317646
-Node: Miscellaneous UI Server Commands\7f319864
-Ref: command SENDER\7f321795
-Node: Debugging\7f323497
-Node: Deprecated Functions\7f325246
-Node: Library Copying\7f348255
-Node: Copying\7f376475
-Node: Concept Index\7f414225
-Node: Function and Data Index\7f428937
+Node: Top\7f1687
+Node: Introduction\7f9065
+Node: Getting Started\7f9855
+Node: Features\7f11316
+Node: Overview\7f12628
+Node: Preparation\7f13737
+Node: Header\7f14734
+Node: Building the Source\7f15481
+Node: Largefile Support (LFS)\7f17871
+Node: Using Automake\7f23287
+Node: Using Libtool\7f24861
+Node: Library Version Check\7f25158
+Node: Signal Handling\7f31617
+Node: Multi-Threading\7f32887
+Ref: Multi-Threading-Footnote-1\7f34303
+Node: Protocols and Engines\7f34726
+Node: Engine Version Check\7f37477
+Node: Engine Information\7f40526
+Node: Engine Configuration\7f44386
+Node: OpenPGP\7f45690
+Node: Cryptographic Message Syntax\7f46030
+Node: Assuan\7f46343
+Node: Algorithms\7f46717
+Ref: Algorithms-Footnote-1\7f47196
+Node: Public Key Algorithms\7f47324
+Node: Hash Algorithms\7f49926
+Node: Error Handling\7f51140
+Node: Error Values\7f53014
+Node: Error Sources\7f58217
+Node: Error Codes\7f60657
+Node: Error Strings\7f65678
+Node: Exchanging Data\7f67485
+Node: Creating Data Buffers\7f69370
+Node: Memory Based Data Buffers\7f69886
+Node: File Based Data Buffers\7f73319
+Node: Callback Based Data Buffers\7f76432
+Node: Destroying Data Buffers\7f80623
+Node: Manipulating Data Buffers\7f82130
+Node: Data Buffer I/O Operations\7f82622
+Node: Data Buffer Meta-Data\7f84995
+Node: Data Buffer Convenience\7f90574
+Node: Contexts\7f92848
+Node: Creating Contexts\7f93967
+Node: Destroying Contexts\7f94814
+Node: Result Management\7f95153
+Node: Context Attributes\7f96734
+Node: Protocol Selection\7f97901
+Node: Crypto Engine\7f98947
+Node: Setting the Sender\7f100836
+Node: ASCII Armor\7f102349
+Node: Text Mode\7f102978
+Node: Offline Mode\7f103912
+Node: Pinentry Mode\7f105443
+Node: Included Certificates\7f107337
+Node: Key Listing Mode\7f108783
+Node: Passphrase Callback\7f115105
+Node: Progress Meter Callback\7f118667
+Node: Status Message Callback\7f120652
+Node: Context Flags\7f122417
+Node: Locale\7f130110
+Node: Additional Logs\7f131702
+Node: Key Management\7f133900
+Node: Key objects\7f135124
+Node: Listing Keys\7f151293
+Node: Information About Keys\7f159946
+Node: Manipulating Keys\7f161254
+Node: Generating Keys\7f163760
+Node: Signing Keys\7f182080
+Node: Exporting Keys\7f187839
+Node: Importing Keys\7f195428
+Ref: Importing Keys-Footnote-1\7f204295
+Node: Deleting Keys\7f204423
+Node: Changing Passphrases\7f206703
+Node: Changing TOFU Data\7f208030
+Node: Advanced Key Editing\7f210138
+Node: Crypto Operations\7f212871
+Node: Decrypt\7f214128
+Node: Verify\7f222210
+Node: Decrypt and Verify\7f237469
+Node: Sign\7f240324
+Node: Selecting Signers\7f240888
+Node: Creating a Signature\7f242294
+Node: Signature Notation Data\7f247917
+Node: Encrypt\7f250202
+Node: Encrypting a Plaintext\7f250558
+Node: Miscellaneous\7f266038
+Node: Running other Programs\7f266450
+Node: Using the Assuan protocol\7f268613
+Node: Checking for updates\7f271411
+Node: Run Control\7f276228
+Node: Waiting For Completion\7f276972
+Node: Using External Event Loops\7f279097
+Node: I/O Callback Interface\7f281069
+Node: Registering I/O Callbacks\7f285997
+Node: I/O Callback Example\7f288036
+Node: I/O Callback Example GTK+\7f294661
+Node: I/O Callback Example GDK\7f296450
+Node: I/O Callback Example Qt\7f298092
+Node: Cancellation\7f302067
+Node: UI Server Protocol\7f304375
+Ref: UI Server Protocol-Footnote-1\7f305810
+Node: UI Server Encrypt\7f305929
+Node: UI Server Sign\7f311287
+Node: UI Server Decrypt\7f313640
+Node: UI Server Verify\7f315295
+Node: UI Server Set Input Files\7f318867
+Node: UI Server Sign/Encrypt Files\7f319937
+Node: UI Server Verify/Decrypt Files\7f321745
+Node: UI Server Import/Export Keys\7f323621
+Node: UI Server Checksum Files\7f324683
+Node: Miscellaneous UI Server Commands\7f326901
+Ref: command SENDER\7f328832
+Node: Debugging\7f330534
+Node: Deprecated Functions\7f332693
+Node: Library Copying\7f355702
+Node: Copying\7f383922
+Node: Concept Index\7f421672
+Node: Function and Data Index\7f436384
\1f
End Tag Table
-This is gpgme.info, produced by makeinfo version 6.5 from gpgme.texi.
+This is gpgme.info, produced by makeinfo version 6.8 from gpgme.texi.
Copyright © 2002–2008, 2010, 2012–2018 g10 Code GmbH.
This file documents the GPGME library.
- This is Edition 1.18.0, last updated 3 February 2022, of ‘The ‘GnuPG
-Made Easy’ Reference Manual’, for Version 1.18.0.
+ This is Edition 1.23.0-beta493, last updated 27 April 2022, of ‘The
+‘GnuPG Made Easy’ Reference Manual’, for Version 1.23.0-beta493.
Copyright © 2002–2008, 2010, 2012–2018 g10 Code GmbH.
Main Menu
*********
-This is Edition 1.18.0, last updated 3 February 2022, of ‘The ‘GnuPG
-Made Easy’ Reference Manual’, for Version 1.18.0 of the GPGME library.
+This is Edition 1.23.0-beta493, last updated 27 April 2022, of ‘The
+‘GnuPG Made Easy’ Reference Manual’, for Version 1.23.0-beta493 of the
+GPGME library.
* Menu:
path (via the ‘-I’ option).
However, the path to the include file is determined at the time the
-source is configured. To solve this problem, gpgme ships with a small
-helper program ‘gpgme-config’ that knows about the path to the include
-file and other configuration options. The options that need to be added
-to the compiler invocation at compile time are output by the ‘--cflags’
-option to ‘gpgme-config’. The following example shows how it can be
-used at the command line:
-
- gcc -c foo.c `gpgme-config --cflags`
-
- Adding the output of ‘gpgme-config --cflags’ to the compiler command
-line will ensure that the compiler can find the GPGME header file.
+source is configured. To solve this problem, gpgme ships with
+‘gpgme.pc’ file, that knows about the path to the include file and other
+configuration options. The command, ‘pkg-config’, can be used to handle
+information with ‘gpgme.pc’ file. In an environment which doesn’t have
+‘pkg-config’ (like the one in early stage of OS bootstrap), for
+Automake, you can use ‘gpgme.m4’ which invokes ‘gpgrt-config’ with
+‘gpgme.pc’. (In the past, gpgme used to ship with a small helper
+program ‘gpgme-config’. This functionality of ‘gpgme-config’ is
+replaced by ‘pkg-config’ with ‘gpgme.pc’ file.)
+
+ The options that need to be added to the compiler invocation at
+compile time are output by the ‘--cflags’ option to ‘pkg-config gpgme’.
+The following example shows how it can be used at the command line:
+
+ gcc -c foo.c `pkg-config --cflags gpgme`
+
+ Adding the output of ‘pkg-config --cflags gpgme’ to the compiler
+command line will ensure that the compiler can find the GPGME header
+file.
A similar problem occurs when linking the program with the library.
Again, the compiler has to find the library files. For this to work,
the path to the library files has to be added to the library search path
-(via the ‘-L’ option). For this, the option ‘--libs’ to ‘gpgme-config’
-can be used. For convenience, this option also outputs all other
+(via the ‘-L’ option). For this, the option ‘--libs’ to ‘pkg-config
+gpgme’ can be used. For convenience, this option also outputs all other
options that are required to link the program with GPGME (in particular,
the ‘-lgpgme’ option). The example shows how to link ‘foo.o’ with the
GPGME library to a program ‘foo’.
- gcc -o foo foo.o `gpgme-config --libs`
+ gcc -o foo foo.o `pkg-config --libs gpgme`
Of course you can also combine both examples to a single command by
-specifying both options to ‘gpgme-config’:
-
- gcc -o foo foo.c `gpgme-config --cflags --libs`
-
- If you need to detect the installed language bindings you can use
-list them using:
-
- gpgme-config --print-lang
+specifying both options to ‘pkg-config gpgme’:
- or test for the availability using
-
- gpgme-config --have-lang=python && echo 'Bindings for Pythons available'
+ gcc -o foo foo.c `pkg-config --cflags --libs gpgme`
\1f
File: gpgme.info, Node: Largefile Support (LFS), Next: Using Automake, Prev: Building the Source, Up: Preparation
It is much easier if you use GNU Automake instead of writing your own
Makefiles. If you do that you do not have to worry about finding and
-invoking the ‘gpgme-config’ script at all. GPGME provides an extension
-to Automake that does all the work for you.
+invoking the ‘pkg-config’ script at all. GPGME provides an extension to
+Automake that does all the work for you.
-- Macro: AM_PATH_GPGME ([MINIMUM-VERSION], [ACTION-IF-FOUND],
[ACTION-IF-NOT-FOUND])
- -- Macro: AM_PATH_GPGME_PTH ([MINIMUM-VERSION], [ACTION-IF-FOUND],
- [ACTION-IF-NOT-FOUND])
- -- Macro: AM_PATH_GPGME_PTHREAD ([MINIMUM-VERSION], [ACTION-IF-FOUND],
- [ACTION-IF-NOT-FOUND])
Check whether GPGME (at least version MINIMUM-VERSION, if given)
exists on the host system. If it is found, execute
ACTION-IF-FOUND, otherwise do ACTION-IF-NOT-FOUND, if given.
+ This macro locates for ‘gpgme.pc’, with cross-compile support.
+
Additionally, the function defines ‘GPGME_CFLAGS’ to the flags
needed for compilation of the program to find the ‘gpgme.h’ header
file, and ‘GPGME_LIBS’ to the linker flags needed to link the
- program to the GPGME library. If the used helper script does not
- match the target type you are building for a warning is printed and
- the string ‘libgcrypt’ is appended to the variable
- ‘gpg_config_script_warn’.
+ program to the GPGME library.
- ‘AM_PATH_GPGME_PTHREAD’ checks for the version of GPGME that can be
- used with the native pthread implementation, and defines
+ ‘AM_PATH_GPGME_PTHREAD’ was provided to check for the version of
+ GPGME with the native pthread implementation, and it defined
‘GPGME_PTHREAD_CFLAGS’ and ‘GPGME_PTHREAD_LIBS’. Since version
- 1.8.0 this is no longer required to GPGME_PTHREAD as GPGME itself
- is thread safe.
-
- This macro searches for ‘gpgme-config’ along the PATH. If you are
- cross-compiling, it is useful to set the environment variable
- ‘SYSROOT’ to the top directory of your target. The macro will then
- first look for the helper program in the ‘bin’ directory below that
- top directory. An absolute directory name must be used for
- ‘SYSROOT’. Finally, if the configure command line option
- ‘--with-gpgme-prefix’ is used, only its value is used for the top
- directory below which the helper script is expected.
+ 1.8.0 this is no longer necessary, as GPGME itself is thread safe.
+ Please use plain ‘AM_PATH_GPGME’ instead, with ‘GPGME_CFLAGS’ and
+ ‘GPGME_LDFLAGS’.
You can use the defined Autoconf variables like this in your
‘Makefile.am’:
=================
The easiest way is to just use GNU Libtool. If you use libtool, and
-link to ‘libgpgme.la’, ‘libgpgme-pth.la’ or ‘libgpgme-pthread.la’
-respectively, everything will be done automatically by Libtool.
+link to ‘libgpgme.la’, everything will be done automatically by Libtool.
\1f
File: gpgme.info, Node: Library Version Check, Next: Signal Handling, Prev: Using Libtool, Up: Preparation
the existent version. The given version must be a string with
major, minor, and micro number. Example: "2.1.0".
+ ‘inst-type’
+ The installation type is used to prefer a certain GnuPG
+ installation. The value is interpreted as an integer: A value
+ of 0 is ignored, a value of 1 indicates an installation scheme
+ as used by Gpg4win, a value of 2 indicates an installation
+ scheme as used by GnuPG Desktop on Windows. All other values
+ are reserved.
+
‘w32-inst-dir’
On Windows GPGME needs to know its installation directory to
find its spawn helper. This is in general no problem because
‘localedir’
Return the name of the directory with GnuPG locale data.
+ ‘socketdir’
+ Return the name of the directory with the following sockets.
+
‘agent-socket’
Return the name of the socket to connect to the gpg-agent.
‘gpg-wks-client-name’
Return the name of the Web Key Service tool.
+ ‘gpgtar-name’
+ Return the name of the gpgtar program.
+
-- Function: gpgme_error_t gpgme_engine_check_version
(gpgme_protocol_t PROTOCOL)
The function ‘gpgme_engine_check_version’ verifies that the engine
‘GPG_ERR_CANCELED’
This value means that the operation was canceled.
+‘GPG_ERR_FULLY_CANCELED’
+ This value means that the operation was canceled. It is sometimes
+ returned instead of ‘GPG_ERR_CANCELED’ for internal reasons in
+ GnuPG. You should treat both values identically.
+
‘GPG_ERR_INV_ENGINE’
This value means that the engine that implements the desired
protocol is currently not available. This can either be because
the output when encrypting or signing the data and will be returned
to the user when decrypting or verifying the output data.
+ If a signed or encrypted archive is created, then the file name
+ will be interpreted as the base directory for the relative paths of
+ the files and directories to put into the archive. This
+ corresponds to the –directory option of gpgtar.
+
The function returns the error code ‘GPG_ERR_INV_VALUE’ if DH is
not a valid pointer and ‘GPG_ERR_ENOMEM’ if not enough memory is
available.
The data is a PKCS#12 message. This is commonly used to exchange
private keys for X.509.
- -- Function: gpgme_data_type_t gpgme_data_identify (gpgme_data_t DH)
+ -- Function: gpgme_data_type_t gpgme_data_identify
+ (gpgme_data_t DH, int RESERVED)
SINCE: 1.4.3
The function ‘gpgme_data_identify’ returns the type of the data
object has been created the identification may not be possible or
the data object may change its internal state (file pointer moved).
For file or memory based data object, the state should not change.
+ RESERVED should be zero.
\1f
File: gpgme.info, Node: Contexts, Next: UI Server Protocol, Prev: Exchanging Data, Up: Top
For the CMS protocol the offline mode specifies whether Dirmngr
shall be used to do additional validation that might require
- connecting external services (e.g. CRL / OCSP checks). Here the
- offline mode only affects the keylist mode
- ‘GPGME_KEYLIST_MODE_VALIDATE’.
+ connecting external services (e.g. CRL / OCSP checks). The
+ offline mode is used for all operations on this context. It has
+ only an effect with GnuPG versions 2.1.6 or later.
For the OpenPGP protocol offline mode entirely disables the use of
the Dirmngr and will thus guarantee that no network connections are
The ‘GPGME_KEYLIST_MODE_EPHEMERAL’ symbol specifies that keys
flagged as ephemeral are included in the listing.
+ ‘GPGME_KEYLIST_MODE_WITH_V5FPR’
+ SINCE: 1.23.0
+
+ The ‘GPGME_KEYLIST_MODE_WITH_V5FPR’ symbol specifies that key
+ listings shall also provide v5 style fingerprints for v4
+ OpenPGp keys.
+
‘GPGME_KEYLIST_MODE_VALIDATE’
SINCE: 0.4.5
session key is specific to GnuPG and can be retrieved during a
decrypt operation when the context flag "export-session-key"
is enabled. Please be aware that using this feature with
- GnuPG < 2.1.16 will leak the session key on many platforms via
- ps(1).
+ GnuPG < 2.1.16 or when decrypting an archive will leak the
+ session key on many platforms via ps(1).
‘"auto-key-retrieve"’
Setting the VALUE to "1" asks the backend to automatically
documented in the GnuPG manual and the gpg man page under the
option ‘--import-filter’.
+ ‘"no-auto-check-trustdb"’
+ SINCE: 1.19.0 Setting the VALUE to "1" forces the GPG backend
+ to disable the automatic check of the trust database.
+
This function returns ‘0’ on success.
-- Function: const char * gpgme_get_ctx_flag (gpgme_ctx_t CTX,
missing certificates or unmatched policies.
‘unsigned int can_encrypt : 1’
- This is true if the key (ie one of its subkeys) can be used
- for encryption.
+ This is true if the key or one of its subkeys can be used for
+ encryption and the encryption will likely succeed.
‘unsigned int can_sign : 1’
- This is true if the key (ie one of its subkeys) can be used to
- create data signatures.
+ This is true if the key or one of its subkeys can be used to
+ create data signatures and the signing will likely succeed.
‘unsigned int can_certify : 1’
- This is true if the key (ie one of its subkeys) can be used to
+ This is true if the key or one of its subkeys can be used to
create key certificates.
‘unsigned int can_authenticate : 1’
SINCE: 0.4.5
This is true if the key (ie one of its subkeys) can be used
- for authentication.
+ for authentication and the authentication will likely succeed.
+
+ ‘unsigned int has_encrypt : 1’
+ SINCE: 1.23.0
+
+ This is true if the key or one of its subkeys is capable of
+ encryption. Note that this flag is set even if the key is
+ expired.
+
+ ‘unsigned int has_sign : 1’
+ SINCE: 1.23.0
+
+ This is true if the key or one of its subkeys is capable of
+ signing. Note that this flag is set even if the key is
+ expired.
+
+ ‘unsigned int has_certify : 1’
+ SINCE: 1.23.0
+
+ This is true if the key or one of its subkeys is capable of
+ certification. Note that this flag is set even if the key is
+ expired.
+
+ ‘unsigned int has_authenticate : 1’
+ SINCE: 1.23.0
+
+ This is true if the key or one of its subkeys is capable of
+ authentication. Note that this flag is set even if the key is
+ expired.
‘unsigned int is_qualified : 1’
SINCE: 1.1.0
This is the fingerprint of the subkey in hexadecimal digits,
if available.
+ ‘char *v5fpr’
+ For a v4 OpenPGP key this is its v5 style fingerprint of the
+ subkey in hexadecimal digits, if available.
+
‘char *keygrip’
SINCE: 1.7.0
which have been retrieved from an external source (i.e. using
‘GPGME_KEYLIST_MODE_EXTERN’) earlier. The external keylisting must
have been made with the same context configuration (in particular
- the same home directory). (1) Note that for OpenPGP this may
+ the same home directory). (1) Note that for OpenPGP this may
require another access to the keyserver over the network.
Only keys of the currently selected protocol of CTX are considered
-- Function: gpgme_error_t gpgme_op_decrypt (gpgme_ctx_t CTX,
gpgme_data_t CIPHER, gpgme_data_t PLAIN)
The function ‘gpgme_op_decrypt’ decrypts the ciphertext in the data
- object CIPHER and stores it into the data object PLAIN.
+ object CIPHER or, if a file name is set on the data object, the
+ ciphertext stored in the corresponding file. The decrypted
+ ciphertext is stored into the data object PLAIN.
The function returns the error code ‘GPG_ERR_NO_ERROR’ if the
ciphertext could be decrypted successfully, ‘GPG_ERR_INV_VALUE’ if
‘gpgme_op_decrypt’ but has an additional argument FLAGS. If FLAGS
is 0 both function behave identically.
+ If the flag ‘GPGME_DECRYPT_ARCHIVE’ is set, then an encrypted
+ archive in the data object CIPHER is decrypted and extracted. The
+ content of the archive is extracted into a directory named
+ ‘GPGARCH_n_’ (where ‘n’ is a number) or into the directory set with
+ ‘gpgme_data_set_file_name’ for the data object PLAIN.
+
The value in FLAGS is a bitwise-or combination of one or multiple
of the following bit values:
The ‘GPGME_DECRYPT_VERIFY’ symbol specifies that this function
shall exactly act as ‘gpgme_op_decrypt_verify’.
+ ‘GPGME_DECRYPT_ARCHIVE’
+ SINCE: 1.19.0
+
+ The ‘GPGME_DECRYPT_ARCHIVE’ symbol specifies that the input is
+ an encrypted archive that shall be decrypted and extracted.
+ This feature is currently only supported for the OpenPGP
+ crypto engine and requires GnuPG 2.4.1.
+
‘GPGME_DECRYPT_UNWRAP’
SINCE: 1.8.0
and PLAIN should be a null pointer. Otherwise, if SIG is a normal
(or cleartext) signature, SIGNED_TEXT should be a null pointer and
PLAIN should be a writable data object that will contain the
- plaintext after successful verification.
+ plaintext after successful verification. If a file name is set on
+ the data object SIG (or on the data object SIGNED_TEXT), then the
+ data of the signature (resp. the data of the signed text) is not
+ read from the data object but from the file with the given file
+ name.
The results of the individual signature verifications can be
retrieved with ‘gpgme_op_verify_result’.
CTX, SIG or PLAIN is not a valid pointer, and ‘GPG_ERR_NO_DATA’ if
SIG or PLAIN does not contain any data to verify.
+ -- Function: gpgme_error_t gpgme_op_verify_ext ( gpgme_ctx_t CTX,
+ gpgme_verify_flags_t FLAGS, gpgme_data_t SIG,
+ gpgme_data_t SIGNED_TEXT, gpgme_data_t PLAIN)
+
+ The function ‘gpgme_op_verify_ext’ is the same as ‘gpgme_op_verify’
+ but has an additional argument FLAGS. If FLAGS is 0 both function
+ behave identically.
+
+ If the flag ‘GPGME_VERIFY_ARCHIVE’ is set, then a signed archive in
+ the data object SIG is verified and extracted. The content of the
+ archive is extracted into a directory named ‘GPGARCH_n_’ (where ‘n’
+ is a number) or into the directory set with
+ ‘gpgme_data_set_file_name’ for the data object PLAIN.
+
+ The value in FLAGS is a bitwise-or combination of one or multiple
+ of the following bit values:
+
+ ‘GPGME_VERIFY_ARCHIVE’
+ SINCE: 1.19.0
+
+ The ‘GPGME_VERIFY_ARCHIVE’ symbol specifies that the input is
+ a signed archive that shall be verified and extracted. This
+ feature is currently only supported for the OpenPGP crypto
+ engine and requires GnuPG 2.4.1.
+
+ The function returns the error codes as descriped for
+ ‘gpgme_op_decrypt’ respective ‘gpgme_op_encrypt’.
+
+ -- Function: gpgme_error_t gpgme_op_verify_ext_start ( gpgme_ctx_t CTX,
+ gpgme_verify_flags_t FLAGS, gpgme_data_t SIG,
+ gpgme_data_t SIGNED_TEXT, gpgme_data_t PLAIN)
+
+ The function ‘gpgme_op_verify_ext_start’ initiates a
+ ‘gpgme_op_verify_ext’ operation. It can be completed by calling
+ ‘gpgme_wait’ on the context. *Note Waiting For Completion::.
+
+ The function returns the error code ‘GPG_ERR_NO_ERROR’ if the
+ operation could be started successfully, ‘GPG_ERR_INV_VALUE’ if
+ CTX, SIG or PLAIN is not a valid pointer, and ‘GPG_ERR_NO_DATA’ if
+ SIG or PLAIN does not contain any data to verify.
+
-- Data type: gpgme_sig_notation_t
This is a pointer to a structure used to store a part of the result
of a ‘gpgme_op_verify’ operation. The structure contains the
A clear text signature is made. The ASCII armor and text mode
settings of the context are ignored.
+ ‘GPGME_SIG_MODE_ARCHIVE’
+ SINCE: 1.19.0
+
+ A signed archive is created from the given files and
+ directories. This feature is currently only supported for the
+ OpenPGP crypto engine and requires GnuPG 2.4.1.
+
-- Function: gpgme_error_t gpgme_op_sign (gpgme_ctx_t CTX,
gpgme_data_t PLAIN, gpgme_data_t SIG, gpgme_sig_mode_t MODE)
The function ‘gpgme_op_sign’ creates a signature for the text in
- the data object PLAIN and returns it in the data object SIG. The
- type of the signature created is determined by the ASCII armor (or,
- if that is not set, by the encoding specified for SIG), the text
- mode attributes set for the context CTX and the requested signature
- mode MODE.
+ the data object PLAIN and returns it in the data object SIG or
+ writes it directly to the file set with ‘gpgme_data_set_file_name’
+ for the data object SIG. The type of the signature created is
+ determined by the ASCII armor (or, if that is not set, by the
+ encoding specified for SIG), the text mode attributes set for the
+ context CTX and the requested signature mode MODE.
+
+ If signature mode ‘GPGME_SIG_MODE_ARCHIVE’ is requested, then a
+ signed archive is created from the files and directories given as
+ NUL-separated list in the data object PLAIN and returned in the
+ data object SIG. The paths of the files and directories have to be
+ given as paths relative to the current working directory or
+ relative to the base directory set with ‘gpgme_data_set_file_name’.
After the operation completed successfully, the result can be
retrieved with ‘gpgme_op_sign_result’.
The hash algorithm used to create this signature.
‘unsigned int sig_class’
- The signature class of this signature.
+ The signature class of this signature. Note that only the
+ values 0, 1, and 2 are well-defined.
‘long int timestamp’
The creation timestamp of this signature.
gpgme_data_t PLAIN, gpgme_data_t CIPHER)
The function ‘gpgme_op_encrypt’ encrypts the plaintext in the data
object PLAIN for the recipients RECP and stores the ciphertext in
- the data object CIPHER. The type of the ciphertext created is
- determined by the ASCII armor (or, if that is not set, by the
- encoding specified for CIPHER) and the text mode attributes set for
- the context CTX.
+ the data object CIPHER or writes it directly to the file set with
+ ‘gpgme_data_set_file_name’ for the data object CIPHER. The type of
+ the ciphertext created is determined by the ASCII armor (or, if
+ that is not set, by the encoding specified for CIPHER) and the text
+ mode attributes set for the context CTX.
+
+ If the flag ‘GPGME_ENCRYPT_ARCHIVE’ is set, then an encrypted
+ archive is created from the files and directories given as
+ NUL-separated list in the data object PLAIN and returned in the
+ data object CIPHER. The paths of the files and directories have to
+ be given as paths relative to the current working directory or
+ relative to the base directory set with ‘gpgme_data_set_file_name’.
RECP must be a ‘NULL’-terminated array of keys. The user must keep
references for all keys during the whole duration of the call (but
be used with care; in general it is not a good idea to use any
untrusted keys.
+ For the S/MIME (CMS) protocol this flag allows to encrypt to a
+ certificate without running any checks on the validity of the
+ certificate.
+
‘GPGME_ENCRYPT_NO_ENCRYPT_TO’
SINCE: 1.2.0
functions. This feature is currently only supported for the
OpenPGP crypto engine.
+ ‘GPGME_ENCRYPT_ARCHIVE’
+ SINCE: 1.19.0
+
+ The ‘GPGME_ENCRYPT_ARCHIVE’ symbol specifies that the input is
+ a NUL-separated list of file paths and directory paths that
+ shall be encrypted into an archive. This feature is currently
+ only supported for the OpenPGP crypto engine and requires
+ GnuPG 2.4.1.
+
If ‘GPG_ERR_UNUSABLE_PUBKEY’ is returned, some recipients in RECP
are invalid, but not all. In this case the plaintext might be
encrypted for all valid recipients and returned in CIPHER (if this
// ...
};
-\1f
-File: gpgme.info, Node: Cancellation, Prev: Using External Event Loops, Up: Run Control
-
-7.8.3 Cancellation
-------------------
-
-Sometimes you do not want to wait for an operation to finish. GPGME
-provides two different functions to achieve that. The function
-‘gpgme_cancel’ takes effect immediately. When it returns, the operation
-is effectively canceled. However, it has some limitations and can not
-be used with synchronous operations. In contrast, the function
-‘gpgme_cancel_async’ can be used with any context and from any thread,
-but it is not guaranteed to take effect immediately. Instead,
-cancellation occurs at the next possible time (typically the next time
-I/O occurs in the target context).
-
- -- Function: gpgme_ctx_t gpgme_cancel (gpgme_ctx_t CTX)
- SINCE: 0.4.5
-
- The function ‘gpgme_cancel’ attempts to cancel a pending operation
- in the context CTX. This only works if you use the global event
- loop or your own event loop.
-
- If you use the global event loop, you must not call ‘gpgme_wait’
- during cancellation. After successful cancellation, you can call
- ‘gpgme_wait’ (optionally waiting on CTX), and the context CTX will
- appear as if it had finished with the error code ‘GPG_ERR_CANCEL’.
-
- If you use an external event loop, you must ensure that no I/O
- callbacks are invoked for this context (for example by halting the
- event loop). On successful cancellation, all registered I/O
- callbacks for this context will be unregistered, and a
- ‘GPGME_EVENT_DONE’ event with the error code ‘GPG_ERR_CANCEL’ will
- be signalled.
-
- The function returns an error code if the cancellation failed (in
- this case the state of CTX is not modified).
-
- -- Function: gpgme_ctx_t gpgme_cancel_async (gpgme_ctx_t CTX)
- SINCE: 1.1.7
-
- The function ‘gpgme_cancel_async’ attempts to cancel a pending
- operation in the context CTX. This can be called by any thread at
- any time after starting an operation on the context, but will not
- take effect immediately. The actual cancellation happens at the
- next time GPGME processes I/O in that context.
-
- The function returns an error code if the cancellation failed (in
- this case the state of CTX is not modified).
-
-\1f
-File: gpgme.info, Node: UI Server Protocol, Next: Debugging, Prev: Contexts, Up: Top
-
-Appendix A The GnuPG UI Server Protocol
-***************************************
-
-This section specifies the protocol used between clients and a User
-Interface Server (UI server). This protocol helps to build a system
-where all cryptographic operations are done by a server and the server
-is responsible for all dialogs. Although GPGME has no direct support
-for this protocol it is believed that servers will utilize the GPGME
-library; thus having the specification included in this manual is an
-appropriate choice. This protocol should be referenced as ‘The GnuPG UI
-Server Protocol’.
-
-A server needs to implement these commands:(1)
-
-* Menu:
-
-* UI Server Encrypt:: Encrypt a message.
-* UI Server Sign:: Sign a message.
-* UI Server Decrypt:: Decrypt a message.
-* UI Server Verify:: Verify a message.
-* UI Server Set Input Files:: Specifying the input files to operate on.
-* UI Server Sign/Encrypt Files:: Encrypting and signing files.
-* UI Server Verify/Decrypt Files:: Decrypting and verifying files.
-* UI Server Import/Export Keys:: Managing certificates.
-* UI Server Checksum Files:: Create and verify checksums for files.
-* Miscellaneous UI Server Commands:: Commands not related to a specific operation.
-
- ---------- Footnotes ----------
-
- (1) In all examples we assume that the connection has already been
-established; see the Assuan manual for details.
-
-\1f
-File: gpgme.info, Node: UI Server Encrypt, Next: UI Server Sign, Up: UI Server Protocol
-
-A.1 UI Server: Encrypt a Message
-================================
-
-Before encryption can be done the recipients must be set using the
-command:
-
- -- Command: RECIPIENT STRING
-
- Set the recipient for the encryption. STRING is an RFC-2822
- recipient name ("mailbox" as per section 3.4). This command may or
- may not check the recipient for validity right away; if it does not
- all recipients are expected to be checked at the time of the
- ‘ENCRYPT’ command. All ‘RECIPIENT’ commands are cumulative until a
- successful ‘ENCRYPT’ command or until a ‘RESET’ command. Linefeeds
- are obviously not allowed in STRING and should be folded into
- spaces (which are equivalent).
-
-To tell the server the source and destination of the data, the next two
-commands are to be used:
-
- -- Command: INPUT FD=N
- Set the file descriptor for the message to be encrypted to N. The
- message send to the server is binary encoded.
-
- GpgOL is a Windows only program, thus N is not a libc file
- descriptor but a regular system handle. Given that the Assuan
- connection works over a socket, it is not possible to use regular
- inheritance to make the file descriptor available to the server.
- Thus ‘DuplicateHandle’ needs to be used to duplicate a handle to
- the server process. This is the reason that the server needs to
- implement the ‘GETINFO pid’ command. Sending this command a second
- time replaces the file descriptor set by the last one.
-
- -- Command: OUTPUT FD=N [--binary]
- Set the file descriptor to be used for the output (i.e. the
- encrypted message) to N. If the option ‘--binary’ is given the
- output shall be in binary format; if not given, the output for
- OpenPGP needs to be ASCII armored and for CMS Base-64 encoded. For
- details on the file descriptor, see the ‘INPUT’ command.
-
-The setting of the recipients, the data source and destination may
-happen in any order, even intermixed. If this has been done the actual
-encryption operation is called using:
-
- -- Command: ENCRYPT --protocol=NAME
-
- This command reads the plaintext from the file descriptor set by
- the ‘INPUT’ command, encrypts it and writes the ciphertext to the
- file descriptor set by the ‘OUTPUT’ command. The server may (and
- should) overlap reading and writing. The recipients used for the
- encryption are all the recipients set so far. If any recipient is
- not usable the server should take appropriate measures to notify
- the user about the problem and may cancel the operation by
- returning an error code. The used file descriptors are void after
- this command; the recipient list is only cleared if the server
- returns success.
-
- Because GpgOL uses a streaming mode of operation the server is not
- allowed to auto select the protocol and must obey to the mandatory
- PROTOCOL parameter:
-
- ‘OpenPGP’
- Use the OpenPGP protocol (RFC-2440).
- ‘CMS’
- Use the CMS (PKCS#7) protocol (RFC-3852).
-
- To support automagically selection of the protocol depending on the
-selected keys, the server MAY implement the command:
-
- -- Command: PREP_ENCRYPT [--protocol=NAME] [--expect-sign]
-
- This commands considers all recipients set so far and decides
- whether it is able to take input and start the actual encryption.
- This is kind of a dry-run ‘ENCRYPT’ without requiring or using the
- input and output file descriptors. The server shall cache the
- result of any user selection to avoid asking this again when the
- actual ‘ENCRYPT’ command is send. The ‘--protocol’ option is
- optional; if it is not given, the server should allow the user to
- select the protocol to be used based on the recipients given or by
- any other means.
-
- If ‘--expect-sign’ is given the server should expect that the
- message will also be signed and use this hint to present a unified
- recipient and signer selection dialog if possible and desired. A
- selected signer should then be cached for the expected SIGN command
- (which is expected in the same session but possible on another
- connection).
-
- If this command is given again before a successful ‘ENCRYPT’
- command, the second one takes effect.
-
- Before sending the OK response the server shall tell the client the
- protocol to be used (either the one given by the argument or the
- one selected by the user) by means of a status line:
-
- -- Status line: PROTOCOL NAME
- Advise the client to use the protocol NAME for the ‘ENCRYPT’
- command. The valid protocol names are listed under the description
- of the ‘ENCRYPT’ command. The server shall emit exactly one
- PROTOCOL status line.
-
-Here is an example of a complete encryption sequence; client lines are
-indicated by a C:, server responses by C::
-
- C: RESET
- S: OK
- C: RECIPIENT foo@example.net
- S: OK
- C: RECIPIENT bar@example.com
- S: OK
- C: PREP_ENCRYPT
- S: S PROTOCOL OpenPGP
- S: OK
- C: INPUT FD=17
- S: OK
- C: OUTPUT FD=18
- S: OK
- C: ENCRYPT
- S: OK
-
-This is gpgme.info, produced by makeinfo version 6.5 from gpgme.texi.
+This is gpgme.info, produced by makeinfo version 6.8 from gpgme.texi.
Copyright © 2002–2008, 2010, 2012–2018 g10 Code GmbH.
This file documents the GPGME library.
- This is Edition 1.18.0, last updated 3 February 2022, of ‘The ‘GnuPG
-Made Easy’ Reference Manual’, for Version 1.18.0.
+ This is Edition 1.23.0-beta493, last updated 27 April 2022, of ‘The
+‘GnuPG Made Easy’ Reference Manual’, for Version 1.23.0-beta493.
Copyright © 2002–2008, 2010, 2012–2018 g10 Code GmbH.
Public License for more details.
\1f
+File: gpgme.info, Node: Cancellation, Prev: Using External Event Loops, Up: Run Control
+
+7.8.3 Cancellation
+------------------
+
+Sometimes you do not want to wait for an operation to finish. GPGME
+provides two different functions to achieve that. The function
+‘gpgme_cancel’ takes effect immediately. When it returns, the operation
+is effectively canceled. However, it has some limitations and can not
+be used with synchronous operations. In contrast, the function
+‘gpgme_cancel_async’ can be used with any context and from any thread,
+but it is not guaranteed to take effect immediately. Instead,
+cancellation occurs at the next possible time (typically the next time
+I/O occurs in the target context).
+
+ -- Function: gpgme_ctx_t gpgme_cancel (gpgme_ctx_t CTX)
+ SINCE: 0.4.5
+
+ The function ‘gpgme_cancel’ attempts to cancel a pending operation
+ in the context CTX. This only works if you use the global event
+ loop or your own event loop.
+
+ If you use the global event loop, you must not call ‘gpgme_wait’
+ during cancellation. After successful cancellation, you can call
+ ‘gpgme_wait’ (optionally waiting on CTX), and the context CTX will
+ appear as if it had finished with the error code ‘GPG_ERR_CANCEL’.
+
+ If you use an external event loop, you must ensure that no I/O
+ callbacks are invoked for this context (for example by halting the
+ event loop). On successful cancellation, all registered I/O
+ callbacks for this context will be unregistered, and a
+ ‘GPGME_EVENT_DONE’ event with the error code ‘GPG_ERR_CANCEL’ will
+ be signalled.
+
+ The function returns an error code if the cancellation failed (in
+ this case the state of CTX is not modified).
+
+ -- Function: gpgme_ctx_t gpgme_cancel_async (gpgme_ctx_t CTX)
+ SINCE: 1.1.7
+
+ The function ‘gpgme_cancel_async’ attempts to cancel a pending
+ operation in the context CTX. This can be called by any thread at
+ any time after starting an operation on the context, but will not
+ take effect immediately. The actual cancellation happens at the
+ next time GPGME processes I/O in that context.
+
+ The function returns an error code if the cancellation failed (in
+ this case the state of CTX is not modified).
+
+\1f
+File: gpgme.info, Node: UI Server Protocol, Next: Debugging, Prev: Contexts, Up: Top
+
+Appendix A The GnuPG UI Server Protocol
+***************************************
+
+This section specifies the protocol used between clients and a User
+Interface Server (UI server). This protocol helps to build a system
+where all cryptographic operations are done by a server and the server
+is responsible for all dialogs. Although GPGME has no direct support
+for this protocol it is believed that servers will utilize the GPGME
+library; thus having the specification included in this manual is an
+appropriate choice. This protocol should be referenced as ‘The GnuPG UI
+Server Protocol’.
+
+A server needs to implement these commands:(1)
+
+* Menu:
+
+* UI Server Encrypt:: Encrypt a message.
+* UI Server Sign:: Sign a message.
+* UI Server Decrypt:: Decrypt a message.
+* UI Server Verify:: Verify a message.
+* UI Server Set Input Files:: Specifying the input files to operate on.
+* UI Server Sign/Encrypt Files:: Encrypting and signing files.
+* UI Server Verify/Decrypt Files:: Decrypting and verifying files.
+* UI Server Import/Export Keys:: Managing certificates.
+* UI Server Checksum Files:: Create and verify checksums for files.
+* Miscellaneous UI Server Commands:: Commands not related to a specific operation.
+
+ ---------- Footnotes ----------
+
+ (1) In all examples we assume that the connection has already been
+established; see the Assuan manual for details.
+
+\1f
+File: gpgme.info, Node: UI Server Encrypt, Next: UI Server Sign, Up: UI Server Protocol
+
+A.1 UI Server: Encrypt a Message
+================================
+
+Before encryption can be done the recipients must be set using the
+command:
+
+ -- Command: RECIPIENT STRING
+
+ Set the recipient for the encryption. STRING is an RFC-2822
+ recipient name ("mailbox" as per section 3.4). This command may or
+ may not check the recipient for validity right away; if it does not
+ all recipients are expected to be checked at the time of the
+ ‘ENCRYPT’ command. All ‘RECIPIENT’ commands are cumulative until a
+ successful ‘ENCRYPT’ command or until a ‘RESET’ command. Linefeeds
+ are obviously not allowed in STRING and should be folded into
+ spaces (which are equivalent).
+
+To tell the server the source and destination of the data, the next two
+commands are to be used:
+
+ -- Command: INPUT FD=N
+ Set the file descriptor for the message to be encrypted to N. The
+ message send to the server is binary encoded.
+
+ GpgOL is a Windows only program, thus N is not a libc file
+ descriptor but a regular system handle. Given that the Assuan
+ connection works over a socket, it is not possible to use regular
+ inheritance to make the file descriptor available to the server.
+ Thus ‘DuplicateHandle’ needs to be used to duplicate a handle to
+ the server process. This is the reason that the server needs to
+ implement the ‘GETINFO pid’ command. Sending this command a second
+ time replaces the file descriptor set by the last one.
+
+ -- Command: OUTPUT FD=N [--binary]
+ Set the file descriptor to be used for the output (i.e. the
+ encrypted message) to N. If the option ‘--binary’ is given the
+ output shall be in binary format; if not given, the output for
+ OpenPGP needs to be ASCII armored and for CMS Base-64 encoded. For
+ details on the file descriptor, see the ‘INPUT’ command.
+
+The setting of the recipients, the data source and destination may
+happen in any order, even intermixed. If this has been done the actual
+encryption operation is called using:
+
+ -- Command: ENCRYPT --protocol=NAME
+
+ This command reads the plaintext from the file descriptor set by
+ the ‘INPUT’ command, encrypts it and writes the ciphertext to the
+ file descriptor set by the ‘OUTPUT’ command. The server may (and
+ should) overlap reading and writing. The recipients used for the
+ encryption are all the recipients set so far. If any recipient is
+ not usable the server should take appropriate measures to notify
+ the user about the problem and may cancel the operation by
+ returning an error code. The used file descriptors are void after
+ this command; the recipient list is only cleared if the server
+ returns success.
+
+ Because GpgOL uses a streaming mode of operation the server is not
+ allowed to auto select the protocol and must obey to the mandatory
+ PROTOCOL parameter:
+
+ ‘OpenPGP’
+ Use the OpenPGP protocol (RFC-2440).
+ ‘CMS’
+ Use the CMS (PKCS#7) protocol (RFC-3852).
+
+ To support automagically selection of the protocol depending on the
+selected keys, the server MAY implement the command:
+
+ -- Command: PREP_ENCRYPT [--protocol=NAME] [--expect-sign]
+
+ This commands considers all recipients set so far and decides
+ whether it is able to take input and start the actual encryption.
+ This is kind of a dry-run ‘ENCRYPT’ without requiring or using the
+ input and output file descriptors. The server shall cache the
+ result of any user selection to avoid asking this again when the
+ actual ‘ENCRYPT’ command is send. The ‘--protocol’ option is
+ optional; if it is not given, the server should allow the user to
+ select the protocol to be used based on the recipients given or by
+ any other means.
+
+ If ‘--expect-sign’ is given the server should expect that the
+ message will also be signed and use this hint to present a unified
+ recipient and signer selection dialog if possible and desired. A
+ selected signer should then be cached for the expected SIGN command
+ (which is expected in the same session but possible on another
+ connection).
+
+ If this command is given again before a successful ‘ENCRYPT’
+ command, the second one takes effect.
+
+ Before sending the OK response the server shall tell the client the
+ protocol to be used (either the one given by the argument or the
+ one selected by the user) by means of a status line:
+
+ -- Status line: PROTOCOL NAME
+ Advise the client to use the protocol NAME for the ‘ENCRYPT’
+ command. The valid protocol names are listed under the description
+ of the ‘ENCRYPT’ command. The server shall emit exactly one
+ PROTOCOL status line.
+
+Here is an example of a complete encryption sequence; client lines are
+indicated by a C:, server responses by C::
+
+ C: RESET
+ S: OK
+ C: RECIPIENT foo@example.net
+ S: OK
+ C: RECIPIENT bar@example.com
+ S: OK
+ C: PREP_ENCRYPT
+ S: S PROTOCOL OpenPGP
+ S: OK
+ C: INPUT FD=17
+ S: OK
+ C: OUTPUT FD=18
+ S: OK
+ C: ENCRYPT
+ S: OK
+
+\1f
File: gpgme.info, Node: UI Server Sign, Next: UI Server Decrypt, Prev: UI Server Encrypt, Up: UI Server Protocol
A.2 UI Server: Sign a Message
application. If you are asked to send a log file, make sure that you
run your tests only with play data.
+ The trace function makes use of gpgrt’s logging function and thus the
+special ‘socket://’ and ‘tcp://’ files may be used. Because this
+conflicts with the use of colons to separate fields, the following hack
+is used: If the file name contains the string ‘^//’ all carets are
+replaced by colons. For example to log to TCP port 42042 this can be
+used:
+ GPGME_DEBUG=5:tcp^//127.0.0.1^42042
+
\1f
File: gpgme.info, Node: Deprecated Functions, Next: Library Copying, Prev: Debugging, Up: Top
* Menu:
* AM_PATH_GPGME: Using Automake. (line 11)
-* AM_PATH_GPGME_PTH: Using Automake. (line 13)
-* AM_PATH_GPGME_PTHREAD: Using Automake. (line 15)
* CHECKSUM_CREATE_FILES: UI Server Checksum Files.
(line 9)
* CHECKSUM_VERIFY_FILES: UI Server Checksum Files.
* ENCRYPT_SIGN_FILES: UI Server Sign/Encrypt Files.
(line 11)
* enum gpgme_data_encoding_t: Data Buffer Meta-Data.
- (line 31)
+ (line 36)
* enum gpgme_data_type_t: Data Buffer Convenience.
(line 6)
* enum gpgme_event_io_t: I/O Callback Interface.
- (line 58)
+ (line 57)
* enum gpgme_hash_algo_t: Hash Algorithms. (line 9)
* enum gpgme_pinentry_mode_t: Pinentry Mode. (line 25)
* enum gpgme_protocol_t: Protocols and Engines.
* enum gpgme_sig_mode_t: Creating a Signature.
(line 6)
* enum gpgme_sig_stat_t: Deprecated Functions.
- (line 387)
+ (line 381)
* enum gpgme_tofu_policy_t: Changing TOFU Data. (line 10)
* FILE: UI Server Set Input Files.
(line 9)
* GETINFO: Miscellaneous UI Server Commands.
(line 9)
-* gpgme_addrspec_from_uid: Decrypt and Verify. (line 48)
+* gpgme_addrspec_from_uid: Decrypt and Verify. (line 47)
* gpgme_attr_t: Deprecated Functions.
- (line 140)
+ (line 138)
* gpgme_attr_t <1>: Deprecated Functions.
- (line 301)
+ (line 299)
* gpgme_cancel: Cancellation. (line 16)
* gpgme_cancel_async: Cancellation. (line 38)
* gpgme_check_version: Library Version Check.
* gpgme_ctx_set_engine_info: Crypto Engine. (line 26)
* gpgme_ctx_t: Contexts. (line 11)
* gpgme_data_encoding_t: Data Buffer Meta-Data.
- (line 32)
+ (line 37)
* gpgme_data_get_encoding: Data Buffer Meta-Data.
- (line 81)
+ (line 86)
* gpgme_data_get_file_name: Data Buffer Meta-Data.
(line 6)
* gpgme_data_identify: Data Buffer Convenience.
* gpgme_data_new: Memory Based Data Buffers.
(line 12)
* gpgme_data_new_from_cbs: Callback Based Data Buffers.
- (line 80)
+ (line 78)
* gpgme_data_new_from_estream: File Based Data Buffers.
(line 49)
* gpgme_data_new_from_fd: File Based Data Buffers.
* gpgme_data_new_from_stream: File Based Data Buffers.
(line 29)
* gpgme_data_new_with_read_cb: Deprecated Functions.
- (line 110)
+ (line 109)
* gpgme_data_read: Data Buffer I/O Operations.
(line 6)
* gpgme_data_read_cb_t: Callback Based Data Buffers.
- (line 13)
+ (line 12)
* gpgme_data_release: Destroying Data Buffers.
(line 6)
* gpgme_data_release_and_get_mem: Destroying Data Buffers.
(line 11)
* gpgme_data_release_cb_t: Callback Based Data Buffers.
- (line 55)
+ (line 53)
* gpgme_data_rewind: Deprecated Functions.
- (line 134)
+ (line 132)
* gpgme_data_seek: Data Buffer I/O Operations.
- (line 26)
+ (line 25)
* gpgme_data_seek_cb_t: Callback Based Data Buffers.
- (line 46)
+ (line 44)
* gpgme_data_set_encoding: Data Buffer Meta-Data.
- (line 87)
+ (line 92)
* gpgme_data_set_file_name: Data Buffer Meta-Data.
(line 18)
* gpgme_data_set_flag: Data Buffer Meta-Data.
- (line 92)
+ (line 97)
* gpgme_data_t: Exchanging Data. (line 13)
* gpgme_data_type_t: Data Buffer Convenience.
(line 7)
* gpgme_data_write: Data Buffer I/O Operations.
(line 16)
* gpgme_data_write_cb_t: Callback Based Data Buffers.
- (line 29)
-* gpgme_decrypt_result_t: Decrypt. (line 101)
+ (line 28)
+* gpgme_decrypt_result_t: Decrypt. (line 116)
* gpgme_edit_cb_t: Deprecated Functions.
(line 33)
* gpgme_encrypt_result_t: Encrypting a Plaintext.
- (line 241)
+ (line 257)
* gpgme_engine_check_version: Engine Version Check.
- (line 82)
+ (line 88)
* gpgme_engine_info_t: Engine Information. (line 6)
* gpgme_error: Error Values. (line 65)
-* gpgme_error_from_errno: Error Values. (line 89)
+* gpgme_error_from_errno: Error Values. (line 88)
* gpgme_error_t: Error Values. (line 24)
* gpgme_error_t (*gpgme_assuan_data_cb_t) (void *OPAQUE, const void *DATA, size_t DATALEN): Using the Assuan protocol.
(line 15)
* gpgme_error_t (*gpgme_assuan_inquire_cb_t) (void *OPAQUE, const char *NAME, const char *ARGS, gpgme_data_t *R_DATA): Using the Assuan protocol.
(line 24)
* gpgme_error_t (*gpgme_assuan_status_cb_t) (void *OPAQUE, const char *STATUS, const char *ARGS): Using the Assuan protocol.
- (line 38)
+ (line 37)
* gpgme_error_t (*gpgme_edit_cb_t) (void *HANDLE, gpgme_status_code_t STATUS, const char *ARGS, int FD): Deprecated Functions.
(line 31)
* gpgme_error_t (*gpgme_interact_cb_t) (void *HANDLE, const char *STATUS, const char *ARGS, int FD): Advanced Key Editing.
* gpgme_error_t (*gpgme_status_cb_t)(void *HOOK, const char *KEYWORD, const char *ARGS): Status Message Callback.
(line 6)
* gpgme_err_code: Error Values. (line 42)
-* gpgme_err_code_from_errno: Error Values. (line 98)
+* gpgme_err_code_from_errno: Error Values. (line 97)
* gpgme_err_code_t: Error Values. (line 6)
-* gpgme_err_code_to_errno: Error Values. (line 103)
+* gpgme_err_code_to_errno: Error Values. (line 102)
* gpgme_err_make: Error Values. (line 57)
-* gpgme_err_make_from_errno: Error Values. (line 83)
+* gpgme_err_make_from_errno: Error Values. (line 82)
* gpgme_err_source: Error Values. (line 49)
* gpgme_err_source_t: Error Values. (line 13)
* gpgme_event_io_t: I/O Callback Interface.
- (line 59)
+ (line 58)
* gpgme_event_io_t <1>: Registering I/O Callbacks.
(line 7)
* gpgme_free: Destroying Data Buffers.
(line 25)
-* gpgme_genkey_result_t: Generating Keys. (line 381)
+* gpgme_genkey_result_t: Generating Keys. (line 378)
* gpgme_get_armor: ASCII Armor. (line 13)
-* gpgme_get_ctx_flag: Context Flags. (line 153)
+* gpgme_get_ctx_flag: Context Flags. (line 157)
* gpgme_get_dirinfo: Engine Version Check.
(line 6)
* gpgme_get_engine_info: Engine Information. (line 46)
* gpgme_get_include_certs: Included Certificates.
- (line 37)
+ (line 36)
* gpgme_get_io_cbs: Registering I/O Callbacks.
(line 44)
-* gpgme_get_key: Listing Keys. (line 178)
-* gpgme_get_keylist_mode: Key Listing Mode. (line 124)
+* gpgme_get_key: Listing Keys. (line 177)
+* gpgme_get_keylist_mode: Key Listing Mode. (line 131)
* gpgme_get_offline: Offline Mode. (line 31)
-* gpgme_get_passphrase_cb: Passphrase Callback. (line 63)
+* gpgme_get_passphrase_cb: Passphrase Callback. (line 62)
* gpgme_get_pinentry_mode: Pinentry Mode. (line 18)
* gpgme_get_progress_cb: Progress Meter Callback.
(line 31)
* gpgme_get_protocol: Protocol Selection. (line 21)
* gpgme_get_protocol_name: Protocols and Engines.
(line 58)
-* gpgme_get_sender: Setting the Sender. (line 29)
+* gpgme_get_sender: Setting the Sender. (line 28)
* gpgme_get_sig_key: Deprecated Functions.
- (line 587)
+ (line 580)
* gpgme_get_sig_status: Deprecated Functions.
- (line 435)
+ (line 429)
* gpgme_get_sig_string_attr: Deprecated Functions.
- (line 491)
+ (line 484)
* gpgme_get_sig_ulong_attr: Deprecated Functions.
- (line 525)
+ (line 518)
* gpgme_get_status_cb: Status Message Callback.
(line 31)
* gpgme_get_textmode: Text Mode. (line 20)
* gpgme_hash_algo_name: Hash Algorithms. (line 30)
* gpgme_hash_algo_t: Hash Algorithms. (line 10)
-* gpgme_import_result_t: Importing Keys. (line 150)
-* gpgme_import_status_t: Importing Keys. (line 110)
+* gpgme_import_result_t: Importing Keys. (line 149)
+* gpgme_import_status_t: Importing Keys. (line 109)
* gpgme_interact_cb_t: Advanced Key Editing.
(line 11)
* gpgme_invalid_key_t: Crypto Operations. (line 10)
* gpgme_io_cb_t: I/O Callback Interface.
(line 7)
-* gpgme_keylist_result_t: Listing Keys. (line 155)
+* gpgme_keylist_result_t: Listing Keys. (line 154)
* gpgme_key_get_string_attr: Deprecated Functions.
- (line 266)
+ (line 264)
* gpgme_key_get_ulong_attr: Deprecated Functions.
- (line 280)
+ (line 278)
* gpgme_key_ref: Manipulating Keys. (line 6)
* gpgme_key_release: Deprecated Functions.
(line 14)
* gpgme_key_sig_get_string_attr: Deprecated Functions.
- (line 357)
+ (line 355)
* gpgme_key_sig_get_ulong_attr: Deprecated Functions.
- (line 373)
-* gpgme_key_sig_t: Key objects. (line 346)
+ (line 369)
+* gpgme_key_sig_t: Key objects. (line 378)
* gpgme_key_t: Key objects. (line 10)
* gpgme_key_unref: Manipulating Keys. (line 10)
* gpgme_new: Creating Contexts. (line 6)
* gpgme_new_signature_t: Creating a Signature.
- (line 57)
+ (line 72)
* gpgme_off_t: Exchanging Data. (line 24)
-* gpgme_op_adduid: Generating Keys. (line 189)
-* gpgme_op_adduid_start: Generating Keys. (line 215)
+* gpgme_op_adduid: Generating Keys. (line 186)
+* gpgme_op_adduid_start: Generating Keys. (line 212)
* gpgme_op_assuan_transact_ext: Using the Assuan protocol.
- (line 64)
+ (line 60)
* gpgme_op_assuan_transact_start: Using the Assuan protocol.
- (line 47)
+ (line 46)
* gpgme_op_card_edit: Deprecated Functions.
- (line 85)
+ (line 84)
* gpgme_op_card_edit_start: Deprecated Functions.
- (line 95)
+ (line 94)
* gpgme_op_createkey: Generating Keys. (line 14)
-* gpgme_op_createkey_start: Generating Keys. (line 119)
-* gpgme_op_createsubkey: Generating Keys. (line 132)
-* gpgme_op_createsubkey_start: Generating Keys. (line 176)
+* gpgme_op_createkey_start: Generating Keys. (line 118)
+* gpgme_op_createsubkey: Generating Keys. (line 130)
+* gpgme_op_createsubkey_start: Generating Keys. (line 174)
* gpgme_op_decrypt: Decrypt. (line 6)
-* gpgme_op_decrypt_ext: Decrypt. (line 30)
-* gpgme_op_decrypt_ext_start: Decrypt. (line 60)
-* gpgme_op_decrypt_result: Decrypt. (line 164)
-* gpgme_op_decrypt_start: Decrypt. (line 20)
+* gpgme_op_decrypt_ext: Decrypt. (line 32)
+* gpgme_op_decrypt_ext_start: Decrypt. (line 76)
+* gpgme_op_decrypt_result: Decrypt. (line 179)
+* gpgme_op_decrypt_start: Decrypt. (line 22)
* gpgme_op_decrypt_verify: Decrypt and Verify. (line 6)
* gpgme_op_decrypt_verify_start: Decrypt and Verify. (line 30)
* gpgme_op_delete: Deleting Keys. (line 47)
* gpgme_op_edit: Deprecated Functions.
(line 44)
* gpgme_op_edit_start: Deprecated Functions.
- (line 68)
+ (line 67)
* gpgme_op_encrypt: Encrypting a Plaintext.
(line 6)
* gpgme_op_encrypt_ext: Encrypting a Plaintext.
- (line 131)
+ (line 150)
* gpgme_op_encrypt_ext_start: Encrypting a Plaintext.
- (line 224)
+ (line 242)
* gpgme_op_encrypt_result: Encrypting a Plaintext.
- (line 252)
+ (line 268)
* gpgme_op_encrypt_sign: Encrypting a Plaintext.
- (line 263)
+ (line 279)
* gpgme_op_encrypt_sign_ext: Encrypting a Plaintext.
- (line 288)
+ (line 301)
* gpgme_op_encrypt_sign_ext_start: Encrypting a Plaintext.
- (line 304)
+ (line 316)
* gpgme_op_encrypt_sign_start: Encrypting a Plaintext.
- (line 274)
+ (line 289)
* gpgme_op_encrypt_start: Encrypting a Plaintext.
- (line 113)
+ (line 133)
* gpgme_op_export: Exporting Keys. (line 65)
-* gpgme_op_export_ext: Exporting Keys. (line 98)
-* gpgme_op_export_ext_start: Exporting Keys. (line 120)
-* gpgme_op_export_keys: Exporting Keys. (line 132)
-* gpgme_op_export_keys_start: Exporting Keys. (line 159)
-* gpgme_op_export_start: Exporting Keys. (line 86)
-* gpgme_op_genkey: Generating Keys. (line 304)
-* gpgme_op_genkey_result: Generating Keys. (line 418)
-* gpgme_op_genkey_start: Generating Keys. (line 369)
+* gpgme_op_export_ext: Exporting Keys. (line 96)
+* gpgme_op_export_ext_start: Exporting Keys. (line 117)
+* gpgme_op_export_keys: Exporting Keys. (line 128)
+* gpgme_op_export_keys_start: Exporting Keys. (line 153)
+* gpgme_op_export_start: Exporting Keys. (line 85)
+* gpgme_op_genkey: Generating Keys. (line 301)
+* gpgme_op_genkey_result: Generating Keys. (line 415)
+* gpgme_op_genkey_start: Generating Keys. (line 366)
* gpgme_op_getauditlog: Additional Logs. (line 9)
* gpgme_op_getauditlog_start: Additional Logs. (line 54)
* gpgme_op_import: Importing Keys. (line 9)
(line 18)
* gpgme_op_import_keys: Importing Keys. (line 35)
* gpgme_op_import_keys_start: Importing Keys. (line 65)
-* gpgme_op_import_result: Importing Keys. (line 206)
+* gpgme_op_import_result: Importing Keys. (line 205)
* gpgme_op_import_start: Importing Keys. (line 24)
* gpgme_op_interact: Advanced Key Editing.
(line 23)
* gpgme_op_interact_start: Advanced Key Editing.
(line 53)
-* gpgme_op_keylist_end: Listing Keys. (line 111)
+* gpgme_op_keylist_end: Listing Keys. (line 110)
* gpgme_op_keylist_ext_start: Listing Keys. (line 34)
-* gpgme_op_keylist_from_data_start: Listing Keys. (line 67)
-* gpgme_op_keylist_next: Listing Keys. (line 94)
-* gpgme_op_keylist_result: Listing Keys. (line 166)
+* gpgme_op_keylist_from_data_start: Listing Keys. (line 66)
+* gpgme_op_keylist_next: Listing Keys. (line 93)
+* gpgme_op_keylist_result: Listing Keys. (line 165)
* gpgme_op_keylist_start: Listing Keys. (line 6)
* gpgme_op_keysign: Signing Keys. (line 12)
* gpgme_op_keysign_start: Signing Keys. (line 78)
(line 68)
* gpgme_op_query_swdb_result: Checking for updates.
(line 80)
-* gpgme_op_receive_keys: Importing Keys. (line 80)
-* gpgme_op_receive_keys_start: Importing Keys. (line 97)
+* gpgme_op_receive_keys: Importing Keys. (line 79)
+* gpgme_op_receive_keys_start: Importing Keys. (line 96)
* gpgme_op_revsig: Signing Keys. (line 89)
* gpgme_op_revsig_start: Signing Keys. (line 124)
-* gpgme_op_revuid: Generating Keys. (line 224)
-* gpgme_op_revuid_start: Generating Keys. (line 252)
+* gpgme_op_revuid: Generating Keys. (line 221)
+* gpgme_op_revuid_start: Generating Keys. (line 249)
* gpgme_op_setexpire: Manipulating Keys. (line 15)
* gpgme_op_setexpire_start: Manipulating Keys. (line 47)
-* gpgme_op_set_uid_flag_start: Generating Keys. (line 293)
-* gpgme_op_set_ui_flag: Generating Keys. (line 261)
+* gpgme_op_set_uid_flag_start: Generating Keys. (line 290)
+* gpgme_op_set_ui_flag: Generating Keys. (line 258)
* gpgme_op_sign: Creating a Signature.
- (line 21)
+ (line 28)
* gpgme_op_sign_result: Creating a Signature.
- (line 99)
+ (line 115)
* gpgme_op_sign_start: Creating a Signature.
- (line 47)
+ (line 62)
* gpgme_op_spawn: Running other Programs.
(line 13)
* gpgme_op_spawn_start: Running other Programs.
* gpgme_op_tofu_policy: Changing TOFU Data. (line 29)
* gpgme_op_tofu_policy_start: Changing TOFU Data. (line 43)
* gpgme_op_verify: Verify. (line 6)
-* gpgme_op_verify_result: Verify. (line 298)
-* gpgme_op_verify_start: Verify. (line 26)
-* gpgme_passphrase_cb_t: Passphrase Callback. (line 10)
+* gpgme_op_verify_ext: Verify. (line 42)
+* gpgme_op_verify_ext_start: Verify. (line 70)
+* gpgme_op_verify_result: Verify. (line 343)
+* gpgme_op_verify_start: Verify. (line 30)
+* gpgme_passphrase_cb_t: Passphrase Callback. (line 9)
* gpgme_pinentry_mode_t: Pinentry Mode. (line 26)
* gpgme_progress_cb_t: Progress Meter Callback.
(line 8)
* gpgme_pubkey_algo_name: Public Key Algorithms.
(line 58)
* gpgme_pubkey_algo_string: Public Key Algorithms.
- (line 68)
+ (line 67)
* gpgme_pubkey_algo_t: Public Key Algorithms.
(line 10)
* gpgme_query_swdb_result_t: Checking for updates.
(line 11)
-* gpgme_recipient_t: Decrypt. (line 75)
+* gpgme_recipient_t: Decrypt. (line 90)
* gpgme_register_io_cb_t: I/O Callback Interface.
- (line 23)
+ (line 22)
* gpgme_release: Destroying Contexts. (line 6)
* gpgme_result_ref: Result Management. (line 15)
* gpgme_result_unref: Result Management. (line 23)
* gpgme_set_engine_info: Engine Configuration.
(line 11)
* gpgme_set_global_flag: Library Version Check.
- (line 44)
+ (line 43)
* gpgme_set_include_certs: Included Certificates.
(line 6)
* gpgme_set_io_cbs: Registering I/O Callbacks.
* gpgme_set_keylist_mode: Key Listing Mode. (line 6)
* gpgme_set_locale: Locale. (line 14)
* gpgme_set_offline: Offline Mode. (line 6)
-* gpgme_set_passphrase_cb: Passphrase Callback. (line 40)
+* gpgme_set_passphrase_cb: Passphrase Callback. (line 39)
* gpgme_set_pinentry_mode: Pinentry Mode. (line 6)
* gpgme_set_progress_cb: Progress Meter Callback.
(line 16)
* gpgme_set_status_cb: Status Message Callback.
(line 17)
* gpgme_set_textmode: Text Mode. (line 6)
-* gpgme_signature_t: Verify. (line 92)
+* gpgme_signature_t: Verify. (line 137)
* gpgme_signers_add: Selecting Signers. (line 18)
* gpgme_signers_clear: Selecting Signers. (line 11)
* gpgme_signers_count: Selecting Signers. (line 25)
* gpgme_signers_enum: Selecting Signers. (line 31)
* gpgme_sign_result_t: Creating a Signature.
- (line 85)
+ (line 101)
* gpgme_sig_mode_t: Creating a Signature.
(line 7)
* gpgme_sig_notation_add: Signature Notation Data.
(line 10)
* gpgme_sig_notation_get: Signature Notation Data.
(line 45)
-* gpgme_sig_notation_t: Verify. (line 38)
+* gpgme_sig_notation_t: Verify. (line 83)
* gpgme_sig_stat_t: Deprecated Functions.
- (line 388)
+ (line 382)
* gpgme_ssize_t: Exchanging Data. (line 32)
* gpgme_status_cb_t: Status Message Callback.
(line 8)
* gpgme_strerror: Error Strings. (line 6)
* gpgme_strerror_r: Error Strings. (line 15)
* gpgme_strsource: Error Strings. (line 26)
-* gpgme_subkey_t: Key objects. (line 112)
-* gpgme_tofu_info_t: Key objects. (line 282)
+* gpgme_subkey_t: Key objects. (line 140)
+* gpgme_tofu_info_t: Key objects. (line 314)
* gpgme_tofu_policy_t: Changing TOFU Data. (line 13)
-* gpgme_user_id_t: Key objects. (line 217)
+* gpgme_user_id_t: Key objects. (line 249)
* gpgme_validity_t: Information About Keys.
(line 9)
-* gpgme_verify_result_t: Verify. (line 276)
+* gpgme_verify_result_t: Verify. (line 321)
* gpgme_wait: Waiting For Completion.
(line 6)
* IMPORT_FILES: UI Server Import/Export Keys.
* MESSAGE: UI Server Verify. (line 10)
* MICALG: UI Server Sign. (line 43)
* off_t (*gpgme_data_seek_cb_t) (void *HANDLE, off_t OFFSET, int WHENCE): Callback Based Data Buffers.
- (line 43)
+ (line 42)
* OUTPUT: UI Server Encrypt. (line 36)
* OUTPUT <1>: UI Server Sign. (line 18)
* OUTPUT <2>: UI Server Decrypt. (line 19)
* ssize_t (*gpgme_data_read_cb_t) (void *HANDLE, void *BUFFER, size_t SIZE): Callback Based Data Buffers.
(line 10)
* ssize_t (*gpgme_data_write_cb_t) (void *HANDLE, const void *BUFFER, size_t SIZE): Callback Based Data Buffers.
- (line 27)
+ (line 26)
* START_CONFDIALOG: Miscellaneous UI Server Commands.
(line 41)
* START_KEYMANAGER: Miscellaneous UI Server Commands.
(line 31)
* struct gpgme_data_cbs: Callback Based Data Buffers.
- (line 59)
+ (line 57)
* struct gpgme_io_cbs: Registering I/O Callbacks.
(line 6)
* VERIFY: UI Server Verify. (line 31)
* VERIFY_FILES: UI Server Verify/Decrypt Files.
(line 10)
* void (*gpgme_data_release_cb_t) (void *HANDLE): Callback Based Data Buffers.
- (line 54)
+ (line 52)
* void (*gpgme_event_io_cb_t) (void *DATA, gpgme_event_io_t TYPE, void *TYPE_DATA): I/O Callback Interface.
- (line 83)
+ (line 82)
* void (*gpgme_progress_cb_t)(void *HOOK, const char *WHAT, int TYPE, int CURRENT, int TOTAL): Progress Meter Callback.
(line 6)
* void (*gpgme_remove_io_cb_t) (void *TAG): I/O Callback Interface.
- (line 48)
+ (line 47)
* window-id: Miscellaneous UI Server Commands.
(line 21)
file search path (via the @option{-I} option).
However, the path to the include file is determined at the time the
-source is configured. To solve this problem, gpgme ships with a small
-helper program @command{gpgme-config} that knows about the path to the
-include file and other configuration options. The options that need
-to be added to the compiler invocation at compile time are output by
-the @option{--cflags} option to @command{gpgme-config}. The following
-example shows how it can be used at the command line:
+source is configured. To solve this problem, gpgme ships with
+@code{gpgme.pc} file, that knows about the path to the include file
+and other configuration options. The command, @command{pkg-config},
+can be used to handle information with @code{gpgme.pc} file. In an
+environment which doesn't have @command{pkg-config} (like the one in
+early stage of OS bootstrap), for Automake, you can use
+@code{gpgme.m4} which invokes @command{gpgrt-config} with
+@code{gpgme.pc}. (In the past, gpgme used to ship with a small helper
+program @command{gpgme-config}. This functionality of
+@command{gpgme-config} is replaced by @command{pkg-config} with
+@code{gpgme.pc} file.)
+
+The options that need to be added to the compiler invocation at
+compile time are output by the @option{--cflags} option to
+@command{pkg-config gpgme}. The following example shows how it can be
+used at the command line:
@example
-gcc -c foo.c `gpgme-config --cflags`
+gcc -c foo.c `pkg-config --cflags gpgme`
@end example
-Adding the output of @samp{gpgme-config --cflags} to the compiler
+Adding the output of @samp{pkg-config --cflags gpgme} to the compiler
command line will ensure that the compiler can find the
@acronym{GPGME} header file.
Again, the compiler has to find the library files. For this to work,
the path to the library files has to be added to the library search
path (via the @option{-L} option). For this, the option
-@option{--libs} to @command{gpgme-config} can be used. For
+@option{--libs} to @command{pkg-config gpgme} can be used. For
convenience, this option also outputs all other options that are
required to link the program with @acronym{GPGME} (in particular, the
@samp{-lgpgme} option). The example shows how to link @file{foo.o}
with the @acronym{GPGME} library to a program @command{foo}.
@example
-gcc -o foo foo.o `gpgme-config --libs`
+gcc -o foo foo.o `pkg-config --libs gpgme`
@end example
Of course you can also combine both examples to a single command by
-specifying both options to @command{gpgme-config}:
+specifying both options to @command{pkg-config gpgme}:
@example
-gcc -o foo foo.c `gpgme-config --cflags --libs`
-@end example
-
-If you need to detect the installed language bindings you can use list
-them using:
-
-@example
-gpgme-config --print-lang
-@end example
-
-or test for the availability using
-
-@example
-gpgme-config --have-lang=python && echo 'Bindings for Pythons available'
+gcc -o foo foo.c `pkg-config --cflags --libs gpgme`
@end example
+@c
+@c Feature not available by pkg-config/gpgrt-config
+@c
+@c If you need to detect the installed language bindings you can use list
+@c them using:
+@c
+@c @example
+@c gpgme-config --print-lang
+@c @end example
+@c
+@c or test for the availability using
+@c
+@c @example
+@c gpgme-config --have-lang=python && echo 'Bindings for Pythons available'
+@c @end example
+@c
@node Largefile Support (LFS)
@section Largefile Support (LFS)
It is much easier if you use GNU Automake instead of writing your own
Makefiles. If you do that you do not have to worry about finding and
-invoking the @command{gpgme-config} script at all. @acronym{GPGME}
+invoking the @command{pkg-config} script at all. @acronym{GPGME}
provides an extension to Automake that does all the work for you.
@c A simple macro for optional variables.
@r{[}@var{\varname\}@r{]}
@end macro
@defmac AM_PATH_GPGME (@ovar{minimum-version}, @ovar{action-if-found}, @ovar{action-if-not-found})
-@defmacx AM_PATH_GPGME_PTH (@ovar{minimum-version}, @ovar{action-if-found}, @ovar{action-if-not-found})
-@defmacx AM_PATH_GPGME_PTHREAD (@ovar{minimum-version}, @ovar{action-if-found}, @ovar{action-if-not-found})
Check whether @acronym{GPGME} (at least version @var{minimum-version},
if given) exists on the host system. If it is found, execute
@var{action-if-found}, otherwise do @var{action-if-not-found}, if
given.
+This macro locates for @code{gpgme.pc}, with cross-compile support.
+
Additionally, the function defines @code{GPGME_CFLAGS} to the flags
needed for compilation of the program to find the @file{gpgme.h}
header file, and @code{GPGME_LIBS} to the linker flags needed to link
-the program to the @acronym{GPGME} library. If the used helper script
-does not match the target type you are building for a warning is
-printed and the string @code{libgcrypt} is appended to the variable
-@code{gpg_config_script_warn}.
-
-@code{AM_PATH_GPGME_PTHREAD} checks for the version of @acronym{GPGME}
-that can be used with the native pthread implementation, and defines
-@code{GPGME_PTHREAD_CFLAGS} and @code{GPGME_PTHREAD_LIBS}. Since
-version 1.8.0 this is no longer required to GPGME_PTHREAD as
-@acronym{GPGME} itself is thread safe.
-
-This macro searches for @command{gpgme-config} along the PATH. If
-you are cross-compiling, it is useful to set the environment variable
-@code{SYSROOT} to the top directory of your target. The macro will
-then first look for the helper program in the @file{bin} directory
-below that top directory. An absolute directory name must be used for
-@code{SYSROOT}. Finally, if the configure command line option
-@code{--with-gpgme-prefix} is used, only its value is used for the top
-directory below which the helper script is expected.
+the program to the @acronym{GPGME} library.
+@c
+@c If the used helper script does not match the target type you are
+@c building for a warning is printed and the string @code{gpgme} is
+@c appended to the variable @code{gpg_config_script_warn}.
+@c@c@c@c@c@c@c@c
+@c ^-- About this statement.
+@c In the past, this might happens, when it was configured by
+@c --with-*-prefix options, and it located the helper script for
+@c other target. Cross-build by gpgrt-config has been improved
+@c (in different way), so it's not relevant now.
+@c
+
+
+@code{AM_PATH_GPGME_PTHREAD} was provided to check for the version of
+@acronym{GPGME} with the native pthread implementation, and it defined
+@code{GPGME_PTHREAD_CFLAGS} and @code{GPGME_PTHREAD_LIBS}. Since
+version 1.8.0 this is no longer necessary, as @acronym{GPGME} itself
+is thread safe. Please use plain @code{AM_PATH_GPGME} instead, with
+@code{GPGME_CFLAGS} and @code{GPGME_LDFLAGS}.
@end defmac
@cindex libtool
The easiest way is to just use GNU Libtool. If you use libtool, and
-link to @code{libgpgme.la}, @code{libgpgme-pth.la} or
-@code{libgpgme-pthread.la} respectively, everything will be done
-automatically by Libtool.
+link to @code{libgpgme.la}, everything will be done automatically by
+Libtool.
@node Library Version Check
version. The given version must be a string with major, minor, and
micro number. Example: "2.1.0".
+@item inst-type
+The installation type is used to prefer a certain GnuPG installation.
+The value is interpreted as an integer: A value of 0 is ignored, a
+value of 1 indicates an installation scheme as used by Gpg4win, a
+value of 2 indicates an installation scheme as used by GnuPG Desktop
+on Windows. All other values are reserved.
+
@item w32-inst-dir
On Windows GPGME needs to know its installation directory to find its
spawn helper. This is in general no problem because a DLL has this
@item localedir
Return the name of the directory with GnuPG locale data.
+@item socketdir
+Return the name of the directory with the following sockets.
+
@item agent-socket
Return the name of the socket to connect to the gpg-agent.
@item gpg-wks-client-name
Return the name of the Web Key Service tool.
+@item gpgtar-name
+Return the name of the gpgtar program.
+
@end table
@end deftypefun
@item GPG_ERR_CANCELED
This value means that the operation was canceled.
+@item GPG_ERR_FULLY_CANCELED
+This value means that the operation was canceled. It is sometimes returned
+instead of @code{GPG_ERR_CANCELED} for internal reasons in GnuPG. You should
+treat both values identically.
+
@item GPG_ERR_INV_ENGINE
This value means that the engine that implements the desired protocol
is currently not available. This can either be because the sources
output when encrypting or signing the data and will be returned to the
user when decrypting or verifying the output data.
+If a signed or encrypted archive is created, then the file name will be
+interpreted as the base directory for the relative paths of the files and
+directories to put into the archive. This corresponds to the --directory
+option of gpgtar.
+
The function returns the error code @code{GPG_ERR_INV_VALUE} if
@var{dh} is not a valid pointer and @code{GPG_ERR_ENOMEM} if not
enough memory is available.
private keys for X.509.
@end table
-@deftypefun gpgme_data_type_t gpgme_data_identify (@w{gpgme_data_t @var{dh}})
+@deftypefun gpgme_data_type_t gpgme_data_identify (@w{gpgme_data_t @var{dh}, int @var{reserved}})
@since{1.4.3}
The function @code{gpgme_data_identify} returns the type of the data
object has been created the identification may not be possible or the
data object may change its internal state (file pointer moved). For
file or memory based data object, the state should not change.
+@var{reserved} should be zero.
@end deftypefun
For the CMS protocol the offline mode specifies whether Dirmngr shall
be used to do additional validation that might require connecting
-external services (e.g. CRL / OCSP checks). Here the offline mode
-only affects the keylist mode @code{GPGME_KEYLIST_MODE_VALIDATE}.
+external services (e.g. CRL / OCSP checks). The offline mode is used
+for all operations on this context. It has only an effect with
+GnuPG versions 2.1.6 or later.
For the OpenPGP protocol offline mode entirely disables the use of the
Dirmngr and will thus guarantee that no network connections are done
The @code{GPGME_KEYLIST_MODE_EPHEMERAL} symbol specifies that keys
flagged as ephemeral are included in the listing.
+@item GPGME_KEYLIST_MODE_WITH_V5FPR
+@since{1.23.0}
+
+The @code{GPGME_KEYLIST_MODE_WITH_V5FPR} symbol specifies that key
+listings shall also provide v5 style fingerprints for v4 OpenPGp keys.
+
@item GPGME_KEYLIST_MODE_VALIDATE
@since{0.4.5}
the session key for decryption. The format of that session key is
specific to GnuPG and can be retrieved during a decrypt operation when
the context flag "export-session-key" is enabled. Please be aware that
-using this feature with GnuPG < 2.1.16 will leak the session key on
-many platforms via ps(1).
+using this feature with GnuPG < 2.1.16 or when decrypting an archive
+will leak the session key on many platforms via ps(1).
@item "auto-key-retrieve"
Setting the @var{value} to "1" asks the backend to automatically
filter when importing keys. Valid values are documented in the GnuPG
manual and the gpg man page under the option @option{--import-filter}.
+@item "no-auto-check-trustdb"
+@since{1.19.0}
+Setting the @var{value} to "1" forces the GPG backend to disable the
+automatic check of the trust database.
+
@end table
This function returns @code{0} on success.
certificates or unmatched policies.
@item unsigned int can_encrypt : 1
-This is true if the key (ie one of its subkeys) can be used for
-encryption.
+This is true if the key or one of its subkeys can be used for
+encryption and the encryption will likely succeed.
@item unsigned int can_sign : 1
-This is true if the key (ie one of its subkeys) can be used to create
-data signatures.
+This is true if the key or one of its subkeys can be used to create
+data signatures and the signing will likely succeed.
@item unsigned int can_certify : 1
-This is true if the key (ie one of its subkeys) can be used to create
+This is true if the key or one of its subkeys can be used to create
key certificates.
@item unsigned int can_authenticate : 1
@since{0.4.5}
This is true if the key (ie one of its subkeys) can be used for
-authentication.
+authentication and the authentication will likely succeed.
+
+@item unsigned int has_encrypt : 1
+@since{1.23.0}
+
+This is true if the key or one of its subkeys is capable of encryption.
+Note that this flag is set even if the key is expired.
+
+@item unsigned int has_sign : 1
+@since{1.23.0}
+
+This is true if the key or one of its subkeys is capable of signing.
+Note that this flag is set even if the key is expired.
+
+@item unsigned int has_certify : 1
+@since{1.23.0}
+
+This is true if the key or one of its subkeys is capable of
+certification. Note that this flag is set even if the key is expired.
+
+@item unsigned int has_authenticate : 1
+@since{1.23.0}
+
+This is true if the key or one of its subkeys is capable of
+authentication. Note that this flag is set even if the key is
+expired.
@item unsigned int is_qualified : 1
@since{1.1.0}
This is the fingerprint of the subkey in hexadecimal digits, if
available.
+@item char *v5fpr
+For a v4 OpenPGP key this is its v5 style fingerprint of the subkey in
+hexadecimal digits, if available.
+
@item char *keygrip
@since{1.7.0}
@deftypefun gpgme_error_t gpgme_op_decrypt (@w{gpgme_ctx_t @var{ctx}}, @w{gpgme_data_t @var{cipher}}, @w{gpgme_data_t @var{plain}})
The function @code{gpgme_op_decrypt} decrypts the ciphertext in the
-data object @var{cipher} and stores it into the data object
-@var{plain}.
+data object @var{cipher} or, if a file name is set on the data object,
+the ciphertext stored in the corresponding file. The decrypted
+ciphertext is stored into the data object @var{plain}.
The function returns the error code @code{GPG_ERR_NO_ERROR} if the
ciphertext could be decrypted successfully, @code{GPG_ERR_INV_VALUE}
@code{gpgme_op_decrypt} but has an additional argument
@var{flags}. If @var{flags} is 0 both function behave identically.
+If the flag @code{GPGME_DECRYPT_ARCHIVE} is set, then an encrypted
+archive in the data object @var{cipher} is decrypted and extracted.
+The content of the archive is extracted into a directory named
+@code{GPGARCH_n_} (where @code{n} is a number) or into the directory
+set with @code{gpgme_data_set_file_name} for the data object @var{plain}.
+
The value in @var{flags} is a bitwise-or combination of one or
multiple of the following bit values:
The @code{GPGME_DECRYPT_VERIFY} symbol specifies that this function
shall exactly act as @code{gpgme_op_decrypt_verify}.
+@item GPGME_DECRYPT_ARCHIVE
+@since{1.19.0}
+
+The @code{GPGME_DECRYPT_ARCHIVE} symbol specifies that the input is an
+encrypted archive that shall be decrypted and extracted. This feature
+is currently only supported for the OpenPGP crypto engine and requires
+GnuPG 2.4.1.
+
@item GPGME_DECRYPT_UNWRAP
@since{1.8.0}
Otherwise, if @var{sig} is a normal (or cleartext) signature,
@var{signed_text} should be a null pointer and @var{plain} should be a
writable data object that will contain the plaintext after successful
-verification.
+verification. If a file name is set on the data object @var{sig} (or
+on the data object @var{signed_text}), then the data of the signature
+(resp. the data of the signed text) is not read from the data object
+but from the file with the given file name.
The results of the individual signature verifications can be retrieved
with @code{gpgme_op_verify_result}.
any data to verify.
@end deftypefun
+
+@deftypefun gpgme_error_t gpgme_op_verify_ext ( @
+ @w{gpgme_ctx_t @var{ctx}}, @
+ @w{gpgme_verify_flags_t @var{flags}}, @
+ @w{gpgme_data_t @var{sig}}, @
+ @w{gpgme_data_t @var{signed_text}}, @
+ @w{gpgme_data_t @var{plain}})
+
+The function @code{gpgme_op_verify_ext} is the same as
+@code{gpgme_op_verify} but has an additional argument
+@var{flags}. If @var{flags} is 0 both function behave identically.
+
+If the flag @code{GPGME_VERIFY_ARCHIVE} is set, then a signed archive
+in the data object @var{sig} is verified and extracted. The content of
+the archive is extracted into a directory named @code{GPGARCH_n_}
+(where @code{n} is a number) or into the directory set with
+@code{gpgme_data_set_file_name} for the data object @var{plain}.
+
+The value in @var{flags} is a bitwise-or combination of one or
+multiple of the following bit values:
+
+@table @code
+@item GPGME_VERIFY_ARCHIVE
+@since{1.19.0}
+
+The @code{GPGME_VERIFY_ARCHIVE} symbol specifies that the input is a
+signed archive that shall be verified and extracted. This feature
+is currently only supported for the OpenPGP crypto engine and requires
+GnuPG 2.4.1.
+
+@end table
+
+The function returns the error codes as descriped for
+@code{gpgme_op_decrypt} respective @code{gpgme_op_encrypt}.
+@end deftypefun
+
+@deftypefun gpgme_error_t gpgme_op_verify_ext_start ( @
+ @w{gpgme_ctx_t @var{ctx}}, @
+ @w{gpgme_verify_flags_t @var{flags}}, @
+ @w{gpgme_data_t @var{sig}}, @
+ @w{gpgme_data_t @var{signed_text}}, @
+ @w{gpgme_data_t @var{plain}})
+
+The function @code{gpgme_op_verify_ext_start} initiates a
+@code{gpgme_op_verify_ext} operation. It can be completed by calling
+@code{gpgme_wait} on the context. @xref{Waiting For Completion}.
+
+The function returns the error code @code{GPG_ERR_NO_ERROR} if the
+operation could be started successfully, @code{GPG_ERR_INV_VALUE} if
+@var{ctx}, @var{sig} or @var{plain} is not a valid pointer, and
+@code{GPG_ERR_NO_DATA} if @var{sig} or @var{plain} does not contain
+any data to verify.
+@end deftypefun
+
+
@deftp {Data type} {gpgme_sig_notation_t}
This is a pointer to a structure used to store a part of the result of
a @code{gpgme_op_verify} operation. The structure contains the
@item GPGME_SIG_MODE_CLEAR
A clear text signature is made. The @acronym{ASCII} armor and text
mode settings of the context are ignored.
+
+@item GPGME_SIG_MODE_ARCHIVE
+@since{1.19.0}
+
+A signed archive is created from the given files and directories. This
+feature is currently only supported for the OpenPGP crypto engine and requires
+GnuPG 2.4.1.
+
@end table
@end deftp
@deftypefun gpgme_error_t gpgme_op_sign (@w{gpgme_ctx_t @var{ctx}}, @w{gpgme_data_t @var{plain}}, @w{gpgme_data_t @var{sig}}, @w{gpgme_sig_mode_t @var{mode}})
The function @code{gpgme_op_sign} creates a signature for the text in
the data object @var{plain} and returns it in the data object
-@var{sig}. The type of the signature created is determined by the
-@acronym{ASCII} armor (or, if that is not set, by the encoding
-specified for @var{sig}), the text mode attributes set for the context
-@var{ctx} and the requested signature mode @var{mode}.
+@var{sig} or writes it directly to the file set with
+@code{gpgme_data_set_file_name} for the data object @var{sig}. The type
+of the signature created is determined by the @acronym{ASCII} armor (or,
+if that is not set, by the encoding specified for @var{sig}), the text
+mode attributes set for the context @var{ctx} and the requested signature
+mode @var{mode}.
+
+If signature mode @code{GPGME_SIG_MODE_ARCHIVE} is requested, then a
+signed archive is created from the files and directories given as
+NUL-separated list in the data object @var{plain} and returned in the
+data object @var{sig}. The paths of the files and directories have to
+be given as paths relative to the current working directory or relative
+to the base directory set with @code{gpgme_data_set_file_name}.
After the operation completed successfully, the result can be
retrieved with @code{gpgme_op_sign_result}.
The hash algorithm used to create this signature.
@item unsigned int sig_class
-The signature class of this signature.
+The signature class of this signature. Note that only the values 0,
+1, and 2 are well-defined.
@item long int timestamp
The creation timestamp of this signature.
@deftypefun gpgme_error_t gpgme_op_encrypt (@w{gpgme_ctx_t @var{ctx}}, @w{gpgme_key_t @var{recp}[]}, @w{gpgme_encrypt_flags_t @var{flags}}, @w{gpgme_data_t @var{plain}}, @w{gpgme_data_t @var{cipher}})
The function @code{gpgme_op_encrypt} encrypts the plaintext in the
data object @var{plain} for the recipients @var{recp} and stores the
-ciphertext in the data object @var{cipher}. The type of the
-ciphertext created is determined by the @acronym{ASCII} armor (or, if
-that is not set, by the encoding specified for @var{cipher}) and the
-text mode attributes set for the context @var{ctx}.
+ciphertext in the data object @var{cipher} or writes it directly to the
+file set with @code{gpgme_data_set_file_name} for the data object
+@var{cipher}. The type of the ciphertext created is determined by the
+@acronym{ASCII} armor (or, if that is not set, by the encoding specified
+for @var{cipher}) and the text mode attributes set for the context
+@var{ctx}.
+
+If the flag @code{GPGME_ENCRYPT_ARCHIVE} is set, then an encrypted
+archive is created from the files and directories given as NUL-separated
+list in the data object @var{plain} and returned in the data object
+@var{cipher}. The paths of the files and directories have to
+be given as paths relative to the current working directory or relative
+to the base directory set with @code{gpgme_data_set_file_name}.
@var{recp} must be a @code{NULL}-terminated array of keys. The user
must keep references for all keys during the whole duration of the
have a high enough validity in the keyring. This flag should be used
with care; in general it is not a good idea to use any untrusted keys.
+For the S/MIME (CMS) protocol this flag allows to encrypt to a
+certificate without running any checks on the validity of the
+certificate.
+
@item GPGME_ENCRYPT_NO_ENCRYPT_TO
@since{1.2.0}
of the extended encrypt functions. This feature is currently only
supported for the OpenPGP crypto engine.
+@item GPGME_ENCRYPT_ARCHIVE
+@since{1.19.0}
+
+The @code{GPGME_ENCRYPT_ARCHIVE} symbol specifies that the input is a
+NUL-separated list of file paths and directory paths that shall be
+encrypted into an archive. This feature is currently only supported
+for the OpenPGP crypto engine and requires GnuPG 2.4.1.
+
@end table
If @code{GPG_ERR_UNUSABLE_PUBKEY} is returned, some recipients in
your application. If you are asked to send a log file, make sure that
you run your tests only with play data.
+The trace function makes use of gpgrt's logging function and thus the
+special @file{socket://} and @file{tcp://} files may be used. Because
+this conflicts with the use of colons to separate fields, the following
+hack is used: If the file name contains the string @code{^//} all
+carets are replaced by colons. For example to log to TCP port 42042
+this can be used:
+@smallexample
+GPGME_DEBUG=5:tcp^//127.0.0.1^42042
+@end smallexample
@node Deprecated Functions
@appendix Deprecated Functions
% \def\foo{\parsearg\Xfoo}
% \def\Xfoo#1{...}
%
-% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% Actually, I use \csname\string\foo\endcsname, i.e. \\foo, as it is my
% favourite TeX trick. --kasal, 16nov03
\def\parseargdef#1{%
# This is a template. The dist target uses it to create the real file.
Summary: GPGME - GnuPG Made Easy
Name: gpgme
-Version: 1.18.0
+Version: 1.23.1
Release: 1
URL: https://gnupg.org/gpgme.html
Source: https://www.gnupg.org/ftp/gcrypt/gpgme/%{name}-%{version}.tar.gz
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
am__DIST_COMMON = $(srcdir)/Makefile.in \
$(top_srcdir)/build-aux/mkinstalldirs README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/cl
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_clfiles_DATA) \
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
cscope cscopelist:
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
(defsystem gpgme
:description "GnuPG Made Easy."
:author "g10 Code GmbH"
- :version "1.18.0"
+ :version "1.23.1"
:licence "GPL"
:defsystem-depends-on ("cffi-grovel")
:depends-on ("cffi" "gpg-error" "trivial-garbage")
# License along with this program; if not, see <https://gnu.org/licenses/>.
# SPDX-License-Identifier: LGPL-2.1-or-later
-SUBDIRS = src tests
+if RUN_GPG_TESTS
+tests = tests
+else
+tests =
+endif
+
+SUBDIRS = src ${tests}
EXTRA_DIST = README
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/cpp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
+DIST_SUBDIRS = src tests
am__DIST_COMMON = $(srcdir)/Makefile.in \
$(top_srcdir)/build-aux/mkinstalldirs README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-SUBDIRS = src tests
+@RUN_GPG_TESTS_FALSE@tests =
+@RUN_GPG_TESTS_TRUE@tests = tests
+SUBDIRS = src ${tests}
EXTRA_DIST = README
all: all-recursive
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/cpp/src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(gpgmeppinclude_HEADERS) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
am__DIST_COMMON = $(srcdir)/GpgmeppConfig-w32.cmake.in.in \
$(srcdir)/GpgmeppConfig.cmake.in.in \
$(srcdir)/GpgmeppConfigVersion.cmake.in $(srcdir)/Makefile.in \
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
explicit Component(const shared_gpgme_conf_comp_t &gpgme_comp)
: comp(gpgme_comp) {}
- // copy ctor is ok
-
+ Component(const Component &other) = default;
const Component &operator=(const Component &other)
{
if (this != &other) {
Option(const shared_gpgme_conf_comp_t &gpgme_comp, gpgme_conf_opt_t gpgme_opt)
: comp(gpgme_comp), opt(gpgme_opt) {}
+ Option(const Option &other) = default;
const Option &operator=(const Option &other)
{
if (this != &other) {
/*! The value that is in the config file (or null, if it's not set). */
Argument activeValue() const;
- /*! The value that is in this object, ie. either activeValue(), newValue(), or defaultValue() */
+ /*! The value that is in this object, i.e. either activeValue(), newValue(), or defaultValue() */
Argument currentValue() const;
Argument newValue() const;
bool Error::isCanceled() const
{
- return code() == GPG_ERR_CANCELED;
+ return code() == GPG_ERR_CANCELED || code() == GPG_ERR_FULLY_CANCELED;
}
int Error::toErrno() const
const Data::Private *const cdp = cipherText.impl();
Data::Private *const pdp = plainText.impl();
d->lasterr = gpgme_op_decrypt_ext(d->ctx, static_cast<gpgme_decrypt_flags_t> (d->decryptFlags | flags), cdp ? cdp->data : nullptr, pdp ? pdp->data : nullptr);
- return DecryptionResult(d->ctx, Error(d->lasterr));
+ return decryptionResult();
}
DecryptionResult Context::decrypt(const Data &cipherText, Data &plainText)
const Data::Private *const sdp = signature.impl();
const Data::Private *const tdp = signedText.impl();
d->lasterr = gpgme_op_verify(d->ctx, sdp ? sdp->data : nullptr, tdp ? tdp->data : nullptr, nullptr);
- return VerificationResult(d->ctx, Error(d->lasterr));
+ return verificationResult();
}
VerificationResult Context::verifyOpaqueSignature(const Data &signedData, Data &plainText)
const Data::Private *const sdp = signedData.impl();
Data::Private *const pdp = plainText.impl();
d->lasterr = gpgme_op_verify(d->ctx, sdp ? sdp->data : nullptr, nullptr, pdp ? pdp->data : nullptr);
- return VerificationResult(d->ctx, Error(d->lasterr));
+ return verificationResult();
}
Error Context::startDetachedSignatureVerification(const Data &signature, const Data &signedText)
VerificationResult Context::verificationResult() const
{
if (d->lastop & Private::Verify) {
- return VerificationResult(d->ctx, Error(d->lasterr));
+ const auto res = VerificationResult{d->ctx, Error(d->lasterr)};
+ if ((d->lastop == Private::DecryptAndVerify)
+ && (res.error().code() == GPG_ERR_NO_DATA)
+ && (res.numSignatures() > 0)) {
+ // ignore "no data" error for verification if there are signatures and
+ // the operation was a combined (tentative) decryption and verification
+ // because then "no data" just indicates that there was nothing to decrypt
+ return VerificationResult{d->ctx, Error{}};
+ }
+ return res;
} else {
- return VerificationResult();
+ return {};
}
}
Data::Private *const pdp = plainText.impl();
d->lasterr = gpgme_op_decrypt_ext(d->ctx, static_cast<gpgme_decrypt_flags_t> (d->decryptFlags | flags | DecryptVerify),
cdp ? cdp->data : nullptr, pdp ? pdp->data : nullptr);
- return std::make_pair(DecryptionResult(d->ctx, Error(d->lasterr)),
- VerificationResult(d->ctx, Error(d->lasterr)));
+ return std::make_pair(decryptionResult(), verificationResult());
}
std::pair<DecryptionResult, VerificationResult> Context::decryptAndVerify(const Data &cipherText, Data &plainText)
return result;
}
-static gpgme_sig_mode_t sigmode2sigmode(SignatureMode mode)
+static gpgme_sig_mode_t sigflags2sigflags(SignatureMode flags)
{
- switch (mode) {
- default:
- case NormalSignatureMode: return GPGME_SIG_MODE_NORMAL;
- case Detached: return GPGME_SIG_MODE_DETACH;
- case Clearsigned: return GPGME_SIG_MODE_CLEAR;
+ unsigned int result = 0;
+ if (flags & SignatureMode::NormalSignatureMode) {
+ result |= GPGME_SIG_MODE_NORMAL;
+ }
+ if (flags & SignatureMode::Detached) {
+ result |= GPGME_SIG_MODE_DETACH;
}
+ if (flags & SignatureMode::Clearsigned) {
+ result |= GPGME_SIG_MODE_CLEAR;
+ }
+ if (flags & SignatureMode::SignArchive) {
+ result |= GPGME_SIG_MODE_ARCHIVE;
+ }
+ return static_cast<gpgme_sig_mode_t>(result);
}
SigningResult Context::sign(const Data &plainText, Data &signature, SignatureMode mode)
d->lastop = Private::Sign;
const Data::Private *const pdp = plainText.impl();
Data::Private *const sdp = signature.impl();
- d->lasterr = gpgme_op_sign(d->ctx, pdp ? pdp->data : nullptr, sdp ? sdp->data : nullptr, sigmode2sigmode(mode));
+ d->lasterr = gpgme_op_sign(d->ctx, pdp ? pdp->data : nullptr, sdp ? sdp->data : nullptr, sigflags2sigflags(mode));
return SigningResult(d->ctx, Error(d->lasterr));
}
d->lastop = Private::Sign;
const Data::Private *const pdp = plainText.impl();
Data::Private *const sdp = signature.impl();
- return Error(d->lasterr = gpgme_op_sign_start(d->ctx, pdp ? pdp->data : nullptr, sdp ? sdp->data : nullptr, sigmode2sigmode(mode)));
+ return Error(d->lasterr = gpgme_op_sign_start(d->ctx, pdp ? pdp->data : nullptr, sdp ? sdp->data : nullptr, sigflags2sigflags(mode)));
}
SigningResult Context::signingResult() const
if (flags & Context::Symmetric) {
result |= GPGME_ENCRYPT_SYMMETRIC;
}
+ if (flags & Context::ThrowKeyIds) {
+ result |= GPGME_ENCRYPT_THROW_KEYIDS;
+ }
+ if (flags & Context::EncryptWrap) {
+ result |= GPGME_ENCRYPT_WRAP;
+ }
+ if (flags & Context::WantAddress) {
+ result |= GPGME_ENCRYPT_WANT_ADDRESS;
+ }
+ if (flags & Context::EncryptArchive) {
+ result |= GPGME_ENCRYPT_ARCHIVE;
+ }
return static_cast<gpgme_encrypt_flags_t>(result);
}
std::ostream &operator<<(std::ostream &os, SignatureMode mode)
{
os << "GpgME::SignatureMode(";
- switch (mode) {
+#undef CHECK
+ switch (mode & (NormalSignatureMode|Detached|Clearsigned)) {
#define CHECK( x ) case x: os << #x; break
CHECK(NormalSignatureMode);
CHECK(Detached);
os << "???" "(" << static_cast<int>(mode) << ')';
break;
}
+#define CHECK( x ) if ( !(mode & (x)) ) {} else do { os << #x " "; } while (0)
+ CHECK(SignArchive);
+#undef CHECK
return os << ')';
}
CHECK(ExpectSign);
CHECK(NoCompress);
CHECK(Symmetric);
+ CHECK(ThrowKeyIds);
+ CHECK(EncryptWrap);
+ CHECK(WantAddress);
+ CHECK(EncryptArchive);
#undef CHECK
return os << ')';
}
// Keep in line with core's flags
DecryptNone = 0,
DecryptVerify = 1,
+ DecryptArchive = 2,
DecryptUnwrap = 128,
DecryptMaxValue = 0x80000000
};
NoCompress = 16,
Symmetric = 32,
ThrowKeyIds = 64,
- EncryptWrap = 128
+ EncryptWrap = 128,
+ WantAddress = 256,
+ EncryptArchive = 512
};
EncryptionResult encrypt(const std::vector<Key> &recipients, const Data &plainText, Data &cipherText, EncryptionFlags flags);
GpgME::Error encryptSymmetrically(const Data &plainText, Data &cipherText);
return Error(gpgme_data_set_file_name(d->data, name));
}
+GpgME::Error GpgME::Data::setFileName(const std::string &name)
+{
+ return Error(gpgme_data_set_file_name(d->data, name.c_str()));
+}
+
ssize_t GpgME::Data::read(void *buffer, size_t length)
{
return gpgme_data_read(d->data, buffer, length);
seek (0, SEEK_SET);
return ret;
}
+
+GpgME::Error GpgME::Data::setFlag(const char *name, const char *value)
+{
+ return Error(gpgme_data_set_flag(d->data, name, value));
+}
+
+GpgME::Error GpgME::Data::setSizeHint(uint64_t size)
+{
+ const std::string val = std::to_string(size);
+ return Error(gpgme_data_set_flag(d->data, "size-hint", val.c_str()));
+}
#include "key.h"
#include <sys/types.h> // for size_t, off_t
+#include <cstdint> // unit64_t
#include <cstdio> // FILE
#include <algorithm>
#include <memory>
static const Null null;
+ Data(const Data &other) = default;
const Data &operator=(Data other)
{
swap(other);
char *fileName() const;
Error setFileName(const char *name);
+ Error setFileName(const std::string &name);
ssize_t read(void *buffer, size_t length);
ssize_t write(const void *buffer, size_t length);
/** Return a copy of the data as std::string. Sets seek pos to 0 */
std::string toString();
+ /** See gpgme_data_set_flag */
+ Error setFlag(const char *name, const char *value);
+
+ /** Set a size hint for this data e.g. for progress calculations. */
+ Error setSizeHint(uint64_t size);
+
class Private;
Private *impl()
{
return d && d->res.is_de_vs;
}
+bool GpgME::DecryptionResult::isMime() const
+{
+ return d && d->res.is_mime;
+}
+
const char *GpgME::DecryptionResult::fileName() const
{
return d ? d->res.file_name : nullptr ;
DecryptionResult(gpgme_ctx_t ctx, const Error &err);
explicit DecryptionResult(const Error &err);
+ DecryptionResult(const DecryptionResult &other) = default;
const DecryptionResult &operator=(DecryptionResult other)
{
swap(other);
}
bool isWrongKeyUsage() const;
bool isDeVs() const;
+ bool isMime() const;
const char *fileName() const;
Recipient();
explicit Recipient(gpgme_recipient_t reci);
+ Recipient(const Recipient &other) = default;
const Recipient &operator=(Recipient other)
{
swap(other);
#include "error.h"
#include "data.h"
-#include <sstream>
-
using namespace GpgME;
DefaultAssuanTransaction::DefaultAssuanTransaction()
// advance to next state based on input:
const unsigned int oldState = ei->state;
- ei->state = ei->q->nextState(status, args, err);
+
+ if (ei->q->needsNoResponse(status)) {
+ // keep state
+ } else if (status == GPGME_STATUS_ERROR) {
+ err = ei->q->parseStatusError(args);
+ ei->state = EditInteractor::ErrorState;
+ } else {
+ ei->state = ei->q->nextState(status, args, err);
+ }
+
if (ei->debug) {
std::fprintf(ei->debug, "EditInteractor: %u -> nextState( %s, %s ) -> %u\n",
oldState, status_to_string(status), args ? args : "<null>", ei->state);
EncryptionResult(gpgme_ctx_t ctx, const Error &error);
EncryptionResult(const Error &err);
+ EncryptionResult(const EncryptionResult &other) = default;
const EncryptionResult &operator=(EncryptionResult other)
{
swap(other);
public:
InvalidRecipient();
+ InvalidRecipient(const InvalidRecipient &other) = default;
const InvalidRecipient &operator=(InvalidRecipient other)
{
swap(other);
}
}
+ bool operator < (const Version& other) const
+ {
+ if (major > other.major ||
+ (major == other.major && minor > other.minor) ||
+ (major == other.major && minor == other.minor && patch > other.patch) ||
+ (major >= other.major && minor >= other.minor && patch >= other.patch)) {
+ return false;
+ }
+ return true;
+ }
+
+ bool operator < (const char* other) const
+ {
+ return operator<(Version(other));
+ }
+
+ bool operator <= (const Version &other) const
+ {
+ return !operator>(other);
+ }
+
+ bool operator <= (const char *other) const
+ {
+ return operator<=(Version(other));
+ }
+
+ bool operator > (const char* other) const
+ {
+ return operator>(Version(other));
+ }
+
+ bool operator > (const Version & other) const
+ {
+ return !operator<(other) && !operator==(other);
+ }
+
+ bool operator >= (const Version &other) const
+ {
+ return !operator<(other);
+ }
+
+ bool operator >= (const char *other) const
+ {
+ return operator>=(Version(other));
+ }
+
+ bool operator == (const Version& other) const
+ {
+ return major == other.major
+ && minor == other.minor
+ && patch == other.patch;
+ }
+
+ bool operator == (const char* other) const
+ {
+ return operator==(Version(other));
+ }
+
+ bool operator != (const Version &other) const
+ {
+ return !operator==(other);
+ }
+
+ bool operator != (const char *other) const
+ {
+ return operator!=(Version(other));
+ }
+
+ // the non-const overloads of the comparison operators are kept for
+ // binary compatibility
bool operator < (const Version& other)
{
if (major > other.major ||
EngineInfo();
explicit EngineInfo(gpgme_engine_info_t engine);
+ EngineInfo(const EngineInfo &other) = default;
const EngineInfo &operator=(EngineInfo other)
{
swap(other);
KeyListModeMask = 0x3ff
};
-enum SignatureMode { NormalSignatureMode, Detached, Clearsigned };
+enum SignatureMode {
+ NormalSignatureMode = 0,
+ Detached = 1,
+ Clearsigned = 2,
+ SignArchive = 4,
+};
enum class RevocationReason {
Unspecified = 0,
datadir, localedir, agent-socket, agent-ssh-socket,
dirmngr-socket, uiserver-socket, gpgconf-name, gpg-name,
gpgsm-name, g13-name, keyboxd-name, agent-name, scdaemon-name,
-dirmngr-name, pinentry-name, socketdir.
+dirmngr-name, pinentry-name, socketdir, gpg-wks-client-name, gpgtar-name.
This may be extended in the future.
*/
static const Error NO_KEY_ERROR = Error::fromCode(GPG_ERR_NO_KEY);
static const Error INV_TIME_ERROR = Error::fromCode(GPG_ERR_INV_TIME);
- if (q->needsNoResponse(status)) {
- return q->state();
- }
-
switch (q->state()) {
case START:
if (status == GPGME_STATUS_GET_LINE &&
strcmp(args, "keygen.flags") == 0) {
return FLAGS;
} else if (status == GPGME_STATUS_GET_LINE &&
- strcmp(args, "keygen.keygrip")) {
+ strcmp(args, "keygen.keygrip") == 0) {
err = NO_KEY_ERROR;
return ERROR;
}
strcmp(args, "keyedit.prompt") == 0) {
return QUIT;
} else if (status == GPGME_STATUS_GET_LINE &&
- strcmp(args, "keygen.valid")) {
+ strcmp(args, "keygen.valid") == 0) {
err = INV_TIME_ERROR;
return ERROR;
}
static const Error INV_EMAIL_ERROR = Error::fromCode(GPG_ERR_INV_USER_ID);
static const Error INV_COMMENT_ERROR = Error::fromCode(GPG_ERR_INV_USER_ID);
- if (needsNoResponse(status)) {
- return state();
- }
-
using namespace GpgAddUserIDEditInteractor_Private;
switch (state()) {
#include <assert.h>
-#include <sstream>
-
using namespace GpgME;
GpgAgentGetInfoAssuanTransaction::GpgAgentGetInfoAssuanTransaction(InfoItem item)
class GpgGenCardKeyInteractor::Private
{
public:
- Private() : keysize("2048"), backup(false), algo(RSA)
+ Private() : keysize("2048")
{
-
}
+
std::string name, email, backupFileName, expiry, serial, keysize;
- bool backup;
- Algo algo;
+ bool backup = false;
+ Algo algo = RSA;
+ std::string curve;
};
-GpgGenCardKeyInteractor::~GpgGenCardKeyInteractor() {}
+GpgGenCardKeyInteractor::~GpgGenCardKeyInteractor() = default;
GpgGenCardKeyInteractor::GpgGenCardKeyInteractor(const std::string &serial):
d(new Private)
d->algo = algo;
}
+void GpgGenCardKeyInteractor::setCurve(Curve curve)
+{
+ if (curve == DefaultCurve) {
+ d->curve.clear();
+ } else if (curve >= 1 && curve <= LastCurve) {
+ d->curve = std::to_string(static_cast<int>(curve));
+ }
+}
+
namespace GpgGenCardKeyInteractor_Private
{
enum {
case KEY_CURVE1:
case KEY_CURVE2:
case KEY_CURVE3:
- return "1"; // Only cv25519 supported.
+ return d->curve.empty() ? "1" : d->curve.c_str(); // default is Curve25519
case NAME:
return d->name.c_str();
case EMAIL:
static const Error INV_EMAIL_ERROR = Error::fromCode(GPG_ERR_INV_USER_ID);
static const Error INV_COMMENT_ERROR = Error::fromCode(GPG_ERR_INV_USER_ID);
- if (needsNoResponse(status)) {
- return state();
- }
-
using namespace GpgGenCardKeyInteractor_Private;
switch (state()) {
enum Algo {
RSA = 1,
- ECC = 2
+ ECC = 2,
};
void setAlgo(Algo algo);
+ // the enum values minus 1 have to match the indexes of the curves used by
+ // ask_curve() in gnupg's g10/keygen.c
+ enum Curve {
+ DefaultCurve = 0, // currently Curve25519
+ Curve25519 = 1,
+ Curve448,
+ NISTP256,
+ NISTP384,
+ NISTP521,
+ BrainpoolP256,
+ BrainpoolP384,
+ BrainpoolP512,
+ Secp256k1,
+ LastCurve = Secp256k1,
+ };
+ void setCurve(Curve curve);
+
std::string backupFileName() const;
private:
#include <gpgme.h>
-#include <sstream>
#include <vector>
// avoid conflict (msvc)
static const Error GENERAL_ERROR = Error::fromCode(GPG_ERR_GENERAL);
- if (q->needsNoResponse(status)) {
- return q->state();
- }
-
- if (status == GPGME_STATUS_ERROR) {
- err = q->parseStatusError(args);
- return ERROR;
- }
switch (const auto state = q->state()) {
case START:
if (status == GPGME_STATUS_GET_LINE &&
if (status == GPGME_STATUS_GET_LINE &&
strcmp(args, "ask_revocation_reason.text") == 0) {
nextLine++;
- return nextLine < reasonLines.size() ? REASON_TEXT : REASON_TEXT_DONE;
+ return static_cast<std::size_t>(nextLine) < reasonLines.size() ? REASON_TEXT : REASON_TEXT_DONE;
}
err = GENERAL_ERROR;
return ERROR;
if (status == GPGME_STATUS_GET_LINE &&
strcmp(args, "ask_revocation_reason.text") == 0) {
nextLine++;
- return nextLine < reasonLines.size() ? state + 1 : REASON_TEXT_DONE;
+ return static_cast<std::size_t>(nextLine) < reasonLines.size() ? state + 1 : REASON_TEXT_DONE;
}
}
err = GENERAL_ERROR;
static const Error GENERAL_ERROR = Error::fromCode(GPG_ERR_GENERAL);
static const Error INV_TIME_ERROR = Error::fromCode(GPG_ERR_INV_TIME);
- if (needsNoResponse(status)) {
- return state();
- }
-
using namespace GpgSetExpiryTimeEditInteractor_Private;
switch (state()) {
static const Error GENERAL_ERROR = Error::fromCode(GPG_ERR_GENERAL);
//static const Error INV_TIME_ERROR = Error::fromCode( GPG_ERR_INV_TIME );
- if (needsNoResponse(status)) {
- return state();
- }
-
using namespace GpgSetOwnerTrustEditInteractor_Private;
switch (state()) {
CONFIRM2,
DUPE_OK,
DUPE_OK2,
+ REJECT_SIGN_EXPIRED,
QUIT,
SAVE,
ERROR = EditInteractor::ErrorState
#define addEntry( s1, status, str, s2 ) tab[std::make_tuple( s1, status, str)] = s2
addEntry(START, GET_LINE, "keyedit.prompt", COMMAND);
addEntry(COMMAND, GET_BOOL, "keyedit.sign_all.okay", UIDS_ANSWER_SIGN_ALL);
+ addEntry(COMMAND, GET_BOOL, "sign_uid.expired_okay", REJECT_SIGN_EXPIRED);
addEntry(COMMAND, GET_BOOL, "sign_uid.okay", CONFIRM);
addEntry(COMMAND, GET_BOOL, "sign_uid.local_promote_okay", CONFIRM2);
addEntry(COMMAND, GET_BOOL, "sign_uid.dupe_okay", DUPE_OK);
addEntry(DUPE_OK, GET_BOOL, "sign_uid.dupe_okay", DUPE_OK2);
addEntry(DUPE_OK2, GET_BOOL, "sign_uid.dupe_okay", DUPE_OK);
addEntry(CONFIRM, GET_LINE, "keyedit.prompt", QUIT);
+ addEntry(REJECT_SIGN_EXPIRED, GET_LINE, "keyedit.prompt", QUIT);
addEntry(ERROR, GET_LINE, "keyedit.prompt", QUIT);
addEntry(QUIT, GET_BOOL, "keyedit.save.okay", SAVE);
#undef addEntry
case CONFIRM2:
case CONFIRM:
return answer(true);
+ case REJECT_SIGN_EXPIRED:
+ err = Error::fromCode(GPG_ERR_KEY_EXPIRED);
+ return answer(false);
case QUIT:
return "quit";
case SAVE:
static const Error GENERAL_ERROR = Error::fromCode(GPG_ERR_GENERAL);
//static const Error INV_TIME_ERROR = Error::fromCode( GPG_ERR_INV_TIME );
static const TransitionMap table(makeTable());
- if (needsNoResponse(status)) {
- return state();
- }
using namespace GpgSignKeyEditInteractor_Private;
}
// was this key also considered during the first import
const auto consideredInFirstImports =
- std::any_of(std::begin(d->imports), std::end(d->imports), [fpr](const auto i) {
+ std::any_of(std::begin(d->imports), std::end(d->imports), [fpr](const gpgme_import_status_t i) {
return i->fpr && !strcmp(i->fpr, fpr);
});
// did we see this key already in the list of keys of the other import
const auto consideredInPreviousOtherImports =
- std::any_of(std::begin(other.d->imports), it, [fpr](const auto i) {
+ std::any_of(std::begin(other.d->imports), it, [fpr](const gpgme_import_status_t i) {
return i->fpr && !strcmp(i->fpr, fpr);
});
// was anything added to this key during the other import
const auto changedInOtherImports =
- std::any_of(std::begin(other.d->imports), std::end(other.d->imports), [fpr](const auto i) {
+ std::any_of(std::begin(other.d->imports), std::end(other.d->imports), [fpr](const gpgme_import_status_t i) {
return i->fpr && !strcmp(i->fpr, fpr) && (i->status != 0);
});
if (consideredInFirstImports && !consideredInPreviousOtherImports) {
// now do the same for the secret key counts
const auto secretKeyConsideredInFirstImports =
- std::any_of(std::begin(d->imports), std::end(d->imports), [fpr](const auto i) {
+ std::any_of(std::begin(d->imports), std::end(d->imports), [fpr](const gpgme_import_status_t i) {
return i->fpr && !strcmp(i->fpr, fpr) && (i->status & GPGME_IMPORT_SECRET);
});
const auto secretKeyConsideredInPreviousOtherImports =
- std::any_of(std::begin(other.d->imports), it, [fpr](const auto i) {
+ std::any_of(std::begin(other.d->imports), it, [fpr](const gpgme_import_status_t i) {
return i->fpr && !strcmp(i->fpr, fpr) && (i->status & GPGME_IMPORT_SECRET);
});
const auto secretKeyChangedInOtherImports =
- std::any_of(std::begin(other.d->imports), std::end(other.d->imports), [fpr](const auto i) {
+ std::any_of(std::begin(other.d->imports), std::end(other.d->imports), [fpr](const gpgme_import_status_t i) {
return i->fpr && !strcmp(i->fpr, fpr) && (i->status & GPGME_IMPORT_SECRET) && (i->status != GPGME_IMPORT_SECRET);
});
if (secretKeyConsideredInFirstImports && !secretKeyConsideredInPreviousOtherImports) {
d->imports.reserve(d->imports.size() + other.d->imports.size());
std::transform(std::begin(other.d->imports), std::end(other.d->imports),
std::back_inserter(d->imports),
- [](const auto import) {
+ [](const gpgme_import_status_t import) {
gpgme_import_status_t copy = new _gpgme_import_status{*import};
if (import->fpr) {
copy->fpr = strdup(import->fpr);
ImportResult(gpgme_ctx_t ctx, const Error &error);
explicit ImportResult(const Error &error);
+ ImportResult(const ImportResult &other) = default;
const ImportResult &operator=(ImportResult other)
{
swap(other);
public:
Import();
+ Import(const Import &other) = default;
const Import &operator=(Import other)
{
swap(other);
bool Key::canSign() const
{
-#ifndef GPGME_CAN_SIGN_ON_SECRET_OPENPGP_KEYLISTING_NOT_BROKEN
- if (key && key->protocol == GPGME_PROTOCOL_OpenPGP) {
- return true;
- }
-#endif
- return canReallySign();
+ return key && key->can_sign;
}
bool Key::canReallySign() const
{
- return key && key->can_sign;
+ return canSign();
}
bool Key::canCertify() const
return true;
}
+bool Key::hasCertify() const
+{
+ return key && key->has_certify;
+}
+
+bool Key::hasSign() const
+{
+ return key && key->has_sign;
+}
+
+bool Key::hasEncrypt() const
+{
+ return key && key->has_encrypt;
+}
+
+bool Key::hasAuthenticate() const
+{
+ return key && key->has_authenticate;
+}
+
const char *Key::issuerSerial() const
{
return key ? key->issuer_serial : nullptr ;
return subkey && subkey->can_authenticate;
}
+bool Subkey::canRenc() const
+{
+ return subkey && subkey->can_renc;
+}
+
+bool Subkey::canTimestamp() const
+{
+ return subkey && subkey->can_timestamp;
+}
+
+bool Subkey::isGroupOwned() const
+{
+ return subkey && subkey->is_group_owned;
+}
+
bool Subkey::isQualified() const
{
return subkey && subkey->is_qualified;
<< "\n canEncrypt: " << subkey.canEncrypt()
<< "\n canCertify: " << subkey.canCertify()
<< "\n canAuth: " << subkey.canAuthenticate()
+ << "\n canRenc: " << subkey.canRenc()
+ << "\n canTimestanp: " << subkey.canTimestamp()
<< "\n isSecret: " << subkey.isSecret()
+ << "\n isGroupOwned: " << subkey.isGroupOwned()
<< "\n isQualified: " << subkey.isQualified()
<< "\n isDeVs: " << subkey.isDeVs()
<< "\n isCardKey: " << subkey.isCardKey()
<< "\n issuer: " << protect(key.issuerName())
<< "\n fingerprint:" << protect(key.primaryFingerprint())
<< "\n listmode: " << key.keyListMode()
- << "\n canSign: " << key.canReallySign()
+ << "\n canSign: " << key.canSign()
<< "\n canEncrypt: " << key.canEncrypt()
<< "\n canCertify: " << key.canCertify()
<< "\n canAuth: " << key.canAuthenticate()
static const Null null;
+ Key(const Key &other) = default;
const Key &operator=(Key other)
{
swap(other);
* isDisabled || isInvalid */
bool isBad() const;
+ /** Returns true, if the key can be used for encryption (i.e. it's not bad
+ * and has an encryption subkey) or if the primary subkey can encrypt. */
bool canEncrypt() const;
- /*!
- This function contains a workaround for old gpgme's: all secret
- OpenPGP keys canSign() == true, which canReallySign() doesn't
- have. I don't have time to find what breaks when I remove this
- workaround, but since Kleopatra merges secret into public keys,
- the workaround is not necessary there (and actively harms), I've
- added a new function instead.
- */
+ /** Returns true, if the key can be used for signing (i.e. it's not bad
+ * and has a signing subkey) or if the primary subkey can sign. */
bool canSign() const;
- bool canReallySign() const;
+ GPGMEPP_DEPRECATED bool canReallySign() const;
+ /** Returns true, if the key can be used for certification (i.e. it's not bad
+ * and has a certification subkey) or if the primary subkey can certify. */
bool canCertify() const;
+ /** Returns true, if the key can be used for authentication (i.e. it's not bad
+ * and has a authentication subkey) or if the primary subkey can authenticate. */
bool canAuthenticate() const;
bool isQualified() const;
bool isDeVs() const;
+ /** Returns true, if the key has a certification subkey. */
+ bool hasCertify() const;
+ /** Returns true, if the key has a signing subkey. */
+ bool hasSign() const;
+ /** Returns true, if the key has an encryption subkey. */
+ bool hasEncrypt() const;
+ /** Returns true, if the key has an authentication subkey. */
+ bool hasAuthenticate() const;
+
bool hasSecret() const;
GPGMEPP_DEPRECATED bool isSecret() const
{
Subkey(const shared_gpgme_key_t &key, gpgme_sub_key_t subkey);
Subkey(const shared_gpgme_key_t &key, unsigned int idx);
+ Subkey(const Subkey &other) = default;
const Subkey &operator=(Subkey other)
{
swap(other);
bool canSign() const;
bool canCertify() const;
bool canAuthenticate() const;
+ bool canRenc() const;
+ bool canTimestamp() const;
+ bool isGroupOwned() const;
bool isQualified() const;
bool isDeVs() const;
bool isCardKey() const;
UserID(const shared_gpgme_key_t &key, gpgme_user_id_t uid);
UserID(const shared_gpgme_key_t &key, unsigned int idx);
+ UserID(const UserID &other) = default;
const UserID &operator=(UserID other)
{
swap(other);
Signature(const shared_gpgme_key_t &key, gpgme_user_id_t uid, gpgme_key_sig_t sig);
Signature(const shared_gpgme_key_t &key, gpgme_user_id_t uid, unsigned int idx);
+ Signature(const Signature &other) = default;
const Signature &operator=(Signature other)
{
swap(other);
KeyGenerationResult(gpgme_ctx_t ctx, const Error &error);
explicit KeyGenerationResult(const Error &err);
+ KeyGenerationResult(const KeyGenerationResult &other) = default;
const KeyGenerationResult &operator=(KeyGenerationResult other)
{
swap(other);
explicit KeyListResult(const Error &err);
KeyListResult(const Error &err, const _gpgme_op_keylist_result &res);
+ KeyListResult(const KeyListResult &other) = default;
const KeyListResult &operator=(KeyListResult other)
{
swap(other);
Notation();
explicit Notation(gpgme_sig_notation_t nota);
+ Notation(const Notation &other) = default;
const Notation &operator=(Notation other)
{
swap(other);
#include "data.h"
#include "util.h"
-#include <sstream>
#include <assert.h>
using namespace GpgME;
case GPGME_SIG_MODE_NORMAL: return NormalSignatureMode;
case GPGME_SIG_MODE_DETACH: return Detached;
case GPGME_SIG_MODE_CLEAR: return Clearsigned;
+ case GPGME_SIG_MODE_ARCHIVE: return SignArchive; // cannot happen
}
}
SigningResult(gpgme_ctx_t ctx, const Error &error);
explicit SigningResult(const Error &err);
+ SigningResult(const SigningResult &other) = default;
const SigningResult &operator=(SigningResult other)
{
swap(other);
public:
InvalidSigningKey();
+ InvalidSigningKey(const InvalidSigningKey &other) = default;
const InvalidSigningKey &operator=(InvalidSigningKey other)
{
swap(other);
CreatedSignature();
+ CreatedSignature(const CreatedSignature &other) = default;
const CreatedSignature &operator=(CreatedSignature other)
{
swap(other);
const char *iversion = NULL,
Error *err = NULL);
+ SwdbResult(const SwdbResult &other) = default;
const SwdbResult &operator=(SwdbResult other)
{
swap(other);
TofuInfo();
explicit TofuInfo(gpgme_tofu_info_t info);
+ TofuInfo(const TofuInfo &other) = default;
const TofuInfo &operator=(TofuInfo other)
{
swap(other);
std::ostream &GpgME::operator<<(std::ostream &os, Signature::PKAStatus pkaStatus)
{
-#define OUTPUT( x ) if ( !(pkaStatus & (GpgME::Signature:: x)) ) {} else do { os << #x " "; } while(0)
os << "GpgME::Signature::PKAStatus(";
- OUTPUT(UnknownPKAStatus);
- OUTPUT(PKAVerificationFailed);
- OUTPUT(PKAVerificationSucceeded);
+ switch (pkaStatus) {
+#define OUTPUT( x ) case GpgME::Signature:: x: os << #x; break
+ OUTPUT(UnknownPKAStatus);
+ OUTPUT(PKAVerificationFailed);
+ OUTPUT(PKAVerificationSucceeded);
#undef OUTPUT
+ default:
+ os << "??? (" << static_cast<int>(pkaStatus) << ')';
+ break;
+ }
return os << ')';
}
std::ostream &GpgME::operator<<(std::ostream &os, Signature::Summary summary)
{
-#define OUTPUT( x ) if ( !(summary & (GpgME::Signature:: x)) ) {} else do { os << #x " "; } while(0)
os << "GpgME::Signature::Summary(";
- OUTPUT(Valid);
- OUTPUT(Green);
- OUTPUT(Red);
- OUTPUT(KeyRevoked);
- OUTPUT(KeyExpired);
- OUTPUT(SigExpired);
- OUTPUT(KeyMissing);
- OUTPUT(CrlMissing);
- OUTPUT(CrlTooOld);
- OUTPUT(BadPolicy);
- OUTPUT(SysError);
- OUTPUT(TofuConflict);
+ if (summary == Signature::None) {
+ os << "None";
+ } else {
+#define OUTPUT( x ) if ( !(summary & (GpgME::Signature:: x)) ) {} else do { os << #x " "; } while(0)
+ OUTPUT(Valid);
+ OUTPUT(Green);
+ OUTPUT(Red);
+ OUTPUT(KeyRevoked);
+ OUTPUT(KeyExpired);
+ OUTPUT(SigExpired);
+ OUTPUT(KeyMissing);
+ OUTPUT(CrlMissing);
+ OUTPUT(CrlTooOld);
+ OUTPUT(BadPolicy);
+ OUTPUT(SysError);
+ OUTPUT(TofuConflict);
#undef OUTPUT
+ }
return os << ')';
}
std::ostream &GpgME::operator<<(std::ostream &os, Notation::Flags flags)
{
os << "GpgME::Notation::Flags(";
+ if (flags == Notation::NoFlags) {
+ os << "NoFlags";
+ } else {
#define OUTPUT( x ) if ( !(flags & (GpgME::Notation:: x)) ) {} else do { os << #x " "; } while(0)
- OUTPUT(HumanReadable);
- OUTPUT(Critical);
+ OUTPUT(HumanReadable);
+ OUTPUT(Critical);
#undef OUTPUT
+ }
return os << ')';
}
VerificationResult(gpgme_ctx_t ctx, const Error &error);
explicit VerificationResult(const Error &err);
+ VerificationResult(const VerificationResult &other) = default;
const VerificationResult &operator=(VerificationResult other)
{
swap(other);
Signature();
+ Signature(const Signature &other) = default;
const Signature &operator=(Signature other)
{
swap(other);
VfsMountResult(gpgme_ctx_t ctx, const Error &error, const Error &opError);
explicit VfsMountResult(const Error &err);
+ VfsMountResult(const VfsMountResult &other) = default;
const VfsMountResult &operator=(VfsMountResult other)
{
swap(other);
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
run-verify$(EXEEXT) $(am__EXEEXT_1)
subdir = lang/cpp/tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
am__DIST_COMMON = $(srcdir)/Makefile.in \
$(top_srcdir)/build-aux/depcomp \
$(top_srcdir)/build-aux/mkinstalldirs README
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
#include "verificationresult.h"
#include <memory>
-#include <sstream>
#include <iostream>
using namespace GpgME;
#include "key.h"
#include <memory>
-#include <sstream>
#include <iostream>
#include <thread>
return -1;
}
- // try do connect to dirmngr
+ // try to connect to dirmngr
err = ctx->assuanTransact("GETINFO version");
if (err && err.code() != GPG_ERR_ASS_CONNECT_FAILED) {
std::cerr << "Failed to start assuan transaction (Error: " << err.asString() << ")\n";
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/js/BrowserTestExtension
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
cscope cscopelist:
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/js/DemoExtension
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
cscope cscopelist:
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/js
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in \
$(top_srcdir)/build-aux/mkinstalldirs README
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/js/src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
cscope cscopelist:
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
gpgme.i \
helpers.c helpers.h private.h
-SUBDIRS = . tests examples doc src
+if RUN_GPG_TESTS
+tests = tests
+else
+tests =
+endif
+
+SUBDIRS = . ${tests} examples doc src
.PHONY: prepare
prepare: copystamp
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/python
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = $(SUBDIRS)
+DIST_SUBDIRS = . tests examples doc src
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/setup.py.in \
$(srcdir)/version.py.in $(top_srcdir)/build-aux/mkinstalldirs \
README
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
gpgme.i \
helpers.c helpers.h private.h
-SUBDIRS = . tests examples doc src
+@RUN_GPG_TESTS_FALSE@tests =
+@RUN_GPG_TESTS_TRUE@tests = tests
+SUBDIRS = . ${tests} examples doc src
CLEANFILES = copystamp \
config.h \
data.h \
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/python/doc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
cscope cscopelist:
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
#+BEGIN_SRC python -i
import gpg
+import os
import os.path
import sys
This script exports one or more public keys in minimised form.
""")
+def open_0o600(path, flags):
+ return os.open(path, flags, mode=0o600)
+
c = gpg.Context(armor=True)
if len(sys.argv) >= 4:
result = c.key_export_minimal(pattern=None)
if result is not None:
- with open(keyfile, "wb") as f:
+ with open(keyfile, "wb", opener=open_0o600) as f:
f.write(result)
else:
pass
The gpg-agent and pinentry are invoked to authorise the export.
""")
+def open_0o600(path, flags):
+ return os.open(path, flags, mode=0o600)
+
c = gpg.Context(armor=True)
if len(sys.argv) >= 4:
result = c.key_export_secret(pattern=None)
if result is not None:
- with open(keyfile, "wb") as f:
+ with open(keyfile, "wb", opener=open_0o600)) as f:
f.write(result)
- os.chmod(keyfile, 0o600)
else:
pass
#+END_SRC
For the most part the =gpg.version.versionstr= and
=gpg.version.versionlist= methods have been quite sufficient. The
-former returns the same string as =gpgme-config --version=, while the
+former returns the same string as =pkg-config gpgme --modversion=, while the
latter returns the major, minor and patch values in a list.
To check if the installed bindings have actually been built against
import subprocess
import sys
-gpgme_version_call = subprocess.Popen(["gpgme-config", "--version"],
+gpgme_version_call = subprocess.Popen(["pkg-config", "gpgme", "--modversion"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
gpgme_version_str = gpgme_version_call.communicate()
% \def\foo{\parsearg\Xfoo}
% \def\Xfoo#1{...}
%
-% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% Actually, I use \csname\string\foo\endcsname, i.e. \\foo, as it is my
% favourite TeX trick. --kasal, 16nov03
\def\parseargdef#1{%
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/python/examples
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
cscope cscopelist:
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import gpg
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import gpg
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import gpg
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import gpg
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import gpg
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
"""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
"""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
"""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
"""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
"""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
The gpg-agent and pinentry are invoked to authorise the export.
""")
+def open_0o600(path, flags):
+ return os.open(path, flags, mode=0o600)
+
c = gpg.Context(armor=True)
if len(sys.argv) >= 4:
result = c.key_export_secret(pattern=None)
if result is not None:
- with open(keyfile, "wb") as f:
+ with open(keyfile, "wb", opener=open_0o600) as f:
f.write(result)
- os.chmod(keyfile, 0o600)
else:
pass
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
The gpg-agent and pinentry are invoked to authorise the export.
""")
+def open_0o600(path, flags):
+ return os.open(path, flags, mode=0o600)
+
if sys.platform == "win32":
gpgconfcmd = "gpgconf.exe --list-dirs homedir"
else:
b_result = b.key_export_secret(pattern=None)
if a_result is not None:
- with open(ascfile, "wb") as f:
+ with open(ascfile, "wb", opener=open_0o600) as f:
f.write(a_result)
- os.chmod(ascfile, 0o600)
else:
pass
if b_result is not None:
- with open(gpgfile, "wb") as f:
+ with open(gpgfile, "wb", opener=open_0o600) as f:
f.write(b_result)
- os.chmod(gpgfile, 0o600)
else:
pass
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import subprocess
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import gpg
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import sys
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import gpg
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
print("""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import gpg
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import gpg
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
"""
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
intro = """
nh = "{0}/.{1}".format(userdir, new_homedir)
+def open_0o600(path, flags):
+ return os.open(path, flags, mode=0o600)
+
if os.path.exists(nh) is True:
print("The {0} directory already exists.".format(nh))
else:
print("Creating the {0} directory.".format(nh))
- os.mkdir(nh)
- os.chmod(nh, 0o700)
- with open("{0}/{1}".format(nh, "gpg.conf"), "w") as f1:
+ os.mkdir(nh, 0o700)
+ with open("{0}/{1}".format(nh, "gpg.conf"), "w", opener=open_0o600) as f1:
f1.write(gpgconf)
- os.chmod("{0}/{1}".format(nh, "gpg.conf"), 0o600)
- with open("{0}/{1}".format(nh, "gpg-agent.conf"), "w") as f2:
+ with open("{0}/{1}".format(nh, "gpg-agent.conf"), "w", opener=open_0o600) as f2:
f2.write(gpgconf)
- os.chmod("{0}/{1}".format(nh, "gpg-agent.conf"), 0o600)
print("""You may now use the {0} directory as an alternative GPG homedir:
gpg --homedir {0}
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import gpg
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License and the GNU
-# Lesser General Public along with this program; if not, see
+# Lesser General Public License along with this program; if not, see
# <https://www.gnu.org/licenses/>.
import gpg
%ignore HAVE_CXX11;
%{
-/* We use public symbols (eg. "_obsolete_class") which are marked as
+/* We use public symbols (e.g. "_obsolete_class") which are marked as
* deprecated but we need to keep them. Silence the warning. */
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
%}
err_status = _gpg_exception2code();
} else {
if (!retval) {
- if (write(fd, "\n", 1) < 0) {
+ if (gpgme_io_writen (fd, "\n", 1) < 0) {
err_status = gpgme_error_from_syserror ();
_gpg_raise_exception (err_status);
}
goto leave;
}
- if (write(fd, buf, len) < 0) {
+ if (gpgme_io_writen (fd, buf, len) < 0) {
err_status = gpgme_error_from_syserror ();
_gpg_raise_exception (err_status);
}
- if (! err_status && write(fd, "\n", 1) < 0) {
+ if (! err_status && gpgme_io_writen (fd, "\n", 1) < 0) {
err_status = gpgme_error_from_syserror ();
_gpg_raise_exception (err_status);
}
goto leave;
}
- if (write(fd, buffer, size) < 0) {
+ if (gpgme_io_writen (fd, buffer, size) < 0) {
err_status = gpgme_error_from_syserror ();
_gpg_raise_exception (err_status);
}
- if (! err_status && write(fd, "\n", 1) < 0) {
+ if (! err_status && gpgme_io_writen (fd, "\n", 1) < 0) {
err_status = gpgme_error_from_syserror ();
_gpg_raise_exception (err_status);
}
#include <gpgme.h>
#include "Python.h"
-#ifdef _WIN32
-#include <windows.h>
-#define write(fd, str, sz) {DWORD written; WriteFile((HANDLE) fd, str, sz, &written, 0);}
-#endif
-
/* Flag specifying whether this is an in-tree build. */
extern int gpg_in_tree_build;
import sys
# Out-of-tree build of the gpg bindings.
-gpg_error_config = ['gpg-error-config']
-gpgme_config_flags = ['--thread=pthread']
-gpgme_config = ['gpgme-config'] + gpgme_config_flags
gpgme_h = ''
include_dirs = [os.getcwd()]
library_dirs = []
if top_builddir:
# In-tree build.
in_tree = True
- gpgme_config = [os.path.join(top_builddir, 'src/gpgme-config')
- ] + gpgme_config_flags
gpgme_h = os.path.join(top_builddir, 'src/gpgme.h')
library_dirs = [os.path.join(top_builddir,
'src/.libs')] # XXX uses libtool internals
else:
devnull = open(os.devnull, 'w')
-try:
- subprocess.check_call(gpgme_config + ['--version'], stdout=devnull)
-except:
- sys.exit('Could not find gpgme-config. ' +
- 'Please install the libgpgme development package.')
-
-def getconfig(what, config=gpgme_config):
- confdata = subprocess.Popen(
- config + ['--%s' % what], stdout=subprocess.PIPE).communicate()[0]
- return [x for x in confdata.decode('utf-8').split() if x != '']
-
-
-version = version_raw = getconfig('version')[0]
+version = version_raw = "@VERSION@"
if '-' in version:
version = version.split('-')[0]
major, minor, patch = map(int, version.split('.'))
sys.exit('Need at least GPGME version 1.7, found {}.'.format(version_raw))
if not gpgme_h:
- gpgme_h = os.path.join(getconfig('prefix')[0], 'include', 'gpgme.h')
+ gpgme_h = os.path.join('@prefix@', 'include', 'gpgme.h')
define_macros = []
-libs = getconfig('libs')
+if '@GPGME_CONFIG_LIBS@':
+ libs = '@GPGME_CONFIG_LIBS@'.split(' ')
+else:
+ libs = []
# Define extra_macros for both the SWIG and C code
for k, v in extra_macros.items():
extra_swig_opts.append('-D{0}={1}'.format(k, v))
define_macros.append((k, str(v)))
-for item in getconfig('cflags'):
- if item.startswith('-I'):
- include_dirs.append(item[2:])
- elif item.startswith('-D'):
- defitem = item[2:].split('=', 1)
- if len(defitem) == 2:
- define_macros.append((defitem[0], defitem[1]))
- else:
- define_macros.append((defitem[0], None))
+if '@GPGME_CONFIG_CFLAGS@':
+ for item in '@GPGME_CONFIG_CFLAGS@'.split(' '):
+ if item.startswith('-I'):
+ include_dirs.append(item[2:])
+ elif item.startswith('-D'):
+ defitem = item[2:].split('=', 1)
+ if len(defitem) == 2:
+ define_macros.append((defitem[0], defitem[1]))
+ else:
+ define_macros.append((defitem[0], None))
# Adjust include and library locations in case of win32
uname_s = os.popen('uname -s').read()
def _generate_errors_i(self):
- try:
- subprocess.check_call(
- gpg_error_config + ['--version'], stdout=devnull)
- except:
- sys.exit('Could not find gpg-error-config. ' +
- 'Please install the libgpg-error development package.')
-
+ ge_cflags='@GPG_ERROR_CFLAGS@'
gpg_error_content = self._read_header(
- 'gpg-error.h', getconfig('cflags', config=gpg_error_config))
+ 'gpg-error.h', ge_cflags.split(' ') if ge_cflags else [])
filter_re = re.compile(r'GPG_ERR_[^ ]* =')
rewrite_re = re.compile(r' *(.*) = .*')
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/python/src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
cscope cscopelist:
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
Keyword arguments:
algorithm -- public key algorithm, see above (default: reasonable)
expires_in -- expiration time in seconds (default: reasonable)
- expires -- whether or not the key should expire (default: True)
+ expires -- whether the key should expire (default: True)
sign -- request the signing capability (see above)
encrypt -- request the encryption capability (see above)
certify -- request the certification capability (see above)
Keyword arguments:
algorithm -- public key algorithm, see above (default: reasonable)
expires_in -- expiration time in seconds (default: reasonable)
- expires -- whether or not the subkey should expire (default: True)
+ expires -- whether the subkey should expire (default: True)
sign -- request the signing capability (see above)
encrypt -- request the encryption capability (see above)
authenticate -- request the authentication capability (see above)
If command is a string or bytes, it will be used as-is. If it
is an iterable of strings, it will be properly escaped and
- joined into an well-formed assuan command.
+ joined into a well-formed assuan command.
Keyword arguments:
data_cb -- a callback receiving data lines
--import $(test_srcdir)/pubdemo.asc
-$(TESTS_ENVIRONMENT) $(GPG) --batch --no-permission-warning \
--import $(test_srcdir)/secdemo.asc
+ -$(TESTS_ENVIRONMENT) gpgconf --kill all
echo x > ./pubring-stamp
gpg.conf:
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/python/tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
cscope cscopelist:
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
--import $(test_srcdir)/pubdemo.asc
-$(TESTS_ENVIRONMENT) $(GPG) --batch --no-permission-warning \
--import $(test_srcdir)/secdemo.asc
+ -$(TESTS_ENVIRONMENT) gpgconf --kill all
echo x > ./pubring-stamp
gpg.conf:
except gpg.errors.GpgError:
pass
- # try to add an pre-existent UID
+ # try to add a pre-existent UID
try:
ctx.key_add_uid(key, bravo)
assert False, "Expected an error but got none"
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/qt
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
DIST_SUBDIRS = src tests doc
am__DIST_COMMON = $(srcdir)/Makefile.in \
$(top_srcdir)/build-aux/mkinstalldirs README
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
host_triplet = @host@
subdir = lang/qt/doc
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
cscope cscopelist:
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
--- /dev/null
+#include "qgpgme/decryptverifyarchivejob.h"
--- /dev/null
+#include "qgpgme/encryptarchivejob.h"
--- /dev/null
+#include "qgpgme/filelistdataprovider.h"
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA
+
+if WANT_QT5
lib_LTLIBRARIES = libqgpgme.la
+endif
+if WANT_QT6
+lib_LTLIBRARIES = libqgpgmeqt6.la
+endif
+
EXTRA_DIST = QGpgmeConfig.cmake.in.in QGpgmeConfigVersion.cmake.in \
qgpgme_debug.h qgpgme_version.h.in \
- QGpgmeConfig-w32.cmake.in.in
+ QGpgmeConfig-w32.cmake.in.in QGpgmeQt6Config.cmake.in.in \
+ QGpgmeQt6Config-w32.cmake.in.in QGpgmeQt6ConfigVersion.cmake.in
qgpgme_sources = \
dataprovider.cpp \
debug.cpp \
+ decryptverifyarchivejob.cpp \
+ encryptarchivejob.cpp \
+ filelistdataprovider.cpp \
job.cpp multideletejob.cpp qgpgmeadduseridjob.cpp \
qgpgmeaddexistingsubkeyjob.cpp \
qgpgmebackend.cpp qgpgmechangeexpiryjob.cpp qgpgmechangeownertrustjob.cpp \
qgpgmechangepasswdjob.cpp qgpgmedecryptjob.cpp \
+ qgpgmedecryptverifyarchivejob.cpp \
qgpgmedecryptverifyjob.cpp qgpgmedeletejob.cpp qgpgmedownloadjob.cpp \
+ qgpgmeencryptarchivejob.cpp \
qgpgmeencryptjob.cpp qgpgmeexportjob.cpp qgpgmeimportfromkeyserverjob.cpp \
qgpgmeimportjob.cpp qgpgmekeygenerationjob.cpp qgpgmekeylistjob.cpp \
- qgpgmelistallkeysjob.cpp qgpgmenewcryptoconfig.cpp \
+ listallkeysjob.cpp qgpgmelistallkeysjob.cpp qgpgmenewcryptoconfig.cpp \
qgpgmereceivekeysjob.cpp \
qgpgmerefreshsmimekeysjob.cpp \
qgpgmerevokekeyjob.cpp \
qgpgmesetprimaryuseridjob.cpp \
+ qgpgmesignarchivejob.cpp \
qgpgmesignencryptjob.cpp \
+ qgpgmesignencryptarchivejob.cpp \
qgpgmesignjob.cpp qgpgmesignkeyjob.cpp qgpgmeverifydetachedjob.cpp \
qgpgmeverifyopaquejob.cpp qgpgmewkdlookupjob.cpp threadedjobmixin.cpp \
+ qgpgmewkdrefreshjob.cpp \
qgpgmekeyformailboxjob.cpp qgpgme_debug.cpp \
qgpgmetofupolicyjob.cpp qgpgmequickjob.cpp \
defaultkeygenerationjob.cpp qgpgmewkspublishjob.cpp \
qgpgmegpgcardjob.cpp changeexpiryjob.cpp encryptjob.cpp importjob.cpp \
+ signarchivejob.cpp \
signencryptjob.cpp \
+ signencryptarchivejob.cpp \
dn.cpp cryptoconfig.cpp wkdlookupresult.cpp \
- util.cpp
+ util.cpp \
+ wkdrefreshjob.cpp
# If you add one here make sure that you also add one in camelcase
qgpgme_headers= \
dataprovider.h \
debug.h \
decryptjob.h \
+ decryptverifyarchivejob.h \
decryptverifyjob.h \
downloadjob.h \
+ encryptarchivejob.h \
encryptjob.h \
exportjob.h \
+ filelistdataprovider.h \
hierarchicalkeylistjob.h \
job.h \
keyformailboxjob.h \
revokekeyjob.h \
setprimaryuseridjob.h \
specialjob.h \
+ signarchivejob.h \
signjob.h \
signkeyjob.h \
signencryptjob.h \
+ signencryptarchivejob.h \
verifyopaquejob.h \
refreshkeysjob.h \
cryptoconfig.h \
tofupolicyjob.h \
wkdlookupjob.h \
wkdlookupresult.h \
+ wkdrefreshjob.h \
wkspublishjob.h \
gpgcardjob.h \
dn.h
DataProvider \
Debug \
DecryptJob \
+ DecryptVerifyArchiveJob \
DecryptVerifyJob \
DN \
DownloadJob \
+ EncryptArchiveJob \
EncryptJob \
ExportJob \
+ FileListDataProvider \
HierarchicalKeyKistJob \
Job \
MultiDeleteJob \
RevokeKeyJob \
SetPrimaryUserIDJob \
SpecialJob \
+ SignArchiveJob \
SignJob \
SignKeyJob \
+ SignEncryptArchiveJob \
SignEncryptJob \
VerifyOpaqueJob \
RefreshKeysJob \
DefaultKeyGenerationJob \
WKDLookupJob \
WKDLookupResult \
+ WKDRefreshJob \
WKSPublishJob \
TofuPolicyJob \
GpgCardJob
private_qgpgme_headers = \
+ changeexpiryjob_p.h \
+ decryptverifyarchivejob_p.h \
+ encryptarchivejob_p.h \
+ encryptjob_p.h \
+ importjob_p.h \
+ listallkeysjob_p.h \
qgpgme_export.h \
protocol_p.h \
job_p.h \
qgpgmechangeownertrustjob.h \
qgpgmechangepasswdjob.h \
qgpgmedecryptjob.h \
+ qgpgmedecryptverifyarchivejob.h \
qgpgmedecryptverifyjob.h \
qgpgmedeletejob.h \
qgpgmedownloadjob.h \
+ qgpgmeencryptarchivejob.h \
qgpgmeencryptjob.h \
qgpgmeexportjob.h \
qgpgmeimportfromkeyserverjob.h \
qgpgmerefreshsmimekeysjob.h \
qgpgmerevokekeyjob.h \
qgpgmesetprimaryuseridjob.h \
+ qgpgmesignarchivejob.h \
qgpgmesignencryptjob.h \
+ qgpgmesignencryptarchivejob.h \
qgpgmesignjob.h \
qgpgmesignkeyjob.h \
qgpgmeverifydetachedjob.h \
qgpgmeverifyopaquejob.h \
qgpgmewkdlookupjob.h \
+ qgpgmewkdrefreshjob.h \
qgpgmekeyformailboxjob.h \
qgpgmewkspublishjob.h \
qgpgmetofupolicyjob.h \
qgpgmegpgcardjob.h \
qgpgmequickjob.h \
+ signarchivejob_p.h \
+ signencryptjob_p.h \
+ signencryptarchivejob_p.h \
threadedjobmixin.h \
- util.h
+ util.h \
+ wkdrefreshjob_p.h
qgpgme_moc_sources = \
abstractimportjob.moc \
changeownertrustjob.moc \
changepasswdjob.moc \
decryptjob.moc \
+ decryptverifyarchivejob.moc \
decryptverifyjob.moc \
deletejob.moc \
downloadjob.moc \
+ encryptarchivejob.moc \
encryptjob.moc \
exportjob.moc \
hierarchicalkeylistjob.moc \
qgpgmechangeownertrustjob.moc \
qgpgmechangepasswdjob.moc \
qgpgmedecryptjob.moc \
+ qgpgmedecryptverifyarchivejob.moc \
qgpgmedecryptverifyjob.moc \
qgpgmedeletejob.moc \
qgpgmedownloadjob.moc \
+ qgpgmeencryptarchivejob.moc \
qgpgmeencryptjob.moc \
qgpgmeexportjob.moc \
qgpgmeimportfromkeyserverjob.moc \
qgpgmerefreshsmimekeysjob.moc \
qgpgmerevokekeyjob.moc \
qgpgmesetprimaryuseridjob.moc \
+ qgpgmesignarchivejob.moc \
qgpgmesignencryptjob.moc \
+ qgpgmesignencryptarchivejob.moc \
qgpgmesignjob.moc \
qgpgmesignkeyjob.moc \
qgpgmeverifydetachedjob.moc \
qgpgmeverifyopaquejob.moc \
qgpgmewkdlookupjob.moc \
+ qgpgmewkdrefreshjob.moc \
qgpgmewkspublishjob.moc \
tofupolicyjob.moc \
qgpgmetofupolicyjob.moc \
refreshkeysjob.moc \
revokekeyjob.moc \
setprimaryuseridjob.moc \
+ signarchivejob.moc \
signencryptjob.moc \
+ signencryptarchivejob.moc \
signjob.moc \
signkeyjob.moc \
specialjob.moc \
verifydetachedjob.moc \
verifyopaquejob.moc \
wkdlookupjob.moc \
+ wkdrefreshjob.moc \
keyformailboxjob.moc \
wkspublishjob.moc \
qgpgmekeyformailboxjob.moc \
camelcaseinclude_HEADERS = $(camelcase_headers)
nodist_qgpgmeinclude_HEADERS = qgpgme_version.h
-libqgpgme_la_SOURCES = $(qgpgme_sources) $(qgpgme_headers) $(private_qgpgme_headers)
-
+if WANT_QT5
AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \
- @GPGME_QT_CFLAGS@ @GPG_ERROR_CFLAGS@ @LIBASSUAN_CFLAGS@ \
+ @GPGME_QT5_CFLAGS@ @GPG_ERROR_CFLAGS@ @LIBASSUAN_CFLAGS@ \
-DBUILDING_QGPGME -Wsuggest-override \
-Wzero-as-null-pointer-constant
+libqgpgme_la_SOURCES = $(qgpgme_sources) $(qgpgme_headers) $(private_qgpgme_headers)
+
libqgpgme_la_LIBADD = ../../cpp/src/libgpgmepp.la ../../../src/libgpgme.la \
- @LIBASSUAN_LIBS@ @GPG_ERROR_LIBS@ @GPGME_QT_LIBS@
+ @LIBASSUAN_LIBS@ @GPG_ERROR_LIBS@ @GPGME_QT5_LIBS@
libqgpgme_la_LDFLAGS = -no-undefined -version-info \
- @LIBQGPGME_LT_CURRENT@:@LIBQGPGME_LT_REVISION@:@LIBQGPGME_LT_AGE@
+ @LIBQGPGME_LT_CURRENT@:@LIBQGPGME_LT_REVISION@:@LIBQGPGME_LT_AGE@
+endif
+if WANT_QT6
+AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \
+ @GPGME_QT6_CFLAGS@ @GPG_ERROR_CFLAGS@ @LIBASSUAN_CFLAGS@ \
+ -DBUILDING_QGPGME -Wsuggest-override \
+ -Wzero-as-null-pointer-constant
+
+libqgpgmeqt6_la_SOURCES = $(qgpgme_sources) $(qgpgme_headers) $(private_qgpgme_headers)
+
+libqgpgmeqt6_la_LIBADD = ../../cpp/src/libgpgmepp.la ../../../src/libgpgme.la \
+ @LIBASSUAN_LIBS@ @GPG_ERROR_LIBS@ @GPGME_QT6_LIBS@
+libqgpgmeqt6_la_LDFLAGS = -no-undefined -version-info \
+ @LIBQGPGME_LT_CURRENT@:@LIBQGPGME_LT_REVISION@:@LIBQGPGME_LT_AGE@
+endif
if HAVE_MACOS_SYSTEM
libsuffix=.dylib
libsuffix=.so
endif
+if WANT_QT5
if HAVE_W32_SYSTEM
QGpgmeConfig.cmake: QGpgmeConfig-w32.cmake.in
sed -e 's|[@]resolved_bindir@|$(bindir)|g' < "$<" | \
sed -e 's|[@]libsuffix@|$(libsuffix)|g' | \
sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@
endif
+endif
+if WANT_QT6
+if HAVE_W32_SYSTEM
+QGpgmeQt6Config.cmake: QGpgmeQt6Config-w32.cmake.in
+ sed -e 's|[@]resolved_bindir@|$(bindir)|g' < "$<" | \
+ sed -e 's|[@]resolved_libdir@|$(libdir)|g' | \
+ sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@
+else
+QGpgmeQt6Config.cmake: QGpgmeQt6Config.cmake.in
+ sed -e 's|[@]resolved_libdir@|$(libdir)|g' < "$<" | \
+ sed -e 's|[@]libsuffix@|$(libsuffix)|g' | \
+ sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@
+endif
+endif
$(camelcase_headers): Makefile.am
echo -n "#include \"qgpgme/" > "$@"
echo -n "$@" | tr '[:upper:]' '[:lower:]' >> "$@"
echo ".h\"" >> "$@"
+if WANT_QT5
install-cmake-files: QGpgmeConfig.cmake QGpgmeConfigVersion.cmake
-$(INSTALL) -d $(DESTDIR)$(libdir)/cmake/QGpgme
$(INSTALL) -m 644 QGpgmeConfig.cmake \
- $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfig.cmake
+ $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfig.cmake
$(INSTALL) -m 644 QGpgmeConfigVersion.cmake \
- $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfigVersion.cmake
+ $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfigVersion.cmake
uninstall-cmake-files:
-rm $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfigVersion.cmake
-rm $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfig.cmake
-rmdir $(DESTDIR)$(libdir)/cmake/QGpgme/
+endif
+if WANT_QT6
+install-cmake-files: QGpgmeQt6Config.cmake QGpgmeQt6ConfigVersion.cmake
+ -$(INSTALL) -d $(DESTDIR)$(libdir)/cmake/QGpgmeQt6
+ $(INSTALL) -m 644 QGpgmeQt6Config.cmake \
+ $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6Config.cmake
+ $(INSTALL) -m 644 QGpgmeQt6ConfigVersion.cmake \
+ $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6ConfigVersion.cmake
+
+uninstall-cmake-files:
+ -rm $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6ConfigVersion.cmake
+ -rm $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6Config.cmake
+ -rmdir $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/
+endif
install-data-local: install-cmake-files
CLEANFILES = $(qgpgme_moc_sources) $(camelcase_headers) QGpgmeConfig.cmake \
qgpgme_version.h QGpgmeConfig.cmake.in \
- QGpgmeConfigVersion.cmake
+ QGpgmeConfig-w32.cmake.in QGpgmeConfigVersion.cmake \
+ QGpgmeQt6Config.cmake.in QGpgmeQt6Config-w32.cmake.in \
+ QGpgmeQt6Config.cmake QGpgmeQt6ConfigVersion.cmake
+if WANT_QT5
nodist_libqgpgme_la_SOURCES = $(qgpgme_moc_sources)
+endif
+if WANT_QT6
+nodist_libqgpgmeqt6_la_SOURCES = $(qgpgme_moc_sources)
+endif
.h.moc:
$(MOC) `test -f '$<' || echo '$(srcdir)/'`$< -o $@
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@SET_MAKE@
+# Makefile.am for GPGMEPP.
+# Copyright (C) 2016 Bundesamt für Sicherheit in der Informationstechnik
+# Software engineering by Intevation GmbH
+#
+# This file is part of GPGMEPP.
+#
+# GPGME-CL is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GPGME-CL is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA
+
VPATH = @srcdir@
am__is_gnu_make = { \
host_triplet = @host@
subdir = lang/qt/src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(camelcaseinclude_HEADERS) \
mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/conf/config.h
CONFIG_CLEAN_FILES = QGpgmeConfig-w32.cmake.in QGpgmeConfig.cmake.in \
- QGpgmeConfigVersion.cmake qgpgme_version.h
+ QGpgmeConfigVersion.cmake QGpgmeQt6Config-w32.cmake.in \
+ QGpgmeQt6Config.cmake.in QGpgmeQt6ConfigVersion.cmake \
+ qgpgme_version.h
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
"$(DESTDIR)$(qgpgmeincludedir)" \
"$(DESTDIR)$(qgpgmeincludedir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
-libqgpgme_la_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../../../src/libgpgme.la
-am__objects_1 = dataprovider.lo debug.lo job.lo multideletejob.lo \
- qgpgmeadduseridjob.lo qgpgmeaddexistingsubkeyjob.lo \
- qgpgmebackend.lo qgpgmechangeexpiryjob.lo \
- qgpgmechangeownertrustjob.lo qgpgmechangepasswdjob.lo \
- qgpgmedecryptjob.lo qgpgmedecryptverifyjob.lo \
- qgpgmedeletejob.lo qgpgmedownloadjob.lo qgpgmeencryptjob.lo \
+@WANT_QT5_TRUE@libqgpgme_la_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
+am__libqgpgme_la_SOURCES_DIST = dataprovider.cpp debug.cpp \
+ decryptverifyarchivejob.cpp encryptarchivejob.cpp \
+ filelistdataprovider.cpp job.cpp multideletejob.cpp \
+ qgpgmeadduseridjob.cpp qgpgmeaddexistingsubkeyjob.cpp \
+ qgpgmebackend.cpp qgpgmechangeexpiryjob.cpp \
+ qgpgmechangeownertrustjob.cpp qgpgmechangepasswdjob.cpp \
+ qgpgmedecryptjob.cpp qgpgmedecryptverifyarchivejob.cpp \
+ qgpgmedecryptverifyjob.cpp qgpgmedeletejob.cpp \
+ qgpgmedownloadjob.cpp qgpgmeencryptarchivejob.cpp \
+ qgpgmeencryptjob.cpp qgpgmeexportjob.cpp \
+ qgpgmeimportfromkeyserverjob.cpp qgpgmeimportjob.cpp \
+ qgpgmekeygenerationjob.cpp qgpgmekeylistjob.cpp \
+ listallkeysjob.cpp qgpgmelistallkeysjob.cpp \
+ qgpgmenewcryptoconfig.cpp qgpgmereceivekeysjob.cpp \
+ qgpgmerefreshsmimekeysjob.cpp qgpgmerevokekeyjob.cpp \
+ qgpgmesetprimaryuseridjob.cpp qgpgmesignarchivejob.cpp \
+ qgpgmesignencryptjob.cpp qgpgmesignencryptarchivejob.cpp \
+ qgpgmesignjob.cpp qgpgmesignkeyjob.cpp \
+ qgpgmeverifydetachedjob.cpp qgpgmeverifyopaquejob.cpp \
+ qgpgmewkdlookupjob.cpp threadedjobmixin.cpp \
+ qgpgmewkdrefreshjob.cpp qgpgmekeyformailboxjob.cpp \
+ qgpgme_debug.cpp qgpgmetofupolicyjob.cpp qgpgmequickjob.cpp \
+ defaultkeygenerationjob.cpp qgpgmewkspublishjob.cpp \
+ qgpgmegpgcardjob.cpp changeexpiryjob.cpp encryptjob.cpp \
+ importjob.cpp signarchivejob.cpp signencryptjob.cpp \
+ signencryptarchivejob.cpp dn.cpp cryptoconfig.cpp \
+ wkdlookupresult.cpp util.cpp wkdrefreshjob.cpp \
+ abstractimportjob.h addexistingsubkeyjob.h adduseridjob.h \
+ changeexpiryjob.h changeownertrustjob.h changepasswdjob.h \
+ dataprovider.h debug.h decryptjob.h decryptverifyarchivejob.h \
+ decryptverifyjob.h downloadjob.h encryptarchivejob.h \
+ encryptjob.h exportjob.h filelistdataprovider.h \
+ hierarchicalkeylistjob.h job.h keyformailboxjob.h \
+ multideletejob.h protocol.h qgpgme_export.h \
+ qgpgmenewcryptoconfig.h quickjob.h receivekeysjob.h \
+ revokekeyjob.h setprimaryuseridjob.h specialjob.h \
+ signarchivejob.h signjob.h signkeyjob.h signencryptjob.h \
+ signencryptarchivejob.h verifyopaquejob.h refreshkeysjob.h \
+ cryptoconfig.h deletejob.h importfromkeyserverjob.h \
+ importjob.h keygenerationjob.h keylistjob.h listallkeysjob.h \
+ verifydetachedjob.h defaultkeygenerationjob.h tofupolicyjob.h \
+ wkdlookupjob.h wkdlookupresult.h wkdrefreshjob.h \
+ wkspublishjob.h gpgcardjob.h dn.h changeexpiryjob_p.h \
+ decryptverifyarchivejob_p.h encryptarchivejob_p.h \
+ encryptjob_p.h importjob_p.h listallkeysjob_p.h protocol_p.h \
+ job_p.h qgpgmeaddexistingsubkeyjob.h qgpgmeadduseridjob.h \
+ qgpgmebackend.h qgpgmechangeexpiryjob.h \
+ qgpgmechangeownertrustjob.h qgpgmechangepasswdjob.h \
+ qgpgmedecryptjob.h qgpgmedecryptverifyarchivejob.h \
+ qgpgmedecryptverifyjob.h qgpgmedeletejob.h qgpgmedownloadjob.h \
+ qgpgmeencryptarchivejob.h qgpgmeencryptjob.h qgpgmeexportjob.h \
+ qgpgmeimportfromkeyserverjob.h qgpgmeimportjob.h \
+ qgpgmekeygenerationjob.h qgpgmekeylistjob.h \
+ qgpgmelistallkeysjob.h qgpgmereceivekeysjob.h \
+ qgpgmerefreshsmimekeysjob.h qgpgmerevokekeyjob.h \
+ qgpgmesetprimaryuseridjob.h qgpgmesignarchivejob.h \
+ qgpgmesignencryptjob.h qgpgmesignencryptarchivejob.h \
+ qgpgmesignjob.h qgpgmesignkeyjob.h qgpgmeverifydetachedjob.h \
+ qgpgmeverifyopaquejob.h qgpgmewkdlookupjob.h \
+ qgpgmewkdrefreshjob.h qgpgmekeyformailboxjob.h \
+ qgpgmewkspublishjob.h qgpgmetofupolicyjob.h qgpgmegpgcardjob.h \
+ qgpgmequickjob.h signarchivejob_p.h signencryptjob_p.h \
+ signencryptarchivejob_p.h threadedjobmixin.h util.h \
+ wkdrefreshjob_p.h
+am__objects_1 = dataprovider.lo debug.lo decryptverifyarchivejob.lo \
+ encryptarchivejob.lo filelistdataprovider.lo job.lo \
+ multideletejob.lo qgpgmeadduseridjob.lo \
+ qgpgmeaddexistingsubkeyjob.lo qgpgmebackend.lo \
+ qgpgmechangeexpiryjob.lo qgpgmechangeownertrustjob.lo \
+ qgpgmechangepasswdjob.lo qgpgmedecryptjob.lo \
+ qgpgmedecryptverifyarchivejob.lo qgpgmedecryptverifyjob.lo \
+ qgpgmedeletejob.lo qgpgmedownloadjob.lo \
+ qgpgmeencryptarchivejob.lo qgpgmeencryptjob.lo \
qgpgmeexportjob.lo qgpgmeimportfromkeyserverjob.lo \
qgpgmeimportjob.lo qgpgmekeygenerationjob.lo \
- qgpgmekeylistjob.lo qgpgmelistallkeysjob.lo \
+ qgpgmekeylistjob.lo listallkeysjob.lo qgpgmelistallkeysjob.lo \
qgpgmenewcryptoconfig.lo qgpgmereceivekeysjob.lo \
qgpgmerefreshsmimekeysjob.lo qgpgmerevokekeyjob.lo \
- qgpgmesetprimaryuseridjob.lo qgpgmesignencryptjob.lo \
+ qgpgmesetprimaryuseridjob.lo qgpgmesignarchivejob.lo \
+ qgpgmesignencryptjob.lo qgpgmesignencryptarchivejob.lo \
qgpgmesignjob.lo qgpgmesignkeyjob.lo \
qgpgmeverifydetachedjob.lo qgpgmeverifyopaquejob.lo \
qgpgmewkdlookupjob.lo threadedjobmixin.lo \
- qgpgmekeyformailboxjob.lo qgpgme_debug.lo \
- qgpgmetofupolicyjob.lo qgpgmequickjob.lo \
+ qgpgmewkdrefreshjob.lo qgpgmekeyformailboxjob.lo \
+ qgpgme_debug.lo qgpgmetofupolicyjob.lo qgpgmequickjob.lo \
defaultkeygenerationjob.lo qgpgmewkspublishjob.lo \
qgpgmegpgcardjob.lo changeexpiryjob.lo encryptjob.lo \
- importjob.lo signencryptjob.lo dn.lo cryptoconfig.lo \
- wkdlookupresult.lo util.lo
+ importjob.lo signarchivejob.lo signencryptjob.lo \
+ signencryptarchivejob.lo dn.lo cryptoconfig.lo \
+ wkdlookupresult.lo util.lo wkdrefreshjob.lo
am__objects_2 =
-am_libqgpgme_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
- $(am__objects_2)
-nodist_libqgpgme_la_OBJECTS = $(am__objects_2)
+@WANT_QT5_TRUE@am_libqgpgme_la_OBJECTS = $(am__objects_1) \
+@WANT_QT5_TRUE@ $(am__objects_2) $(am__objects_2)
+@WANT_QT5_TRUE@nodist_libqgpgme_la_OBJECTS = $(am__objects_2)
libqgpgme_la_OBJECTS = $(am_libqgpgme_la_OBJECTS) \
$(nodist_libqgpgme_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
libqgpgme_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
$(CXXFLAGS) $(libqgpgme_la_LDFLAGS) $(LDFLAGS) -o $@
+@WANT_QT5_TRUE@am_libqgpgme_la_rpath = -rpath $(libdir)
+@WANT_QT6_TRUE@libqgpgmeqt6_la_DEPENDENCIES = \
+@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+am__libqgpgmeqt6_la_SOURCES_DIST = dataprovider.cpp debug.cpp \
+ decryptverifyarchivejob.cpp encryptarchivejob.cpp \
+ filelistdataprovider.cpp job.cpp multideletejob.cpp \
+ qgpgmeadduseridjob.cpp qgpgmeaddexistingsubkeyjob.cpp \
+ qgpgmebackend.cpp qgpgmechangeexpiryjob.cpp \
+ qgpgmechangeownertrustjob.cpp qgpgmechangepasswdjob.cpp \
+ qgpgmedecryptjob.cpp qgpgmedecryptverifyarchivejob.cpp \
+ qgpgmedecryptverifyjob.cpp qgpgmedeletejob.cpp \
+ qgpgmedownloadjob.cpp qgpgmeencryptarchivejob.cpp \
+ qgpgmeencryptjob.cpp qgpgmeexportjob.cpp \
+ qgpgmeimportfromkeyserverjob.cpp qgpgmeimportjob.cpp \
+ qgpgmekeygenerationjob.cpp qgpgmekeylistjob.cpp \
+ listallkeysjob.cpp qgpgmelistallkeysjob.cpp \
+ qgpgmenewcryptoconfig.cpp qgpgmereceivekeysjob.cpp \
+ qgpgmerefreshsmimekeysjob.cpp qgpgmerevokekeyjob.cpp \
+ qgpgmesetprimaryuseridjob.cpp qgpgmesignarchivejob.cpp \
+ qgpgmesignencryptjob.cpp qgpgmesignencryptarchivejob.cpp \
+ qgpgmesignjob.cpp qgpgmesignkeyjob.cpp \
+ qgpgmeverifydetachedjob.cpp qgpgmeverifyopaquejob.cpp \
+ qgpgmewkdlookupjob.cpp threadedjobmixin.cpp \
+ qgpgmewkdrefreshjob.cpp qgpgmekeyformailboxjob.cpp \
+ qgpgme_debug.cpp qgpgmetofupolicyjob.cpp qgpgmequickjob.cpp \
+ defaultkeygenerationjob.cpp qgpgmewkspublishjob.cpp \
+ qgpgmegpgcardjob.cpp changeexpiryjob.cpp encryptjob.cpp \
+ importjob.cpp signarchivejob.cpp signencryptjob.cpp \
+ signencryptarchivejob.cpp dn.cpp cryptoconfig.cpp \
+ wkdlookupresult.cpp util.cpp wkdrefreshjob.cpp \
+ abstractimportjob.h addexistingsubkeyjob.h adduseridjob.h \
+ changeexpiryjob.h changeownertrustjob.h changepasswdjob.h \
+ dataprovider.h debug.h decryptjob.h decryptverifyarchivejob.h \
+ decryptverifyjob.h downloadjob.h encryptarchivejob.h \
+ encryptjob.h exportjob.h filelistdataprovider.h \
+ hierarchicalkeylistjob.h job.h keyformailboxjob.h \
+ multideletejob.h protocol.h qgpgme_export.h \
+ qgpgmenewcryptoconfig.h quickjob.h receivekeysjob.h \
+ revokekeyjob.h setprimaryuseridjob.h specialjob.h \
+ signarchivejob.h signjob.h signkeyjob.h signencryptjob.h \
+ signencryptarchivejob.h verifyopaquejob.h refreshkeysjob.h \
+ cryptoconfig.h deletejob.h importfromkeyserverjob.h \
+ importjob.h keygenerationjob.h keylistjob.h listallkeysjob.h \
+ verifydetachedjob.h defaultkeygenerationjob.h tofupolicyjob.h \
+ wkdlookupjob.h wkdlookupresult.h wkdrefreshjob.h \
+ wkspublishjob.h gpgcardjob.h dn.h changeexpiryjob_p.h \
+ decryptverifyarchivejob_p.h encryptarchivejob_p.h \
+ encryptjob_p.h importjob_p.h listallkeysjob_p.h protocol_p.h \
+ job_p.h qgpgmeaddexistingsubkeyjob.h qgpgmeadduseridjob.h \
+ qgpgmebackend.h qgpgmechangeexpiryjob.h \
+ qgpgmechangeownertrustjob.h qgpgmechangepasswdjob.h \
+ qgpgmedecryptjob.h qgpgmedecryptverifyarchivejob.h \
+ qgpgmedecryptverifyjob.h qgpgmedeletejob.h qgpgmedownloadjob.h \
+ qgpgmeencryptarchivejob.h qgpgmeencryptjob.h qgpgmeexportjob.h \
+ qgpgmeimportfromkeyserverjob.h qgpgmeimportjob.h \
+ qgpgmekeygenerationjob.h qgpgmekeylistjob.h \
+ qgpgmelistallkeysjob.h qgpgmereceivekeysjob.h \
+ qgpgmerefreshsmimekeysjob.h qgpgmerevokekeyjob.h \
+ qgpgmesetprimaryuseridjob.h qgpgmesignarchivejob.h \
+ qgpgmesignencryptjob.h qgpgmesignencryptarchivejob.h \
+ qgpgmesignjob.h qgpgmesignkeyjob.h qgpgmeverifydetachedjob.h \
+ qgpgmeverifyopaquejob.h qgpgmewkdlookupjob.h \
+ qgpgmewkdrefreshjob.h qgpgmekeyformailboxjob.h \
+ qgpgmewkspublishjob.h qgpgmetofupolicyjob.h qgpgmegpgcardjob.h \
+ qgpgmequickjob.h signarchivejob_p.h signencryptjob_p.h \
+ signencryptarchivejob_p.h threadedjobmixin.h util.h \
+ wkdrefreshjob_p.h
+@WANT_QT6_TRUE@am_libqgpgmeqt6_la_OBJECTS = $(am__objects_1) \
+@WANT_QT6_TRUE@ $(am__objects_2) $(am__objects_2)
+@WANT_QT6_TRUE@nodist_libqgpgmeqt6_la_OBJECTS = $(am__objects_2)
+libqgpgmeqt6_la_OBJECTS = $(am_libqgpgmeqt6_la_OBJECTS) \
+ $(nodist_libqgpgmeqt6_la_OBJECTS)
+libqgpgmeqt6_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+ $(AM_CXXFLAGS) $(CXXFLAGS) $(libqgpgmeqt6_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+@WANT_QT6_TRUE@am_libqgpgmeqt6_la_rpath = -rpath $(libdir)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/changeexpiryjob.Plo \
./$(DEPDIR)/cryptoconfig.Plo ./$(DEPDIR)/dataprovider.Plo \
- ./$(DEPDIR)/debug.Plo ./$(DEPDIR)/defaultkeygenerationjob.Plo \
- ./$(DEPDIR)/dn.Plo ./$(DEPDIR)/encryptjob.Plo \
- ./$(DEPDIR)/importjob.Plo ./$(DEPDIR)/job.Plo \
+ ./$(DEPDIR)/debug.Plo ./$(DEPDIR)/decryptverifyarchivejob.Plo \
+ ./$(DEPDIR)/defaultkeygenerationjob.Plo ./$(DEPDIR)/dn.Plo \
+ ./$(DEPDIR)/encryptarchivejob.Plo ./$(DEPDIR)/encryptjob.Plo \
+ ./$(DEPDIR)/filelistdataprovider.Plo ./$(DEPDIR)/importjob.Plo \
+ ./$(DEPDIR)/job.Plo ./$(DEPDIR)/listallkeysjob.Plo \
./$(DEPDIR)/multideletejob.Plo ./$(DEPDIR)/qgpgme_debug.Plo \
./$(DEPDIR)/qgpgmeaddexistingsubkeyjob.Plo \
./$(DEPDIR)/qgpgmeadduseridjob.Plo \
./$(DEPDIR)/qgpgmechangeownertrustjob.Plo \
./$(DEPDIR)/qgpgmechangepasswdjob.Plo \
./$(DEPDIR)/qgpgmedecryptjob.Plo \
+ ./$(DEPDIR)/qgpgmedecryptverifyarchivejob.Plo \
./$(DEPDIR)/qgpgmedecryptverifyjob.Plo \
./$(DEPDIR)/qgpgmedeletejob.Plo \
./$(DEPDIR)/qgpgmedownloadjob.Plo \
+ ./$(DEPDIR)/qgpgmeencryptarchivejob.Plo \
./$(DEPDIR)/qgpgmeencryptjob.Plo \
./$(DEPDIR)/qgpgmeexportjob.Plo \
./$(DEPDIR)/qgpgmegpgcardjob.Plo \
./$(DEPDIR)/qgpgmerefreshsmimekeysjob.Plo \
./$(DEPDIR)/qgpgmerevokekeyjob.Plo \
./$(DEPDIR)/qgpgmesetprimaryuseridjob.Plo \
+ ./$(DEPDIR)/qgpgmesignarchivejob.Plo \
+ ./$(DEPDIR)/qgpgmesignencryptarchivejob.Plo \
./$(DEPDIR)/qgpgmesignencryptjob.Plo \
./$(DEPDIR)/qgpgmesignjob.Plo ./$(DEPDIR)/qgpgmesignkeyjob.Plo \
./$(DEPDIR)/qgpgmetofupolicyjob.Plo \
./$(DEPDIR)/qgpgmeverifydetachedjob.Plo \
./$(DEPDIR)/qgpgmeverifyopaquejob.Plo \
./$(DEPDIR)/qgpgmewkdlookupjob.Plo \
+ ./$(DEPDIR)/qgpgmewkdrefreshjob.Plo \
./$(DEPDIR)/qgpgmewkspublishjob.Plo \
+ ./$(DEPDIR)/signarchivejob.Plo \
+ ./$(DEPDIR)/signencryptarchivejob.Plo \
./$(DEPDIR)/signencryptjob.Plo \
./$(DEPDIR)/threadedjobmixin.Plo ./$(DEPDIR)/util.Plo \
- ./$(DEPDIR)/wkdlookupresult.Plo
+ ./$(DEPDIR)/wkdlookupresult.Plo ./$(DEPDIR)/wkdrefreshjob.Plo
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = $(libqgpgme_la_SOURCES) $(nodist_libqgpgme_la_SOURCES)
-DIST_SOURCES = $(libqgpgme_la_SOURCES)
+SOURCES = $(libqgpgme_la_SOURCES) $(nodist_libqgpgme_la_SOURCES) \
+ $(libqgpgmeqt6_la_SOURCES) $(nodist_libqgpgmeqt6_la_SOURCES)
+DIST_SOURCES = $(am__libqgpgme_la_SOURCES_DIST) \
+ $(am__libqgpgmeqt6_la_SOURCES_DIST)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
am__DIST_COMMON = $(srcdir)/Makefile.in \
$(srcdir)/QGpgmeConfig-w32.cmake.in.in \
$(srcdir)/QGpgmeConfig.cmake.in.in \
$(srcdir)/QGpgmeConfigVersion.cmake.in \
+ $(srcdir)/QGpgmeQt6Config-w32.cmake.in.in \
+ $(srcdir)/QGpgmeQt6Config.cmake.in.in \
+ $(srcdir)/QGpgmeQt6ConfigVersion.cmake.in \
$(srcdir)/qgpgme_version.h.in $(top_srcdir)/build-aux/depcomp \
$(top_srcdir)/build-aux/mkinstalldirs
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-
-# Makefile.am for GPGMEPP.
-# Copyright (C) 2016 Bundesamt für Sicherheit in der Informationstechnik
-# Software engineering by Intevation GmbH
-#
-# This file is part of GPGMEPP.
-#
-# GPGME-CL is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# GPGME-CL is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA
-lib_LTLIBRARIES = libqgpgme.la
+@WANT_QT5_TRUE@lib_LTLIBRARIES = libqgpgme.la
+@WANT_QT6_TRUE@lib_LTLIBRARIES = libqgpgmeqt6.la
EXTRA_DIST = QGpgmeConfig.cmake.in.in QGpgmeConfigVersion.cmake.in \
qgpgme_debug.h qgpgme_version.h.in \
- QGpgmeConfig-w32.cmake.in.in
+ QGpgmeConfig-w32.cmake.in.in QGpgmeQt6Config.cmake.in.in \
+ QGpgmeQt6Config-w32.cmake.in.in QGpgmeQt6ConfigVersion.cmake.in
qgpgme_sources = \
dataprovider.cpp \
debug.cpp \
+ decryptverifyarchivejob.cpp \
+ encryptarchivejob.cpp \
+ filelistdataprovider.cpp \
job.cpp multideletejob.cpp qgpgmeadduseridjob.cpp \
qgpgmeaddexistingsubkeyjob.cpp \
qgpgmebackend.cpp qgpgmechangeexpiryjob.cpp qgpgmechangeownertrustjob.cpp \
qgpgmechangepasswdjob.cpp qgpgmedecryptjob.cpp \
+ qgpgmedecryptverifyarchivejob.cpp \
qgpgmedecryptverifyjob.cpp qgpgmedeletejob.cpp qgpgmedownloadjob.cpp \
+ qgpgmeencryptarchivejob.cpp \
qgpgmeencryptjob.cpp qgpgmeexportjob.cpp qgpgmeimportfromkeyserverjob.cpp \
qgpgmeimportjob.cpp qgpgmekeygenerationjob.cpp qgpgmekeylistjob.cpp \
- qgpgmelistallkeysjob.cpp qgpgmenewcryptoconfig.cpp \
+ listallkeysjob.cpp qgpgmelistallkeysjob.cpp qgpgmenewcryptoconfig.cpp \
qgpgmereceivekeysjob.cpp \
qgpgmerefreshsmimekeysjob.cpp \
qgpgmerevokekeyjob.cpp \
qgpgmesetprimaryuseridjob.cpp \
+ qgpgmesignarchivejob.cpp \
qgpgmesignencryptjob.cpp \
+ qgpgmesignencryptarchivejob.cpp \
qgpgmesignjob.cpp qgpgmesignkeyjob.cpp qgpgmeverifydetachedjob.cpp \
qgpgmeverifyopaquejob.cpp qgpgmewkdlookupjob.cpp threadedjobmixin.cpp \
+ qgpgmewkdrefreshjob.cpp \
qgpgmekeyformailboxjob.cpp qgpgme_debug.cpp \
qgpgmetofupolicyjob.cpp qgpgmequickjob.cpp \
defaultkeygenerationjob.cpp qgpgmewkspublishjob.cpp \
qgpgmegpgcardjob.cpp changeexpiryjob.cpp encryptjob.cpp importjob.cpp \
+ signarchivejob.cpp \
signencryptjob.cpp \
+ signencryptarchivejob.cpp \
dn.cpp cryptoconfig.cpp wkdlookupresult.cpp \
- util.cpp
+ util.cpp \
+ wkdrefreshjob.cpp
# If you add one here make sure that you also add one in camelcase
dataprovider.h \
debug.h \
decryptjob.h \
+ decryptverifyarchivejob.h \
decryptverifyjob.h \
downloadjob.h \
+ encryptarchivejob.h \
encryptjob.h \
exportjob.h \
+ filelistdataprovider.h \
hierarchicalkeylistjob.h \
job.h \
keyformailboxjob.h \
revokekeyjob.h \
setprimaryuseridjob.h \
specialjob.h \
+ signarchivejob.h \
signjob.h \
signkeyjob.h \
signencryptjob.h \
+ signencryptarchivejob.h \
verifyopaquejob.h \
refreshkeysjob.h \
cryptoconfig.h \
tofupolicyjob.h \
wkdlookupjob.h \
wkdlookupresult.h \
+ wkdrefreshjob.h \
wkspublishjob.h \
gpgcardjob.h \
dn.h
DataProvider \
Debug \
DecryptJob \
+ DecryptVerifyArchiveJob \
DecryptVerifyJob \
DN \
DownloadJob \
+ EncryptArchiveJob \
EncryptJob \
ExportJob \
+ FileListDataProvider \
HierarchicalKeyKistJob \
Job \
MultiDeleteJob \
RevokeKeyJob \
SetPrimaryUserIDJob \
SpecialJob \
+ SignArchiveJob \
SignJob \
SignKeyJob \
+ SignEncryptArchiveJob \
SignEncryptJob \
VerifyOpaqueJob \
RefreshKeysJob \
DefaultKeyGenerationJob \
WKDLookupJob \
WKDLookupResult \
+ WKDRefreshJob \
WKSPublishJob \
TofuPolicyJob \
GpgCardJob
private_qgpgme_headers = \
+ changeexpiryjob_p.h \
+ decryptverifyarchivejob_p.h \
+ encryptarchivejob_p.h \
+ encryptjob_p.h \
+ importjob_p.h \
+ listallkeysjob_p.h \
qgpgme_export.h \
protocol_p.h \
job_p.h \
qgpgmechangeownertrustjob.h \
qgpgmechangepasswdjob.h \
qgpgmedecryptjob.h \
+ qgpgmedecryptverifyarchivejob.h \
qgpgmedecryptverifyjob.h \
qgpgmedeletejob.h \
qgpgmedownloadjob.h \
+ qgpgmeencryptarchivejob.h \
qgpgmeencryptjob.h \
qgpgmeexportjob.h \
qgpgmeimportfromkeyserverjob.h \
qgpgmerefreshsmimekeysjob.h \
qgpgmerevokekeyjob.h \
qgpgmesetprimaryuseridjob.h \
+ qgpgmesignarchivejob.h \
qgpgmesignencryptjob.h \
+ qgpgmesignencryptarchivejob.h \
qgpgmesignjob.h \
qgpgmesignkeyjob.h \
qgpgmeverifydetachedjob.h \
qgpgmeverifyopaquejob.h \
qgpgmewkdlookupjob.h \
+ qgpgmewkdrefreshjob.h \
qgpgmekeyformailboxjob.h \
qgpgmewkspublishjob.h \
qgpgmetofupolicyjob.h \
qgpgmegpgcardjob.h \
qgpgmequickjob.h \
+ signarchivejob_p.h \
+ signencryptjob_p.h \
+ signencryptarchivejob_p.h \
threadedjobmixin.h \
- util.h
+ util.h \
+ wkdrefreshjob_p.h
qgpgme_moc_sources = \
abstractimportjob.moc \
changeownertrustjob.moc \
changepasswdjob.moc \
decryptjob.moc \
+ decryptverifyarchivejob.moc \
decryptverifyjob.moc \
deletejob.moc \
downloadjob.moc \
+ encryptarchivejob.moc \
encryptjob.moc \
exportjob.moc \
hierarchicalkeylistjob.moc \
qgpgmechangeownertrustjob.moc \
qgpgmechangepasswdjob.moc \
qgpgmedecryptjob.moc \
+ qgpgmedecryptverifyarchivejob.moc \
qgpgmedecryptverifyjob.moc \
qgpgmedeletejob.moc \
qgpgmedownloadjob.moc \
+ qgpgmeencryptarchivejob.moc \
qgpgmeencryptjob.moc \
qgpgmeexportjob.moc \
qgpgmeimportfromkeyserverjob.moc \
qgpgmerefreshsmimekeysjob.moc \
qgpgmerevokekeyjob.moc \
qgpgmesetprimaryuseridjob.moc \
+ qgpgmesignarchivejob.moc \
qgpgmesignencryptjob.moc \
+ qgpgmesignencryptarchivejob.moc \
qgpgmesignjob.moc \
qgpgmesignkeyjob.moc \
qgpgmeverifydetachedjob.moc \
qgpgmeverifyopaquejob.moc \
qgpgmewkdlookupjob.moc \
+ qgpgmewkdrefreshjob.moc \
qgpgmewkspublishjob.moc \
tofupolicyjob.moc \
qgpgmetofupolicyjob.moc \
refreshkeysjob.moc \
revokekeyjob.moc \
setprimaryuseridjob.moc \
+ signarchivejob.moc \
signencryptjob.moc \
+ signencryptarchivejob.moc \
signjob.moc \
signkeyjob.moc \
specialjob.moc \
verifydetachedjob.moc \
verifyopaquejob.moc \
wkdlookupjob.moc \
+ wkdrefreshjob.moc \
keyformailboxjob.moc \
wkspublishjob.moc \
qgpgmekeyformailboxjob.moc \
camelcaseincludedir = $(includedir)/QGpgME
camelcaseinclude_HEADERS = $(camelcase_headers)
nodist_qgpgmeinclude_HEADERS = qgpgme_version.h
-libqgpgme_la_SOURCES = $(qgpgme_sources) $(qgpgme_headers) $(private_qgpgme_headers)
-AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \
- @GPGME_QT_CFLAGS@ @GPG_ERROR_CFLAGS@ @LIBASSUAN_CFLAGS@ \
- -DBUILDING_QGPGME -Wsuggest-override \
- -Wzero-as-null-pointer-constant
+@WANT_QT5_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \
+@WANT_QT5_TRUE@ @GPGME_QT5_CFLAGS@ @GPG_ERROR_CFLAGS@ @LIBASSUAN_CFLAGS@ \
+@WANT_QT5_TRUE@ -DBUILDING_QGPGME -Wsuggest-override \
+@WANT_QT5_TRUE@ -Wzero-as-null-pointer-constant
+
+@WANT_QT6_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \
+@WANT_QT6_TRUE@ @GPGME_QT6_CFLAGS@ @GPG_ERROR_CFLAGS@ @LIBASSUAN_CFLAGS@ \
+@WANT_QT6_TRUE@ -DBUILDING_QGPGME -Wsuggest-override \
+@WANT_QT6_TRUE@ -Wzero-as-null-pointer-constant
+
+@WANT_QT5_TRUE@libqgpgme_la_SOURCES = $(qgpgme_sources) $(qgpgme_headers) $(private_qgpgme_headers)
+@WANT_QT5_TRUE@libqgpgme_la_LIBADD = ../../cpp/src/libgpgmepp.la ../../../src/libgpgme.la \
+@WANT_QT5_TRUE@ @LIBASSUAN_LIBS@ @GPG_ERROR_LIBS@ @GPGME_QT5_LIBS@
-libqgpgme_la_LIBADD = ../../cpp/src/libgpgmepp.la ../../../src/libgpgme.la \
- @LIBASSUAN_LIBS@ @GPG_ERROR_LIBS@ @GPGME_QT_LIBS@
+@WANT_QT5_TRUE@libqgpgme_la_LDFLAGS = -no-undefined -version-info \
+@WANT_QT5_TRUE@ @LIBQGPGME_LT_CURRENT@:@LIBQGPGME_LT_REVISION@:@LIBQGPGME_LT_AGE@
-libqgpgme_la_LDFLAGS = -no-undefined -version-info \
- @LIBQGPGME_LT_CURRENT@:@LIBQGPGME_LT_REVISION@:@LIBQGPGME_LT_AGE@
+@WANT_QT6_TRUE@libqgpgmeqt6_la_SOURCES = $(qgpgme_sources) $(qgpgme_headers) $(private_qgpgme_headers)
+@WANT_QT6_TRUE@libqgpgmeqt6_la_LIBADD = ../../cpp/src/libgpgmepp.la ../../../src/libgpgme.la \
+@WANT_QT6_TRUE@ @LIBASSUAN_LIBS@ @GPG_ERROR_LIBS@ @GPGME_QT6_LIBS@
+
+@WANT_QT6_TRUE@libqgpgmeqt6_la_LDFLAGS = -no-undefined -version-info \
+@WANT_QT6_TRUE@ @LIBQGPGME_LT_CURRENT@:@LIBQGPGME_LT_REVISION@:@LIBQGPGME_LT_AGE@
@HAVE_MACOS_SYSTEM_FALSE@libsuffix = .so
@HAVE_MACOS_SYSTEM_TRUE@libsuffix = .dylib
BUILT_SOURCES = $(qgpgme_moc_sources) $(camelcase_headers)
CLEANFILES = $(qgpgme_moc_sources) $(camelcase_headers) QGpgmeConfig.cmake \
qgpgme_version.h QGpgmeConfig.cmake.in \
- QGpgmeConfigVersion.cmake
+ QGpgmeConfig-w32.cmake.in QGpgmeConfigVersion.cmake \
+ QGpgmeQt6Config.cmake.in QGpgmeQt6Config-w32.cmake.in \
+ QGpgmeQt6Config.cmake QGpgmeQt6ConfigVersion.cmake
-nodist_libqgpgme_la_SOURCES = $(qgpgme_moc_sources)
+@WANT_QT5_TRUE@nodist_libqgpgme_la_SOURCES = $(qgpgme_moc_sources)
+@WANT_QT6_TRUE@nodist_libqgpgmeqt6_la_SOURCES = $(qgpgme_moc_sources)
all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-am
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
QGpgmeConfigVersion.cmake: $(top_builddir)/config.status $(srcdir)/QGpgmeConfigVersion.cmake.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+QGpgmeQt6Config-w32.cmake.in: $(top_builddir)/config.status $(srcdir)/QGpgmeQt6Config-w32.cmake.in.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+QGpgmeQt6Config.cmake.in: $(top_builddir)/config.status $(srcdir)/QGpgmeQt6Config.cmake.in.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+QGpgmeQt6ConfigVersion.cmake: $(top_builddir)/config.status $(srcdir)/QGpgmeQt6ConfigVersion.cmake.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
qgpgme_version.h: $(top_builddir)/config.status $(srcdir)/qgpgme_version.h.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
}
libqgpgme.la: $(libqgpgme_la_OBJECTS) $(libqgpgme_la_DEPENDENCIES) $(EXTRA_libqgpgme_la_DEPENDENCIES)
- $(AM_V_CXXLD)$(libqgpgme_la_LINK) -rpath $(libdir) $(libqgpgme_la_OBJECTS) $(libqgpgme_la_LIBADD) $(LIBS)
+ $(AM_V_CXXLD)$(libqgpgme_la_LINK) $(am_libqgpgme_la_rpath) $(libqgpgme_la_OBJECTS) $(libqgpgme_la_LIBADD) $(LIBS)
+
+libqgpgmeqt6.la: $(libqgpgmeqt6_la_OBJECTS) $(libqgpgmeqt6_la_DEPENDENCIES) $(EXTRA_libqgpgmeqt6_la_DEPENDENCIES)
+ $(AM_V_CXXLD)$(libqgpgmeqt6_la_LINK) $(am_libqgpgmeqt6_la_rpath) $(libqgpgmeqt6_la_OBJECTS) $(libqgpgmeqt6_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cryptoconfig.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dataprovider.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decryptverifyarchivejob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/defaultkeygenerationjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dn.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encryptarchivejob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encryptjob.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filelistdataprovider.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/importjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/job.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/listallkeysjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multideletejob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgme_debug.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmeaddexistingsubkeyjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmechangeownertrustjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmechangepasswdjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmedecryptjob.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmedecryptverifyarchivejob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmedecryptverifyjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmedeletejob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmedownloadjob.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmeencryptarchivejob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmeencryptjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmeexportjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmegpgcardjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmerefreshsmimekeysjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmerevokekeyjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmesetprimaryuseridjob.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmesignarchivejob.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmesignencryptarchivejob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmesignencryptjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmesignjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmesignkeyjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmeverifydetachedjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmeverifyopaquejob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmewkdlookupjob.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmewkdrefreshjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qgpgmewkspublishjob.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signarchivejob.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signencryptarchivejob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signencryptjob.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadedjobmixin.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wkdlookupresult.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wkdrefreshjob.Plo@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
-rm -f ./$(DEPDIR)/cryptoconfig.Plo
-rm -f ./$(DEPDIR)/dataprovider.Plo
-rm -f ./$(DEPDIR)/debug.Plo
+ -rm -f ./$(DEPDIR)/decryptverifyarchivejob.Plo
-rm -f ./$(DEPDIR)/defaultkeygenerationjob.Plo
-rm -f ./$(DEPDIR)/dn.Plo
+ -rm -f ./$(DEPDIR)/encryptarchivejob.Plo
-rm -f ./$(DEPDIR)/encryptjob.Plo
+ -rm -f ./$(DEPDIR)/filelistdataprovider.Plo
-rm -f ./$(DEPDIR)/importjob.Plo
-rm -f ./$(DEPDIR)/job.Plo
+ -rm -f ./$(DEPDIR)/listallkeysjob.Plo
-rm -f ./$(DEPDIR)/multideletejob.Plo
-rm -f ./$(DEPDIR)/qgpgme_debug.Plo
-rm -f ./$(DEPDIR)/qgpgmeaddexistingsubkeyjob.Plo
-rm -f ./$(DEPDIR)/qgpgmechangeownertrustjob.Plo
-rm -f ./$(DEPDIR)/qgpgmechangepasswdjob.Plo
-rm -f ./$(DEPDIR)/qgpgmedecryptjob.Plo
+ -rm -f ./$(DEPDIR)/qgpgmedecryptverifyarchivejob.Plo
-rm -f ./$(DEPDIR)/qgpgmedecryptverifyjob.Plo
-rm -f ./$(DEPDIR)/qgpgmedeletejob.Plo
-rm -f ./$(DEPDIR)/qgpgmedownloadjob.Plo
+ -rm -f ./$(DEPDIR)/qgpgmeencryptarchivejob.Plo
-rm -f ./$(DEPDIR)/qgpgmeencryptjob.Plo
-rm -f ./$(DEPDIR)/qgpgmeexportjob.Plo
-rm -f ./$(DEPDIR)/qgpgmegpgcardjob.Plo
-rm -f ./$(DEPDIR)/qgpgmerefreshsmimekeysjob.Plo
-rm -f ./$(DEPDIR)/qgpgmerevokekeyjob.Plo
-rm -f ./$(DEPDIR)/qgpgmesetprimaryuseridjob.Plo
+ -rm -f ./$(DEPDIR)/qgpgmesignarchivejob.Plo
+ -rm -f ./$(DEPDIR)/qgpgmesignencryptarchivejob.Plo
-rm -f ./$(DEPDIR)/qgpgmesignencryptjob.Plo
-rm -f ./$(DEPDIR)/qgpgmesignjob.Plo
-rm -f ./$(DEPDIR)/qgpgmesignkeyjob.Plo
-rm -f ./$(DEPDIR)/qgpgmeverifydetachedjob.Plo
-rm -f ./$(DEPDIR)/qgpgmeverifyopaquejob.Plo
-rm -f ./$(DEPDIR)/qgpgmewkdlookupjob.Plo
+ -rm -f ./$(DEPDIR)/qgpgmewkdrefreshjob.Plo
-rm -f ./$(DEPDIR)/qgpgmewkspublishjob.Plo
+ -rm -f ./$(DEPDIR)/signarchivejob.Plo
+ -rm -f ./$(DEPDIR)/signencryptarchivejob.Plo
-rm -f ./$(DEPDIR)/signencryptjob.Plo
-rm -f ./$(DEPDIR)/threadedjobmixin.Plo
-rm -f ./$(DEPDIR)/util.Plo
-rm -f ./$(DEPDIR)/wkdlookupresult.Plo
+ -rm -f ./$(DEPDIR)/wkdrefreshjob.Plo
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
-rm -f ./$(DEPDIR)/cryptoconfig.Plo
-rm -f ./$(DEPDIR)/dataprovider.Plo
-rm -f ./$(DEPDIR)/debug.Plo
+ -rm -f ./$(DEPDIR)/decryptverifyarchivejob.Plo
-rm -f ./$(DEPDIR)/defaultkeygenerationjob.Plo
-rm -f ./$(DEPDIR)/dn.Plo
+ -rm -f ./$(DEPDIR)/encryptarchivejob.Plo
-rm -f ./$(DEPDIR)/encryptjob.Plo
+ -rm -f ./$(DEPDIR)/filelistdataprovider.Plo
-rm -f ./$(DEPDIR)/importjob.Plo
-rm -f ./$(DEPDIR)/job.Plo
+ -rm -f ./$(DEPDIR)/listallkeysjob.Plo
-rm -f ./$(DEPDIR)/multideletejob.Plo
-rm -f ./$(DEPDIR)/qgpgme_debug.Plo
-rm -f ./$(DEPDIR)/qgpgmeaddexistingsubkeyjob.Plo
-rm -f ./$(DEPDIR)/qgpgmechangeownertrustjob.Plo
-rm -f ./$(DEPDIR)/qgpgmechangepasswdjob.Plo
-rm -f ./$(DEPDIR)/qgpgmedecryptjob.Plo
+ -rm -f ./$(DEPDIR)/qgpgmedecryptverifyarchivejob.Plo
-rm -f ./$(DEPDIR)/qgpgmedecryptverifyjob.Plo
-rm -f ./$(DEPDIR)/qgpgmedeletejob.Plo
-rm -f ./$(DEPDIR)/qgpgmedownloadjob.Plo
+ -rm -f ./$(DEPDIR)/qgpgmeencryptarchivejob.Plo
-rm -f ./$(DEPDIR)/qgpgmeencryptjob.Plo
-rm -f ./$(DEPDIR)/qgpgmeexportjob.Plo
-rm -f ./$(DEPDIR)/qgpgmegpgcardjob.Plo
-rm -f ./$(DEPDIR)/qgpgmerefreshsmimekeysjob.Plo
-rm -f ./$(DEPDIR)/qgpgmerevokekeyjob.Plo
-rm -f ./$(DEPDIR)/qgpgmesetprimaryuseridjob.Plo
+ -rm -f ./$(DEPDIR)/qgpgmesignarchivejob.Plo
+ -rm -f ./$(DEPDIR)/qgpgmesignencryptarchivejob.Plo
-rm -f ./$(DEPDIR)/qgpgmesignencryptjob.Plo
-rm -f ./$(DEPDIR)/qgpgmesignjob.Plo
-rm -f ./$(DEPDIR)/qgpgmesignkeyjob.Plo
-rm -f ./$(DEPDIR)/qgpgmeverifydetachedjob.Plo
-rm -f ./$(DEPDIR)/qgpgmeverifyopaquejob.Plo
-rm -f ./$(DEPDIR)/qgpgmewkdlookupjob.Plo
+ -rm -f ./$(DEPDIR)/qgpgmewkdrefreshjob.Plo
-rm -f ./$(DEPDIR)/qgpgmewkspublishjob.Plo
+ -rm -f ./$(DEPDIR)/signarchivejob.Plo
+ -rm -f ./$(DEPDIR)/signencryptarchivejob.Plo
-rm -f ./$(DEPDIR)/signencryptjob.Plo
-rm -f ./$(DEPDIR)/threadedjobmixin.Plo
-rm -f ./$(DEPDIR)/util.Plo
-rm -f ./$(DEPDIR)/wkdlookupresult.Plo
+ -rm -f ./$(DEPDIR)/wkdrefreshjob.Plo
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
.PRECIOUS: Makefile
-@HAVE_W32_SYSTEM_TRUE@QGpgmeConfig.cmake: QGpgmeConfig-w32.cmake.in
-@HAVE_W32_SYSTEM_TRUE@ sed -e 's|[@]resolved_bindir@|$(bindir)|g' < "$<" | \
-@HAVE_W32_SYSTEM_TRUE@ sed -e 's|[@]resolved_libdir@|$(libdir)|g' | \
-@HAVE_W32_SYSTEM_TRUE@ sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@
-@HAVE_W32_SYSTEM_FALSE@QGpgmeConfig.cmake: QGpgmeConfig.cmake.in
-@HAVE_W32_SYSTEM_FALSE@ sed -e 's|[@]resolved_libdir@|$(libdir)|g' < "$<" | \
-@HAVE_W32_SYSTEM_FALSE@ sed -e 's|[@]libsuffix@|$(libsuffix)|g' | \
-@HAVE_W32_SYSTEM_FALSE@ sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@
+@HAVE_W32_SYSTEM_TRUE@@WANT_QT5_TRUE@QGpgmeConfig.cmake: QGpgmeConfig-w32.cmake.in
+@HAVE_W32_SYSTEM_TRUE@@WANT_QT5_TRUE@ sed -e 's|[@]resolved_bindir@|$(bindir)|g' < "$<" | \
+@HAVE_W32_SYSTEM_TRUE@@WANT_QT5_TRUE@ sed -e 's|[@]resolved_libdir@|$(libdir)|g' | \
+@HAVE_W32_SYSTEM_TRUE@@WANT_QT5_TRUE@ sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@
+@HAVE_W32_SYSTEM_FALSE@@WANT_QT5_TRUE@QGpgmeConfig.cmake: QGpgmeConfig.cmake.in
+@HAVE_W32_SYSTEM_FALSE@@WANT_QT5_TRUE@ sed -e 's|[@]resolved_libdir@|$(libdir)|g' < "$<" | \
+@HAVE_W32_SYSTEM_FALSE@@WANT_QT5_TRUE@ sed -e 's|[@]libsuffix@|$(libsuffix)|g' | \
+@HAVE_W32_SYSTEM_FALSE@@WANT_QT5_TRUE@ sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@
+@HAVE_W32_SYSTEM_TRUE@@WANT_QT6_TRUE@QGpgmeQt6Config.cmake: QGpgmeQt6Config-w32.cmake.in
+@HAVE_W32_SYSTEM_TRUE@@WANT_QT6_TRUE@ sed -e 's|[@]resolved_bindir@|$(bindir)|g' < "$<" | \
+@HAVE_W32_SYSTEM_TRUE@@WANT_QT6_TRUE@ sed -e 's|[@]resolved_libdir@|$(libdir)|g' | \
+@HAVE_W32_SYSTEM_TRUE@@WANT_QT6_TRUE@ sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@
+@HAVE_W32_SYSTEM_FALSE@@WANT_QT6_TRUE@QGpgmeQt6Config.cmake: QGpgmeQt6Config.cmake.in
+@HAVE_W32_SYSTEM_FALSE@@WANT_QT6_TRUE@ sed -e 's|[@]resolved_libdir@|$(libdir)|g' < "$<" | \
+@HAVE_W32_SYSTEM_FALSE@@WANT_QT6_TRUE@ sed -e 's|[@]libsuffix@|$(libsuffix)|g' | \
+@HAVE_W32_SYSTEM_FALSE@@WANT_QT6_TRUE@ sed -e 's|[@]resolved_includedir@|$(includedir)|g' > $@
$(camelcase_headers): Makefile.am
echo -n "#include \"qgpgme/" > "$@"
echo -n "$@" | tr '[:upper:]' '[:lower:]' >> "$@"
echo ".h\"" >> "$@"
-install-cmake-files: QGpgmeConfig.cmake QGpgmeConfigVersion.cmake
- -$(INSTALL) -d $(DESTDIR)$(libdir)/cmake/QGpgme
- $(INSTALL) -m 644 QGpgmeConfig.cmake \
- $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfig.cmake
- $(INSTALL) -m 644 QGpgmeConfigVersion.cmake \
- $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfigVersion.cmake
-
-uninstall-cmake-files:
- -rm $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfigVersion.cmake
- -rm $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfig.cmake
- -rmdir $(DESTDIR)$(libdir)/cmake/QGpgme/
+@WANT_QT5_TRUE@install-cmake-files: QGpgmeConfig.cmake QGpgmeConfigVersion.cmake
+@WANT_QT5_TRUE@ -$(INSTALL) -d $(DESTDIR)$(libdir)/cmake/QGpgme
+@WANT_QT5_TRUE@ $(INSTALL) -m 644 QGpgmeConfig.cmake \
+@WANT_QT5_TRUE@ $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfig.cmake
+@WANT_QT5_TRUE@ $(INSTALL) -m 644 QGpgmeConfigVersion.cmake \
+@WANT_QT5_TRUE@ $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfigVersion.cmake
+
+@WANT_QT5_TRUE@uninstall-cmake-files:
+@WANT_QT5_TRUE@ -rm $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfigVersion.cmake
+@WANT_QT5_TRUE@ -rm $(DESTDIR)$(libdir)/cmake/QGpgme/QGpgmeConfig.cmake
+@WANT_QT5_TRUE@ -rmdir $(DESTDIR)$(libdir)/cmake/QGpgme/
+@WANT_QT6_TRUE@install-cmake-files: QGpgmeQt6Config.cmake QGpgmeQt6ConfigVersion.cmake
+@WANT_QT6_TRUE@ -$(INSTALL) -d $(DESTDIR)$(libdir)/cmake/QGpgmeQt6
+@WANT_QT6_TRUE@ $(INSTALL) -m 644 QGpgmeQt6Config.cmake \
+@WANT_QT6_TRUE@ $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6Config.cmake
+@WANT_QT6_TRUE@ $(INSTALL) -m 644 QGpgmeQt6ConfigVersion.cmake \
+@WANT_QT6_TRUE@ $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6ConfigVersion.cmake
+
+@WANT_QT6_TRUE@uninstall-cmake-files:
+@WANT_QT6_TRUE@ -rm $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6ConfigVersion.cmake
+@WANT_QT6_TRUE@ -rm $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/QGpgmeQt6Config.cmake
+@WANT_QT6_TRUE@ -rmdir $(DESTDIR)$(libdir)/cmake/QGpgmeQt6/
install-data-local: install-cmake-files
IMPORTED_IMPLIB_RELEASE "@resolved_libdir@/libqgpgme.dll.a"
INTERFACE_INCLUDE_DIRECTORIES "@resolved_includedir@/qgpgme;@resolved_includedir@"
INTERFACE_LINK_LIBRARIES "Gpgmepp;Qt5::Core"
- IMPORTED_LOCATION "@resolved_libdir@/libqgpgme-7.dll"
+ IMPORTED_LOCATION "@resolved_bindir@/libqgpgme-15.dll"
)
+get_target_property(_libpath QGpgme IMPORTED_IMPLIB_RELEASE)
+get_target_property(_dllpath QGpgme IMPORTED_LOCATION)
-list(APPEND _IMPORT_CHECK_TARGETS QGgpme )
-list(APPEND _IMPORT_CHECK_FILES_FOR_Qgpgme "@resolved_libdir@/libqgpgme.dll.a" "@resolved_bindir@/libqgpgme-7.dll" )
+list(APPEND _IMPORT_CHECK_TARGETS QGpgme )
+list(APPEND _IMPORT_CHECK_FILES_FOR_QGpgme "${_libpath}" "${_dllpath}" )
if(CMAKE_VERSION VERSION_LESS 2.8.12)
message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
unset(_IMPORT_CHECK_FILES_FOR_${target})
endforeach()
unset(_IMPORT_CHECK_TARGETS)
+unset(_dllpath)
+unset(_libpath)
# This file does not depend on other imported targets which have
# been exported from the same project but in a separate export set.
--- /dev/null
+# CMake Config file for QGpgME for Qt 6
+# Copyright (C) 2016 Intevation GmbH
+#
+# This file is part of GPGME.
+#
+# QGpgME is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# QGpgME is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA
+
+# based on a generated file from cmake.
+# Generated by CMake 3.0.2
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
+ message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget QGpgmeQt6)
+ list(APPEND _expectedTargets ${_expectedTarget})
+ if(NOT TARGET ${_expectedTarget})
+ list(APPEND _targetsNotDefined ${_expectedTarget})
+ endif()
+ if(TARGET ${_expectedTarget})
+ list(APPEND _targetsDefined ${_expectedTarget})
+ endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+ set(CMAKE_IMPORT_FILE_VERSION)
+ cmake_policy(POP)
+ return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+ message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+# Create imported target QGpgmeQt6
+add_library(QGpgmeQt6 SHARED IMPORTED)
+
+set_target_properties(QGpgmeQt6 PROPERTIES
+ IMPORTED_IMPLIB_RELEASE "@resolved_libdir@/libqgpgmeqt6.dll.a"
+ INTERFACE_INCLUDE_DIRECTORIES "@resolved_includedir@/qgpgme;@resolved_includedir@"
+ INTERFACE_LINK_LIBRARIES "Gpgmepp;Qt6::Core"
+ IMPORTED_LOCATION "@resolved_bindir@/libqgpgmeqt6-15.dll"
+)
+get_target_property(_libpath QGpgmeQt6 IMPORTED_IMPLIB_RELEASE)
+get_target_property(_dllpath QGpgmeQt6 IMPORTED_LOCATION)
+
+list(APPEND _IMPORT_CHECK_TARGETS QGpgmeQt6 )
+list(APPEND _IMPORT_CHECK_FILES_FOR_QGpgmeQt6 "${_libpath}" "${_dllpath}" )
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+ message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+ foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+ if(NOT EXISTS "${file}" )
+ message(FATAL_ERROR "The imported target \"${target}\" references the file
+ \"${file}\"
+but this file does not exist. Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+ \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+ endif()
+ endforeach()
+ unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+unset(_dllpath)
+unset(_libpath)
+
+# This file does not depend on other imported targets which have
+# been exported from the same project but in a separate export set.
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)
+
+# Gpgmepp is a requirement for QGpgME
+find_package(Gpgmepp CONFIG REQUIRED)
--- /dev/null
+# CMake Config file for QGpgME for Qt 6
+# Copyright (C) 2016 Intevation GmbH
+#
+# This file is part of GPGME.
+#
+# QGpgME is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# QGpgME is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA
+
+# based on a generated file from cmake.
+# Generated by CMake 3.0.2
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
+ message(FATAL_ERROR "CMake >= 2.6.0 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.6)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_targetsDefined)
+set(_targetsNotDefined)
+set(_expectedTargets)
+foreach(_expectedTarget QGpgmeQt6)
+ list(APPEND _expectedTargets ${_expectedTarget})
+ if(NOT TARGET ${_expectedTarget})
+ list(APPEND _targetsNotDefined ${_expectedTarget})
+ endif()
+ if(TARGET ${_expectedTarget})
+ list(APPEND _targetsDefined ${_expectedTarget})
+ endif()
+endforeach()
+if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
+ set(CMAKE_IMPORT_FILE_VERSION)
+ cmake_policy(POP)
+ return()
+endif()
+if(NOT "${_targetsDefined}" STREQUAL "")
+ message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
+endif()
+unset(_targetsDefined)
+unset(_targetsNotDefined)
+unset(_expectedTargets)
+
+# Create imported target QGpgmeQt6
+add_library(QGpgmeQt6 SHARED IMPORTED)
+
+set_target_properties(QGpgmeQt6 PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "@resolved_includedir@/qgpgme;@resolved_includedir@"
+ INTERFACE_LINK_LIBRARIES "Gpgmepp;Qt6::Core"
+ IMPORTED_LOCATION "@resolved_libdir@/libqgpgmeqt6@libsuffix@"
+)
+
+if(CMAKE_VERSION VERSION_LESS 2.8.12)
+ message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.")
+endif()
+
+# Loop over all imported files and verify that they actually exist
+foreach(target ${_IMPORT_CHECK_TARGETS} )
+ foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
+ if(NOT EXISTS "${file}" )
+ message(FATAL_ERROR "The imported target \"${target}\" references the file
+ \"${file}\"
+but this file does not exist. Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+ \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+ endif()
+ endforeach()
+ unset(_IMPORT_CHECK_FILES_FOR_${target})
+endforeach()
+unset(_IMPORT_CHECK_TARGETS)
+
+# This file does not depend on other imported targets which have
+# been exported from the same project but in a separate export set.
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)
+
+# Gpgmepp is a requirement for QGpgME
+find_package(Gpgmepp CONFIG REQUIRED)
--- /dev/null
+# CMake Version file for QGpgME for Qt 6
+# Copyright (C) 2016 Intevation GmbH
+#
+# This file is part of GPGME.
+#
+# QGpgME is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# QGpgME is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA
+
+# based on a generated file from cmake.
+set(PACKAGE_VERSION "@VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_MICRO@")
+
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}" )
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ if("${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}")
+ set(PACKAGE_VERSION_EXACT TRUE)
+ endif()
+endif()
--- /dev/null
+#include "qgpgme/signarchivejob.h"
--- /dev/null
+#include "qgpgme/signencryptarchivejob.h"
--- /dev/null
+#include "qgpgme/wkdrefreshjob.h"
#endif
#include "changeexpiryjob.h"
-#include "job_p.h"
+#include "changeexpiryjob_p.h"
#include <context.h>
using namespace GpgME;
using namespace QGpgME;
-namespace
-{
-struct ChangeExpiryJobPrivate : public JobPrivate
-{
- ChangeExpiryJobPrivate()
- {
- }
-
- ~ChangeExpiryJobPrivate() override = default;
-
- ChangeExpiryJob::Options m_options = ChangeExpiryJob::Default;
-};
-}
-
void ChangeExpiryJob::setOptions(ChangeExpiryJob::Options options)
{
auto d = jobPrivate<ChangeExpiryJobPrivate>(this);
--- /dev/null
+/*
+ changeexpiryjob_p.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2021,2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_CHANGEEXPIRYJOB_P_H__
+#define __QGPGME_CHANGEEXPIRYJOB_P_H__
+
+#include "job_p.h"
+
+#include "changeexpiryjob.h"
+
+namespace QGpgME
+{
+
+struct ChangeExpiryJobPrivate : public JobPrivate
+{
+ ChangeExpiryJob::Options m_options = ChangeExpiryJob::Default;
+};
+
+}
+
+#endif // __QGPGME_CHANGEEXPIRYJOB_P_H__
QGpgME::CryptoConfigEntry *CryptoConfig::entry(const QString &componentName, const QString &entryName) const
{
const CryptoConfigComponent *comp = component(componentName);
- const QStringList groupNames = comp->groupList();
+ const QStringList groupNames = comp ? comp->groupList() : QStringList();
for (const auto &groupName : groupNames) {
- const CryptoConfigGroup *group = comp ? comp->group(groupName) : nullptr;
- if (CryptoConfigEntry *entry = group->entry(entryName)) {
+ const CryptoConfigGroup *group = comp->group(groupName);
+ CryptoConfigEntry *entry = group ? group->entry(entryName) : nullptr;
+ if (entry) {
return entry;
}
}
#define __QGPGME_DATAPROVIDER_H__
#include "qgpgme_export.h"
+
+#ifdef BUILDING_QGPGME
#include <interfaces/dataprovider.h>
+#else
+#include <gpgme++/interfaces/dataprovider.h>
+#endif
+
#include <memory>
#include <QtCore/QByteArray>
#include "qgpgme_export.h"
+#include <sstream>
+
namespace GpgME
{
class Error;
QGPGME_EXPORT QDebug operator<<(QDebug debug, const GpgME::Error &err);
+namespace QGpgME
+{
+/**
+ * Helper to log GpgME objects which provide the output stream operator.
+ */
+template<class GpgMEClass>
+std::string toLogString(const GpgMEClass &object)
+{
+ std::stringstream stream;
+ stream << object;
+ return stream.str();
+}
+}
+
#endif // QGPGME_DEBUG_H
--- /dev/null
+/*
+ decryptverifyarchivejob.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "decryptverifyarchivejob.h"
+#include "decryptverifyarchivejob_p.h"
+
+#include <engineinfo.h>
+
+using namespace QGpgME;
+
+DecryptVerifyArchiveJob::DecryptVerifyArchiveJob(QObject *parent)
+ : Job{parent}
+{
+}
+
+DecryptVerifyArchiveJob::~DecryptVerifyArchiveJob() = default;
+
+// static
+bool DecryptVerifyArchiveJob::isSupported()
+{
+ static const auto gpgVersion = GpgME::engineInfo(GpgME::GpgEngine).engineVersion();
+ return (gpgVersion >= "2.4.1") || (gpgVersion >= "2.2.42" && gpgVersion < "2.3.0");
+}
+
+void DecryptVerifyArchiveJob::setInputFile(const QString &path)
+{
+ auto d = jobPrivate<DecryptVerifyArchiveJobPrivate>(this);
+ d->m_inputFilePath = path;
+}
+
+QString DecryptVerifyArchiveJob::inputFile() const
+{
+ auto d = jobPrivate<DecryptVerifyArchiveJobPrivate>(this);
+ return d->m_inputFilePath;
+}
+
+void DecryptVerifyArchiveJob::setOutputDirectory(const QString &outputDirectory)
+{
+ auto d = jobPrivate<DecryptVerifyArchiveJobPrivate>(this);
+ d->m_outputDirectory = outputDirectory;
+}
+
+QString DecryptVerifyArchiveJob::outputDirectory() const
+{
+ auto d = jobPrivate<DecryptVerifyArchiveJobPrivate>(this);
+ return d->m_outputDirectory;
+}
+
+#include "decryptverifyarchivejob.moc"
--- /dev/null
+/*
+ decryptverifyarchivejob.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_DECRYPTVERIFYARCHIVEJOB_H__
+#define __QGPGME_DECRYPTVERIFYARCHIVEJOB_H__
+
+#include "job.h"
+
+#ifdef BUILDING_QGPGME
+# include "context.h"
+#else
+# include <gpgme++/context.h>
+#endif
+
+namespace GpgME
+{
+class Key;
+}
+
+namespace QGpgME
+{
+
+/**
+ * Abstract base class for job for decrypting encrypted (signed) archives
+ */
+class QGPGME_EXPORT DecryptVerifyArchiveJob : public Job
+{
+ Q_OBJECT
+protected:
+ explicit DecryptVerifyArchiveJob(QObject *parent);
+public:
+ ~DecryptVerifyArchiveJob() override;
+
+ static bool isSupported();
+
+ /**
+ * Sets the path of the file to read the archive from.
+ *
+ * Used if the job is started with startIt().
+ */
+ void setInputFile(const QString &path);
+ QString inputFile() const;
+
+ /**
+ * Sets the directory the content of the decrypted archive shall be
+ * written to.
+ */
+ void setOutputDirectory(const QString &outputDirectory);
+ QString outputDirectory() const;
+
+ /**
+ * Starts the decryption of an encrypted (and signed) archive.
+ *
+ * Decrypts and extracts the encrypted archive in \a cipherText. If the
+ * archive is signed, then the signature is verified.
+ * If a non-empty output directory was set, then the content of the archive
+ * is extracted into this directory. Otherwise, it is extracted into a
+ * directory named \c GPGARCH_n_ (where \c n is a number).
+ *
+ * Emits result() when the job has finished.
+ */
+ virtual GpgME::Error start(const std::shared_ptr<QIODevice> &cipherText) = 0;
+
+Q_SIGNALS:
+ /**
+ * This signal is emitted whenever gpgtar sends a progress status update for
+ * the number of files. In the scanning phase (i.e. while gpgtar checks
+ * which files to put into the archive), \a current is the current number of
+ * files and \a total is 0. In the writing phase, \a current is the number
+ * of processed files and \a total is the total number of files.
+ */
+ void fileProgress(int current, int total);
+
+ /**
+ * This signal is emitted whenever gpgtar sends a progress status update for
+ * the amount of processed data. It is only emitted in the writing phase.
+ * \a current is the processed amount data and \a total is the total amount
+ * of data to process. Both values never exceed 2^20.
+ */
+ void dataProgress(int current, int total);
+
+ void result(const GpgME::DecryptionResult &decryptionResult,
+ const GpgME::VerificationResult &verificationResult,
+ const QString &auditLogAsHtml = {},
+ const GpgME::Error &auditLogError = {});
+};
+
+}
+
+#endif // __QGPGME_DECRYPTVERIFYARCHIVEJOB_H__
--- /dev/null
+/*
+ decryptverifyarchivejob_p.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_DECRYPTVERIFYARCHIVEJOB_P_H__
+#define __QGPGME_DECRYPTVERIFYARCHIVEJOB_P_H__
+
+#include "job_p.h"
+
+namespace QGpgME
+{
+
+struct DecryptVerifyArchiveJobPrivate : public JobPrivate
+{
+ QString m_inputFilePath;
+ QString m_outputDirectory;
+};
+
+}
+
+#endif // __QGPGME_DECRYPTVERIFYARCHIVEJOB_P_H__
GpgME::Error start(const QString &email, const QString &name);
- QString auditLogAsHtml() const Q_DECL_OVERRIDE;
- GpgME::Error auditLogError() const Q_DECL_OVERRIDE;
+ QString auditLogAsHtml() const override;
+ GpgME::Error auditLogError() const override;
public Q_SLOTS:
- void slotCancel() Q_DECL_OVERRIDE;
+ void slotCancel() override;
Q_SIGNALS:
void result(const GpgME::KeyGenerationResult &result, const QByteArray &pubkeyData,
const QString &auditLogAsHtml, const GpgME::Error &auditLogError);
protected:
- bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE;
+ bool eventFilter(QObject *watched, QEvent *event) override;
private:
class Private;
--- /dev/null
+/*
+ encryptarchivejob.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "encryptarchivejob.h"
+#include "encryptarchivejob_p.h"
+
+#include <engineinfo.h>
+
+using namespace QGpgME;
+
+EncryptArchiveJob::EncryptArchiveJob(QObject *parent)
+ : Job{parent}
+{
+}
+
+EncryptArchiveJob::~EncryptArchiveJob() = default;
+
+// static
+bool EncryptArchiveJob::isSupported()
+{
+ static const auto gpgVersion = GpgME::engineInfo(GpgME::GpgEngine).engineVersion();
+ return (gpgVersion >= "2.4.1") || (gpgVersion >= "2.2.42" && gpgVersion < "2.3.0");
+}
+
+void EncryptArchiveJob::setRecipients(const std::vector<GpgME::Key> &recipients)
+{
+ auto d = jobPrivate<EncryptArchiveJobPrivate>(this);
+ d->m_recipients = recipients;
+}
+
+std::vector<GpgME::Key> EncryptArchiveJob::recipients() const
+{
+ auto d = jobPrivate<EncryptArchiveJobPrivate>(this);
+ return d->m_recipients;
+}
+
+void EncryptArchiveJob::setInputPaths(const std::vector<QString> &paths)
+{
+ auto d = jobPrivate<EncryptArchiveJobPrivate>(this);
+ d->m_inputPaths = paths;
+}
+
+std::vector<QString> EncryptArchiveJob::inputPaths() const
+{
+ auto d = jobPrivate<EncryptArchiveJobPrivate>(this);
+ return d->m_inputPaths;
+}
+
+void EncryptArchiveJob::setOutputFile(const QString &path)
+{
+ auto d = jobPrivate<EncryptArchiveJobPrivate>(this);
+ d->m_outputFilePath = path;
+}
+
+QString EncryptArchiveJob::outputFile() const
+{
+ auto d = jobPrivate<EncryptArchiveJobPrivate>(this);
+ return d->m_outputFilePath;
+}
+
+void EncryptArchiveJob::setEncryptionFlags(GpgME::Context::EncryptionFlags flags)
+{
+ auto d = jobPrivate<EncryptArchiveJobPrivate>(this);
+ d->m_encryptionFlags = static_cast<GpgME::Context::EncryptionFlags>(flags | GpgME::Context::EncryptArchive);
+}
+
+GpgME::Context::EncryptionFlags EncryptArchiveJob::encryptionFlags() const
+{
+ auto d = jobPrivate<EncryptArchiveJobPrivate>(this);
+ return d->m_encryptionFlags;
+}
+
+void EncryptArchiveJob::setBaseDirectory(const QString &baseDirectory)
+{
+ auto d = jobPrivate<EncryptArchiveJobPrivate>(this);
+ d->m_baseDirectory = baseDirectory;
+}
+
+QString EncryptArchiveJob::baseDirectory() const
+{
+ auto d = jobPrivate<EncryptArchiveJobPrivate>(this);
+ return d->m_baseDirectory;
+}
+
+#include "encryptarchivejob.moc"
--- /dev/null
+/*
+ encryptarchivejob.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_ENCRYPTARCHIVEJOB_H__
+#define __QGPGME_ENCRYPTARCHIVEJOB_H__
+
+#include "job.h"
+
+#ifdef BUILDING_QGPGME
+# include "context.h"
+#else
+# include <gpgme++/context.h>
+#endif
+
+namespace GpgME
+{
+class Key;
+}
+
+namespace QGpgME
+{
+
+/**
+ * Abstract base class for job for creating encrypted archives
+ */
+class QGPGME_EXPORT EncryptArchiveJob : public Job
+{
+ Q_OBJECT
+protected:
+ explicit EncryptArchiveJob(QObject *parent);
+public:
+ ~EncryptArchiveJob() override;
+
+ static bool isSupported();
+
+ /**
+ * Sets the keys to use for encrypting the archive.
+ *
+ * Used if the job is started with startIt().
+ */
+ void setRecipients(const std::vector<GpgME::Key> &recipients);
+ std::vector<GpgME::Key> recipients() const;
+
+ /**
+ * Sets the paths of the files and folders to put into the archive.
+ *
+ * If base directory is set, then the paths must be relative to the
+ * base directory.
+ *
+ * Used if the job is started with startIt().
+ */
+ void setInputPaths(const std::vector<QString> &paths);
+ std::vector<QString> inputPaths() const;
+
+ /**
+ * Sets the path of the file to write the created archive to.
+ *
+ * If \a path is a relative path and base directory is set, then the
+ * path is interpreted relative to the base directory.
+ *
+ * Used if the job is started with startIt().
+ *
+ * \note If a file with this path exists, then the job will fail, i.e. you
+ * need to delete an existing file that shall be overwritten before you
+ * start the job.
+ */
+ void setOutputFile(const QString &path);
+ QString outputFile() const;
+
+ /**
+ * Sets the flags to use for encryption. Defaults to \c EncryptArchive.
+ * The \c EncryptArchive flag is always assumed set for this job.
+ *
+ * Used if the job is started with startIt().
+ */
+ void setEncryptionFlags(GpgME::Context::EncryptionFlags flags);
+ GpgME::Context::EncryptionFlags encryptionFlags() const;
+
+ /**
+ * Sets the base directory for the relative paths of the input files and
+ * the output file.
+ */
+ void setBaseDirectory(const QString &baseDirectory);
+ QString baseDirectory() const;
+
+ /**
+ * Starts the creation of an encrypted archive.
+ *
+ * Encrypts the files and directories in \a paths into an archive for the
+ * keys in \a recipients. If \a recipients is empty, then symmetric
+ * encryption is performed. The encrypted archive is written to \a cipherText.
+ *
+ * Emits result() when the job has finished.
+ */
+ virtual GpgME::Error start(const std::vector<GpgME::Key> &recipients,
+ const std::vector<QString> &paths,
+ const std::shared_ptr<QIODevice> &cipherText,
+ const GpgME::Context::EncryptionFlags flags) = 0;
+
+Q_SIGNALS:
+ /**
+ * This signal is emitted whenever gpgtar sends a progress status update for
+ * the number of files. In the scanning phase (i.e. while gpgtar checks
+ * which files to put into the archive), \a current is the current number of
+ * files and \a total is 0. In the writing phase, \a current is the number
+ * of processed files and \a total is the total number of files.
+ */
+ void fileProgress(int current, int total);
+
+ /**
+ * This signal is emitted whenever gpgtar sends a progress status update for
+ * the amount of processed data. It is only emitted in the writing phase.
+ * \a current is the processed amount data and \a total is the total amount
+ * of data to process. Both values never exceed 2^20.
+ */
+ void dataProgress(int current, int total);
+
+ void result(const GpgME::EncryptionResult &result,
+ const QString &auditLogAsHtml = {},
+ const GpgME::Error &auditLogError = {});
+};
+
+}
+
+#endif // __QGPGME_ENCRYPTARCHIVEJOB_H__
--- /dev/null
+/*
+ encryptarchivejob_p.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_ENCRYPTARCHIVEJOB_P_H__
+#define __QGPGME_ENCRYPTARCHIVEJOB_P_H__
+
+#include "job_p.h"
+
+namespace QGpgME
+{
+
+struct EncryptArchiveJobPrivate : public JobPrivate
+{
+ std::vector<GpgME::Key> m_recipients;
+ std::vector<QString> m_inputPaths;
+ QString m_outputFilePath;
+ QString m_baseDirectory;
+ GpgME::Context::EncryptionFlags m_encryptionFlags = GpgME::Context::EncryptArchive;
+};
+
+}
+
+#endif // __QGPGME_ENCRYPTARCHIVEJOB_P_H__
#endif
#include "encryptjob.h"
-#include "job_p.h"
+#include "encryptjob_p.h"
using namespace QGpgME;
-namespace
-{
-struct EncryptJobPrivate : public JobPrivate
-{
- QString m_fileName;
-};
-}
-
void EncryptJob::setFileName(const QString &fileName)
{
auto d = jobPrivate<EncryptJobPrivate>(this);
auto d = jobPrivate<EncryptJobPrivate>(this);
return d->m_fileName;
}
+
+void EncryptJob::setInputEncoding(GpgME::Data::Encoding inputEncoding)
+{
+ auto d = jobPrivate<EncryptJobPrivate>(this);
+ d->m_inputEncoding = inputEncoding;
+}
+
+GpgME::Data::Encoding EncryptJob::inputEncoding() const
+{
+ auto d = jobPrivate<EncryptJobPrivate>(this);
+ return d->m_inputEncoding;
+}
#define __KLEO_ENCRYPTJOB_H__
#include "job.h"
+#include "data.h"
#include <memory>
#include <vector>
void setFileName(const QString &fileName);
QString fileName() const;
+ void setInputEncoding(GpgME::Data::Encoding);
+ GpgME::Data::Encoding inputEncoding() const;
+
/**
Starts the encryption operation. \a recipients is the a list of
keys to encrypt \a plainText to. Empty (null) keys are
--- /dev/null
+/*
+ encryptjob_p.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2022,2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_ENCRYPTJOB_P_H__
+#define __QGPGME_ENCRYPTJOB_P_H__
+
+#include "job_p.h"
+#include "data.h"
+
+namespace QGpgME
+{
+
+struct EncryptJobPrivate : public JobPrivate
+{
+ QString m_fileName;
+ GpgME::Data::Encoding m_inputEncoding;
+};
+
+}
+
+#endif // __QGPGME_ENCRYPTJOB_P_H__
--- /dev/null
+/*
+ filelistdataprovider.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "filelistdataprovider.h"
+
+#include "dataprovider.h"
+
+#include <QString>
+
+#include <error.h>
+
+#include <numeric>
+
+using namespace QGpgME;
+using namespace GpgME;
+
+static QByteArray encodeFilenames(const std::vector<QString> &filenames)
+{
+ QByteArray ret;
+ if (filenames.empty()) {
+ return ret;
+ }
+ // calculate and reserve the needed minimum size of the result
+ const auto addSize = [](unsigned int n, const QString &s) { return n + s.size(); };
+ const unsigned int minSize = filenames.size()
+ + std::accumulate(filenames.cbegin(), filenames.cend(), 0u, addSize);
+ ret.reserve(minSize);
+ // pack the filenames into the byte array
+ for (const auto &f : filenames) {
+ if (!f.isEmpty()) {
+ ret += f.toUtf8() + '\0';
+ }
+ }
+ ret.chop(1); // remove the trailing nul
+ return ret;
+}
+
+FileListDataProvider::FileListDataProvider(const std::vector<QString> &filenames)
+ : mProvider{new QByteArrayDataProvider{encodeFilenames(filenames)}}
+{
+}
+
+FileListDataProvider::~FileListDataProvider() = default;
+
+ssize_t FileListDataProvider::read(void* buffer, size_t bufSize)
+{
+ return mProvider->read(buffer, bufSize);
+}
+
+ssize_t FileListDataProvider::write(const void *, size_t)
+{
+ Error::setSystemError(GPG_ERR_EBADF);
+ return -1;
+}
+
+off_t FileListDataProvider::seek(off_t offset, int whence)
+{
+ return mProvider->seek(offset, whence);
+}
+
+void FileListDataProvider::release()
+{
+ mProvider->release();
+}
--- /dev/null
+/*
+ filelistdataprovider.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_FILELISTDATAPROVIDER_H__
+#define __QGPGME_FILELISTDATAPROVIDER_H__
+
+#include "qgpgme_export.h"
+
+#ifdef BUILDING_QGPGME
+#include <interfaces/dataprovider.h>
+#else
+#include <gpgme++/interfaces/dataprovider.h>
+#endif
+
+#include <memory>
+#include <vector>
+
+class QString;
+
+namespace QGpgME
+{
+
+/**
+ * This read-only data provider simplifies providing a nul-separated list of
+ * UTF-8-encoded filenames, e.g. for creating signed or encrypted archives.
+ */
+class QGPGME_EXPORT FileListDataProvider : public GpgME::DataProvider
+{
+public:
+ explicit FileListDataProvider(const std::vector<QString> &filenames);
+ ~FileListDataProvider() override;
+
+private:
+ bool isSupported(Operation op) const override
+ {
+ return op != Operation::Write;
+ }
+ ssize_t read(void *buffer, size_t bufSize) override;
+ ssize_t write(const void *buffer, size_t bufSize) override;
+ off_t seek(off_t offset, int whence) override;
+ void release() override;
+
+private:
+ std::unique_ptr<GpgME::DataProvider> mProvider;
+};
+
+}
+
+#endif // __QGPGME_FILELISTDATAPROVIDER_H__
The \a secretOnly parameter is ignored by
HierarchicalKeyListJob and must be set to false.
*/
- GpgME::Error start(const QStringList &patterns, bool secretOnly = false) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QStringList &patterns, bool secretOnly = false) override;
GpgME::KeyListResult exec(const QStringList &patterns, bool secretOnly,
- std::vector<GpgME::Key> &keys) Q_DECL_OVERRIDE;
+ std::vector<GpgME::Key> &keys) override;
private Q_SLOTS:
void slotResult(const GpgME::KeyListResult &);
void slotNextKey(const GpgME::Key &key);
/* from Job */
- void slotCancel() Q_DECL_OVERRIDE;
+ void slotCancel() override;
private:
GpgME::Error startAJob();
#endif
#include "importjob.h"
-#include "job_p.h"
+#include "importjob_p.h"
#include <context.h>
using namespace GpgME;
using namespace QGpgME;
-namespace
-{
-struct ImportJobPrivate : public JobPrivate
-{
- ImportJobPrivate()
- {
- }
-
- ~ImportJobPrivate() override = default;
-
- QString m_importFilter;
- Key::Origin m_keyOrigin = Key::OriginUnknown;
- QString m_keyOriginUrl;
-};
-}
-
void QGpgME::ImportJob::setImportFilter(const QString &filter)
{
const auto d = jobPrivate<ImportJobPrivate>(this);
Copyright (c) 2004 Klarälvdalens Datakonsult AB
Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
Software engineering by Intevation GmbH
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
QGpgME is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
virtual GpgME::Error start(const QByteArray &keyData) = 0;
virtual GpgME::ImportResult exec(const QByteArray &keyData) = 0;
+
+ virtual GpgME::Error startLater(const QByteArray &keyData) = 0;
};
}
--- /dev/null
+/*
+ importjob_p.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2021,2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_IMPORTJOB_P_H__
+#define __QGPGME_IMPORTJOB_P_H__
+
+#include "job_p.h"
+
+#include <key.h>
+
+namespace QGpgME
+{
+
+struct ImportJobPrivate : public JobPrivate
+{
+ QString m_importFilter;
+ GpgME::Key::Origin m_keyOrigin = GpgME::Key::OriginUnknown;
+ QString m_keyOriginUrl;
+};
+
+}
+
+#endif // __QGPGME_IMPORTJOB_P_H__
ref = std::move(d);
}
-QGpgME::JobPrivate *QGpgME::getJobPrivate(const Job *job)
+const QGpgME::JobPrivate *QGpgME::getJobPrivate(const Job *job)
+{
+ return d_func()->operator[](job).get();
+}
+
+QGpgME::JobPrivate *QGpgME::getJobPrivate(Job *job)
{
return d_func()->operator[](job).get();
}
return QGpgME::g_context_map.value (job, nullptr);
}
+GpgME::Error QGpgME::Job::startIt()
+{
+ auto d = getJobPrivate(this);
+ Q_ASSERT(d && "This Job class has no JobPrivate class");
+ return d->startIt();
+}
+
+void QGpgME::Job::startNow()
+{
+ auto d = getJobPrivate(this);
+ Q_ASSERT(d && "This Job class has no JobPrivate class");
+ d->startNow();
+}
+
#define make_job_subclass_ext(x,y) \
QGpgME::x::x( QObject * parent ) : y( parent ) {} \
QGpgME::x::~x() {}
*/
static GpgME::Context *context(Job *job);
+ /** Starts the job.
+ *
+ * Starts the job with the values set for the concrete job.
+ */
+ GpgME::Error startIt();
+
+ /** Starts a deferred job.
+ *
+ * The job needs to have been prepared for a deferred start by calling the
+ * startLater() function instead of the start() function of a leaf class.
+ */
+ void startNow();
+
public Q_SLOTS:
virtual void slotCancel() = 0;
Q_SIGNALS:
- void progress(const QString &what, int current, int total);
+ /**
+ * This signal is emitted whenever the backend sends a progress status
+ * message. For most jobs, \a current is the amount of processed data
+ * (or files) and \a total is the total amount of data (of files). If
+ * \a total is 0, then the total amount is unknown or not yet known.
+ * For GnuPG 2.1.13 and later, \a current and \a total do not exceed
+ * 2^20, i.e. for larger values they are scaled down and you should not
+ * assume that they represent absolute values.
+ *
+ * Check the documentation on progress in the GpgME manual for details.
+ *
+ * Note: Some jobs provide special progress signals, e.g. for file-count-
+ * or data-based progress.
+ */
+ void jobProgress(int current, int total);
+
+ /**
+ * This signal is emitted whenever the backend sends a progress status
+ * message. Compared to the jobProgress signal this signal also provides the
+ * what value and the type value reported by the backend. Usually, these
+ * values can safely be ignored, so that you are better off using the
+ * simpler jobProgress signal.
+ * Check the documentation on progress in the GpgME manual for details
+ * on what and type.
+ *
+ * Note: Some jobs provide special progress signals, so that you do not
+ * have to deal with what and type yourself.
+ */
+ void rawProgress(const QString &what, int type, int current, int total);
+
+ QGPGME_DEPRECATED void progress(const QString &what, int current, int total);
+
void done();
};
#include "job.h"
+#include "qgpgme_debug.h"
+
#include <memory>
namespace QGpgME
{
public:
virtual ~JobPrivate() {}
+
+ virtual GpgME::Error startIt() = 0;
+
+ virtual void startNow() = 0;
};
// Setter and getters for the externally stored pimpl instances of jobs
// BCI: Add a real d-pointer to Job
void setJobPrivate(const Job *job, std::unique_ptr<JobPrivate> d);
-JobPrivate *getJobPrivate(const Job *job);
+const JobPrivate *getJobPrivate(const Job *job);
+
+JobPrivate *getJobPrivate(Job *job);
template <typename T>
-static T *jobPrivate(const Job *job) {
+static const T *jobPrivate(const Job *job) {
+ auto d = getJobPrivate(job);
+ return dynamic_cast<const T *>(d);
+}
+
+template <typename T>
+static T *jobPrivate(Job *job) {
auto d = getJobPrivate(job);
- if (!d) {
- std::unique_ptr<T> ref{new T};
- d = ref.get();
- setJobPrivate(job, std::move(ref));
- }
return dynamic_cast<T *>(d);
}
+// Helper for the archive job classes
+template<class JobClass>
+void emitArchiveProgressSignals(JobClass *job, const QString &what, int type, int current, int total)
+{
+ if (what != QLatin1String{"gpgtar"}) {
+ return;
+ }
+ switch (type) {
+ case 'c':
+ Q_EMIT job->fileProgress(current, total);
+ break;
+ case 's':
+ Q_EMIT job->dataProgress(current, total);
+ break;
+ default:
+ qCDebug(QGPGME_LOG) << job << __func__ << "Received progress for gpgtar with unknown type" << char(type);
+ };
+}
+
}
#endif // __QGPGME_JOB_P_H__
--- /dev/null
+/*
+ listallkeysjob.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2022 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "listallkeysjob.h"
+#include "listallkeysjob_p.h"
+
+using namespace QGpgME;
+
+void ListAllKeysJob::setOptions(ListAllKeysJob::Options options)
+{
+ auto d = jobPrivate<ListAllKeysJobPrivate>(this);
+ d->m_options = options;
+}
+
+ListAllKeysJob::Options ListAllKeysJob::options() const
+{
+ auto d = jobPrivate<ListAllKeysJobPrivate>(this);
+ return d->m_options;
+}
Copyright (c) 2004 Klarälvdalens Datakonsult AB
Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
Software engineering by Intevation GmbH
+ Copyright (c) 2022 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
QGpgME is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
class QGPGME_EXPORT ListAllKeysJob : public Job
{
Q_OBJECT
+public:
+ enum Option {
+ Default = 0x00,
+ DisableAutomaticTrustDatabaseCheck = 0x01,
+ };
+ Q_DECLARE_FLAGS(Options, Option)
+
protected:
explicit ListAllKeysJob(QObject *parent);
public:
~ListAllKeysJob();
+ void setOptions(Options options);
+ Options options() const;
+
/**
Starts the listallkeys operation. In general, all keys are
returned (however, the backend is free to truncate the result
void result(const GpgME::KeyListResult &result, const std::vector<GpgME::Key> &pub = std::vector<GpgME::Key>(), const std::vector<GpgME::Key> &sec = std::vector<GpgME::Key>(), const QString &auditLogAsHtml = QString(), const GpgME::Error &auditLogError = GpgME::Error());
};
+Q_DECLARE_OPERATORS_FOR_FLAGS(ListAllKeysJob::Options)
+
}
#endif // __KLEO_LISTALLKEYSJOB_H__
--- /dev/null
+/*
+ listallkeysjob_p.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2022,2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_LISTALLKEYSJOB_P_H__
+#define __QGPGME_LISTALLKEYSJOB_P_H__
+
+#include "job_p.h"
+
+#include "listallkeysjob.h"
+
+namespace QGpgME
+{
+
+struct ListAllKeysJobPrivate : public JobPrivate
+{
+ ListAllKeysJob::Options m_options = ListAllKeysJob::Default;
+};
+
+}
+
+#endif // __QGPGME_LISTALLKEYSJOB_P_H__
const int current = mIt - mKeys.begin();
const int total = mKeys.size();
- Q_EMIT progress(QStringLiteral("%1/%2").arg(current).arg(total), current, total);
+ const QString what = QStringLiteral("%1/%2").arg(current).arg(total);
+ Q_EMIT jobProgress(current, total);
+ Q_EMIT rawProgress(what, '?', current, total);
+ QT_WARNING_PUSH
+ QT_WARNING_DISABLE_DEPRECATED
+ Q_EMIT progress(what, current, total);
+ QT_WARNING_POP
}
GpgME::Error QGpgME::MultiDeleteJob::startAJob()
GpgME::Error start(const std::vector<GpgME::Key> &keys, bool allowSecretKeyDeletion = false);
/* from Job */
- void slotCancel() Q_DECL_OVERRIDE;
+ void slotCancel() override;
Q_SIGNALS:
void result(const GpgME::Error &result, const GpgME::Key &errorKey);
class ExportJob;
class DownloadJob;
class DeleteJob;
+class EncryptArchiveJob;
class EncryptJob;
class DecryptJob;
+class SignArchiveJob;
+class SignEncryptArchiveJob;
class SignJob;
class SignKeyJob;
class VerifyDetachedJob;
class VerifyOpaqueJob;
class SignEncryptJob;
+class DecryptVerifyArchiveJob;
class DecryptVerifyJob;
class RefreshKeysJob;
class ChangeExpiryJob;
class ReceiveKeysJob;
class RevokeKeyJob;
class SetPrimaryUserIDJob;
+class WKDRefreshJob;
/** The main entry point for QGpgME Comes in OpenPGP and SMIME(CMS) flavors.
*
* OpenPGP key.
*/
virtual SetPrimaryUserIDJob *setPrimaryUserIDJob() const = 0;
+
+ virtual EncryptArchiveJob *encryptArchiveJob(bool armor = false) const = 0;
+ virtual SignArchiveJob *signArchiveJob(bool armor = false) const = 0;
+ virtual SignEncryptArchiveJob *signEncryptArchiveJob(bool armor = false) const = 0;
+ virtual DecryptVerifyArchiveJob *decryptVerifyArchiveJob() const = 0;
+
+ virtual WKDRefreshJob *wkdRefreshJob() const = 0;
};
/** Obtain a reference to the OpenPGP Protocol.
#include "qgpgmekeylistjob.h"
#include "qgpgmelistallkeysjob.h"
#include "qgpgmedecryptjob.h"
+#include "qgpgmedecryptverifyarchivejob.h"
#include "qgpgmedecryptverifyjob.h"
#include "qgpgmerefreshsmimekeysjob.h"
#include "qgpgmedeletejob.h"
#include "qgpgmedownloadjob.h"
#include "qgpgmesignencryptjob.h"
+#include "qgpgmeencryptarchivejob.h"
#include "qgpgmeencryptjob.h"
+#include "qgpgmesignarchivejob.h"
+#include "qgpgmesignencryptarchivejob.h"
#include "qgpgmesignjob.h"
#include "qgpgmesignkeyjob.h"
#include "qgpgmeexportjob.h"
#include "qgpgmereceivekeysjob.h"
#include "qgpgmerevokekeyjob.h"
#include "qgpgmesetprimaryuseridjob.h"
+#include "qgpgmewkdrefreshjob.h"
namespace
{
public:
explicit Protocol(GpgME::Protocol proto) : mProtocol(proto) {}
- QString name() const Q_DECL_OVERRIDE
+ QString name() const override
{
switch (mProtocol) {
case GpgME::OpenPGP: return QStringLiteral("OpenPGP");
}
}
- QString displayName() const Q_DECL_OVERRIDE
+ QString displayName() const override
{
// ah (2.4.16): Where is this used and isn't this inverted
// with name
}
}
- QGpgME::SpecialJob *specialJob(const char *, const QMap<QString, QVariant> &) const Q_DECL_OVERRIDE
+ QGpgME::SpecialJob *specialJob(const char *, const QMap<QString, QVariant> &) const override
{
return nullptr;
}
- QGpgME::KeyListJob *keyListJob(bool remote, bool includeSigs, bool validate) const Q_DECL_OVERRIDE
+ QGpgME::KeyListJob *keyListJob(bool remote, bool includeSigs, bool validate) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEKeyListJob(context);
}
- QGpgME::ListAllKeysJob *listAllKeysJob(bool includeSigs, bool validate) const Q_DECL_OVERRIDE
+ QGpgME::ListAllKeysJob *listAllKeysJob(bool includeSigs, bool validate) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEListAllKeysJob(context);
}
- QGpgME::EncryptJob *encryptJob(bool armor, bool textmode) const Q_DECL_OVERRIDE
+ QGpgME::EncryptJob *encryptJob(bool armor, bool textmode) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEEncryptJob(context);
}
- QGpgME::DecryptJob *decryptJob() const Q_DECL_OVERRIDE
+ QGpgME::DecryptJob *decryptJob() const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEDecryptJob(context);
}
- QGpgME::SignJob *signJob(bool armor, bool textMode) const Q_DECL_OVERRIDE
+ QGpgME::SignJob *signJob(bool armor, bool textMode) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMESignJob(context);
}
- QGpgME::VerifyDetachedJob *verifyDetachedJob(bool textMode) const Q_DECL_OVERRIDE
+ QGpgME::VerifyDetachedJob *verifyDetachedJob(bool textMode) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEVerifyDetachedJob(context);
}
- QGpgME::VerifyOpaqueJob *verifyOpaqueJob(bool textMode) const Q_DECL_OVERRIDE
+ QGpgME::VerifyOpaqueJob *verifyOpaqueJob(bool textMode) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEVerifyOpaqueJob(context);
}
- QGpgME::KeyGenerationJob *keyGenerationJob() const Q_DECL_OVERRIDE
+ QGpgME::KeyGenerationJob *keyGenerationJob() const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEKeyGenerationJob(context);
}
- QGpgME::ImportJob *importJob() const Q_DECL_OVERRIDE
+ QGpgME::ImportJob *importJob() const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEImportJob(context);
}
- QGpgME::ImportFromKeyserverJob *importFromKeyserverJob() const Q_DECL_OVERRIDE
+ QGpgME::ImportFromKeyserverJob *importFromKeyserverJob() const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEReceiveKeysJob{context};
}
- QGpgME::ExportJob *publicKeyExportJob(bool armor) const Q_DECL_OVERRIDE
+ QGpgME::ExportJob *publicKeyExportJob(bool armor) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEExportJob(context);
}
- QGpgME::ExportJob *secretKeyExportJob(bool armor, const QString &) const Q_DECL_OVERRIDE
+ QGpgME::ExportJob *secretKeyExportJob(bool armor, const QString &) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEExportJob(context, GpgME::Context::ExportSecret);
}
- QGpgME::ExportJob *secretSubkeyExportJob(bool armor) const Q_DECL_OVERRIDE
+ QGpgME::ExportJob *secretSubkeyExportJob(bool armor) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEExportJob(context, GpgME::Context::ExportSecretSubkey);
}
- QGpgME::RefreshKeysJob *refreshKeysJob() const Q_DECL_OVERRIDE
+ QGpgME::RefreshKeysJob *refreshKeysJob() const override
{
if (mProtocol != GpgME::CMS) {
return nullptr;
return new QGpgME::QGpgMERefreshSMIMEKeysJob;
}
- QGpgME::DownloadJob *downloadJob(bool armor) const Q_DECL_OVERRIDE
+ QGpgME::DownloadJob *downloadJob(bool armor) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEDownloadJob(context);
}
- QGpgME::DeleteJob *deleteJob() const Q_DECL_OVERRIDE
+ QGpgME::DeleteJob *deleteJob() const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEDeleteJob(context);
}
- QGpgME::SignEncryptJob *signEncryptJob(bool armor, bool textMode) const Q_DECL_OVERRIDE
+ QGpgME::SignEncryptJob *signEncryptJob(bool armor, bool textMode) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMESignEncryptJob(context);
}
- QGpgME::DecryptVerifyJob *decryptVerifyJob(bool textMode) const Q_DECL_OVERRIDE
+ QGpgME::DecryptVerifyJob *decryptVerifyJob(bool textMode) const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEDecryptVerifyJob(context);
}
- QGpgME::ChangeExpiryJob *changeExpiryJob() const Q_DECL_OVERRIDE
+ QGpgME::ChangeExpiryJob *changeExpiryJob() const override
{
if (mProtocol != GpgME::OpenPGP) {
return nullptr; // only supported by gpg
return new QGpgME::QGpgMEChangeExpiryJob(context);
}
- QGpgME::ChangePasswdJob *changePasswdJob() const Q_DECL_OVERRIDE
+ QGpgME::ChangePasswdJob *changePasswdJob() const override
{
if (!GpgME::hasFeature(GpgME::PasswdFeature, 0)) {
return nullptr;
return new QGpgME::QGpgMEChangePasswdJob(context);
}
- QGpgME::SignKeyJob *signKeyJob() const Q_DECL_OVERRIDE
+ QGpgME::SignKeyJob *signKeyJob() const override
{
if (mProtocol != GpgME::OpenPGP) {
return nullptr; // only supported by gpg
return new QGpgME::QGpgMESignKeyJob(context);
}
- QGpgME::ChangeOwnerTrustJob *changeOwnerTrustJob() const Q_DECL_OVERRIDE
+ QGpgME::ChangeOwnerTrustJob *changeOwnerTrustJob() const override
{
if (mProtocol != GpgME::OpenPGP) {
return nullptr; // only supported by gpg
return new QGpgME::QGpgMEAddExistingSubkeyJob{context};
}
- QGpgME::AddUserIDJob *addUserIDJob() const Q_DECL_OVERRIDE
+ QGpgME::AddUserIDJob *addUserIDJob() const override
{
if (mProtocol != GpgME::OpenPGP) {
return nullptr; // only supported by gpg
return new QGpgME::QGpgMEAddUserIDJob(context);
}
- QGpgME::KeyListJob *locateKeysJob() const Q_DECL_OVERRIDE
+ QGpgME::KeyListJob *locateKeysJob() const override
{
if (mProtocol != GpgME::OpenPGP) {
return nullptr;
return new QGpgME::QGpgMEKeyListJob(context);
}
- QGpgME::KeyForMailboxJob *keyForMailboxJob() const Q_DECL_OVERRIDE
+ QGpgME::KeyForMailboxJob *keyForMailboxJob() const override
{
GpgME::Context *context = GpgME::Context::createForProtocol(mProtocol);
if (!context) {
return new QGpgME::QGpgMEKeyForMailboxJob(context);
}
- QGpgME::WKDLookupJob *wkdLookupJob() const Q_DECL_OVERRIDE
+ QGpgME::WKDLookupJob *wkdLookupJob() const override
{
if (mProtocol != GpgME::OpenPGP) {
return nullptr;
return new QGpgME::QGpgMEWKDLookupJob(context.release());
}
- QGpgME::WKSPublishJob *wksPublishJob() const Q_DECL_OVERRIDE
+ QGpgME::WKSPublishJob *wksPublishJob() const override
{
if (mProtocol != GpgME::OpenPGP) {
return nullptr;
return new QGpgME::QGpgMEWKSPublishJob(context.release());
}
- QGpgME::TofuPolicyJob *tofuPolicyJob() const Q_DECL_OVERRIDE
+ QGpgME::TofuPolicyJob *tofuPolicyJob() const override
{
if (mProtocol != GpgME::OpenPGP) {
return nullptr;
return new QGpgME::QGpgMETofuPolicyJob(context);
}
- QGpgME::QuickJob *quickJob() const Q_DECL_OVERRIDE
+ QGpgME::QuickJob *quickJob() const override
{
if (mProtocol != GpgME::OpenPGP) {
return nullptr;
return new QGpgME::QGpgMEQuickJob(context);
}
- QGpgME::RevokeKeyJob *revokeKeyJob() const Q_DECL_OVERRIDE
+ QGpgME::RevokeKeyJob *revokeKeyJob() const override
{
if (mProtocol != GpgME::OpenPGP) {
return nullptr;
}
return new QGpgME::QGpgMESetPrimaryUserIDJob{context};
}
+
+ QGpgME::EncryptArchiveJob *encryptArchiveJob(bool armor) const override
+ {
+ if (mProtocol != GpgME::OpenPGP) {
+ return nullptr;
+ }
+ if (auto context = GpgME::Context::createForProtocol(mProtocol)) {
+ context->setArmor(armor);
+ return new QGpgME::QGpgMEEncryptArchiveJob{context};
+ }
+ return nullptr;
+ }
+
+ QGpgME::SignArchiveJob *signArchiveJob(bool armor) const override
+ {
+ if (mProtocol != GpgME::OpenPGP) {
+ return nullptr;
+ }
+ if (auto context = GpgME::Context::createForProtocol(mProtocol)) {
+ context->setArmor(armor);
+ return new QGpgME::QGpgMESignArchiveJob{context};
+ }
+ return nullptr;
+ }
+
+ QGpgME::SignEncryptArchiveJob *signEncryptArchiveJob(bool armor) const override
+ {
+ if (mProtocol != GpgME::OpenPGP) {
+ return nullptr;
+ }
+ if (auto context = GpgME::Context::createForProtocol(mProtocol)) {
+ context->setArmor(armor);
+ return new QGpgME::QGpgMESignEncryptArchiveJob{context};
+ }
+ return nullptr;
+ }
+
+ QGpgME::DecryptVerifyArchiveJob *decryptVerifyArchiveJob() const override
+ {
+ if (mProtocol != GpgME::OpenPGP) {
+ return nullptr;
+ }
+ if (auto context = GpgME::Context::createForProtocol(mProtocol)) {
+ return new QGpgME::QGpgMEDecryptVerifyArchiveJob{context};
+ }
+ return nullptr;
+ }
+
+ QGpgME::WKDRefreshJob *wkdRefreshJob() const override
+ {
+ if (mProtocol != GpgME::OpenPGP) {
+ return nullptr;
+ }
+ if (auto context = GpgME::Context::createForProtocol(mProtocol)) {
+ return new QGpgME::QGpgMEWKDRefreshJob{context};
+ }
+ return nullptr;
+ }
};
}
std::unique_ptr<GpgAddExistingSubkeyEditInteractor> interactor{new GpgAddExistingSubkeyEditInteractor{subkey.keyGrip()}};
if (!subkey.neverExpires()) {
- const auto expiry = QDateTime::fromSecsSinceEpoch(subkey.expirationTime(), Qt::UTC).toString(u"yyyyMMdd'T'hhmmss").toStdString();
+ const auto expiry = QDateTime::fromSecsSinceEpoch(uint_least32_t(subkey.expirationTime()),
+ Qt::UTC).toString(u"yyyyMMdd'T'hhmmss").toStdString();
interactor->setExpiry(expiry);
}
~QGpgMEAddUserIDJob();
/* from AddUserIDJob */
- GpgME::Error start(const GpgME::Key &key, const QString &name, const QString &email, const QString &comment) Q_DECL_OVERRIDE;
+ GpgME::Error start(const GpgME::Key &key, const QString &name, const QString &email, const QString &comment) override;
};
}
Copyright (c) 2008 Klarälvdalens Datakonsult AB
Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
Software engineering by Intevation GmbH
- Copyright (c) 2021 g10 Code GmbH
+ Copyright (c) 2021,2023 g10 Code GmbH
Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
QGpgME is free software; you can redistribute it and/or
#include "qgpgmechangeexpiryjob.h"
+#include "changeexpiryjob_p.h"
+
#include "context.h"
#include "key.h"
using namespace QGpgME;
using namespace GpgME;
+namespace
+{
+
+class QGpgMEChangeExpiryJobPrivate : public ChangeExpiryJobPrivate
+{
+ QGpgMEChangeExpiryJob *q = nullptr;
+
+public:
+ QGpgMEChangeExpiryJobPrivate(QGpgMEChangeExpiryJob *qq)
+ : q{qq}
+ {
+ }
+
+ ~QGpgMEChangeExpiryJobPrivate() override = default;
+
+private:
+ GpgME::Error startIt() override
+ {
+ Q_ASSERT(!"Not supported by this Job class.");
+ return Error::fromCode(GPG_ERR_NOT_SUPPORTED);
+ }
+
+ void startNow() override
+ {
+ q->run();
+ }
+};
+
+}
+
QGpgMEChangeExpiryJob::QGpgMEChangeExpiryJob(Context *context)
: mixin_type(context)
{
+ setJobPrivate(this, std::unique_ptr<QGpgMEChangeExpiryJobPrivate>{new QGpgMEChangeExpiryJobPrivate{this}});
lateInitialization();
}
if (subkeys.empty() || (options & ChangeExpiryJob::UpdatePrimaryKey)) {
// update the expiration date of the primary key
auto err = ctx->setExpire(key, expires);
- if (err) {
+ if (err || err.isCanceled()) {
return std::make_tuple(err, QString(), Error());
}
}
~QGpgMEChangeExpiryJob();
/* from ChangeExpiryJob */
- GpgME::Error start(const GpgME::Key &key, const QDateTime &expiry) Q_DECL_OVERRIDE;
+ GpgME::Error start(const GpgME::Key &key, const QDateTime &expiry) override;
/* from ChangeExpiryJob */
GpgME::Error start(const GpgME::Key &key, const QDateTime &expiry,
- const std::vector<GpgME::Subkey> &subkeys) Q_DECL_OVERRIDE;
+ const std::vector<GpgME::Subkey> &subkeys) override;
};
~QGpgMEChangeOwnerTrustJob();
/* from ChangeOwnerTrustJob */
- GpgME::Error start(const GpgME::Key &key, GpgME::Key::OwnerTrust trust) Q_DECL_OVERRIDE;
+ GpgME::Error start(const GpgME::Key &key, GpgME::Key::OwnerTrust trust) override;
};
}
~QGpgMEChangePasswdJob();
/* from ChangePasswdJob */
- GpgME::Error start(const GpgME::Key &key) Q_DECL_OVERRIDE;
+ GpgME::Error start(const GpgME::Key &key) override;
};
}
const _detail::ToThreadMover ptMover(plainText, thread);
QGpgME::QIODeviceDataProvider in(cipherText);
- const Data indata(&in);
+ Data indata(&in);
+ if (!cipherText->isSequential()) {
+ indata.setSizeHint(cipherText->size());
+ }
if (!plainText) {
QGpgME::QByteArrayDataProvider out;
~QGpgMEDecryptJob();
/* from DecryptJob */
- GpgME::Error start(const QByteArray &cipherText) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QByteArray &cipherText) override;
/* from DecryptJob */
- void start(const std::shared_ptr<QIODevice> &cipherText, const std::shared_ptr<QIODevice> &plainText) Q_DECL_OVERRIDE;
+ void start(const std::shared_ptr<QIODevice> &cipherText, const std::shared_ptr<QIODevice> &plainText) override;
/* from DecryptJob */
GpgME::DecryptionResult exec(const QByteArray &cipherText,
- QByteArray &plainText) Q_DECL_OVERRIDE;
+ QByteArray &plainText) override;
/* from ThreadedJobMixin */
- void resultHook(const result_type &r) Q_DECL_OVERRIDE;
+ void resultHook(const result_type &r) override;
private:
GpgME::DecryptionResult mResult;
--- /dev/null
+/*
+ qgpgmedecryptverifyarchivejob.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2004,2008 Klarälvdalens Datakonsult AB
+ Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
+ Software engineering by Intevation GmbH
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "qgpgmedecryptverifyarchivejob.h"
+
+#include "dataprovider.h"
+#include "decryptverifyarchivejob_p.h"
+
+#include <QFile>
+
+#include <data.h>
+
+using namespace QGpgME;
+using namespace GpgME;
+
+namespace
+{
+
+class QGpgMEDecryptVerifyArchiveJobPrivate : public DecryptVerifyArchiveJobPrivate
+{
+ QGpgMEDecryptVerifyArchiveJob *q = nullptr;
+
+public:
+ QGpgMEDecryptVerifyArchiveJobPrivate(QGpgMEDecryptVerifyArchiveJob *qq)
+ : q{qq}
+ {
+ }
+
+ ~QGpgMEDecryptVerifyArchiveJobPrivate() override = default;
+
+private:
+ GpgME::Error startIt() override;
+
+ void startNow() override
+ {
+ q->run();
+ }
+};
+
+}
+
+QGpgMEDecryptVerifyArchiveJob::QGpgMEDecryptVerifyArchiveJob(Context *context)
+ : mixin_type{context}
+{
+ setJobPrivate(this, std::unique_ptr<QGpgMEDecryptVerifyArchiveJobPrivate>{new QGpgMEDecryptVerifyArchiveJobPrivate{this}});
+ lateInitialization();
+ connect(this, &Job::rawProgress, this, [this](const QString &what, int type, int current, int total) {
+ emitArchiveProgressSignals(this, what, type, current, total);
+ });
+}
+
+static QGpgMEDecryptVerifyArchiveJob::result_type decrypt_verify(Context *ctx,
+ const GpgME::Data &indata,
+ const QString &outputDirectory)
+{
+ Data outdata;
+ if (!outputDirectory.isEmpty()) {
+ outdata.setFileName(outputDirectory.toStdString());
+ }
+
+ const auto res = ctx->decryptAndVerify(indata, outdata, Context::DecryptArchive);
+ Error ae;
+ const QString log = _detail::audit_log_as_html(ctx, ae);
+ return std::make_tuple(res.first, res.second, log, ae);
+}
+
+static QGpgMEDecryptVerifyArchiveJob::result_type decrypt_verify_from_io_device(Context *ctx,
+ QThread *thread,
+ const std::weak_ptr<QIODevice> &cipherText_,
+ const QString &outputDirectory)
+{
+ const std::shared_ptr<QIODevice> cipherText = cipherText_.lock();
+ const _detail::ToThreadMover ctMover(cipherText, thread);
+ QGpgME::QIODeviceDataProvider in{cipherText};
+ Data indata(&in);
+ if (!cipherText->isSequential()) {
+ indata.setSizeHint(cipherText->size());
+ }
+
+ return decrypt_verify(ctx, indata, outputDirectory);
+}
+
+static QGpgMEDecryptVerifyArchiveJob::result_type decrypt_verify_from_file_name(Context *ctx,
+ const QString &inputFile,
+ const QString &outputDirectory)
+{
+ Data indata;
+#ifdef Q_OS_WIN
+ indata.setFileName(inputFile.toUtf8().constData());
+#else
+ indata.setFileName(QFile::encodeName(inputFile).constData());
+#endif
+
+ return decrypt_verify(ctx, indata, outputDirectory);
+}
+
+GpgME::Error QGpgMEDecryptVerifyArchiveJob::start(const std::shared_ptr<QIODevice> &cipherText)
+{
+ if (!cipherText) {
+ return Error::fromCode(GPG_ERR_INV_VALUE);
+ }
+
+ run(std::bind(&decrypt_verify_from_io_device,
+ std::placeholders::_1,
+ std::placeholders::_2,
+ std::placeholders::_3,
+ outputDirectory()),
+ cipherText);
+ return {};
+}
+
+GpgME::Error QGpgMEDecryptVerifyArchiveJobPrivate::startIt()
+{
+ if (m_inputFilePath.isEmpty()) {
+ return Error::fromCode(GPG_ERR_INV_VALUE);
+ }
+
+ q->run([=](Context *ctx) {
+ return decrypt_verify_from_file_name(ctx, m_inputFilePath, m_outputDirectory);
+ });
+
+ return {};
+}
+
+#include "qgpgmedecryptverifyarchivejob.moc"
--- /dev/null
+/*
+ qgpgmedecryptverifyarchivejob.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_QGPGMEDECRYPTVERIFYARCHIVEJOB_H__
+#define __QGPGME_QGPGMEDECRYPTVERIFYARCHIVEJOB_H__
+
+#include "decryptverifyarchivejob.h"
+
+#include "threadedjobmixin.h"
+
+#include <decryptionresult.h>
+#include <verificationresult.h>
+
+namespace QGpgME
+{
+
+class QGpgMEDecryptVerifyArchiveJob
+#ifdef Q_MOC_RUN
+ : public DecryptVerifyArchiveJob
+#else
+ : public _detail::ThreadedJobMixin<DecryptVerifyArchiveJob, std::tuple<GpgME::DecryptionResult, GpgME::VerificationResult, QString, GpgME::Error>>
+#endif
+{
+ Q_OBJECT
+#ifdef Q_MOC_RUN
+public Q_SLOTS:
+ void slotFinished();
+#endif
+public:
+ explicit QGpgMEDecryptVerifyArchiveJob(GpgME::Context *context);
+ ~QGpgMEDecryptVerifyArchiveJob() = default;
+
+ GpgME::Error start(const std::shared_ptr<QIODevice> &cipherText) override;
+};
+
+}
+
+#endif // __QGPGME_QGPGMEDECRYPTVERIFYARCHIVEJOB_H__
const _detail::ToThreadMover ptMover(plainText, thread);
QGpgME::QIODeviceDataProvider in(cipherText);
- const Data indata(&in);
+ Data indata(&in);
+ if (!cipherText->isSequential()) {
+ indata.setSizeHint(cipherText->size());
+ }
if (!plainText) {
QGpgME::QByteArrayDataProvider out;
~QGpgMEDecryptVerifyJob();
/* from DecryptVerifyJob */
- GpgME::Error start(const QByteArray &cipherText) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QByteArray &cipherText) override;
/* from DecryptVerifyJob */
- void start(const std::shared_ptr<QIODevice> &cipherText, const std::shared_ptr<QIODevice> &plainText) Q_DECL_OVERRIDE;
+ void start(const std::shared_ptr<QIODevice> &cipherText, const std::shared_ptr<QIODevice> &plainText) override;
/* from DecryptVerifyJob */
std::pair<GpgME::DecryptionResult, GpgME::VerificationResult>
- exec(const QByteArray &cipherText, QByteArray &plainText) Q_DECL_OVERRIDE;
+ exec(const QByteArray &cipherText, QByteArray &plainText) override;
/* from ThreadedJobMixin */
- void resultHook(const result_type &r) Q_DECL_OVERRIDE;
+ void resultHook(const result_type &r) override;
private:
std::pair<GpgME::DecryptionResult, GpgME::VerificationResult> mResult;
~QGpgMEDeleteJob();
/* from DeleteJob */
- GpgME::Error start(const GpgME::Key &key, bool allowSecretKeyDeletion) Q_DECL_OVERRIDE;
+ GpgME::Error start(const GpgME::Key &key, bool allowSecretKeyDeletion) override;
};
}
~QGpgMEDownloadJob();
/* from DownloadJob */
- GpgME::Error start(const QStringList &fingerprints) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QStringList &fingerprints) override;
/* from DownloadJob */
- GpgME::Error start(const QByteArray &fingerprint, const std::shared_ptr<QIODevice> &keyData) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QByteArray &fingerprint, const std::shared_ptr<QIODevice> &keyData) override;
};
}
--- /dev/null
+/*
+ qgpgmeencryptarchivejob.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2004,2007,2008 Klarälvdalens Datakonsult AB
+ Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
+ Software engineering by Intevation GmbH
+ Copyright (c) 2022,2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "qgpgmeencryptarchivejob.h"
+
+#include "dataprovider.h"
+#include "encryptarchivejob_p.h"
+#include "filelistdataprovider.h"
+#include "qgpgme_debug.h"
+
+#include <QFile>
+
+#include <data.h>
+
+using namespace QGpgME;
+using namespace GpgME;
+
+namespace
+{
+
+class QGpgMEEncryptArchiveJobPrivate : public EncryptArchiveJobPrivate
+{
+ QGpgMEEncryptArchiveJob *q = nullptr;
+
+public:
+ QGpgMEEncryptArchiveJobPrivate(QGpgMEEncryptArchiveJob *qq)
+ : q{qq}
+ {
+ }
+
+ ~QGpgMEEncryptArchiveJobPrivate() override = default;
+
+private:
+ GpgME::Error startIt() override;
+
+ void startNow() override
+ {
+ q->run();
+ }
+};
+
+}
+
+QGpgMEEncryptArchiveJob::QGpgMEEncryptArchiveJob(Context *context)
+ : mixin_type{context}
+{
+ setJobPrivate(this, std::unique_ptr<QGpgMEEncryptArchiveJobPrivate>{new QGpgMEEncryptArchiveJobPrivate{this}});
+ lateInitialization();
+ connect(this, &Job::rawProgress, this, [this](const QString &what, int type, int current, int total) {
+ emitArchiveProgressSignals(this, what, type, current, total);
+ });
+}
+
+static QGpgMEEncryptArchiveJob::result_type encrypt(Context *ctx,
+ const std::vector<Key> &recipients,
+ const std::vector<QString> &paths,
+ GpgME::Data &outdata,
+ Context::EncryptionFlags flags,
+ const QString &baseDirectory)
+{
+ QGpgME::FileListDataProvider in{paths};
+ Data indata(&in);
+ if (!baseDirectory.isEmpty()) {
+ indata.setFileName(baseDirectory.toStdString());
+ }
+
+ flags = static_cast<Context::EncryptionFlags>(flags | Context::EncryptArchive);
+ const auto encryptionResult = ctx->encrypt(recipients, indata, outdata, flags);
+
+#ifdef Q_OS_WIN
+ const auto outputFileName = QString::fromUtf8(outdata.fileName());
+#else
+ const auto outputFileName = QFile::decodeName(outdata.fileName());
+#endif
+ if (!outputFileName.isEmpty() && encryptionResult.error().code()) {
+ // ensure that the output file is removed if the operation was canceled or failed
+ if (QFile::exists(outputFileName)) {
+ qCDebug(QGPGME_LOG) << __func__ << "Removing output file" << outputFileName << "after error or cancel";
+ if (!QFile::remove(outputFileName)) {
+ qCDebug(QGPGME_LOG) << __func__ << "Removing output file" << outputFileName << "failed";
+ }
+ }
+ }
+ Error ae;
+ const QString log = _detail::audit_log_as_html(ctx, ae);
+ return std::make_tuple(encryptionResult, log, ae);
+}
+
+static QGpgMEEncryptArchiveJob::result_type encrypt_to_io_device(Context *ctx,
+ QThread *thread,
+ const std::vector<Key> &recipients,
+ const std::vector<QString> &paths,
+ const std::weak_ptr<QIODevice> &cipherText_,
+ Context::EncryptionFlags flags,
+ const QString &baseDirectory)
+{
+ const std::shared_ptr<QIODevice> cipherText = cipherText_.lock();
+ const _detail::ToThreadMover ctMover(cipherText, thread);
+ QGpgME::QIODeviceDataProvider out{cipherText};
+ Data outdata(&out);
+
+ return encrypt(ctx, recipients, paths, outdata, flags, baseDirectory);
+}
+
+static QGpgMEEncryptArchiveJob::result_type encrypt_to_filename(Context *ctx,
+ const std::vector<Key> &recipients,
+ const std::vector<QString> &paths,
+ const QString &outputFile,
+ Context::EncryptionFlags flags,
+ const QString &baseDirectory)
+{
+ Data outdata;
+#ifdef Q_OS_WIN
+ outdata.setFileName(outputFile.toUtf8().constData());
+#else
+ outdata.setFileName(QFile::encodeName(outputFile).constData());
+#endif
+
+ return encrypt(ctx, recipients, paths, outdata, flags, baseDirectory);
+}
+
+GpgME::Error QGpgMEEncryptArchiveJob::start(const std::vector<GpgME::Key> &recipients,
+ const std::vector<QString> &paths,
+ const std::shared_ptr<QIODevice> &cipherText,
+ const GpgME::Context::EncryptionFlags flags)
+{
+ if (!cipherText) {
+ return Error::fromCode(GPG_ERR_INV_VALUE);
+ }
+
+ run(std::bind(&encrypt_to_io_device,
+ std::placeholders::_1,
+ std::placeholders::_2,
+ recipients,
+ paths,
+ std::placeholders::_3,
+ flags,
+ baseDirectory()),
+ cipherText);
+ return {};
+}
+
+GpgME::Error QGpgMEEncryptArchiveJobPrivate::startIt()
+{
+ if (m_outputFilePath.isEmpty()) {
+ return Error::fromCode(GPG_ERR_INV_VALUE);
+ }
+
+ q->run([=](Context *ctx) {
+ return encrypt_to_filename(ctx, m_recipients, m_inputPaths, m_outputFilePath, m_encryptionFlags, m_baseDirectory);
+ });
+
+ return {};
+}
+
+#include "qgpgmeencryptarchivejob.moc"
--- /dev/null
+/*
+ qgpgmeencryptarchivejob.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_QGPGMEENCRYPTARCHIVEJOB_H__
+#define __QGPGME_QGPGMEENCRYPTARCHIVEJOB_H__
+
+#include "encryptarchivejob.h"
+
+#include "threadedjobmixin.h"
+
+#include <encryptionresult.h>
+
+namespace QGpgME
+{
+
+class QGpgMEEncryptArchiveJob
+#ifdef Q_MOC_RUN
+ : public EncryptArchiveJob
+#else
+ : public _detail::ThreadedJobMixin<EncryptArchiveJob, std::tuple<GpgME::EncryptionResult, QString, GpgME::Error>>
+#endif
+{
+ Q_OBJECT
+#ifdef Q_MOC_RUN
+public Q_SLOTS:
+ void slotFinished();
+#endif
+public:
+ explicit QGpgMEEncryptArchiveJob(GpgME::Context *context);
+ ~QGpgMEEncryptArchiveJob() = default;
+
+ GpgME::Error start(const std::vector<GpgME::Key> &recipients,
+ const std::vector<QString> &paths,
+ const std::shared_ptr<QIODevice> &cipherText,
+ const GpgME::Context::EncryptionFlags flags) override;
+};
+
+}
+
+#endif // __QGPGME_QGPGMEENCRYPTARCHIVEJOB_H__
Copyright (c) 2004,2007,2008 Klarälvdalens Datakonsult AB
Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
Software engineering by Intevation GmbH
- Copyright (c) 2022 g10 Code GmbH
+ Copyright (c) 2022,2023 g10 Code GmbH
Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
QGpgME is free software; you can redistribute it and/or
#include "qgpgmeencryptjob.h"
+#include "encryptjob_p.h"
+
#include "dataprovider.h"
#include "context.h"
using namespace QGpgME;
using namespace GpgME;
+namespace
+{
+
+class QGpgMEEncryptJobPrivate : public EncryptJobPrivate
+{
+ QGpgMEEncryptJob *q = nullptr;
+
+public:
+ QGpgMEEncryptJobPrivate(QGpgMEEncryptJob *qq)
+ : q{qq}
+ {
+ }
+
+ ~QGpgMEEncryptJobPrivate() override = default;
+
+private:
+ GpgME::Error startIt() override
+ {
+ Q_ASSERT(!"Not supported by this Job class.");
+ return Error::fromCode(GPG_ERR_NOT_SUPPORTED);
+ }
+
+ void startNow() override
+ {
+ q->run();
+ }
+};
+
+}
+
QGpgMEEncryptJob::QGpgMEEncryptJob(Context *context)
: mixin_type(context),
mOutputIsBase64Encoded(false)
{
+ setJobPrivate(this, std::unique_ptr<QGpgMEEncryptJobPrivate>{new QGpgMEEncryptJobPrivate{this}});
lateInitialization();
}
const std::weak_ptr<QIODevice> &cipherText_,
const Context::EncryptionFlags eflags,
bool outputIsBsse64Encoded,
+ Data::Encoding inputEncoding,
const QString &fileName)
{
QGpgME::QIODeviceDataProvider in(plainText);
Data indata(&in);
+ indata.setEncoding(inputEncoding);
+
+ if (!plainText->isSequential()) {
+ indata.setSizeHint(plainText->size());
+ }
const auto pureFileName = QFileInfo{fileName}.fileName().toStdString();
if (!pureFileName.empty()) {
}
-static QGpgMEEncryptJob::result_type encrypt_qba(Context *ctx, const std::vector<Key> &recipients, const QByteArray &plainText, const Context::EncryptionFlags eflags, bool outputIsBsse64Encoded, const QString &fileName)
+static QGpgMEEncryptJob::result_type encrypt_qba(Context *ctx, const std::vector<Key> &recipients, const QByteArray &plainText, const Context::EncryptionFlags eflags, bool outputIsBsse64Encoded, Data::Encoding inputEncoding, const QString &fileName)
{
const std::shared_ptr<QBuffer> buffer(new QBuffer);
buffer->setData(plainText);
if (!buffer->open(QIODevice::ReadOnly)) {
assert(!"This should never happen: QBuffer::open() failed");
}
- return encrypt(ctx, nullptr, recipients, buffer, std::shared_ptr<QIODevice>(), eflags, outputIsBsse64Encoded, fileName);
+ return encrypt(ctx, nullptr, recipients, buffer, std::shared_ptr<QIODevice>(), eflags, outputIsBsse64Encoded, inputEncoding, fileName);
}
Error QGpgMEEncryptJob::start(const std::vector<Key> &recipients, const QByteArray &plainText, bool alwaysTrust)
{
run(std::bind(&encrypt_qba, std::placeholders::_1, recipients, plainText,
- alwaysTrust ? Context::AlwaysTrust : Context::None, mOutputIsBase64Encoded, fileName()));
+ alwaysTrust ? Context::AlwaysTrust : Context::None, mOutputIsBase64Encoded, inputEncoding(), fileName()));
return Error();
}
std::placeholders::_3, std::placeholders::_4,
eflags,
mOutputIsBase64Encoded,
+ inputEncoding(),
fileName()),
plainText, cipherText);
}
EncryptionResult QGpgMEEncryptJob::exec(const std::vector<Key> &recipients, const QByteArray &plainText,
const Context::EncryptionFlags eflags, QByteArray &cipherText)
{
- const result_type r = encrypt_qba(context(), recipients, plainText, eflags, mOutputIsBase64Encoded, fileName());
+ const result_type r = encrypt_qba(context(), recipients, plainText, eflags, mOutputIsBase64Encoded, inputEncoding(), fileName());
cipherText = std::get<1>(r);
resultHook(r);
return mResult;
/* from EncryptJob */
GpgME::Error start(const std::vector<GpgME::Key> &recipients,
- const QByteArray &plainText, bool alwaysTrust) Q_DECL_OVERRIDE;
+ const QByteArray &plainText, bool alwaysTrust) override;
/* from EncryptJob */
void start(const std::vector<GpgME::Key> &recipients,
const std::shared_ptr<QIODevice> &plainText,
const std::shared_ptr<QIODevice> &cipherText,
- bool alwaysTrust) Q_DECL_OVERRIDE;
+ bool alwaysTrust) override;
/* from EncryptJob */
GpgME::EncryptionResult exec(const std::vector<GpgME::Key> &recipients,
const QByteArray &plainText, bool alwaysTrust,
- QByteArray &cipherText) Q_DECL_OVERRIDE;
+ QByteArray &cipherText) override;
/* from EncryptJob */
void start(const std::vector<GpgME::Key> &recipients,
const std::shared_ptr<QIODevice> &plainText,
const std::shared_ptr<QIODevice> &cipherText,
- const GpgME::Context::EncryptionFlags flags) Q_DECL_OVERRIDE;
+ const GpgME::Context::EncryptionFlags flags) override;
/* from EncryptJob */
GpgME::EncryptionResult exec(const std::vector<GpgME::Key> &recipients,
const QByteArray &plainText, const GpgME::Context::EncryptionFlags flags,
- QByteArray &cipherText) Q_DECL_OVERRIDE;
+ QByteArray &cipherText) override;
/* from EncryptJob */
- void setOutputIsBase64Encoded(bool on) Q_DECL_OVERRIDE;
+ void setOutputIsBase64Encoded(bool on) override;
/* from ThreadedJobMixin */
- void resultHook(const result_type &r) Q_DECL_OVERRIDE;
+ void resultHook(const result_type &r) override;
private:
bool mOutputIsBase64Encoded;
// export mode flags set with @p exportMode cannot be overridden with
// setExportFlags.
explicit QGpgMEExportJob(GpgME::Context *context, unsigned int exportMode);
- ~QGpgMEExportJob() Q_DECL_OVERRIDE;
+ ~QGpgMEExportJob() override;
/* from ExportJob */
- void setExportFlags(unsigned int flags) Q_DECL_OVERRIDE;
+ void setExportFlags(unsigned int flags) override;
/* from ExportJob */
- GpgME::Error start(const QStringList &patterns) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QStringList &patterns) override;
private:
unsigned int m_exportMode;
explicit QGpgMEGpgCardJob();
~QGpgMEGpgCardJob();
- GpgME::Error start(const QStringList &cmds) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QStringList &cmds) override;
- GpgME::Error exec(const QStringList &cmds, QString &std_out, QString &std_err, int &exitCode) Q_DECL_OVERRIDE;
+ GpgME::Error exec(const QStringList &cmds, QString &std_out, QString &std_err, int &exitCode) override;
};
}
~QGpgMEImportFromKeyserverJob();
/* from ImportFromKeyserverJob */
- GpgME::Error start(const std::vector<GpgME::Key> &keys) Q_DECL_OVERRIDE;
+ GpgME::Error start(const std::vector<GpgME::Key> &keys) override;
/* from ImportFromKeyserverJob */
- GpgME::ImportResult exec(const std::vector<GpgME::Key> &keys) Q_DECL_OVERRIDE;
+ GpgME::ImportResult exec(const std::vector<GpgME::Key> &keys) override;
/* from ThreadedJobMixin */
- void resultHook(const result_type &r) Q_DECL_OVERRIDE;
+ void resultHook(const result_type &r) override;
private:
GpgME::ImportResult mResult;
Copyright (c) 2004,2008 Klarälvdalens Datakonsult AB
Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
Software engineering by Intevation GmbH
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
QGpgME is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
#include "qgpgmeimportjob.h"
+#include "importjob_p.h"
+
#include "dataprovider.h"
#include <context.h>
using namespace QGpgME;
using namespace GpgME;
+namespace
+{
+
+class QGpgMEImportJobPrivate : public ImportJobPrivate
+{
+ QGpgMEImportJob *q = nullptr;
+
+public:
+ QGpgMEImportJobPrivate(QGpgMEImportJob *qq)
+ : q{qq}
+ {
+ }
+
+ ~QGpgMEImportJobPrivate() override = default;
+
+private:
+ GpgME::Error startIt() override
+ {
+ Q_ASSERT(!"Not supported by this Job class.");
+ return Error::fromCode(GPG_ERR_NOT_SUPPORTED);
+ }
+
+ void startNow() override
+ {
+ q->run();
+ }
+};
+
+}
+
QGpgMEImportJob::QGpgMEImportJob(Context *context)
: mixin_type(context)
{
+ setJobPrivate(this, std::unique_ptr<QGpgMEImportJobPrivate>{new QGpgMEImportJobPrivate{this}});
lateInitialization();
}
return mResult;
}
+Error QGpgMEImportJob::startLater(const QByteArray &certData)
+{
+ setWorkerFunction(std::bind(&import_qba, std::placeholders::_1, certData, importFilter(), keyOrigin(), keyOriginUrl()));
+ return {};
+}
+
// PENDING(marc) implement showErrorDialog()
void QGpgME::QGpgMEImportJob::resultHook(const result_type &tuple)
Copyright (c) 2004,2008 Klarälvdalens Datakonsult AB
Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
Software engineering by Intevation GmbH
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
QGpgME is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
~QGpgMEImportJob();
/* from ImportJob */
- GpgME::Error start(const QByteArray &keyData) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QByteArray &keyData) override;
/* from ImportJob */
- GpgME::ImportResult exec(const QByteArray &keyData) Q_DECL_OVERRIDE;
+ GpgME::ImportResult exec(const QByteArray &keyData) override;
+
+ GpgME::Error startLater(const QByteArray &keyData) override;
/* from ThreadedJobMixin */
- void resultHook(const result_type &r) Q_DECL_OVERRIDE;
+ void resultHook(const result_type &r) override;
private:
GpgME::ImportResult mResult;
usage are returned. Use this if you need to select a
key for signing.
*/
- GpgME::Error start(const QString &mailbox, bool canEncrypt = true) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QString &mailbox, bool canEncrypt = true) override;
- GpgME::KeyListResult exec(const QString &mailbox, bool canEncrypt, GpgME::Key &key, GpgME::UserID &uid) Q_DECL_OVERRIDE;
+ GpgME::KeyListResult exec(const QString &mailbox, bool canEncrypt, GpgME::Key &key, GpgME::UserID &uid) override;
};
}
~QGpgMEKeyGenerationJob();
/* from KeygenerationJob */
- GpgME::Error start(const QString ¶meters) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QString ¶meters) override;
};
}
~QGpgMEKeyListJob();
/* from KeyListJob */
- GpgME::Error start(const QStringList &patterns, bool secretOnly) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QStringList &patterns, bool secretOnly) override;
/* from KeyListJob */
- GpgME::KeyListResult exec(const QStringList &patterns, bool secretOnly, std::vector<GpgME::Key> &keys) Q_DECL_OVERRIDE;
+ GpgME::KeyListResult exec(const QStringList &patterns, bool secretOnly, std::vector<GpgME::Key> &keys) override;
- void addMode(GpgME::KeyListMode mode) Q_DECL_OVERRIDE;
+ void addMode(GpgME::KeyListMode mode) override;
/* from ThreadedJobMixin */
- void resultHook(const result_type &result) Q_DECL_OVERRIDE;
+ void resultHook(const result_type &result) override;
private:
GpgME::KeyListResult mResult;
bool mSecretOnly;
Copyright (c) 2004,2008 Klarälvdalens Datakonsult AB
Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
Software engineering by Intevation GmbH
+ Copyright (c) 2022,2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
QGpgME is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
#include "qgpgmelistallkeysjob.h"
+#include "listallkeysjob_p.h"
+
+#include "debug.h"
#include "key.h"
#include "context.h"
#include "engineinfo.h"
#include "global.h"
#include "keylistresult.h"
+#include "qgpgme_debug.h"
#include <gpg-error.h>
using namespace QGpgME;
using namespace GpgME;
+namespace
+{
+
+class QGpgMEListAllKeysJobPrivate : public ListAllKeysJobPrivate
+{
+ QGpgMEListAllKeysJob *q = nullptr;
+
+public:
+ QGpgMEListAllKeysJobPrivate(QGpgMEListAllKeysJob *qq)
+ : q{qq}
+ {
+ }
+
+ ~QGpgMEListAllKeysJobPrivate() override = default;
+
+private:
+ GpgME::Error startIt() override
+ {
+ Q_ASSERT(!"Not supported by this Job class.");
+ return Error::fromCode(GPG_ERR_NOT_SUPPORTED);
+ }
+
+ void startNow() override
+ {
+ q->run();
+ }
+};
+
+}
+
QGpgMEListAllKeysJob::QGpgMEListAllKeysJob(Context *context)
: mixin_type(context),
mResult()
{
+ setJobPrivate(this, std::unique_ptr<QGpgMEListAllKeysJobPrivate>{new QGpgMEListAllKeysJobPrivate{this}});
lateInitialization();
}
return result;
}
-static QGpgMEListAllKeysJob::result_type list_keys(Context *ctx, bool mergeKeys)
+static QGpgMEListAllKeysJob::result_type list_keys(Context *ctx, bool mergeKeys, ListAllKeysJob::Options options)
{
if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.0") {
return list_keys_legacy(ctx, mergeKeys);
}
+ if (options & ListAllKeysJob::DisableAutomaticTrustDatabaseCheck) {
+ auto err = ctx->setFlag("no-auto-check-trustdb", "1");
+ if (err) {
+ // ignore error, but log a warning
+ qCWarning(QGPGME_LOG) << "Setting context flag no-auto-check-trustdb failed:" << err;
+ }
+ }
+
std::vector<Key> keys;
KeyListResult r = do_list_keys(ctx, keys);
std::sort(keys.begin(), keys.end(), ByFingerprint<std::less>());
Error QGpgMEListAllKeysJob::start(bool mergeKeys)
{
- run(std::bind(&list_keys, std::placeholders::_1, mergeKeys));
+ run(std::bind(&list_keys, std::placeholders::_1, mergeKeys, options()));
return Error();
}
KeyListResult QGpgMEListAllKeysJob::exec(std::vector<Key> &pub, std::vector<Key> &sec, bool mergeKeys)
{
- const result_type r = list_keys(context(), mergeKeys);
+ const result_type r = list_keys(context(), mergeKeys, options());
resultHook(r);
pub = std::get<1>(r);
sec = std::get<2>(r);
~QGpgMEListAllKeysJob();
/* from ListAllKeysJob */
- GpgME::Error start(bool mergeKeys) Q_DECL_OVERRIDE;
+ GpgME::Error start(bool mergeKeys) override;
/* from ListAllKeysJob */
- GpgME::KeyListResult exec(std::vector<GpgME::Key> &pub, std::vector<GpgME::Key> &sec, bool mergeKeys) Q_DECL_OVERRIDE;
+ GpgME::KeyListResult exec(std::vector<GpgME::Key> &pub, std::vector<GpgME::Key> &sec, bool mergeKeys) override;
/* from ThreadedJobMixin */
- void resultHook(const result_type &result) Q_DECL_OVERRIDE;
+ void resultHook(const result_type &result) override;
private:
GpgME::KeyListResult mResult;
using namespace GpgME;
using namespace GpgME::Configuration;
-namespace
-{
-struct Select1St {
- template <typename U, typename V>
- const U &operator()(const std::pair<U, V> &p) const
- {
- return p.first;
- }
- template <typename U, typename V>
- const U &operator()(const QPair<U, V> &p) const
- {
- return p.first;
- }
-};
-}
-
// Just for the Q_ASSERT in the dtor. Not thread-safe, but who would
// have 2 threads talking to gpgconf anyway? :)
static bool s_duringClear = false;
if (str.isEmpty() && !isOptional()) {
m_option.resetToDefaultValue();
} else if (type == FilenameType) {
- m_option.setNewValue(m_option.createStringArgument(QDir::toNativeSeparators(url.toLocalFile()).toUtf8().constData()));
+ m_option.setNewValue(m_option.createStringArgument(url.toLocalFile().toUtf8().constData()));
} else {
m_option.setNewValue(m_option.createStringArgument(str.toUtf8().constData()));
}
QGpgMENewCryptoConfigEntry(const std::shared_ptr<QGpgMENewCryptoConfigGroup> &group, const GpgME::Configuration::Option &option);
~QGpgMENewCryptoConfigEntry();
- QString name() const Q_DECL_OVERRIDE;
- QString description() const Q_DECL_OVERRIDE;
- QString path() const Q_DECL_OVERRIDE;
- bool isOptional() const Q_DECL_OVERRIDE;
- bool isReadOnly() const Q_DECL_OVERRIDE;
- bool isList() const Q_DECL_OVERRIDE;
- bool isRuntime() const Q_DECL_OVERRIDE;
- Level level() const Q_DECL_OVERRIDE;
- ArgType argType() const Q_DECL_OVERRIDE;
- bool isSet() const Q_DECL_OVERRIDE;
- bool boolValue() const Q_DECL_OVERRIDE;
- QString stringValue() const Q_DECL_OVERRIDE;
- int intValue() const Q_DECL_OVERRIDE;
- unsigned int uintValue() const Q_DECL_OVERRIDE;
- QUrl urlValue() const Q_DECL_OVERRIDE;
- unsigned int numberOfTimesSet() const Q_DECL_OVERRIDE;
- std::vector<int> intValueList() const Q_DECL_OVERRIDE;
- std::vector<unsigned int> uintValueList() const Q_DECL_OVERRIDE;
- QList<QUrl> urlValueList() const Q_DECL_OVERRIDE;
- void resetToDefault() Q_DECL_OVERRIDE;
- void setBoolValue(bool) Q_DECL_OVERRIDE;
- void setStringValue(const QString &) Q_DECL_OVERRIDE;
- void setIntValue(int) Q_DECL_OVERRIDE;
- void setUIntValue(unsigned int) Q_DECL_OVERRIDE;
- void setURLValue(const QUrl &) Q_DECL_OVERRIDE;
- void setNumberOfTimesSet(unsigned int) Q_DECL_OVERRIDE;
- void setIntValueList(const std::vector<int> &) Q_DECL_OVERRIDE;
- void setUIntValueList(const std::vector<unsigned int> &) Q_DECL_OVERRIDE;
- void setURLValueList(const QList<QUrl> &) Q_DECL_OVERRIDE;
- bool isDirty() const Q_DECL_OVERRIDE;
+ QString name() const override;
+ QString description() const override;
+ QString path() const override;
+ bool isOptional() const override;
+ bool isReadOnly() const override;
+ bool isList() const override;
+ bool isRuntime() const override;
+ Level level() const override;
+ ArgType argType() const override;
+ bool isSet() const override;
+ bool boolValue() const override;
+ QString stringValue() const override;
+ int intValue() const override;
+ unsigned int uintValue() const override;
+ QUrl urlValue() const override;
+ unsigned int numberOfTimesSet() const override;
+ std::vector<int> intValueList() const override;
+ std::vector<unsigned int> uintValueList() const override;
+ QList<QUrl> urlValueList() const override;
+ void resetToDefault() override;
+ void setBoolValue(bool) override;
+ void setStringValue(const QString &) override;
+ void setIntValue(int) override;
+ void setUIntValue(unsigned int) override;
+ void setURLValue(const QUrl &) override;
+ void setNumberOfTimesSet(unsigned int) override;
+ void setIntValueList(const std::vector<int> &) override;
+ void setUIntValueList(const std::vector<unsigned int> &) override;
+ void setURLValueList(const QList<QUrl> &) override;
+ bool isDirty() const override;
QStringList stringValueList() const;
QVariant defaultValue() const;
QGpgMENewCryptoConfigGroup(const std::shared_ptr<QGpgMENewCryptoConfigComponent> &parent, const GpgME::Configuration::Option &option);
~QGpgMENewCryptoConfigGroup();
- QString name() const Q_DECL_OVERRIDE;
- QString iconName() const Q_DECL_OVERRIDE
+ QString name() const override;
+ QString iconName() const override
{
return QString();
}
- QString description() const Q_DECL_OVERRIDE;
- QString path() const Q_DECL_OVERRIDE;
- QGpgME::CryptoConfigEntry::Level level() const Q_DECL_OVERRIDE;
- QStringList entryList() const Q_DECL_OVERRIDE;
- QGpgMENewCryptoConfigEntry *entry(const QString &name) const Q_DECL_OVERRIDE;
+ QString description() const override;
+ QString path() const override;
+ QGpgME::CryptoConfigEntry::Level level() const override;
+ QStringList entryList() const override;
+ QGpgMENewCryptoConfigEntry *entry(const QString &name) const override;
private:
friend class QGpgMENewCryptoConfigComponent; // it adds the entries
void setComponent(const GpgME::Configuration::Component &component);
- QString name() const Q_DECL_OVERRIDE;
- QString iconName() const Q_DECL_OVERRIDE
+ QString name() const override;
+ QString iconName() const override
{
return name();
}
- QString description() const Q_DECL_OVERRIDE;
- QStringList groupList() const Q_DECL_OVERRIDE;
- QGpgMENewCryptoConfigGroup *group(const QString &name) const Q_DECL_OVERRIDE;
+ QString description() const override;
+ QStringList groupList() const override;
+ QGpgMENewCryptoConfigGroup *group(const QString &name) const override;
void sync(bool runtime);
QGpgMENewCryptoConfig();
~QGpgMENewCryptoConfig();
- QStringList componentList() const Q_DECL_OVERRIDE;
+ QStringList componentList() const override;
- QGpgMENewCryptoConfigComponent *component(const QString &name) const Q_DECL_OVERRIDE;
+ QGpgMENewCryptoConfigComponent *component(const QString &name) const override;
- void clear() Q_DECL_OVERRIDE;
- void sync(bool runtime) Q_DECL_OVERRIDE;
+ void clear() override;
+ void sync(bool runtime) override;
private:
/// @param showErrors if true, a messagebox will be shown if e.g. gpgconf wasn't found
const char *algo,
const QDateTime &expires = QDateTime(),
const GpgME::Key &key = GpgME::Key(),
- unsigned int flags = 0) Q_DECL_OVERRIDE;
- void startAddUid(const GpgME::Key &key, const QString &uid) Q_DECL_OVERRIDE;
- void startRevUid(const GpgME::Key &key, const QString &uid) Q_DECL_OVERRIDE;
+ unsigned int flags = 0) override;
+ void startAddUid(const GpgME::Key &key, const QString &uid) override;
+ void startRevUid(const GpgME::Key &key, const QString &uid) override;
void startAddSubkey(const GpgME::Key &key, const char *algo,
const QDateTime &expires = QDateTime(),
- unsigned int flags = 0) Q_DECL_OVERRIDE;
+ unsigned int flags = 0) override;
void startRevokeSignature(const GpgME::Key &key, const GpgME::Key &signingKey,
- const std::vector<GpgME::UserID> &userIds = std::vector<GpgME::UserID>()) Q_DECL_OVERRIDE;
+ const std::vector<GpgME::UserID> &userIds = std::vector<GpgME::UserID>()) override;
};
}
return {};
}
- const bool gotWrongKeys = std::any_of(std::begin(keys), std::end(keys), [](const auto &k) {
+ const bool gotWrongKeys = std::any_of(std::begin(keys), std::end(keys), [](const GpgME::Key &k) {
return k.protocol() != GpgME::CMS;
});
if (gotWrongKeys) {
}
const QString what = *++it;
ok = false;
- (*++it).toInt(&ok);
+ const int type = (*++it).toInt(&ok);
if (!ok) {
qCDebug(QGPGME_LOG) << "expected number for \"type\", got something else";
return;
qCDebug(QGPGME_LOG) << "expected number for \"total\", got something else";
return;
}
- // TODO port
- Q_EMIT progress(QString(), cur, total);
-
+ Q_EMIT jobProgress(cur, total);
+ Q_EMIT rawProgress(what, type, cur, total);
+ QT_WARNING_PUSH
+ QT_WARNING_DISABLE_DEPRECATED
+ Q_EMIT progress(what, cur, total);
+ QT_WARNING_POP
}
}
~QGpgMERefreshSMIMEKeysJob();
/* from RefreshKeysJob */
- GpgME::Error start(const QStringList &patterns) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QStringList &patterns) override;
GpgME::Error start(const std::vector<GpgME::Key> &keys) override;
private Q_SLOTS:
/* from Job */
- void slotCancel() Q_DECL_OVERRIDE;
+ void slotCancel() override;
void slotStatus(QProcess *, const QString &, const QStringList &);
void slotProcessExited(int exitCode, QProcess::ExitStatus exitStatus);
--- /dev/null
+/*
+ qgpgmesignarchivejob.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2004,2007,2008 Klarälvdalens Datakonsult AB
+ Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
+ Software engineering by Intevation GmbH
+ Copyright (c) 2022,2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "qgpgmesignarchivejob.h"
+
+#include "dataprovider.h"
+#include "signarchivejob_p.h"
+#include "filelistdataprovider.h"
+#include "qgpgme_debug.h"
+
+#include <QFile>
+
+#include <data.h>
+
+using namespace QGpgME;
+using namespace GpgME;
+
+namespace
+{
+
+class QGpgMESignArchiveJobPrivate : public SignArchiveJobPrivate
+{
+ QGpgMESignArchiveJob *q = nullptr;
+
+public:
+ QGpgMESignArchiveJobPrivate(QGpgMESignArchiveJob *qq)
+ : q{qq}
+ {
+ }
+
+ ~QGpgMESignArchiveJobPrivate() override = default;
+
+private:
+ GpgME::Error startIt() override;
+
+ void startNow() override
+ {
+ q->run();
+ }
+};
+
+}
+
+QGpgMESignArchiveJob::QGpgMESignArchiveJob(Context *context)
+ : mixin_type{context}
+{
+ setJobPrivate(this, std::unique_ptr<QGpgMESignArchiveJobPrivate>{new QGpgMESignArchiveJobPrivate{this}});
+ lateInitialization();
+ connect(this, &Job::rawProgress, this, [this](const QString &what, int type, int current, int total) {
+ emitArchiveProgressSignals(this, what, type, current, total);
+ });
+}
+
+static QGpgMESignArchiveJob::result_type sign(Context *ctx,
+ const std::vector<Key> &signers,
+ const std::vector<QString> &paths,
+ GpgME::Data &outdata,
+ const QString &baseDirectory)
+{
+ QGpgME::FileListDataProvider in{paths};
+ Data indata(&in);
+ if (!baseDirectory.isEmpty()) {
+ indata.setFileName(baseDirectory.toStdString());
+ }
+
+ ctx->clearSigningKeys();
+ for (const Key &signer : signers) {
+ if (!signer.isNull()) {
+ if (const Error err = ctx->addSigningKey(signer)) {
+ return std::make_tuple(SigningResult{err}, QString{}, Error{});
+ }
+ }
+ }
+
+ const auto signingResult = ctx->sign(indata, outdata, GpgME::SignArchive);
+
+#ifdef Q_OS_WIN
+ const auto outputFileName = QString::fromUtf8(outdata.fileName());
+#else
+ const auto outputFileName = QFile::decodeName(outdata.fileName());
+#endif
+ if (!outputFileName.isEmpty() && signingResult.error().code()) {
+ // ensure that the output file is removed if the operation was canceled or failed
+ if (QFile::exists(outputFileName)) {
+ qCDebug(QGPGME_LOG) << __func__ << "Removing output file" << outputFileName << "after error or cancel";
+ if (!QFile::remove(outputFileName)) {
+ qCDebug(QGPGME_LOG) << __func__ << "Removing output file" << outputFileName << "failed";
+ }
+ }
+ }
+ Error ae;
+ const QString log = _detail::audit_log_as_html(ctx, ae);
+ return std::make_tuple(signingResult, log, ae);
+}
+
+static QGpgMESignArchiveJob::result_type sign_to_io_device(Context *ctx,
+ QThread *thread,
+ const std::vector<Key> &signers,
+ const std::vector<QString> &paths,
+ const std::weak_ptr<QIODevice> &output_,
+ const QString &baseDirectory)
+{
+ const std::shared_ptr<QIODevice> output = output_.lock();
+ const _detail::ToThreadMover ctMover(output, thread);
+ QGpgME::QIODeviceDataProvider out{output};
+ Data outdata(&out);
+
+ return sign(ctx, signers, paths, outdata, baseDirectory);
+}
+
+static QGpgMESignArchiveJob::result_type sign_to_filename(Context *ctx,
+ const std::vector<Key> &signers,
+ const std::vector<QString> &paths,
+ const QString &outputFile,
+ const QString &baseDirectory)
+{
+ Data outdata;
+#ifdef Q_OS_WIN
+ outdata.setFileName(outputFile.toUtf8().constData());
+#else
+ outdata.setFileName(QFile::encodeName(outputFile).constData());
+#endif
+
+ return sign(ctx, signers, paths, outdata, baseDirectory);
+}
+
+GpgME::Error QGpgMESignArchiveJob::start(const std::vector<GpgME::Key> &signers,
+ const std::vector<QString> &paths,
+ const std::shared_ptr<QIODevice> &output)
+{
+ if (!output) {
+ return Error::fromCode(GPG_ERR_INV_VALUE);
+ }
+
+ run(std::bind(&sign_to_io_device,
+ std::placeholders::_1,
+ std::placeholders::_2,
+ signers,
+ paths,
+ std::placeholders::_3,
+ baseDirectory()),
+ output);
+ return {};
+}
+
+
+GpgME::Error QGpgMESignArchiveJobPrivate::startIt()
+{
+ if (m_outputFilePath.isEmpty()) {
+ return Error::fromCode(GPG_ERR_INV_VALUE);
+ }
+
+ q->run([=](Context *ctx) {
+ return sign_to_filename(ctx, m_signers, m_inputPaths, m_outputFilePath, m_baseDirectory);
+ });
+
+ return {};
+}
+
+#include "qgpgmesignarchivejob.moc"
--- /dev/null
+/*
+ qgpgmesignarchivejob.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_QGPGMESIGNARCHIVEJOB_H__
+#define __QGPGME_QGPGMESIGNARCHIVEJOB_H__
+
+#include "signarchivejob.h"
+
+#include "threadedjobmixin.h"
+
+#include <signingresult.h>
+
+namespace QGpgME
+{
+
+class QGpgMESignArchiveJob
+#ifdef Q_MOC_RUN
+ : public SignArchiveJob
+#else
+ : public _detail::ThreadedJobMixin<SignArchiveJob, std::tuple<GpgME::SigningResult, QString, GpgME::Error>>
+#endif
+{
+ Q_OBJECT
+#ifdef Q_MOC_RUN
+public Q_SLOTS:
+ void slotFinished();
+#endif
+public:
+ explicit QGpgMESignArchiveJob(GpgME::Context *context);
+ ~QGpgMESignArchiveJob() = default;
+
+ GpgME::Error start(const std::vector<GpgME::Key> &signers,
+ const std::vector<QString> &paths,
+ const std::shared_ptr<QIODevice> &output) override;
+};
+
+}
+
+#endif // __QGPGME_QGPGMESIGNARCHIVEJOB_H__
--- /dev/null
+/*
+ qgpgmesignencryptarchivejob.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2004,2007,2008 Klarälvdalens Datakonsult AB
+ Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
+ Software engineering by Intevation GmbH
+ Copyright (c) 2022,2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "qgpgmesignencryptarchivejob.h"
+
+#include "dataprovider.h"
+#include "signencryptarchivejob_p.h"
+#include "filelistdataprovider.h"
+#include "qgpgme_debug.h"
+
+#include <QFile>
+
+#include <data.h>
+
+using namespace QGpgME;
+using namespace GpgME;
+
+namespace
+{
+
+class QGpgMESignEncryptArchiveJobPrivate : public SignEncryptArchiveJobPrivate
+{
+ QGpgMESignEncryptArchiveJob *q = nullptr;
+
+public:
+ QGpgMESignEncryptArchiveJobPrivate(QGpgMESignEncryptArchiveJob *qq)
+ : q{qq}
+ {
+ }
+
+ ~QGpgMESignEncryptArchiveJobPrivate() override = default;
+
+private:
+ GpgME::Error startIt() override;
+
+ void startNow() override
+ {
+ q->run();
+ }
+};
+
+}
+
+QGpgMESignEncryptArchiveJob::QGpgMESignEncryptArchiveJob(Context *context)
+ : mixin_type{context}
+{
+ setJobPrivate(this, std::unique_ptr<QGpgMESignEncryptArchiveJobPrivate>{new QGpgMESignEncryptArchiveJobPrivate{this}});
+ lateInitialization();
+ connect(this, &Job::rawProgress, this, [this](const QString &what, int type, int current, int total) {
+ emitArchiveProgressSignals(this, what, type, current, total);
+ });
+}
+
+static QGpgMESignEncryptArchiveJob::result_type sign_encrypt(Context *ctx,
+ const std::vector<GpgME::Key> &signers,
+ const std::vector<Key> &recipients,
+ const std::vector<QString> &paths,
+ GpgME::Data &outdata,
+ Context::EncryptionFlags encryptionFlags,
+ const QString &baseDirectory)
+{
+ QGpgME::FileListDataProvider in{paths};
+ Data indata(&in);
+ if (!baseDirectory.isEmpty()) {
+ indata.setFileName(baseDirectory.toStdString());
+ }
+
+ ctx->clearSigningKeys();
+ for (const Key &signer : signers) {
+ if (!signer.isNull()) {
+ if (const Error err = ctx->addSigningKey(signer)) {
+ return std::make_tuple(SigningResult{err}, EncryptionResult{}, QString{}, Error{});
+ }
+ }
+ }
+
+ encryptionFlags = static_cast<Context::EncryptionFlags>(encryptionFlags | Context::EncryptArchive);
+ const auto res = ctx->signAndEncrypt(recipients, indata, outdata, encryptionFlags);
+ const auto &signingResult = res.first;
+ const auto &encryptionResult = res.second;
+
+#ifdef Q_OS_WIN
+ const auto outputFileName = QString::fromUtf8(outdata.fileName());
+#else
+ const auto outputFileName = QFile::decodeName(outdata.fileName());
+#endif
+ if (!outputFileName.isEmpty() && (signingResult.error().code() || encryptionResult.error().code())) {
+ // ensure that the output file is removed if the operation was canceled or failed
+ if (QFile::exists(outputFileName)) {
+ qCDebug(QGPGME_LOG) << __func__ << "Removing output file" << outputFileName << "after error or cancel";
+ if (!QFile::remove(outputFileName)) {
+ qCDebug(QGPGME_LOG) << __func__ << "Removing output file" << outputFileName << "failed";
+ }
+ }
+ }
+ Error ae;
+ const QString log = _detail::audit_log_as_html(ctx, ae);
+ return std::make_tuple(signingResult, encryptionResult, log, ae);
+}
+
+static QGpgMESignEncryptArchiveJob::result_type sign_encrypt_to_io_device(Context *ctx,
+ QThread *thread,
+ const std::vector<GpgME::Key> &signers,
+ const std::vector<Key> &recipients,
+ const std::vector<QString> &paths,
+ const std::weak_ptr<QIODevice> &cipherText_,
+ Context::EncryptionFlags encryptionFlags,
+ const QString &baseDirectory)
+{
+ const std::shared_ptr<QIODevice> cipherText = cipherText_.lock();
+ const _detail::ToThreadMover ctMover(cipherText, thread);
+ QGpgME::QIODeviceDataProvider out{cipherText};
+ Data outdata(&out);
+
+ return sign_encrypt(ctx, signers, recipients, paths, outdata, encryptionFlags, baseDirectory);
+}
+
+static QGpgMESignEncryptArchiveJob::result_type sign_encrypt_to_filename(Context *ctx,
+ const std::vector<GpgME::Key> &signers,
+ const std::vector<Key> &recipients,
+ const std::vector<QString> &paths,
+ const QString &outputFile,
+ Context::EncryptionFlags encryptionFlags,
+ const QString &baseDirectory)
+{
+ Data outdata;
+#ifdef Q_OS_WIN
+ outdata.setFileName(outputFile.toUtf8().constData());
+#else
+ outdata.setFileName(QFile::encodeName(outputFile).constData());
+#endif
+
+ return sign_encrypt(ctx, signers, recipients, paths, outdata, encryptionFlags, baseDirectory);
+}
+
+GpgME::Error QGpgMESignEncryptArchiveJob::start(const std::vector<GpgME::Key> &signers,
+ const std::vector<GpgME::Key> &recipients,
+ const std::vector<QString> &paths,
+ const std::shared_ptr<QIODevice> &cipherText,
+ const GpgME::Context::EncryptionFlags encryptionFlags)
+{
+ if (!cipherText) {
+ return Error::fromCode(GPG_ERR_INV_VALUE);
+ }
+
+ run(std::bind(&sign_encrypt_to_io_device,
+ std::placeholders::_1,
+ std::placeholders::_2,
+ signers,
+ recipients,
+ paths,
+ std::placeholders::_3,
+ encryptionFlags,
+ baseDirectory()),
+ cipherText);
+ return {};
+}
+
+GpgME::Error QGpgMESignEncryptArchiveJobPrivate::startIt()
+{
+ if (m_outputFilePath.isEmpty()) {
+ return Error::fromCode(GPG_ERR_INV_VALUE);
+ }
+
+ q->run([=](Context *ctx) {
+ return sign_encrypt_to_filename(ctx, m_signers, m_recipients, m_inputPaths, m_outputFilePath, m_encryptionFlags, m_baseDirectory);
+ });
+
+ return {};
+}
+
+#include "qgpgmesignencryptarchivejob.moc"
--- /dev/null
+/*
+ qgpgmesignencryptarchivejob.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_QGPGMESIGNENCRYPTARCHIVEJOB_H__
+#define __QGPGME_QGPGMESIGNENCRYPTARCHIVEJOB_H__
+
+#include "signencryptarchivejob.h"
+
+#include "threadedjobmixin.h"
+
+#include <encryptionresult.h>
+#include <signingresult.h>
+
+namespace QGpgME
+{
+
+class QGpgMESignEncryptArchiveJob
+#ifdef Q_MOC_RUN
+ : public SignEncryptArchiveJob
+#else
+ : public _detail::ThreadedJobMixin<SignEncryptArchiveJob, std::tuple<GpgME::SigningResult, GpgME::EncryptionResult, QString, GpgME::Error>>
+#endif
+{
+ Q_OBJECT
+#ifdef Q_MOC_RUN
+public Q_SLOTS:
+ void slotFinished();
+#endif
+public:
+ explicit QGpgMESignEncryptArchiveJob(GpgME::Context *context);
+ ~QGpgMESignEncryptArchiveJob() = default;
+
+ GpgME::Error start(const std::vector<GpgME::Key> &signers,
+ const std::vector<GpgME::Key> &recipients,
+ const std::vector<QString> &paths,
+ const std::shared_ptr<QIODevice> &cipherText,
+ const GpgME::Context::EncryptionFlags flags) override;
+};
+
+}
+
+#endif // __QGPGME_QGPGMESIGNENCRYPTARCHIVEJOB_H__
Copyright (c) 2004, 2007 Klarälvdalens Datakonsult AB
Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
Software engineering by Intevation GmbH
- Copyright (c) 2022 g10 Code GmbH
+ Copyright (c) 2022,2023 g10 Code GmbH
Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
QGpgME is free software; you can redistribute it and/or
#include "qgpgmesignencryptjob.h"
+#include "signencryptjob_p.h"
+
#include "dataprovider.h"
#include "context.h"
using namespace QGpgME;
using namespace GpgME;
+namespace
+{
+
+class QGpgMESignEncryptJobPrivate : public SignEncryptJobPrivate
+{
+ QGpgMESignEncryptJob *q = nullptr;
+
+public:
+ QGpgMESignEncryptJobPrivate(QGpgMESignEncryptJob *qq)
+ : q{qq}
+ {
+ }
+
+ ~QGpgMESignEncryptJobPrivate() override = default;
+
+private:
+ GpgME::Error startIt() override
+ {
+ Q_ASSERT(!"Not supported by this Job class.");
+ return Error::fromCode(GPG_ERR_NOT_SUPPORTED);
+ }
+
+ void startNow() override
+ {
+ q->run();
+ }
+};
+
+}
+
QGpgMESignEncryptJob::QGpgMESignEncryptJob(Context *context)
: mixin_type(context),
mOutputIsBase64Encoded(false)
{
+ setJobPrivate(this, std::unique_ptr<QGpgMESignEncryptJobPrivate>{new QGpgMESignEncryptJobPrivate{this}});
lateInitialization();
}
QGpgME::QIODeviceDataProvider in(plainText);
Data indata(&in);
+ if (!plainText->isSequential()) {
+ indata.setSizeHint(plainText->size());
+ }
const auto pureFileName = QFileInfo{fileName}.fileName().toStdString();
if (!pureFileName.empty()) {
/* from SignEncryptJob */
GpgME::Error start(const std::vector<GpgME::Key> &signers,
const std::vector<GpgME::Key> &recipients,
- const QByteArray &plainText, bool alwaysTrust) Q_DECL_OVERRIDE;
+ const QByteArray &plainText, bool alwaysTrust) override;
/* from SignEncryptJob */
void start(const std::vector<GpgME::Key> &signers,
const std::vector<GpgME::Key> &recipients,
const std::shared_ptr<QIODevice> &plainText,
const std::shared_ptr<QIODevice> &cipherText,
- bool alwaysTrust) Q_DECL_OVERRIDE;
+ bool alwaysTrust) override;
void start(const std::vector<GpgME::Key> &signers,
const std::vector<GpgME::Key> &recipients,
const std::shared_ptr<QIODevice> &plainText,
const std::shared_ptr<QIODevice> &cipherText,
- const GpgME::Context::EncryptionFlags flags) Q_DECL_OVERRIDE;
+ const GpgME::Context::EncryptionFlags flags) override;
std::pair<GpgME::SigningResult, GpgME::EncryptionResult>
exec(const std::vector<GpgME::Key> &signers,
const std::vector<GpgME::Key> &recipients,
const QByteArray &plainText, bool alwaysTrust,
- QByteArray &cipherText) Q_DECL_OVERRIDE;
+ QByteArray &cipherText) override;
std::pair<GpgME::SigningResult, GpgME::EncryptionResult>
exec(const std::vector<GpgME::Key> &signers,
const std::vector<GpgME::Key> &recipients,
const QByteArray &plainText, const GpgME::Context::EncryptionFlags flags,
- QByteArray &cipherText) Q_DECL_OVERRIDE;
+ QByteArray &cipherText) override;
/* from SignEncryptJob */
- void setOutputIsBase64Encoded(bool on) Q_DECL_OVERRIDE;
+ void setOutputIsBase64Encoded(bool on) override;
/* from ThreadedJobMixin */
- void resultHook(const result_type &r) Q_DECL_OVERRIDE;
+ void resultHook(const result_type &r) override;
private:
bool mOutputIsBase64Encoded;
const _detail::ToThreadMover sgMover(signature, thread);
QGpgME::QIODeviceDataProvider in(plainText);
- const Data indata(&in);
+ Data indata(&in);
+ if (!plainText->isSequential()) {
+ indata.setSizeHint(plainText->size());
+ }
ctx->clearSigningKeys();
Q_FOREACH (const Key &signer, signers)
/* from SignJob */
GpgME::Error start(const std::vector<GpgME::Key> &signers,
const QByteArray &plainText,
- GpgME::SignatureMode mode) Q_DECL_OVERRIDE;
+ GpgME::SignatureMode mode) override;
/* from SignJob */
void start(const std::vector<GpgME::Key> &signers,
const std::shared_ptr<QIODevice> &plainText,
const std::shared_ptr<QIODevice> &signature,
- GpgME::SignatureMode mode) Q_DECL_OVERRIDE;
+ GpgME::SignatureMode mode) override;
/* from SignJob */
GpgME::SigningResult exec(const std::vector<GpgME::Key> &signers,
const QByteArray &plainText,
GpgME::SignatureMode mode,
- QByteArray &signature) Q_DECL_OVERRIDE;
+ QByteArray &signature) override;
/* from SignJob */
- void setOutputIsBase64Encoded(bool on) Q_DECL_OVERRIDE;
+ void setOutputIsBase64Encoded(bool on) override;
/* from ThreadedJobMixin */
- void resultHook(const result_type &r) Q_DECL_OVERRIDE;
+ void resultHook(const result_type &r) override;
private:
GpgME::SigningResult mResult;
namespace
{
struct TrustSignatureProperties {
+ TrustSignatureProperties() = default;
+ // needed for C++11 because until C++14 "aggregate initialization requires
+ // class type, that has no default member initializers"
+ TrustSignatureProperties(TrustSignatureTrust trust_, unsigned int depth_, const QString &scope_)
+ : trust{trust_}
+ , depth{depth_}
+ , scope{scope_}
+ {}
+
TrustSignatureTrust trust = TrustSignatureTrust::None;
unsigned int depth = 0;
QString scope;
~QGpgMESignKeyJob();
/* from SignKeyJob */
- GpgME::Error start(const GpgME::Key &key) Q_DECL_OVERRIDE;
+ GpgME::Error start(const GpgME::Key &key) override;
/* from SignKeyJob */
- void setUserIDsToSign(const std::vector<unsigned int> &idsToSign) Q_DECL_OVERRIDE;
+ void setUserIDsToSign(const std::vector<unsigned int> &idsToSign) override;
/* from SignKeyJob */
- void setCheckLevel(unsigned int checkLevel) Q_DECL_OVERRIDE;
+ void setCheckLevel(unsigned int checkLevel) override;
/* from SignKeyJob */
- void setExportable(bool exportable) Q_DECL_OVERRIDE;
+ void setExportable(bool exportable) override;
/* from SignKeyJob */
- void setSigningKey(const GpgME::Key &key) Q_DECL_OVERRIDE;
+ void setSigningKey(const GpgME::Key &key) override;
/* from SignKeyJob */
- void setNonRevocable(bool nonRevocable) Q_DECL_OVERRIDE;
+ void setNonRevocable(bool nonRevocable) override;
/* from SignKeyJob */
- void setRemark(const QString &remark) Q_DECL_OVERRIDE;
+ void setRemark(const QString &remark) override;
/* from SignKeyJob */
- void setDupeOk(bool value) Q_DECL_OVERRIDE;
+ void setDupeOk(bool value) override;
/* from SignKeyJob */
- void setTrustSignature(GpgME::TrustSignatureTrust trust, unsigned short depth, const QString &scope) Q_DECL_OVERRIDE;
+ void setTrustSignature(GpgME::TrustSignatureTrust trust, unsigned short depth, const QString &scope) override;
void setExpirationDate(const QDate &expiration) override;
explicit QGpgMETofuPolicyJob(GpgME::Context *context);
~QGpgMETofuPolicyJob();
- void start(const GpgME::Key &key, GpgME::TofuInfo::Policy policy) Q_DECL_OVERRIDE;
- GpgME::Error exec(const GpgME::Key &key, GpgME::TofuInfo::Policy policy) Q_DECL_OVERRIDE;
+ void start(const GpgME::Key &key, GpgME::TofuInfo::Policy policy) override;
+ GpgME::Error exec(const GpgME::Key &key, GpgME::TofuInfo::Policy policy) override;
};
}
QGpgME::QIODeviceDataProvider dataDP(signedData);
Data data(&dataDP);
+ if (!signedData->isSequential()) {
+ data.setSizeHint(signedData->size());
+ }
const VerificationResult res = ctx->verifyDetachedSignature(sig, data);
Error ae;
~QGpgMEVerifyDetachedJob();
/* from VerifyDetachedJob */
- GpgME::Error start(const QByteArray &signature, const QByteArray &signedData) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QByteArray &signature, const QByteArray &signedData) override;
/* from VerifyDetachedJob */
- void start(const std::shared_ptr<QIODevice> &signature, const std::shared_ptr<QIODevice> &signedData) Q_DECL_OVERRIDE;
+ void start(const std::shared_ptr<QIODevice> &signature, const std::shared_ptr<QIODevice> &signedData) override;
/* from VerifyDetachedJob */
GpgME::VerificationResult exec(const QByteArray &signature,
- const QByteArray &signedData) Q_DECL_OVERRIDE;
+ const QByteArray &signedData) override;
/* from ThreadedJobMixin */
- void resultHook(const result_type &r) Q_DECL_OVERRIDE;
+ void resultHook(const result_type &r) override;
private:
GpgME::VerificationResult mResult;
const _detail::ToThreadMover sdMover(signedData, thread);
QGpgME::QIODeviceDataProvider in(signedData);
- const Data indata(&in);
+ Data indata(&in);
+ if (!signedData->isSequential()) {
+ indata.setSizeHint(signedData->size());
+ }
if (!plainText) {
QGpgME::QByteArrayDataProvider out;
~QGpgMEVerifyOpaqueJob();
/* from VerifyOpaqueJob */
- GpgME::Error start(const QByteArray &signedData) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QByteArray &signedData) override;
/* from VerifyOpaqueJob */
- void start(const std::shared_ptr<QIODevice> &signedData, const std::shared_ptr<QIODevice> &plainText) Q_DECL_OVERRIDE;
+ void start(const std::shared_ptr<QIODevice> &signedData, const std::shared_ptr<QIODevice> &plainText) override;
/* form VerifyOpaqueJob */
- GpgME::VerificationResult exec(const QByteArray &signedData, QByteArray &plainData) Q_DECL_OVERRIDE;
+ GpgME::VerificationResult exec(const QByteArray &signedData, QByteArray &plainData) override;
/* from ThreadedJobMixin */
- void resultHook(const result_type &r) Q_DECL_OVERRIDE;
+ void resultHook(const result_type &r) override;
private:
GpgME::VerificationResult mResult;
~QGpgMEWKDLookupJob();
/* from WKDLookupJob */
- GpgME::Error start(const QString &email) Q_DECL_OVERRIDE;
+ GpgME::Error start(const QString &email) override;
/* from WKDLookupJob */
- WKDLookupResult exec(const QString &email) Q_DECL_OVERRIDE;
+ WKDLookupResult exec(const QString &email) override;
};
}
--- /dev/null
+/*
+ qgpgmewkdrefreshjob.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "qgpgmewkdrefreshjob.h"
+
+#include "debug.h"
+#include "qgpgme_debug.h"
+#include "qgpgmekeylistjob.h"
+#include "wkdrefreshjob_p.h"
+
+#include <context.h>
+
+#include <memory>
+
+using namespace QGpgME;
+using namespace GpgME;
+
+namespace
+{
+
+class QGpgMEWKDRefreshJobPrivate : public WKDRefreshJobPrivate
+{
+ QGpgMEWKDRefreshJob *q = nullptr;
+
+public:
+ QGpgMEWKDRefreshJobPrivate(QGpgMEWKDRefreshJob *qq)
+ : q{qq}
+ {
+ }
+
+ ~QGpgMEWKDRefreshJobPrivate() override = default;
+
+private:
+ GpgME::Error startIt() override;
+
+ void startNow() override
+ {
+ q->run();
+ }
+};
+
+static QStringList toEmailAddressesOriginatingFromWKD(const std::vector<GpgME::Key> &keys)
+{
+ const QStringList emails = std::accumulate(keys.begin(), keys.end(), QStringList{}, [](QStringList &emails, const Key &key) {
+ const auto userIDs = key.userIDs();
+ emails = std::accumulate(std::begin(userIDs), std::end(userIDs), emails, [](QStringList &emails, const UserID &userID) {
+ if (!userID.isRevoked() && !userID.addrSpec().empty() && userID.origin() == Key::OriginWKD) {
+ emails.push_back(QString::fromStdString(userID.addrSpec()));
+ }
+ return emails;
+ });
+ return emails;
+ });
+ return emails;
+}
+
+static QStringList toEmailAddresses(const std::vector<GpgME::UserID> &userIds)
+{
+ const QStringList emails = std::accumulate(
+ std::begin(userIds),
+ std::end(userIds),
+ QStringList{},
+ [](QStringList &emails, const UserID &userId) {
+ if (!userId.isRevoked() && !userId.addrSpec().empty()) {
+ emails.push_back(QString::fromStdString(userId.addrSpec()));
+ }
+ return emails;
+ });
+ return emails;
+}
+
+}
+
+QGpgMEWKDRefreshJob::QGpgMEWKDRefreshJob(Context *context)
+ : mixin_type{context}
+{
+ setJobPrivate(this, std::unique_ptr<QGpgMEWKDRefreshJobPrivate>{new QGpgMEWKDRefreshJobPrivate{this}});
+ lateInitialization();
+}
+
+QGpgMEWKDRefreshJob::~QGpgMEWKDRefreshJob() = default;
+
+static QGpgMEWKDRefreshJob::result_type locate_external_keys(Context *ctx, const QStringList &emails)
+{
+ qCDebug(QGPGME_LOG) << __func__ << "locating external keys for" << emails;
+ if (emails.empty()) {
+ return std::make_tuple(ImportResult{}, QString{}, Error{});
+ }
+
+ Context::KeyListModeSaver saver{ctx};
+ ctx->setKeyListMode(GpgME::LocateExternal);
+ ctx->setFlag("auto-key-locate", "clear,wkd");
+ std::vector<Key> dummy;
+ auto job = std::unique_ptr<KeyListJob>{new QGpgMEKeyListJob{ctx}};
+ (void) job->exec(emails, false, dummy);
+ qCDebug(QGPGME_LOG) << __func__ << "number of keys:" << dummy.size();
+ std::for_each(dummy.cbegin(), dummy.cend(), [](const Key &k) {
+ qCDebug(QGPGME_LOG) << __func__ << toLogString(k).c_str();
+ });
+ const auto result = ctx->importResult();
+ qCDebug(QGPGME_LOG) << __func__ << "result:" << toLogString(result).c_str();
+ job.release();
+
+ return std::make_tuple(result, QString{}, Error{});
+}
+
+GpgME::Error QGpgMEWKDRefreshJobPrivate::startIt()
+{
+ QStringList emails;
+ if (!m_keys.empty()) {
+ emails = toEmailAddressesOriginatingFromWKD(m_keys);
+ } else {
+ emails = toEmailAddresses(m_userIds);
+ }
+ std::sort(emails.begin(), emails.end());
+ emails.erase(std::unique(emails.begin(), emails.end()), emails.end());
+
+ q->run([emails](Context *ctx) {
+ return locate_external_keys(ctx, emails);
+ });
+
+ return {};
+}
+
+#include "qgpgmewkdrefreshjob.moc"
--- /dev/null
+/*
+ qgpgmewkdrefreshjob.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_QGPGMEWKDREFRESHJOB_H__
+#define __QGPGME_QGPGMEWKDREFRESHJOB_H__
+
+#include "threadedjobmixin.h"
+#include "wkdrefreshjob.h"
+
+#include <importresult.h>
+
+namespace QGpgME
+{
+
+class QGpgMEWKDRefreshJob
+#ifdef Q_MOC_RUN
+ : public WKDRefreshJob
+#else
+ : public _detail::ThreadedJobMixin<WKDRefreshJob, std::tuple<GpgME::ImportResult, QString, GpgME::Error>>
+#endif
+{
+ Q_OBJECT
+#ifdef Q_MOC_RUN
+public Q_SLOTS:
+ void slotFinished();
+#endif
+public:
+ explicit QGpgMEWKDRefreshJob(GpgME::Context *context);
+ ~QGpgMEWKDRefreshJob() override;
+};
+
+}
+
+#endif // __QGPGME_QGPGMEWKDREFRESHJOB_H__
explicit QGpgMEWKSPublishJob(GpgME::Context *context);
~QGpgMEWKSPublishJob();
- void startCheck(const QString &mailbox) Q_DECL_OVERRIDE;
- void startCreate(const char *fpr, const QString &mailbox) Q_DECL_OVERRIDE;
- void startReceive(const QByteArray &response) Q_DECL_OVERRIDE;
+ void startCheck(const QString &mailbox) override;
+ void startCreate(const char *fpr, const QString &mailbox) override;
+ void startReceive(const QByteArray &response) override;
};
}
--- /dev/null
+/*
+ signarchivejob.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "signarchivejob.h"
+#include "signarchivejob_p.h"
+
+#include <engineinfo.h>
+
+using namespace QGpgME;
+
+SignArchiveJob::SignArchiveJob(QObject *parent)
+ : Job{parent}
+{
+}
+
+SignArchiveJob::~SignArchiveJob() = default;
+
+// static
+bool SignArchiveJob::isSupported()
+{
+ static const auto gpgVersion = GpgME::engineInfo(GpgME::GpgEngine).engineVersion();
+ return (gpgVersion >= "2.4.1") || (gpgVersion >= "2.2.42" && gpgVersion < "2.3.0");
+}
+
+void SignArchiveJob::setSigners(const std::vector<GpgME::Key> &signers)
+{
+ auto d = jobPrivate<SignArchiveJobPrivate>(this);
+ d->m_signers = signers;
+}
+
+std::vector<GpgME::Key> SignArchiveJob::signers() const
+{
+ auto d = jobPrivate<SignArchiveJobPrivate>(this);
+ return d->m_signers;
+}
+
+void SignArchiveJob::setInputPaths(const std::vector<QString> &paths)
+{
+ auto d = jobPrivate<SignArchiveJobPrivate>(this);
+ d->m_inputPaths = paths;
+}
+
+std::vector<QString> SignArchiveJob::inputPaths() const
+{
+ auto d = jobPrivate<SignArchiveJobPrivate>(this);
+ return d->m_inputPaths;
+}
+
+void SignArchiveJob::setOutputFile(const QString &path)
+{
+ auto d = jobPrivate<SignArchiveJobPrivate>(this);
+ d->m_outputFilePath = path;
+}
+
+QString SignArchiveJob::outputFile() const
+{
+ auto d = jobPrivate<SignArchiveJobPrivate>(this);
+ return d->m_outputFilePath;
+}
+
+void SignArchiveJob::setBaseDirectory(const QString &baseDirectory)
+{
+ auto d = jobPrivate<SignArchiveJobPrivate>(this);
+ d->m_baseDirectory = baseDirectory;
+}
+
+QString SignArchiveJob::baseDirectory() const
+{
+ auto d = jobPrivate<SignArchiveJobPrivate>(this);
+ return d->m_baseDirectory;
+}
+
+#include "signarchivejob.moc"
--- /dev/null
+/*
+ signarchivejob.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_SIGNARCHIVEJOB_H__
+#define __QGPGME_SIGNARCHIVEJOB_H__
+
+#include "job.h"
+
+#ifdef BUILDING_QGPGME
+# include "context.h"
+#else
+# include <gpgme++/context.h>
+#endif
+
+namespace GpgME
+{
+class Key;
+}
+
+namespace QGpgME
+{
+
+/**
+ * Abstract base class for job for creating signed archives
+ */
+class QGPGME_EXPORT SignArchiveJob : public Job
+{
+ Q_OBJECT
+protected:
+ explicit SignArchiveJob(QObject *parent);
+public:
+ ~SignArchiveJob() override;
+
+ static bool isSupported();
+
+ /**
+ * Sets the keys to use for signing the archive.
+ *
+ * Used if the job is started with startIt().
+ */
+ void setSigners(const std::vector<GpgME::Key> &signers);
+ std::vector<GpgME::Key> signers() const;
+
+ /**
+ * Sets the paths of the files and folders to put into the archive.
+ *
+ * If base directory is set, then the paths must be relative to the
+ * base directory.
+ *
+ * Used if the job is started with startIt().
+ */
+ void setInputPaths(const std::vector<QString> &paths);
+ std::vector<QString> inputPaths() const;
+
+ /**
+ * Sets the path of the file to write the created archive to.
+ *
+ * If \a path is a relative path and base directory is set, then the
+ * path is interpreted relative to the base directory.
+ *
+ * Used if the job is started with startIt().
+ *
+ * \note If a file with this path exists, then the job will fail, i.e. you
+ * need to delete an existing file that shall be overwritten before you
+ * start the job.
+ */
+ void setOutputFile(const QString &path);
+ QString outputFile() const;
+
+ /**
+ * Sets the base directory for the relative paths of the input files and
+ * the output file.
+ */
+ void setBaseDirectory(const QString &baseDirectory);
+ QString baseDirectory() const;
+
+ /**
+ * Starts the creation of a signed archive.
+ *
+ * Creates a signed archive with the files and directories in \a paths.
+ * The archive is signed with the keys in \a signers or with the default
+ * key, if \a signers is empty. The signed archive is written to \a output.
+ *
+ * Emits result() when the job has finished.
+ */
+ virtual GpgME::Error start(const std::vector<GpgME::Key> &signers,
+ const std::vector<QString> &paths,
+ const std::shared_ptr<QIODevice> &output) = 0;
+
+Q_SIGNALS:
+ /**
+ * This signal is emitted whenever gpgtar sends a progress status update for
+ * the number of files. In the scanning phase (i.e. while gpgtar checks
+ * which files to put into the archive), \a current is the current number of
+ * files and \a total is 0. In the writing phase, \a current is the number
+ * of processed files and \a total is the total number of files.
+ */
+ void fileProgress(int current, int total);
+
+ /**
+ * This signal is emitted whenever gpgtar sends a progress status update for
+ * the amount of processed data. It is only emitted in the writing phase.
+ * \a current is the processed amount data and \a total is the total amount
+ * of data to process. Both values never exceed 2^20.
+ */
+ void dataProgress(int current, int total);
+
+ void result(const GpgME::SigningResult &result,
+ const QString &auditLogAsHtml = {},
+ const GpgME::Error &auditLogError = {});
+};
+
+}
+
+#endif // __QGPGME_SIGNARCHIVEJOB_H__
--- /dev/null
+/*
+ signarchivejob_p.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_SIGNARCHIVEJOB_P_H__
+#define __QGPGME_SIGNARCHIVEJOB_P_H__
+
+#include "job_p.h"
+
+namespace QGpgME
+{
+
+struct SignArchiveJobPrivate : public JobPrivate
+{
+ std::vector<GpgME::Key> m_signers;
+ std::vector<QString> m_inputPaths;
+ QString m_outputFilePath;
+ QString m_baseDirectory;
+};
+
+}
+
+#endif // __QGPGME_SIGNARCHIVEJOB_P_H__
--- /dev/null
+/*
+ signencryptarchivejob.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "signencryptarchivejob.h"
+#include "signencryptarchivejob_p.h"
+
+#include <engineinfo.h>
+
+using namespace QGpgME;
+
+SignEncryptArchiveJob::SignEncryptArchiveJob(QObject *parent)
+ : Job{parent}
+{
+}
+
+SignEncryptArchiveJob::~SignEncryptArchiveJob() = default;
+
+// static
+bool SignEncryptArchiveJob::isSupported()
+{
+ static const auto gpgVersion = GpgME::engineInfo(GpgME::GpgEngine).engineVersion();
+ return (gpgVersion >= "2.4.1") || (gpgVersion >= "2.2.42" && gpgVersion < "2.3.0");
+}
+
+void SignEncryptArchiveJob::setSigners(const std::vector<GpgME::Key> &signers)
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ d->m_signers = signers;
+}
+
+std::vector<GpgME::Key> SignEncryptArchiveJob::signers() const
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ return d->m_signers;
+}
+
+void SignEncryptArchiveJob::setRecipients(const std::vector<GpgME::Key> &recipients)
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ d->m_recipients = recipients;
+}
+
+std::vector<GpgME::Key> SignEncryptArchiveJob::recipients() const
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ return d->m_recipients;
+}
+
+void SignEncryptArchiveJob::setInputPaths(const std::vector<QString> &paths)
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ d->m_inputPaths = paths;
+}
+
+std::vector<QString> SignEncryptArchiveJob::inputPaths() const
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ return d->m_inputPaths;
+}
+
+void SignEncryptArchiveJob::setOutputFile(const QString &path)
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ d->m_outputFilePath = path;
+}
+
+QString SignEncryptArchiveJob::outputFile() const
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ return d->m_outputFilePath;
+}
+
+void SignEncryptArchiveJob::setEncryptionFlags(GpgME::Context::EncryptionFlags flags)
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ d->m_encryptionFlags = static_cast<GpgME::Context::EncryptionFlags>(flags | GpgME::Context::EncryptArchive);
+}
+
+GpgME::Context::EncryptionFlags SignEncryptArchiveJob::encryptionFlags() const
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ return d->m_encryptionFlags;
+}
+
+void SignEncryptArchiveJob::setBaseDirectory(const QString &baseDirectory)
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ d->m_baseDirectory = baseDirectory;
+}
+
+QString SignEncryptArchiveJob::baseDirectory() const
+{
+ auto d = jobPrivate<SignEncryptArchiveJobPrivate>(this);
+ return d->m_baseDirectory;
+}
+
+#include "signencryptarchivejob.moc"
--- /dev/null
+/*
+ signencryptarchivejob.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_SIGNENCRYPTARCHIVEJOB_H__
+#define __QGPGME_SIGNENCRYPTARCHIVEJOB_H__
+
+#include "job.h"
+
+#ifdef BUILDING_QGPGME
+# include "context.h"
+#else
+# include <gpgme++/context.h>
+#endif
+
+namespace GpgME
+{
+class Key;
+}
+
+namespace QGpgME
+{
+
+/**
+ * Abstract base class for job for creating encrypted signed archives
+ */
+class QGPGME_EXPORT SignEncryptArchiveJob : public Job
+{
+ Q_OBJECT
+protected:
+ explicit SignEncryptArchiveJob(QObject *parent);
+public:
+ ~SignEncryptArchiveJob() override;
+
+ static bool isSupported();
+
+ /**
+ * Sets the keys to use for signing the archive.
+ *
+ * Used if the job is started with startIt().
+ */
+ void setSigners(const std::vector<GpgME::Key> &signers);
+ std::vector<GpgME::Key> signers() const;
+
+ /**
+ * Sets the keys to use for encrypting the archive.
+ *
+ * Used if the job is started with startIt().
+ */
+ void setRecipients(const std::vector<GpgME::Key> &recipients);
+ std::vector<GpgME::Key> recipients() const;
+
+ /**
+ * Sets the paths of the files and folders to put into the archive.
+ *
+ * If base directory is set, then the paths must be relative to the
+ * base directory.
+ *
+ * Used if the job is started with startIt().
+ */
+ void setInputPaths(const std::vector<QString> &paths);
+ std::vector<QString> inputPaths() const;
+
+ /**
+ * Sets the path of the file to write the created archive to.
+ *
+ * If \a path is a relative path and base directory is set, then the
+ * path is interpreted relative to the base directory.
+ *
+ * Used if the job is started with startIt().
+ *
+ * \note If a file with this path exists, then the job will fail, i.e. you
+ * need to delete an existing file that shall be overwritten before you
+ * start the job.
+ */
+ void setOutputFile(const QString &path);
+ QString outputFile() const;
+
+ /**
+ * Sets the flags to use for encryption. Defaults to \c EncryptArchive.
+ * The \c EncryptArchive flag is always assumed set for this job.
+ *
+ * Used if the job is started with startIt().
+ */
+ void setEncryptionFlags(GpgME::Context::EncryptionFlags flags);
+ GpgME::Context::EncryptionFlags encryptionFlags() const;
+
+ /**
+ * Sets the base directory for the relative paths of the input files and
+ * the output file.
+ */
+ void setBaseDirectory(const QString &baseDirectory);
+ QString baseDirectory() const;
+
+ /**
+ * Starts the creation of an encrypted signed archive.
+ *
+ * Creates an encrypted signed archive with the files and directories in
+ * \a paths.
+ * The archive is signed with the keys in \a signers or with the default
+ * key, if \a signers is empty. Then the archive is encrypted for the
+ * keys in \a recipients. If \a recipients is empty, then symmetric
+ * encryption is performed. The encrypted signed archive is written to
+ * \a cipherText.
+ *
+ * Emits result() when the job has finished.
+ */
+ virtual GpgME::Error start(const std::vector<GpgME::Key> &signers,
+ const std::vector<GpgME::Key> &recipients,
+ const std::vector<QString> &paths,
+ const std::shared_ptr<QIODevice> &cipherText,
+ const GpgME::Context::EncryptionFlags flags) = 0;
+
+Q_SIGNALS:
+ /**
+ * This signal is emitted whenever gpgtar sends a progress status update for
+ * the number of files. In the scanning phase (i.e. while gpgtar checks
+ * which files to put into the archive), \a current is the current number of
+ * files and \a total is 0. In the writing phase, \a current is the number
+ * of processed files and \a total is the total number of files.
+ */
+ void fileProgress(int current, int total);
+
+ /**
+ * This signal is emitted whenever gpgtar sends a progress status update for
+ * the amount of processed data. It is only emitted in the writing phase.
+ * \a current is the processed amount data and \a total is the total amount
+ * of data to process. Both values never exceed 2^20.
+ */
+ void dataProgress(int current, int total);
+
+ void result(const GpgME::SigningResult &signingResult,
+ const GpgME::EncryptionResult &encryptionResult,
+ const QString &auditLogAsHtml = {},
+ const GpgME::Error &auditLogError = {});
+};
+
+}
+
+#endif // __QGPGME_SIGNENCRYPTARCHIVEJOB_H__
--- /dev/null
+/*
+ signencryptarchivejob_p.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_SIGNENCRYPTARCHIVEJOB_P_H__
+#define __QGPGME_SIGNENCRYPTARCHIVEJOB_P_H__
+
+#include "job_p.h"
+
+namespace QGpgME
+{
+
+struct SignEncryptArchiveJobPrivate : public JobPrivate
+{
+ std::vector<GpgME::Key> m_signers;
+ std::vector<GpgME::Key> m_recipients;
+ std::vector<QString> m_inputPaths;
+ QString m_outputFilePath;
+ QString m_baseDirectory;
+ GpgME::Context::EncryptionFlags m_encryptionFlags = GpgME::Context::EncryptArchive;
+};
+
+}
+
+#endif // __QGPGME_SIGNENCRYPTARCHIVEJOB_P_H__
#endif
#include "signencryptjob.h"
-#include "job_p.h"
+#include "signencryptjob_p.h"
using namespace QGpgME;
-namespace
-{
-struct SignEncryptJobPrivate : public JobPrivate
-{
- QString m_fileName;
-};
-}
-
void SignEncryptJob::setFileName(const QString &fileName)
{
auto d = jobPrivate<SignEncryptJobPrivate>(this);
--- /dev/null
+/*
+ signencryptjob_p.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2022,2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_SIGNENCRYPTJOB_P_H__
+#define __QGPGME_SIGNENCRYPTJOB_P_H__
+
+#include "job_p.h"
+
+namespace QGpgME
+{
+
+struct SignEncryptJobPrivate : public JobPrivate
+{
+ QString m_fileName;
+};
+
+}
+
+#endif // __QGPGME_SIGNENCRYPTJOB_P_H__
m_function = function;
}
+ bool hasFunction()
+ {
+ const QMutexLocker locker(&m_mutex);
+ return static_cast<bool>(m_function);
+ }
+
T_result result() const
{
const QMutexLocker locker(&m_mutex);
}
private:
- void run() Q_DECL_OVERRIDE {
+ void run() override {
const QMutexLocker locker(&m_mutex);
m_result = m_function();
}
typedef ThreadedJobMixin<T_base, T_result> mixin_type;
typedef T_result result_type;
+ void run()
+ {
+ Q_ASSERT(m_thread.hasFunction() && "Call setWorkerFunction() before run()");
+ m_thread.start();
+ }
+
protected:
static_assert(std::tuple_size<T_result>::value > 2,
"Result tuple too small");
}
template <typename T_binder>
+ void setWorkerFunction(const T_binder &func)
+ {
+ m_thread.setFunction([this, func]() { return func(this->context()); });
+ }
+
+public:
+ template <typename T_binder>
void run(const T_binder &func)
{
m_thread.setFunction(std::bind(func, this->context()));
m_thread.setFunction(std::bind(func, this->context(), this->thread(), std::weak_ptr<QIODevice>(io1), std::weak_ptr<QIODevice>(io2)));
m_thread.start();
}
+
+protected:
GpgME::Context *context() const
{
return m_ctx.get();
doEmitResult(r);
this->deleteLater();
}
- void slotCancel() Q_DECL_OVERRIDE {
+ void slotCancel() override {
if (m_ctx)
{
m_ctx->cancelPendingOperation();
}
}
- QString auditLogAsHtml() const Q_DECL_OVERRIDE
+ QString auditLogAsHtml() const override
{
return m_auditLog;
}
- GpgME::Error auditLogError() const Q_DECL_OVERRIDE
+ GpgME::Error auditLogError() const override
{
return m_auditLogError;
}
- void showProgress(const char * /*what*/,
- int /*type*/, int current, int total) Q_DECL_OVERRIDE {
- // will be called from the thread exec'ing the operation, so
- // just bounce everything to the owning thread:
- // ### hope this is thread-safe (meta obj is const, and
- // ### portEvent is thread-safe, so should be ok)
- QMetaObject::invokeMethod(this, "progress", Qt::QueuedConnection,
- // TODO port
- Q_ARG(QString, QString()),
- Q_ARG(int, current),
- Q_ARG(int, total));
+ void showProgress(const char *what,
+ int type, int current, int total) override {
+ QMetaObject::invokeMethod(this, [this, current, total]() {
+ Q_EMIT this->jobProgress(current, total);
+ }, Qt::QueuedConnection);
+ const QString what_ = QString::fromUtf8(what);
+ QMetaObject::invokeMethod(this, [this, what_, type, current, total]() {
+ Q_EMIT this->rawProgress(what_, type, current, total);
+ }, Qt::QueuedConnection);
+ QMetaObject::invokeMethod(this, [this, what_, current, total]() {
+ QT_WARNING_PUSH
+ QT_WARNING_DISABLE_DEPRECATED
+ Q_EMIT this->progress(what_, current, total);
+ QT_WARNING_POP
+ }, Qt::QueuedConnection);
}
private:
template <typename T1, typename T2>
#include "util.h"
-#include <QStringList>
-
#include <key.h>
#include <algorithm>
{
QStringList fprs;
fprs.reserve(keys.size());
- std::transform(std::begin(keys), std::end(keys), std::back_inserter(fprs), [](const auto &k) {
+ std::transform(std::begin(keys), std::end(keys), std::back_inserter(fprs), [](const GpgME::Key &k) {
return QString::fromLatin1(k.primaryFingerprint());
});
return fprs;
#ifndef __QGPGME_UTIL_H__
#define __QGPGME_UTIL_H__
+#include <QStringList>
+
#include <gpgme.h>
-#include <sstream>
#include <string>
#include <vector>
-class QStringList;
-
namespace GpgME
{
class Key;
QStringList toFingerprints(const std::vector<GpgME::Key> &keys);
-template<class Result>
-std::string toLogString(const Result &result)
-{
- std::stringstream stream;
- stream << result;
- return stream.str();
-}
-
#endif // __QGPGME_UTIL_H__
--- /dev/null
+/*
+ wkdrefreshjob.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "wkdrefreshjob.h"
+#include "wkdrefreshjob_p.h"
+
+using namespace QGpgME;
+
+WKDRefreshJob::WKDRefreshJob(QObject *parent)
+ : AbstractImportJob{parent}
+{
+}
+
+WKDRefreshJob::~WKDRefreshJob() = default;
+
+GpgME::Error WKDRefreshJob::start(const std::vector<GpgME::Key> &keys)
+{
+ auto d = jobPrivate<WKDRefreshJobPrivate>(this);
+ d->m_keys = keys;
+ return d->startIt();
+}
+
+GpgME::Error WKDRefreshJob::start(const std::vector<GpgME::UserID> &userIDs)
+{
+ auto d = jobPrivate<WKDRefreshJobPrivate>(this);
+ d->m_userIds = userIDs;
+ return d->startIt();
+}
+
+#include "wkdrefreshjob.moc"
--- /dev/null
+/*
+ wkdrefreshjob.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_WKDREFRESHJOB_H__
+#define __QGPGME_WKDREFRESHJOB_H__
+
+#include "abstractimportjob.h"
+#include "qgpgme_export.h"
+
+#include <vector>
+
+namespace GpgME
+{
+class Error;
+class Key;
+class UserID;
+}
+
+namespace QGpgME
+{
+
+/**
+ * This job refreshes OpenPGP keys via WKD.
+ */
+class QGPGME_EXPORT WKDRefreshJob : public AbstractImportJob
+{
+ Q_OBJECT
+protected:
+ explicit WKDRefreshJob(QObject *parent);
+public:
+ ~WKDRefreshJob() override;
+
+ /**
+ * Starts a refresh of the \a keys. Only user IDs that have WKD set as
+ * origin are used for the WKD lookup. Revoked user IDs are ignored.
+ *
+ * Use the other start overload to use all user IDs for the WKD lookup.
+ */
+ GpgME::Error start(const std::vector<GpgME::Key> &keys);
+
+ /**
+ * Starts a refresh of the keys belonging to the user IDs \a userIDs.
+ * All user IDs are used for the WKD lookup. Revoked user IDs are ignored.
+ */
+ GpgME::Error start(const std::vector<GpgME::UserID> &userIDs);
+};
+
+}
+
+#endif // __QGPGME_WKDREFRESHJOB_H__
--- /dev/null
+/*
+ wkdrefreshjob_p.h
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifndef __QGPGME_WKDREFRESHJOB_P_H__
+#define __QGPGME_WKDREFRESHJOB_P_H__
+
+#include "job_p.h"
+
+#include <key.h>
+
+namespace QGpgME
+{
+
+struct WKDRefreshJobPrivate : public JobPrivate
+{
+ std::vector<GpgME::Key> m_keys;
+ std::vector<GpgME::UserID> m_userIds;
+};
+
+}
+
+#endif // __QGPGME_WKDREFRESHJOB_P_H__
the_tests = \
t-addexistingsubkey \
+ t-decryptverify \
t-keylist t-keylocate t-ownertrust t-tofuinfo \
t-encrypt t-verify t-various t-config t-remarks t-trustsignatures \
t-changeexpiryjob t-wkdlookup t-import t-revokekey t-setprimaryuserid
moc_files = \
t-addexistingsubkey.moc \
+ t-decryptverify.moc \
t-keylist.moc t-keylocate.moc t-ownertrust.moc t-tofuinfo.moc \
t-encrypt.moc t-support.hmoc t-wkspublish.moc t-verify.moc \
t-various.moc t-config.moc t-remarks.moc t-trustsignatures.moc \
AM_LDFLAGS = -no-install
+if WANT_QT5
LDADD = ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
- ../../../src/libgpgme.la @GPGME_QT_LIBS@ @GPG_ERROR_LIBS@ \
- @GPGME_QTTEST_LIBS@ @LDADD_FOR_TESTS_KLUDGE@ -lstdc++
+ ../../../src/libgpgme.la @GPGME_QT5_LIBS@ @GPG_ERROR_LIBS@ \
+ @GPGME_QT5TEST_LIBS@ @LDADD_FOR_TESTS_KLUDGE@ -lstdc++
-AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \
- @GPG_ERROR_CFLAGS@ @GPGME_QT_CFLAGS@ @GPG_ERROR_CFLAGS@ \
- @LIBASSUAN_CFLAGS@ @GPGME_QTTEST_CFLAGS@ -DBUILDING_QGPGME \
- -I$(top_srcdir)/lang/qt/src \
+AM_CPPFLAGS = -I$(top_srcdir)/lang/qt/src -I$(top_srcdir)/lang/cpp/src \
+ -I$(top_builddir)/src \
+ @GPG_ERROR_CFLAGS@ @GPGME_QT5_CFLAGS@ @GPG_ERROR_CFLAGS@ \
+ @LIBASSUAN_CFLAGS@ @GPGME_QT5TEST_CFLAGS@ -DBUILDING_QGPGME \
-DTOP_SRCDIR="$(top_srcdir)"
+endif
+if WANT_QT6
+LDADD = ../../cpp/src/libgpgmepp.la ../src/libqgpgmeqt6.la \
+ ../../../src/libgpgme.la @GPGME_QT6_LIBS@ @GPG_ERROR_LIBS@ \
+ @GPGME_QT6TEST_LIBS@ @LDADD_FOR_TESTS_KLUDGE@ -lstdc++
+
+AM_CPPFLAGS = -I$(top_srcdir)/lang/qt/src -I$(top_srcdir)/lang/cpp/src \
+ -I$(top_builddir)/src \
+ @GPG_ERROR_CFLAGS@ @GPGME_QT6_CFLAGS@ @GPG_ERROR_CFLAGS@ \
+ @LIBASSUAN_CFLAGS@ @GPGME_QT6TEST_CFLAGS@ -DBUILDING_QGPGME \
+ -DTOP_SRCDIR="$(top_srcdir)"
+endif
support_src = t-support.h t-support.cpp
t_addexistingsubkey_SOURCES = t-addexistingsubkey.cpp $(support_src)
+t_decryptverify_SOURCES = t-decryptverify.cpp $(support_src)
t_keylist_SOURCES = t-keylist.cpp $(support_src)
t_keylocate_SOURCES = t-keylocate.cpp $(support_src)
t_ownertrust_SOURCES = t-ownertrust.cpp $(support_src)
t_import_SOURCES = t-import.cpp $(support_src)
t_revokekey_SOURCES = t-revokekey.cpp $(support_src)
t_setprimaryuserid_SOURCES = t-setprimaryuserid.cpp $(support_src)
+run_decryptverifyarchivejob_SOURCES = run-decryptverifyarchivejob.cpp
+run_encryptarchivejob_SOURCES = run-encryptarchivejob.cpp
run_exportjob_SOURCES = run-exportjob.cpp
run_importjob_SOURCES = run-importjob.cpp
run_keyformailboxjob_SOURCES = run-keyformailboxjob.cpp
run_receivekeysjob_SOURCES = run-receivekeysjob.cpp
run_refreshkeysjob_SOURCES = run-refreshkeysjob.cpp
+run_signarchivejob_SOURCES = run-signarchivejob.cpp
+run_wkdrefreshjob_SOURCES = run-wkdrefreshjob.cpp
nodist_t_keylist_SOURCES = $(moc_files)
noinst_PROGRAMS = \
t-addexistingsubkey \
+ t-decryptverify \
t-keylist t-keylocate t-ownertrust t-tofuinfo t-encrypt \
run-keyformailboxjob t-wkspublish t-verify t-various t-config t-remarks \
t-trustsignatures t-changeexpiryjob t-wkdlookup t-import t-revokekey \
t-setprimaryuserid \
- run-importjob run-exportjob run-receivekeysjob run-refreshkeysjob
+ run-decryptverifyarchivejob \
+ run-encryptarchivejob \
+ run-importjob run-exportjob run-receivekeysjob run-refreshkeysjob \
+ run-signarchivejob \
+ run-wkdrefreshjob
+
CLEANFILES = secring.gpg pubring.gpg pubring.kbx trustdb.gpg dirmngr.conf \
gpg-agent.conf pubring.kbx~ S.gpg-agent gpg.conf pubring.gpg~ \
$(TESTS_ENVIRONMENT) $(GPG) --no-permission-warning \
--passphrase "abc" \
--import $(top_srcdir)/tests/gpg/secdemo.asc
+ -$(TESTS_ENVIRONMENT) gpgconf --kill all
touch pubring-stamp
.cpp.moc:
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
build_triplet = @build@
host_triplet = @host@
TESTS = initial.test $(am__EXEEXT_1) final.test
-noinst_PROGRAMS = t-addexistingsubkey$(EXEEXT) t-keylist$(EXEEXT) \
+noinst_PROGRAMS = t-addexistingsubkey$(EXEEXT) \
+ t-decryptverify$(EXEEXT) t-keylist$(EXEEXT) \
t-keylocate$(EXEEXT) t-ownertrust$(EXEEXT) t-tofuinfo$(EXEEXT) \
t-encrypt$(EXEEXT) run-keyformailboxjob$(EXEEXT) \
t-wkspublish$(EXEEXT) t-verify$(EXEEXT) t-various$(EXEEXT) \
t-config$(EXEEXT) t-remarks$(EXEEXT) \
t-trustsignatures$(EXEEXT) t-changeexpiryjob$(EXEEXT) \
t-wkdlookup$(EXEEXT) t-import$(EXEEXT) t-revokekey$(EXEEXT) \
- t-setprimaryuserid$(EXEEXT) run-importjob$(EXEEXT) \
+ t-setprimaryuserid$(EXEEXT) \
+ run-decryptverifyarchivejob$(EXEEXT) \
+ run-encryptarchivejob$(EXEEXT) run-importjob$(EXEEXT) \
run-exportjob$(EXEEXT) run-receivekeysjob$(EXEEXT) \
- run-refreshkeysjob$(EXEEXT)
+ run-refreshkeysjob$(EXEEXT) run-signarchivejob$(EXEEXT) \
+ run-wkdrefreshjob$(EXEEXT)
subdir = lang/qt/tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
PROGRAMS = $(noinst_PROGRAMS)
-am_run_exportjob_OBJECTS = run-exportjob.$(OBJEXT)
-run_exportjob_OBJECTS = $(am_run_exportjob_OBJECTS)
-run_exportjob_LDADD = $(LDADD)
-run_exportjob_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+am_run_decryptverifyarchivejob_OBJECTS = \
+ run-decryptverifyarchivejob.$(OBJEXT)
+run_decryptverifyarchivejob_OBJECTS = \
+ $(am_run_decryptverifyarchivejob_OBJECTS)
+run_decryptverifyarchivejob_LDADD = $(LDADD)
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@run_decryptverifyarchivejob_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@run_decryptverifyarchivejob_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
+am_run_encryptarchivejob_OBJECTS = run-encryptarchivejob.$(OBJEXT)
+run_encryptarchivejob_OBJECTS = $(am_run_encryptarchivejob_OBJECTS)
+run_encryptarchivejob_LDADD = $(LDADD)
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@run_encryptarchivejob_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@run_encryptarchivejob_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
+am_run_exportjob_OBJECTS = run-exportjob.$(OBJEXT)
+run_exportjob_OBJECTS = $(am_run_exportjob_OBJECTS)
+run_exportjob_LDADD = $(LDADD)
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@run_exportjob_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@run_exportjob_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
am_run_importjob_OBJECTS = run-importjob.$(OBJEXT)
run_importjob_OBJECTS = $(am_run_importjob_OBJECTS)
run_importjob_LDADD = $(LDADD)
-run_importjob_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@run_importjob_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@run_importjob_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
am_run_keyformailboxjob_OBJECTS = run-keyformailboxjob.$(OBJEXT)
run_keyformailboxjob_OBJECTS = $(am_run_keyformailboxjob_OBJECTS)
run_keyformailboxjob_LDADD = $(LDADD)
-run_keyformailboxjob_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@run_keyformailboxjob_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@run_keyformailboxjob_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
am_run_receivekeysjob_OBJECTS = run-receivekeysjob.$(OBJEXT)
run_receivekeysjob_OBJECTS = $(am_run_receivekeysjob_OBJECTS)
run_receivekeysjob_LDADD = $(LDADD)
-run_receivekeysjob_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@run_receivekeysjob_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@run_receivekeysjob_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
am_run_refreshkeysjob_OBJECTS = run-refreshkeysjob.$(OBJEXT)
run_refreshkeysjob_OBJECTS = $(am_run_refreshkeysjob_OBJECTS)
run_refreshkeysjob_LDADD = $(LDADD)
-run_refreshkeysjob_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@run_refreshkeysjob_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@run_refreshkeysjob_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
+am_run_signarchivejob_OBJECTS = run-signarchivejob.$(OBJEXT)
+run_signarchivejob_OBJECTS = $(am_run_signarchivejob_OBJECTS)
+run_signarchivejob_LDADD = $(LDADD)
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@run_signarchivejob_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@run_signarchivejob_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
+am_run_wkdrefreshjob_OBJECTS = run-wkdrefreshjob.$(OBJEXT)
+run_wkdrefreshjob_OBJECTS = $(am_run_wkdrefreshjob_OBJECTS)
+run_wkdrefreshjob_LDADD = $(LDADD)
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@run_wkdrefreshjob_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@run_wkdrefreshjob_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
am__objects_1 = t-support.$(OBJEXT)
am_t_addexistingsubkey_OBJECTS = t-addexistingsubkey.$(OBJEXT) \
$(am__objects_1)
t_addexistingsubkey_OBJECTS = $(am_t_addexistingsubkey_OBJECTS)
t_addexistingsubkey_LDADD = $(LDADD)
-t_addexistingsubkey_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_addexistingsubkey_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_addexistingsubkey_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
am_t_changeexpiryjob_OBJECTS = t-changeexpiryjob.$(OBJEXT) \
$(am__objects_1)
t_changeexpiryjob_OBJECTS = $(am_t_changeexpiryjob_OBJECTS)
t_changeexpiryjob_LDADD = $(LDADD)
-t_changeexpiryjob_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_changeexpiryjob_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_changeexpiryjob_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
am_t_config_OBJECTS = t-config.$(OBJEXT) $(am__objects_1)
t_config_OBJECTS = $(am_t_config_OBJECTS)
t_config_LDADD = $(LDADD)
-t_config_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_config_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_config_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../src/libqgpgme.la ../../../src/libgpgme.la
+am_t_decryptverify_OBJECTS = t-decryptverify.$(OBJEXT) \
+ $(am__objects_1)
+t_decryptverify_OBJECTS = $(am_t_decryptverify_OBJECTS)
+t_decryptverify_LDADD = $(LDADD)
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_decryptverify_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_decryptverify_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
am_t_encrypt_OBJECTS = t-encrypt.$(OBJEXT) $(am__objects_1)
t_encrypt_OBJECTS = $(am_t_encrypt_OBJECTS)
t_encrypt_LDADD = $(LDADD)
-t_encrypt_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_encrypt_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_encrypt_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../src/libqgpgme.la ../../../src/libgpgme.la
am_t_import_OBJECTS = t-import.$(OBJEXT) $(am__objects_1)
t_import_OBJECTS = $(am_t_import_OBJECTS)
t_import_LDADD = $(LDADD)
-t_import_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_import_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_import_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../src/libqgpgme.la ../../../src/libgpgme.la
am_t_keylist_OBJECTS = t-keylist.$(OBJEXT) $(am__objects_1)
am__objects_2 =
nodist_t_keylist_OBJECTS = $(am__objects_2)
t_keylist_OBJECTS = $(am_t_keylist_OBJECTS) \
$(nodist_t_keylist_OBJECTS)
t_keylist_LDADD = $(LDADD)
-t_keylist_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_keylist_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_keylist_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../src/libqgpgme.la ../../../src/libgpgme.la
am_t_keylocate_OBJECTS = t-keylocate.$(OBJEXT) $(am__objects_1)
t_keylocate_OBJECTS = $(am_t_keylocate_OBJECTS)
t_keylocate_LDADD = $(LDADD)
-t_keylocate_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_keylocate_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_keylocate_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../src/libqgpgme.la ../../../src/libgpgme.la
am_t_ownertrust_OBJECTS = t-ownertrust.$(OBJEXT) $(am__objects_1)
t_ownertrust_OBJECTS = $(am_t_ownertrust_OBJECTS)
t_ownertrust_LDADD = $(LDADD)
-t_ownertrust_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_ownertrust_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_ownertrust_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
am_t_remarks_OBJECTS = t-remarks.$(OBJEXT) $(am__objects_1)
t_remarks_OBJECTS = $(am_t_remarks_OBJECTS)
t_remarks_LDADD = $(LDADD)
-t_remarks_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_remarks_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_remarks_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../src/libqgpgme.la ../../../src/libgpgme.la
am_t_revokekey_OBJECTS = t-revokekey.$(OBJEXT) $(am__objects_1)
t_revokekey_OBJECTS = $(am_t_revokekey_OBJECTS)
t_revokekey_LDADD = $(LDADD)
-t_revokekey_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_revokekey_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_revokekey_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../src/libqgpgme.la ../../../src/libgpgme.la
am_t_setprimaryuserid_OBJECTS = t-setprimaryuserid.$(OBJEXT) \
$(am__objects_1)
t_setprimaryuserid_OBJECTS = $(am_t_setprimaryuserid_OBJECTS)
t_setprimaryuserid_LDADD = $(LDADD)
-t_setprimaryuserid_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_setprimaryuserid_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_setprimaryuserid_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
am_t_tofuinfo_OBJECTS = t-tofuinfo.$(OBJEXT) $(am__objects_1)
t_tofuinfo_OBJECTS = $(am_t_tofuinfo_OBJECTS)
t_tofuinfo_LDADD = $(LDADD)
-t_tofuinfo_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_tofuinfo_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_tofuinfo_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../src/libqgpgme.la ../../../src/libgpgme.la
am_t_trustsignatures_OBJECTS = t-trustsignatures.$(OBJEXT) \
$(am__objects_1)
t_trustsignatures_OBJECTS = $(am_t_trustsignatures_OBJECTS)
t_trustsignatures_LDADD = $(LDADD)
-t_trustsignatures_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_trustsignatures_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_trustsignatures_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
am_t_various_OBJECTS = t-various.$(OBJEXT) $(am__objects_1)
t_various_OBJECTS = $(am_t_various_OBJECTS)
t_various_LDADD = $(LDADD)
-t_various_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_various_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_various_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../src/libqgpgme.la ../../../src/libgpgme.la
am_t_verify_OBJECTS = t-verify.$(OBJEXT) $(am__objects_1)
t_verify_OBJECTS = $(am_t_verify_OBJECTS)
t_verify_LDADD = $(LDADD)
-t_verify_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_verify_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_verify_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../src/libqgpgme.la ../../../src/libgpgme.la
am_t_wkdlookup_OBJECTS = t-wkdlookup.$(OBJEXT) $(am__objects_1)
t_wkdlookup_OBJECTS = $(am_t_wkdlookup_OBJECTS)
t_wkdlookup_LDADD = $(LDADD)
-t_wkdlookup_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_wkdlookup_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_wkdlookup_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_TRUE@ ../src/libqgpgme.la ../../../src/libgpgme.la
am_t_wkspublish_OBJECTS = t-wkspublish.$(OBJEXT) $(am__objects_1)
t_wkspublish_OBJECTS = $(am_t_wkspublish_OBJECTS)
t_wkspublish_LDADD = $(LDADD)
-t_wkspublish_DEPENDENCIES = ../../cpp/src/libgpgmepp.la \
- ../src/libqgpgme.la ../../../src/libgpgme.la
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@t_wkspublish_DEPENDENCIES = \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../cpp/src/libgpgmepp.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../src/libqgpgmeqt6.la \
+@WANT_QT5_FALSE@@WANT_QT6_TRUE@ ../../../src/libgpgme.la
+@WANT_QT5_TRUE@t_wkspublish_DEPENDENCIES = \
+@WANT_QT5_TRUE@ ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/conf
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__maybe_remake_depfiles = depfiles
-am__depfiles_remade = ./$(DEPDIR)/run-exportjob.Po \
- ./$(DEPDIR)/run-importjob.Po \
+am__depfiles_remade = ./$(DEPDIR)/run-decryptverifyarchivejob.Po \
+ ./$(DEPDIR)/run-encryptarchivejob.Po \
+ ./$(DEPDIR)/run-exportjob.Po ./$(DEPDIR)/run-importjob.Po \
./$(DEPDIR)/run-keyformailboxjob.Po \
./$(DEPDIR)/run-receivekeysjob.Po \
./$(DEPDIR)/run-refreshkeysjob.Po \
+ ./$(DEPDIR)/run-signarchivejob.Po \
+ ./$(DEPDIR)/run-wkdrefreshjob.Po \
./$(DEPDIR)/t-addexistingsubkey.Po \
./$(DEPDIR)/t-changeexpiryjob.Po ./$(DEPDIR)/t-config.Po \
- ./$(DEPDIR)/t-encrypt.Po ./$(DEPDIR)/t-import.Po \
- ./$(DEPDIR)/t-keylist.Po ./$(DEPDIR)/t-keylocate.Po \
- ./$(DEPDIR)/t-ownertrust.Po ./$(DEPDIR)/t-remarks.Po \
- ./$(DEPDIR)/t-revokekey.Po ./$(DEPDIR)/t-setprimaryuserid.Po \
- ./$(DEPDIR)/t-support.Po ./$(DEPDIR)/t-tofuinfo.Po \
- ./$(DEPDIR)/t-trustsignatures.Po ./$(DEPDIR)/t-various.Po \
- ./$(DEPDIR)/t-verify.Po ./$(DEPDIR)/t-wkdlookup.Po \
- ./$(DEPDIR)/t-wkspublish.Po
+ ./$(DEPDIR)/t-decryptverify.Po ./$(DEPDIR)/t-encrypt.Po \
+ ./$(DEPDIR)/t-import.Po ./$(DEPDIR)/t-keylist.Po \
+ ./$(DEPDIR)/t-keylocate.Po ./$(DEPDIR)/t-ownertrust.Po \
+ ./$(DEPDIR)/t-remarks.Po ./$(DEPDIR)/t-revokekey.Po \
+ ./$(DEPDIR)/t-setprimaryuserid.Po ./$(DEPDIR)/t-support.Po \
+ ./$(DEPDIR)/t-tofuinfo.Po ./$(DEPDIR)/t-trustsignatures.Po \
+ ./$(DEPDIR)/t-various.Po ./$(DEPDIR)/t-verify.Po \
+ ./$(DEPDIR)/t-wkdlookup.Po ./$(DEPDIR)/t-wkspublish.Po
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = $(run_exportjob_SOURCES) $(run_importjob_SOURCES) \
- $(run_keyformailboxjob_SOURCES) $(run_receivekeysjob_SOURCES) \
- $(run_refreshkeysjob_SOURCES) $(t_addexistingsubkey_SOURCES) \
- $(t_changeexpiryjob_SOURCES) $(t_config_SOURCES) \
+SOURCES = $(run_decryptverifyarchivejob_SOURCES) \
+ $(run_encryptarchivejob_SOURCES) $(run_exportjob_SOURCES) \
+ $(run_importjob_SOURCES) $(run_keyformailboxjob_SOURCES) \
+ $(run_receivekeysjob_SOURCES) $(run_refreshkeysjob_SOURCES) \
+ $(run_signarchivejob_SOURCES) $(run_wkdrefreshjob_SOURCES) \
+ $(t_addexistingsubkey_SOURCES) $(t_changeexpiryjob_SOURCES) \
+ $(t_config_SOURCES) $(t_decryptverify_SOURCES) \
$(t_encrypt_SOURCES) $(t_import_SOURCES) $(t_keylist_SOURCES) \
$(nodist_t_keylist_SOURCES) $(t_keylocate_SOURCES) \
$(t_ownertrust_SOURCES) $(t_remarks_SOURCES) \
$(t_tofuinfo_SOURCES) $(t_trustsignatures_SOURCES) \
$(t_various_SOURCES) $(t_verify_SOURCES) \
$(t_wkdlookup_SOURCES) $(t_wkspublish_SOURCES)
-DIST_SOURCES = $(run_exportjob_SOURCES) $(run_importjob_SOURCES) \
- $(run_keyformailboxjob_SOURCES) $(run_receivekeysjob_SOURCES) \
- $(run_refreshkeysjob_SOURCES) $(t_addexistingsubkey_SOURCES) \
- $(t_changeexpiryjob_SOURCES) $(t_config_SOURCES) \
+DIST_SOURCES = $(run_decryptverifyarchivejob_SOURCES) \
+ $(run_encryptarchivejob_SOURCES) $(run_exportjob_SOURCES) \
+ $(run_importjob_SOURCES) $(run_keyformailboxjob_SOURCES) \
+ $(run_receivekeysjob_SOURCES) $(run_refreshkeysjob_SOURCES) \
+ $(run_signarchivejob_SOURCES) $(run_wkdrefreshjob_SOURCES) \
+ $(t_addexistingsubkey_SOURCES) $(t_changeexpiryjob_SOURCES) \
+ $(t_config_SOURCES) $(t_decryptverify_SOURCES) \
$(t_encrypt_SOURCES) $(t_import_SOURCES) $(t_keylist_SOURCES) \
$(t_keylocate_SOURCES) $(t_ownertrust_SOURCES) \
$(t_remarks_SOURCES) $(t_revokekey_SOURCES) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
am__tty_colors_dummy = \
mgn= red= grn= lgn= blu= brg= std=; \
am__color_tests=no
std='\e[m'; \
fi; \
}
-am__EXEEXT_1 = t-addexistingsubkey$(EXEEXT) t-keylist$(EXEEXT) \
- t-keylocate$(EXEEXT) t-ownertrust$(EXEEXT) t-tofuinfo$(EXEEXT) \
- t-encrypt$(EXEEXT) t-verify$(EXEEXT) t-various$(EXEEXT) \
- t-config$(EXEEXT) t-remarks$(EXEEXT) \
+am__EXEEXT_1 = t-addexistingsubkey$(EXEEXT) t-decryptverify$(EXEEXT) \
+ t-keylist$(EXEEXT) t-keylocate$(EXEEXT) t-ownertrust$(EXEEXT) \
+ t-tofuinfo$(EXEEXT) t-encrypt$(EXEEXT) t-verify$(EXEEXT) \
+ t-various$(EXEEXT) t-config$(EXEEXT) t-remarks$(EXEEXT) \
t-trustsignatures$(EXEEXT) t-changeexpiryjob$(EXEEXT) \
t-wkdlookup$(EXEEXT) t-import$(EXEEXT) t-revokekey$(EXEEXT) \
t-setprimaryuserid$(EXEEXT)
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
EXTRA_DIST = initial.test final.test
the_tests = \
t-addexistingsubkey \
+ t-decryptverify \
t-keylist t-keylocate t-ownertrust t-tofuinfo \
t-encrypt t-verify t-various t-config t-remarks t-trustsignatures \
t-changeexpiryjob t-wkdlookup t-import t-revokekey t-setprimaryuserid
moc_files = \
t-addexistingsubkey.moc \
+ t-decryptverify.moc \
t-keylist.moc t-keylocate.moc t-ownertrust.moc t-tofuinfo.moc \
t-encrypt.moc t-support.hmoc t-wkspublish.moc t-verify.moc \
t-various.moc t-config.moc t-remarks.moc t-trustsignatures.moc \
t-setprimaryuserid.moc
AM_LDFLAGS = -no-install
-LDADD = ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
- ../../../src/libgpgme.la @GPGME_QT_LIBS@ @GPG_ERROR_LIBS@ \
- @GPGME_QTTEST_LIBS@ @LDADD_FOR_TESTS_KLUDGE@ -lstdc++
-
-AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \
- @GPG_ERROR_CFLAGS@ @GPGME_QT_CFLAGS@ @GPG_ERROR_CFLAGS@ \
- @LIBASSUAN_CFLAGS@ @GPGME_QTTEST_CFLAGS@ -DBUILDING_QGPGME \
- -I$(top_srcdir)/lang/qt/src \
- -DTOP_SRCDIR="$(top_srcdir)"
+@WANT_QT5_TRUE@LDADD = ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \
+@WANT_QT5_TRUE@ ../../../src/libgpgme.la @GPGME_QT5_LIBS@ @GPG_ERROR_LIBS@ \
+@WANT_QT5_TRUE@ @GPGME_QT5TEST_LIBS@ @LDADD_FOR_TESTS_KLUDGE@ -lstdc++
+
+@WANT_QT6_TRUE@LDADD = ../../cpp/src/libgpgmepp.la ../src/libqgpgmeqt6.la \
+@WANT_QT6_TRUE@ ../../../src/libgpgme.la @GPGME_QT6_LIBS@ @GPG_ERROR_LIBS@ \
+@WANT_QT6_TRUE@ @GPGME_QT6TEST_LIBS@ @LDADD_FOR_TESTS_KLUDGE@ -lstdc++
+
+@WANT_QT5_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/lang/qt/src -I$(top_srcdir)/lang/cpp/src \
+@WANT_QT5_TRUE@ -I$(top_builddir)/src \
+@WANT_QT5_TRUE@ @GPG_ERROR_CFLAGS@ @GPGME_QT5_CFLAGS@ @GPG_ERROR_CFLAGS@ \
+@WANT_QT5_TRUE@ @LIBASSUAN_CFLAGS@ @GPGME_QT5TEST_CFLAGS@ -DBUILDING_QGPGME \
+@WANT_QT5_TRUE@ -DTOP_SRCDIR="$(top_srcdir)"
+
+@WANT_QT6_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/lang/qt/src -I$(top_srcdir)/lang/cpp/src \
+@WANT_QT6_TRUE@ -I$(top_builddir)/src \
+@WANT_QT6_TRUE@ @GPG_ERROR_CFLAGS@ @GPGME_QT6_CFLAGS@ @GPG_ERROR_CFLAGS@ \
+@WANT_QT6_TRUE@ @LIBASSUAN_CFLAGS@ @GPGME_QT6TEST_CFLAGS@ -DBUILDING_QGPGME \
+@WANT_QT6_TRUE@ -DTOP_SRCDIR="$(top_srcdir)"
support_src = t-support.h t-support.cpp
t_addexistingsubkey_SOURCES = t-addexistingsubkey.cpp $(support_src)
+t_decryptverify_SOURCES = t-decryptverify.cpp $(support_src)
t_keylist_SOURCES = t-keylist.cpp $(support_src)
t_keylocate_SOURCES = t-keylocate.cpp $(support_src)
t_ownertrust_SOURCES = t-ownertrust.cpp $(support_src)
t_import_SOURCES = t-import.cpp $(support_src)
t_revokekey_SOURCES = t-revokekey.cpp $(support_src)
t_setprimaryuserid_SOURCES = t-setprimaryuserid.cpp $(support_src)
+run_decryptverifyarchivejob_SOURCES = run-decryptverifyarchivejob.cpp
+run_encryptarchivejob_SOURCES = run-encryptarchivejob.cpp
run_exportjob_SOURCES = run-exportjob.cpp
run_importjob_SOURCES = run-importjob.cpp
run_keyformailboxjob_SOURCES = run-keyformailboxjob.cpp
run_receivekeysjob_SOURCES = run-receivekeysjob.cpp
run_refreshkeysjob_SOURCES = run-refreshkeysjob.cpp
+run_signarchivejob_SOURCES = run-signarchivejob.cpp
+run_wkdrefreshjob_SOURCES = run-wkdrefreshjob.cpp
nodist_t_keylist_SOURCES = $(moc_files)
BUILT_SOURCES = $(moc_files) pubring-stamp
CLEANFILES = secring.gpg pubring.gpg pubring.kbx trustdb.gpg dirmngr.conf \
echo " rm -f" $$list; \
rm -f $$list
+run-decryptverifyarchivejob$(EXEEXT): $(run_decryptverifyarchivejob_OBJECTS) $(run_decryptverifyarchivejob_DEPENDENCIES) $(EXTRA_run_decryptverifyarchivejob_DEPENDENCIES)
+ @rm -f run-decryptverifyarchivejob$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(run_decryptverifyarchivejob_OBJECTS) $(run_decryptverifyarchivejob_LDADD) $(LIBS)
+
+run-encryptarchivejob$(EXEEXT): $(run_encryptarchivejob_OBJECTS) $(run_encryptarchivejob_DEPENDENCIES) $(EXTRA_run_encryptarchivejob_DEPENDENCIES)
+ @rm -f run-encryptarchivejob$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(run_encryptarchivejob_OBJECTS) $(run_encryptarchivejob_LDADD) $(LIBS)
+
run-exportjob$(EXEEXT): $(run_exportjob_OBJECTS) $(run_exportjob_DEPENDENCIES) $(EXTRA_run_exportjob_DEPENDENCIES)
@rm -f run-exportjob$(EXEEXT)
$(AM_V_CXXLD)$(CXXLINK) $(run_exportjob_OBJECTS) $(run_exportjob_LDADD) $(LIBS)
@rm -f run-refreshkeysjob$(EXEEXT)
$(AM_V_CXXLD)$(CXXLINK) $(run_refreshkeysjob_OBJECTS) $(run_refreshkeysjob_LDADD) $(LIBS)
+run-signarchivejob$(EXEEXT): $(run_signarchivejob_OBJECTS) $(run_signarchivejob_DEPENDENCIES) $(EXTRA_run_signarchivejob_DEPENDENCIES)
+ @rm -f run-signarchivejob$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(run_signarchivejob_OBJECTS) $(run_signarchivejob_LDADD) $(LIBS)
+
+run-wkdrefreshjob$(EXEEXT): $(run_wkdrefreshjob_OBJECTS) $(run_wkdrefreshjob_DEPENDENCIES) $(EXTRA_run_wkdrefreshjob_DEPENDENCIES)
+ @rm -f run-wkdrefreshjob$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(run_wkdrefreshjob_OBJECTS) $(run_wkdrefreshjob_LDADD) $(LIBS)
+
t-addexistingsubkey$(EXEEXT): $(t_addexistingsubkey_OBJECTS) $(t_addexistingsubkey_DEPENDENCIES) $(EXTRA_t_addexistingsubkey_DEPENDENCIES)
@rm -f t-addexistingsubkey$(EXEEXT)
$(AM_V_CXXLD)$(CXXLINK) $(t_addexistingsubkey_OBJECTS) $(t_addexistingsubkey_LDADD) $(LIBS)
@rm -f t-config$(EXEEXT)
$(AM_V_CXXLD)$(CXXLINK) $(t_config_OBJECTS) $(t_config_LDADD) $(LIBS)
+t-decryptverify$(EXEEXT): $(t_decryptverify_OBJECTS) $(t_decryptverify_DEPENDENCIES) $(EXTRA_t_decryptverify_DEPENDENCIES)
+ @rm -f t-decryptverify$(EXEEXT)
+ $(AM_V_CXXLD)$(CXXLINK) $(t_decryptverify_OBJECTS) $(t_decryptverify_LDADD) $(LIBS)
+
t-encrypt$(EXEEXT): $(t_encrypt_OBJECTS) $(t_encrypt_DEPENDENCIES) $(EXTRA_t_encrypt_DEPENDENCIES)
@rm -f t-encrypt$(EXEEXT)
$(AM_V_CXXLD)$(CXXLINK) $(t_encrypt_OBJECTS) $(t_encrypt_LDADD) $(LIBS)
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-decryptverifyarchivejob.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-encryptarchivejob.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-exportjob.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-importjob.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-keyformailboxjob.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-receivekeysjob.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-refreshkeysjob.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-signarchivejob.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-wkdrefreshjob.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t-addexistingsubkey.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t-changeexpiryjob.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t-config.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t-decryptverify.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t-encrypt.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t-import.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t-keylist.Po@am__quote@ # am--include-marker
echo "$${col}$$dashes$${std}"; \
test "$$failed" -eq 0; \
else :; fi
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
mostlyclean-am
distclean: distclean-am
- -rm -f ./$(DEPDIR)/run-exportjob.Po
+ -rm -f ./$(DEPDIR)/run-decryptverifyarchivejob.Po
+ -rm -f ./$(DEPDIR)/run-encryptarchivejob.Po
+ -rm -f ./$(DEPDIR)/run-exportjob.Po
-rm -f ./$(DEPDIR)/run-importjob.Po
-rm -f ./$(DEPDIR)/run-keyformailboxjob.Po
-rm -f ./$(DEPDIR)/run-receivekeysjob.Po
-rm -f ./$(DEPDIR)/run-refreshkeysjob.Po
+ -rm -f ./$(DEPDIR)/run-signarchivejob.Po
+ -rm -f ./$(DEPDIR)/run-wkdrefreshjob.Po
-rm -f ./$(DEPDIR)/t-addexistingsubkey.Po
-rm -f ./$(DEPDIR)/t-changeexpiryjob.Po
-rm -f ./$(DEPDIR)/t-config.Po
+ -rm -f ./$(DEPDIR)/t-decryptverify.Po
-rm -f ./$(DEPDIR)/t-encrypt.Po
-rm -f ./$(DEPDIR)/t-import.Po
-rm -f ./$(DEPDIR)/t-keylist.Po
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -f ./$(DEPDIR)/run-exportjob.Po
+ -rm -f ./$(DEPDIR)/run-decryptverifyarchivejob.Po
+ -rm -f ./$(DEPDIR)/run-encryptarchivejob.Po
+ -rm -f ./$(DEPDIR)/run-exportjob.Po
-rm -f ./$(DEPDIR)/run-importjob.Po
-rm -f ./$(DEPDIR)/run-keyformailboxjob.Po
-rm -f ./$(DEPDIR)/run-receivekeysjob.Po
-rm -f ./$(DEPDIR)/run-refreshkeysjob.Po
+ -rm -f ./$(DEPDIR)/run-signarchivejob.Po
+ -rm -f ./$(DEPDIR)/run-wkdrefreshjob.Po
-rm -f ./$(DEPDIR)/t-addexistingsubkey.Po
-rm -f ./$(DEPDIR)/t-changeexpiryjob.Po
-rm -f ./$(DEPDIR)/t-config.Po
+ -rm -f ./$(DEPDIR)/t-decryptverify.Po
-rm -f ./$(DEPDIR)/t-encrypt.Po
-rm -f ./$(DEPDIR)/t-import.Po
-rm -f ./$(DEPDIR)/t-keylist.Po
$(TESTS_ENVIRONMENT) $(GPG) --no-permission-warning \
--passphrase "abc" \
--import $(top_srcdir)/tests/gpg/secdemo.asc
+ -$(TESTS_ENVIRONMENT) gpgconf --kill all
touch pubring-stamp
.cpp.moc:
--- /dev/null
+/*
+ run-decryptverifyarchivejob.cpp
+
+ This file is part of QGpgME's test suite.
+ Copyright (c) 2023 by g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include <decryptverifyarchivejob.h>
+#include <protocol.h>
+
+#include <QCommandLineParser>
+#include <QCoreApplication>
+#include <QDebug>
+
+#include <context.h>
+#include <decryptionresult.h>
+#include <verificationresult.h>
+
+#include <iostream>
+
+using namespace GpgME;
+
+std::ostream &operator<<(std::ostream &os, const QString &s)
+{
+ return os << s.toLocal8Bit().constData();
+}
+
+struct CommandLineOptions {
+ QString outputDirectory;
+ QString archiveName;
+};
+
+CommandLineOptions parseCommandLine(const QStringList &arguments)
+{
+ CommandLineOptions options;
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription("Test program for DecryptVerifyArchiveJob");
+ parser.addHelpOption();
+ parser.addOptions({
+ {{"C", "directory"}, "Extract the files into the directory DIRECTORY.", "DIRECTORY"},
+ });
+ parser.addPositionalArgument("archive", "The archive to decrypt and extract");
+
+ parser.process(arguments);
+
+ const auto args = parser.positionalArguments();
+ if (args.size() != 1) {
+ parser.showHelp(1);
+ }
+
+ options.outputDirectory = parser.value("directory");
+ options.archiveName = args.first();
+
+ return options;
+}
+
+int main(int argc, char **argv)
+{
+ GpgME::initializeLibrary();
+
+ QCoreApplication app{argc, argv};
+ app.setApplicationName("run-decryptverifyarchivejob");
+
+ const auto options = parseCommandLine(app.arguments());
+
+ if (!QGpgME::DecryptVerifyArchiveJob::isSupported()) {
+ std::cerr << "Error: Decrypting and extracting archives is not supported by your version of gpg." << std::endl;
+ return 1;
+ }
+
+ auto job = QGpgME::openpgp()->decryptVerifyArchiveJob();
+ if (!job) {
+ std::cerr << "Error: Could not create job" << std::endl;
+ return 1;
+ }
+ job->setInputFile(options.archiveName);
+ job->setOutputDirectory(options.outputDirectory);
+ QObject::connect(job, &QGpgME::DecryptVerifyArchiveJob::result, &app, [](const GpgME::DecryptionResult &decryptionResult, const GpgME::VerificationResult &verificationResult, const QString &auditLog, const GpgME::Error &) {
+ std::cerr << "Diagnostics: " << auditLog << std::endl;
+ std::cerr << "Decryption Result: " << decryptionResult << std::endl;
+ std::cerr << "Verification Result: " << verificationResult << std::endl;
+ qApp->quit();
+ });
+
+ const auto err = job->startIt();
+ if (err) {
+ std::cerr << "Error: Starting the job failed: " << err.asString() << std::endl;
+ return 1;
+ }
+
+ return app.exec();
+}
--- /dev/null
+/*
+ run-encryptarchivejob.cpp
+
+ This file is part of QGpgME's test suite.
+ Copyright (c) 2023 by g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include <protocol.h>
+#include <encryptarchivejob.h>
+#include <signencryptarchivejob.h>
+
+#include <QCommandLineParser>
+#include <QCoreApplication>
+#include <QDebug>
+#include <QDir>
+#include <QFile>
+#include <QFileInfo>
+#include <QTimer>
+
+#include <context.h>
+#include <encryptionresult.h>
+#include <signingresult.h>
+
+#include <iostream>
+
+using namespace GpgME;
+
+std::ostream &operator<<(std::ostream &os, const QString &s)
+{
+ return os << s.toLocal8Bit().constData();
+}
+
+struct CommandLineOptions {
+ bool armor = false;
+ bool sign = false;
+ QString archiveName;
+ QString baseDirectory;
+ std::chrono::seconds cancelTimeout{0};
+ std::vector<QString> filesAndDirectories;
+};
+
+CommandLineOptions parseCommandLine(const QStringList &arguments)
+{
+ CommandLineOptions options;
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription("Test program for EncryptArchiveJob and SignEncryptArchiveJob");
+ parser.addHelpOption();
+ parser.addOptions({
+ {{"s", "sign"}, "Sign archive before encryption."},
+ {{"o", "output"}, "Write output to FILE.", "FILE"},
+ {{"a", "armor"}, "Create ASCII armored output."},
+ {{"C", "directory"}, "Change to DIRECTORY before creating the archive.", "DIRECTORY"},
+ {"cancel-after", "Cancel the running job after SECONDS seconds.", "SECONDS"},
+ });
+ parser.addPositionalArgument("files", "Files and directories to add to the archive", "[files] [directories]");
+
+ parser.process(arguments);
+
+ const auto args = parser.positionalArguments();
+ if (args.empty()) {
+ parser.showHelp(1);
+ }
+
+ options.armor = parser.isSet("armor");
+ options.sign = parser.isSet("sign");
+ options.archiveName = parser.value("output");
+ options.baseDirectory = parser.value("directory");
+ if (parser.isSet("cancel-after")) {
+ bool ok;
+ options.cancelTimeout = std::chrono::seconds{parser.value("cancel-after").toInt(&ok)};
+ if (!ok) {
+ options.cancelTimeout = std::chrono::seconds{-1};
+ }
+ }
+ std::copy(args.begin(), args.end(), std::back_inserter(options.filesAndDirectories));
+
+ return options;
+}
+
+QString checkOutputFilePath(const QString &fileName, const QString &baseDirectory)
+{
+ const QFileInfo fi{QDir{baseDirectory}, fileName};
+ if (fi.exists()) {
+ qCritical() << "File" << fi.filePath() << "exists. Bailing out.";
+ return {};
+ }
+ return fileName;
+}
+
+int main(int argc, char **argv)
+{
+ GpgME::initializeLibrary();
+
+ QCoreApplication app{argc, argv};
+ app.setApplicationName("run-encryptarchivejob");
+
+ const auto options = parseCommandLine(app.arguments());
+ if (options.cancelTimeout.count() < 0) {
+ std::cerr << "Ignoring invalid timeout for cancel." << std::endl;
+ }
+
+ if ((options.sign && !QGpgME::SignEncryptArchiveJob::isSupported())
+ || (!options.sign && !QGpgME::EncryptArchiveJob::isSupported())) {
+ std::cerr << "Error: Encrypting archives is not supported by your version of gpg." << std::endl;
+ return 1;
+ }
+
+ std::shared_ptr<QFile> output;
+ QString outputFilePath;
+ if (options.archiveName.isEmpty() || options.archiveName == QLatin1String{"-"}) {
+ output.reset(new QFile);
+ output->open(stdout, QIODevice::WriteOnly);
+ } else {
+ outputFilePath = checkOutputFilePath(options.archiveName, options.baseDirectory);
+ if (outputFilePath.isEmpty()) {
+ return 1;
+ }
+ }
+
+ if (options.sign) {
+ auto job = QGpgME::openpgp()->signEncryptArchiveJob(options.armor);
+ if (!job) {
+ std::cerr << "Error: Could not create job" << std::endl;
+ return 1;
+ }
+ job->setBaseDirectory(options.baseDirectory);
+ QObject::connect(job, &QGpgME::SignEncryptArchiveJob::result, &app, [](const GpgME::SigningResult &signingResult, const GpgME::EncryptionResult &encryptionResult, const QString &auditLog, const GpgME::Error &) {
+ std::cerr << "Diagnostics: " << auditLog << std::endl;
+ std::cerr << "Signing Result: " << signingResult << std::endl;
+ std::cerr << "Encryption Result: " << encryptionResult << std::endl;
+ qApp->quit();
+ });
+ if (options.cancelTimeout.count() > 0) {
+ QTimer::singleShot(options.cancelTimeout, job, [job]() {
+ std::cerr << "Canceling job" << std::endl;
+ job->slotCancel();
+ });
+ }
+
+ GpgME::Error err;
+ if (output) {
+ err = job->start({}, {}, options.filesAndDirectories, output, GpgME::Context::None);
+ } else {
+ job->setInputPaths(options.filesAndDirectories);
+ job->setOutputFile(outputFilePath);
+ err = job->startIt();
+ }
+ if (err) {
+ std::cerr << "Error: Starting the job failed: " << err.asString() << std::endl;
+ return 1;
+ }
+ } else {
+ auto job = QGpgME::openpgp()->encryptArchiveJob(options.armor);
+ if (!job) {
+ std::cerr << "Error: Could not create job" << std::endl;
+ return 1;
+ }
+ job->setBaseDirectory(options.baseDirectory);
+ QObject::connect(job, &QGpgME::EncryptArchiveJob::result, &app, [](const GpgME::EncryptionResult &result, const QString &auditLog, const GpgME::Error &) {
+ std::cerr << "Diagnostics: " << auditLog << std::endl;
+ std::cerr << "Result: " << result << std::endl;
+ qApp->quit();
+ });
+ if (options.cancelTimeout.count() > 0) {
+ QTimer::singleShot(options.cancelTimeout, job, [job]() {
+ std::cerr << "Canceling job" << std::endl;
+ job->slotCancel();
+ });
+ }
+
+ GpgME::Error err;
+ if (output) {
+ err = job->start({}, options.filesAndDirectories, output, GpgME::Context::None);
+ } else {
+ job->setInputPaths(options.filesAndDirectories);
+ job->setOutputFile(outputFilePath);
+ err = job->startIt();
+ }
+ if (err) {
+ std::cerr << "Error: Starting the job failed: " << err.asString() << std::endl;
+ return 1;
+ }
+ }
+
+ return app.exec();
+}
exit(exitCode);
}
-static auto createExportJob(unsigned int mode)
+static QGpgME::ExportJob *createExportJob(unsigned int mode)
{
if (mode & Context::ExportSecretSubkey) {
return QGpgME::openpgp()->secretSubkeyExportJob(/*armor=*/true);
#include "config.h"
#endif
+#include <debug.h>
#include <importjob.h>
#include <importresult.h>
#include <protocol.h>
#include <QDebug>
#include <set>
-#include <sstream>
GpgME::Protocol guessProtocol(const QString &filename)
{
auto job = (protocol == GpgME::CMS ? QGpgME::smime() : QGpgME::openpgp())->importJob();
const auto result = job->exec(keyData);
qDebug() << "Result error:" << result.error().asString();
- std::ostringstream ostr;
- ostr << result;
- for (const auto &line : QString::fromStdString(ostr.str()).split('\n')) {
+ for (const auto &line : QString::fromStdString(QGpgME::toLogString(result)).split('\n')) {
qDebug().noquote() << line;
}
return 0;
--- /dev/null
+/*
+ run-signarchivejob.cpp
+
+ This file is part of QGpgME's test suite.
+ Copyright (c) 2023 by g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License,
+ version 2, as published by the Free Software Foundation.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include <protocol.h>
+#include <signarchivejob.h>
+
+#include <QCommandLineParser>
+#include <QCoreApplication>
+#include <QDebug>
+#include <QDir>
+#include <QFile>
+#include <QFileInfo>
+#include <QTimer>
+
+#include <context.h>
+#include <signingresult.h>
+
+#include <iostream>
+
+using namespace GpgME;
+
+std::ostream &operator<<(std::ostream &os, const QString &s)
+{
+ return os << s.toLocal8Bit().constData();
+}
+
+struct CommandLineOptions {
+ bool armor;
+ QString archiveName;
+ QString baseDirectory;
+ std::chrono::seconds cancelTimeout{0};
+ std::vector<QString> filesAndDirectories;
+};
+
+CommandLineOptions parseCommandLine(const QStringList &arguments)
+{
+ CommandLineOptions options;
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription("Test program for SignArchiveJob");
+ parser.addHelpOption();
+ parser.addOptions({
+ {{"o", "output"}, "Write output to FILE.", "FILE"},
+ {{"a", "armor"}, "Create ASCII armored output."},
+ {{"C", "directory"}, "Change to DIRECTORY before creating the archive.", "DIRECTORY"},
+ {"cancel-after", "Cancel the running job after SECONDS seconds.", "SECONDS"},
+ });
+ parser.addPositionalArgument("files", "Files and directories to add to the archive", "[files] [directories]");
+
+ parser.process(arguments);
+
+ const auto args = parser.positionalArguments();
+ if (args.empty()) {
+ parser.showHelp(1);
+ }
+
+ options.armor = parser.isSet("armor");
+ options.archiveName = parser.value("output");
+ options.baseDirectory = parser.value("directory");
+ if (parser.isSet("cancel-after")) {
+ bool ok;
+ options.cancelTimeout = std::chrono::seconds{parser.value("cancel-after").toInt(&ok)};
+ if (!ok) {
+ options.cancelTimeout = std::chrono::seconds{-1};
+ }
+ }
+ std::copy(args.begin(), args.end(), std::back_inserter(options.filesAndDirectories));
+
+ return options;
+}
+
+QString checkOutputFilePath(const QString &fileName, const QString &baseDirectory)
+{
+ const QFileInfo fi{QDir{baseDirectory}, fileName};
+ if (fi.exists()) {
+ qCritical() << "File" << fi.filePath() << "exists. Bailing out.";
+ return {};
+ }
+ return fileName;
+}
+
+int main(int argc, char **argv)
+{
+ GpgME::initializeLibrary();
+
+ QCoreApplication app{argc, argv};
+ app.setApplicationName("run-signarchivejob");
+
+ const auto options = parseCommandLine(app.arguments());
+ if (options.cancelTimeout.count() < 0) {
+ std::cerr << "Ignoring invalid timeout for cancel." << std::endl;
+ }
+
+ if (!QGpgME::SignArchiveJob::isSupported()) {
+ std::cerr << "Error: Signing archives is not supported by your version of gpg." << std::endl;
+ return 1;
+ }
+
+ std::shared_ptr<QFile> output;
+ QString outputFilePath;
+ if (options.archiveName.isEmpty() || options.archiveName == QLatin1String{"-"}) {
+ output.reset(new QFile);
+ output->open(stdout, QIODevice::WriteOnly);
+ } else {
+ outputFilePath = checkOutputFilePath(options.archiveName, options.baseDirectory);
+ if (outputFilePath.isEmpty()) {
+ return 1;
+ }
+ }
+
+ auto job = QGpgME::openpgp()->signArchiveJob(options.armor);
+ if (!job) {
+ std::cerr << "Error: Could not create job" << std::endl;
+ return 1;
+ }
+ job->setBaseDirectory(options.baseDirectory);
+ QObject::connect(job, &QGpgME::SignArchiveJob::result, &app, [](const GpgME::SigningResult &result, const QString &auditLog, const GpgME::Error &) {
+ std::cerr << "Diagnostics: " << auditLog << std::endl;
+ std::cerr << "Result: " << result << std::endl;
+ qApp->quit();
+ });
+ if (options.cancelTimeout.count() > 0) {
+ QTimer::singleShot(options.cancelTimeout, job, [job]() {
+ std::cerr << "Canceling job" << std::endl;
+ job->slotCancel();
+ });
+ }
+
+ GpgME::Error err;
+ if (output) {
+ err = job->start({}, options.filesAndDirectories, output);
+ } else {
+ job->setInputPaths(options.filesAndDirectories);
+ job->setOutputFile(outputFilePath);
+ err = job->startIt();
+ }
+ if (err) {
+ std::cerr << "Error: Starting the job failed: " << err.asString() << std::endl;
+ return 1;
+ }
+
+ return app.exec();
+}
--- /dev/null
+/*
+ run-wkdrefreshjob.cpp
+
+ This file is part of QGpgME's test suite.
+ Copyright (c) 2023 g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include <protocol.h>
+#include <wkdrefreshjob.h>
+
+#include <QCommandLineParser>
+#include <QCoreApplication>
+#include <QDebug>
+
+#include <context.h>
+#include <importresult.h>
+
+#include <iostream>
+
+using namespace GpgME;
+
+std::ostream &operator<<(std::ostream &os, const QString &s)
+{
+ return os << s.toLocal8Bit().constData();
+}
+
+struct CommandLineOptions {
+ bool allUserIds;
+ QString keyId;
+};
+
+CommandLineOptions parseCommandLine(const QStringList &arguments)
+{
+ CommandLineOptions options;
+
+ QCommandLineParser parser;
+ parser.setApplicationDescription("Test program for WKDRefreshJob");
+ parser.addHelpOption();
+ parser.addOptions({
+ {"all-userids", "Query WKD for all user IDs."},
+ });
+ parser.addPositionalArgument("key ID", "Key to refresh");
+
+ parser.process(arguments);
+
+ const auto args = parser.positionalArguments();
+ if (args.size() != 1) {
+ parser.showHelp(1);
+ }
+
+ options.allUserIds = parser.isSet("all-userids");
+ options.keyId = args[0];
+
+ return options;
+}
+
+Key getOpenPGPKey(const QString &keyId, Error &err)
+{
+ Key key;
+
+ auto ctx = Context::create(GpgME::OpenPGP);
+ if (!ctx) {
+ err = Error::fromCode(GPG_ERR_GENERAL);
+ return key;
+ }
+
+ key = ctx->key(keyId.toLatin1().constData(), err);
+ if (err.code() == GPG_ERR_EOF) {
+ err = Error{};
+ }
+ return key;
+}
+
+int main(int argc, char **argv)
+{
+ GpgME::initializeLibrary();
+
+ QCoreApplication app{argc, argv};
+ app.setApplicationName("run-wkdrefreshjob");
+
+ const auto options = parseCommandLine(app.arguments());
+
+ Error err;
+ const auto key = getOpenPGPKey(options.keyId, err);
+ if (err.code() == GPG_ERR_AMBIGUOUS_NAME) {
+ std::cerr << "Error: Multiple OpenPGP keys matching '" << options.keyId << "' found" << std::endl;
+ return 1;
+ }
+ if (key.isNull()) {
+ std::cerr << "Error: No OpenPGP key matching '" << options.keyId << "' found" << std::endl;
+ return 1;
+ }
+ if (err) {
+ std::cerr << "Error while getting OpenPGP key: " << err.asString() << std::endl;
+ return 1;
+ }
+ std::cout << "Refreshing OpenPGP key " << key.userID(0).id() << std::endl;
+
+ auto job = QGpgME::openpgp()->wkdRefreshJob();
+ if (!job) {
+ std::cerr << "Error: Could not create job to refresh OpenPGP key" << std::endl;
+ return 1;
+ }
+ QObject::connect(job, &QGpgME::WKDRefreshJob::result, &app, [](const GpgME::ImportResult &result, const QString &, const GpgME::Error &) {
+ if (result.isNull()) {
+ std::cout << "Empty result. Lookup via WKD failed or no user ID was originally retrieved via WKD." << std::endl;
+ } else {
+ std::cout << "Result: " << result << std::endl;
+ }
+ qApp->quit();
+ });
+ if (options.allUserIds) {
+ err = job->start(key.userIDs());
+ } else {
+ err = job->start({key});
+ }
+ if (err) {
+ std::cerr << "Error: " << err.asString() << std::endl;
+ return 1;
+ }
+
+ return app.exec();
+}
QSignalSpy spy (this, SIGNAL(asyncDone()));
QVERIFY(spy.wait(QSIGNALSPY_TIMEOUT));
- QVERIFY(result.code() == GPG_ERR_NO_ERROR);
+ QCOMPARE(result.code(), static_cast<int>(GPG_ERR_NO_ERROR));
key.update();
QCOMPARE(key.numSubkeys(), 3u);
}
const auto result = job->exec(key, sourceSubkey);
- QVERIFY(result.code() == GPG_ERR_NO_ERROR);
+ QCOMPARE(result.code(), static_cast<int>(GPG_ERR_NO_ERROR));
key.update();
QCOMPARE(key.numSubkeys(), 3u);
QCOMPARE(key.subkey(2).expirationTime(), 0);
const auto result = job->exec(key, sourceSubkey);
- QVERIFY(result.code() == GPG_ERR_NO_ERROR);
- key.update();
- QCOMPARE(key.numSubkeys(), 3u);
-
- // allow 1 second different expiration because gpg calculates with
- // expiration as difference to current time and takes current time
- // several times
- const auto allowedDeltaTSeconds = 1;
- const auto expectedExpirationRange = std::make_pair(
- sourceSubkey.expirationTime() - allowedDeltaTSeconds,
- sourceSubkey.expirationTime() + allowedDeltaTSeconds);
- const auto actualExpiration = key.subkey(2).expirationTime();
- QVERIFY2(actualExpiration >= expectedExpirationRange.first,
- ("actual: " + std::to_string(actualExpiration) +
- "; expected: " + std::to_string(expectedExpirationRange.first)).c_str());
- QVERIFY2(actualExpiration <= expectedExpirationRange.second,
- ("actual: " + std::to_string(actualExpiration) +
- "; expected: " + std::to_string(expectedExpirationRange.second)).c_str());
+ if (sourceSubkey.expirationTime() > 0) {
+ QCOMPARE(result.code(), static_cast<int>(GPG_ERR_NO_ERROR));
+ key.update();
+ QCOMPARE(key.numSubkeys(), 3u);
+
+ // allow 1 second different expiration because gpg calculates with
+ // expiration as difference to current time and takes current time
+ // several times
+ const auto allowedDeltaTSeconds = 1;
+ const auto expectedExpirationRange = std::make_pair(
+ uint_least32_t(sourceSubkey.expirationTime()) - allowedDeltaTSeconds,
+ uint_least32_t(sourceSubkey.expirationTime()) + allowedDeltaTSeconds);
+ const auto actualExpiration = uint_least32_t(key.subkey(2).expirationTime());
+ QVERIFY2(actualExpiration >= expectedExpirationRange.first,
+ ("actual: " + std::to_string(actualExpiration) +
+ "; expected: " + std::to_string(expectedExpirationRange.first)).c_str());
+ QVERIFY2(actualExpiration <= expectedExpirationRange.second,
+ ("actual: " + std::to_string(actualExpiration) +
+ "; expected: " + std::to_string(expectedExpirationRange.second)).c_str());
+ } else {
+ // on 32-bit systems the expiration date of the test key overflows;
+ // in this case we expect an appropriate error code
+ QCOMPARE(result.code(), static_cast<int>(GPG_ERR_INV_TIME));
+ }
}
private:
QVERIFY(!key.isNull());
QVERIFY(!key.subkey(0).isNull());
QVERIFY(!key.subkey(1).isNull());
- const auto subkeyExpiration = key.subkey(1).expirationTime();
+ const auto subkeyExpiration = uint_least32_t(key.subkey(1).expirationTime());
{
// Create the job
newExpirationDate.toSecsSinceEpoch() - 10,
QDateTime::currentDateTime().addDays(1).toSecsSinceEpoch());
{
- const auto actualExpiration = key.subkey(0).expirationTime();
+ const auto actualExpiration = uint_least32_t(key.subkey(0).expirationTime());
QVERIFY2(actualExpiration >= expectedExpirationRange.first,
("actual: " + std::to_string(actualExpiration) +
"; expected: " + std::to_string(expectedExpirationRange.first)).c_str());
"; expected: " + std::to_string(expectedExpirationRange.second)).c_str());
}
{
- const auto actualExpiration = key.subkey(1).expirationTime();
+ const auto actualExpiration = uint_least32_t(key.subkey(1).expirationTime());
QCOMPARE(actualExpiration, subkeyExpiration); // unchanged
}
}
QVERIFY(!key.isNull());
QVERIFY(!key.subkey(0).isNull());
QVERIFY(!key.subkey(1).isNull());
- const auto primaryKeyExpiration = key.subkey(0).expirationTime();
+ const auto primaryKeyExpiration = uint_least32_t(key.subkey(0).expirationTime());
{
// Create the job
newExpirationDate.toSecsSinceEpoch() - 10,
QDateTime::currentDateTime().addDays(2).toSecsSinceEpoch());
{
- const auto actualExpiration = key.subkey(0).expirationTime();
+ const auto actualExpiration = uint_least32_t(key.subkey(0).expirationTime());
QCOMPARE(actualExpiration, primaryKeyExpiration); // unchanged
}
{
- const auto actualExpiration = key.subkey(1).expirationTime();
+ const auto actualExpiration = uint_least32_t(key.subkey(1).expirationTime());
QVERIFY2(actualExpiration >= expectedExpirationRange.first,
("actual: " + std::to_string(actualExpiration) +
"; expected: " + std::to_string(expectedExpirationRange.first)).c_str());
QVERIFY(!key.isNull());
QVERIFY(!key.subkey(0).isNull());
QVERIFY(!key.subkey(1).isNull());
- const auto subkeyExpiration = key.subkey(1).expirationTime();
+ const auto subkeyExpiration = uint_least32_t(key.subkey(1).expirationTime());
{
// Create the job
newExpirationDate.toSecsSinceEpoch() - 10,
QDateTime::currentDateTime().addDays(3).toSecsSinceEpoch());
{
- const auto actualExpiration = key.subkey(0).expirationTime();
+ const auto actualExpiration = uint_least32_t(key.subkey(0).expirationTime());
QVERIFY2(actualExpiration >= expectedExpirationRange.first,
("actual: " + std::to_string(actualExpiration) +
"; expected: " + std::to_string(expectedExpirationRange.first)).c_str());
"; expected: " + std::to_string(expectedExpirationRange.second)).c_str());
}
{
- const auto actualExpiration = key.subkey(1).expirationTime();
+ const auto actualExpiration = uint_least32_t(key.subkey(1).expirationTime());
QCOMPARE(actualExpiration, subkeyExpiration); // unchanged
}
}
newExpirationDate.toSecsSinceEpoch() - 10,
QDateTime::currentDateTime().addDays(4).toSecsSinceEpoch());
{
- const auto actualExpiration = key.subkey(0).expirationTime();
+ const auto actualExpiration = uint_least32_t(key.subkey(0).expirationTime());
QVERIFY2(actualExpiration >= expectedExpirationRange.first,
("actual: " + std::to_string(actualExpiration) +
"; expected: " + std::to_string(expectedExpirationRange.first)).c_str());
"; expected: " + std::to_string(expectedExpirationRange.second)).c_str());
}
{
- const auto actualExpiration = key.subkey(1).expirationTime();
+ const auto actualExpiration = uint_least32_t(key.subkey(1).expirationTime());
QVERIFY2(actualExpiration >= expectedExpirationRange.first,
("actual: " + std::to_string(actualExpiration) +
"; expected: " + std::to_string(expectedExpirationRange.first)).c_str());
newExpirationDate.toSecsSinceEpoch() - 10,
QDateTime::currentDateTime().addDays(5).toSecsSinceEpoch());
{
- const auto actualExpiration = key.subkey(0).expirationTime();
+ const auto actualExpiration = uint_least32_t(key.subkey(0).expirationTime());
QVERIFY2(actualExpiration >= expectedExpirationRange.first,
("actual: " + std::to_string(actualExpiration) +
"; expected: " + std::to_string(expectedExpirationRange.first)).c_str());
"; expected: " + std::to_string(expectedExpirationRange.second)).c_str());
}
{
- const auto actualExpiration = key.subkey(1).expirationTime();
+ const auto actualExpiration = uint_least32_t(key.subkey(1).expirationTime());
QVERIFY2(actualExpiration >= expectedExpirationRange.first,
("actual: " + std::to_string(actualExpiration) +
"; expected: " + std::to_string(expectedExpirationRange.first)).c_str());
--- /dev/null
+/* t-verifiy.cpp
+
+ This file is part of qgpgme, the Qt API binding for gpgme
+ Copyright (c) 2016 by Bundesamt für Sicherheit in der Informationstechnik
+ Software engineering by Intevation GmbH
+ Copyright (c) 2023 by g10 Code GmbH
+ Software engineering by Ingo Klöcker <dev@ingo-kloecker.de>
+
+ QGpgME is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ QGpgME is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+ In addition, as a special exception, the copyright holders give
+ permission to link the code of this program with any edition of
+ the Qt library by Trolltech AS, Norway (or with modified versions
+ of Qt that use the same license as Qt), and distribute linked
+ combinations including the two. You must obey the GNU General
+ Public License in all respects for all of the code used other than
+ Qt. If you modify this file, you may extend this exception to
+ your version of the file, but you are not obligated to do so. If
+ you do not wish to do so, delete this exception statement from
+ your version.
+*/
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include "t-support.h"
+
+#include <protocol.h>
+#include <decryptverifyjob.h>
+
+#include <QDebug>
+#include <QTest>
+
+#include <decryptionresult.h>
+#include <key.h>
+#include <verificationresult.h>
+
+using namespace QGpgME;
+using namespace GpgME;
+
+static const char encryptedText[] =
+"-----BEGIN PGP MESSAGE-----\n"
+"\n"
+"jA0ECQMCnJt+DX+RJJH90kIBCYlu/LYn57TCNO+O8kYwe4jcyEIaHqSZuvO50nFE\n"
+"hQy9p33Y5VwP6uDOYOKxr1W6iE4GvbX+5UNKYdjjPL0m1ak=\n"
+"=hgKY\n"
+"-----END PGP MESSAGE-----\n";
+
+static const char signedText[] =
+"-----BEGIN PGP MESSAGE-----\n"
+"\n"
+"owGbwMvMwCSoW1RzPCOz3IRxjXQSR0lqcYleSUWJTZOvjVdpcYmCu1+oQmaJIleH\n"
+"GwuDIBMDGysTSIqBi1MApi+nlGGuwDeHao53HBr+FoVGP3xX+kvuu9fCMJvl6IOf\n"
+"y1kvP4y+8D5a11ang0udywsA\n"
+"=Crq6\n"
+"-----END PGP MESSAGE-----\n";
+
+static const char storedText[] =
+"-----BEGIN PGP MESSAGE-----\n"
+"\n"
+"owE7LZzEkHy7X86rtLhEwd0vVCGzRJELAA==\n"
+"=VwL6\n"
+"-----END PGP MESSAGE-----\n";
+
+class DecryptVerifyTest: public QGpgMETest
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+
+ void testEncryptedOnlyData()
+ {
+ const QByteArray encryptedData{encryptedText};
+ std::unique_ptr<DecryptVerifyJob> job{openpgp()->decryptVerifyJob(true)};
+ hookUpPassphraseProvider(job.get());
+
+ QByteArray verified;
+ const auto result = job->exec(encryptedData, verified);
+
+ const auto decryptionResult = result.first;
+ QCOMPARE(decryptionResult.error().code(), int{GPG_ERR_NO_ERROR});
+ const auto verificationResult = result.second;
+ QCOMPARE(verificationResult.error().code(), int{GPG_ERR_NO_ERROR});
+ QCOMPARE(verificationResult.numSignatures(), 0u);
+ }
+
+ void testSignedOnlyData()
+ {
+ const QByteArray signedData{signedText};
+ std::unique_ptr<DecryptVerifyJob> job{openpgp()->decryptVerifyJob(true)};
+
+ QByteArray verified;
+ const auto result = job->exec(signedData, verified);
+
+ const auto decryptionResult = result.first;
+ QCOMPARE(decryptionResult.error().code(), int{GPG_ERR_NO_DATA});
+ const auto verificationResult = result.second;
+ QCOMPARE(verificationResult.error().code(), int{GPG_ERR_NO_ERROR});
+ QCOMPARE(verificationResult.numSignatures(), 1u);
+ }
+
+ void testStoredData()
+ {
+ const QByteArray storedData{storedText};
+ std::unique_ptr<DecryptVerifyJob> job{openpgp()->decryptVerifyJob(true)};
+
+ QByteArray verified;
+ const auto result = job->exec(storedData, verified);
+
+ const auto decryptionResult = result.first;
+ QCOMPARE(decryptionResult.error().code(), int{GPG_ERR_NO_DATA});
+ const auto verificationResult = result.second;
+ QCOMPARE(verificationResult.error().code(), int{GPG_ERR_NO_DATA});
+ QCOMPARE(verificationResult.numSignatures(), 0u);
+ }
+};
+
+QTEST_MAIN(DecryptVerifyTest)
+#include "t-decryptverify.moc"
bool initSeen = false;
bool finishSeen = false;
- connect(job, &Job::progress, this, [this, &initSeen, &finishSeen] (const QString&, int current, int total) {
+ connect(job, &Job::jobProgress, this, [&initSeen, &finishSeen] (int current, int total) {
+ // We only check for progress 0 and max progress as the other progress
+ // lines depend on the system speed and are as such unreliable to test.
+ QVERIFY(total == PROGRESS_TEST_SIZE);
+ if (current == 0) {
+ initSeen = true;
+ }
+ if (current == total) {
+ finishSeen = true;
+ }
+ QVERIFY(current >= 0 && current <= total);
+ });
+ connect(job, &Job::rawProgress, this, [&initSeen, &finishSeen] (const QString &what, int type, int current, int total) {
+ // `what` is something like "-&12", i.e. a special fd passed to gpg; we only check that it's not empty
+ QVERIFY(!what.isEmpty());
+ QCOMPARE(type, '?');
// We only check for progress 0 and max progress as the other progress
// lines depend on the system speed and are as such unreliable to test.
QVERIFY(total == PROGRESS_TEST_SIZE);
#include <QTemporaryDir>
#include <QTest>
+#include <memory>
+
using namespace QGpgME;
using namespace GpgME;
QSignalSpy spy (this, SIGNAL(asyncDone()));
QVERIFY(spy.wait());
- auto ctx = Context::createForProtocol(GpgME::OpenPGP);
+ auto ctx = std::unique_ptr<GpgME::Context>(Context::createForProtocol(GpgME::OpenPGP));
GpgME::Error err;
const auto key = ctx->key(keyFpr, err, false);
QVERIFY(!key.isNull());
- QCOMPARE(key.numUserIDs(), 1);
+ QCOMPARE(key.numUserIDs(), 1u);
QCOMPARE(key.userID(0).id(), "importWithImportFilter@example.net");
}
QSignalSpy spy (this, SIGNAL(asyncDone()));
QVERIFY(spy.wait());
- auto ctx = Context::createForProtocol(GpgME::OpenPGP);
+ auto ctx = std::unique_ptr<GpgME::Context>(Context::createForProtocol(GpgME::OpenPGP));
GpgME::Error err;
const auto key = ctx->key(keyFpr, err, false);
QVERIFY(!key.isNull());
QVERIFY(key.origin() == Key::OriginWKD);
// the origin URL is currently not available in GpgME
}
+
+ void testDeferredStart()
+ {
+ // pub ed25519 2023-01-05 [SC]
+ // 4D1367FE9AF6334D8A55BA635A817A94C7B37E5D
+ // uid importDeferred@example.net
+ static const char keyFpr[] = "4D1367FE9AF6334D8A55BA635A817A94C7B37E5D";
+ static const char keyData[] =
+ "-----BEGIN PGP PUBLIC KEY BLOCK-----\n"
+ "\n"
+ "mDMEY7bNSxYJKwYBBAHaRw8BAQdAazIWyd/xEMeObDSUnh2+AXQuo0oM+TDBG49z\n"
+ "KHvTAYG0GmltcG9ydERlZmVycmVkQGV4YW1wbGUubmV0iJMEExYKADsWIQRNE2f+\n"
+ "mvYzTYpVumNagXqUx7N+XQUCY7bNSwIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIe\n"
+ "BwIXgAAKCRBagXqUx7N+XasrAP4qPzLzPd6tWDZvP29ZYPTSrjrTb0U5MOJeIPKX\n"
+ "73jZswEAwWRvgH+GmhTOigw0UVtinAFvUEFVyvcW/GR19mw5XA0=\n"
+ "=JnpA\n"
+ "-----END PGP PUBLIC KEY BLOCK-----\n";
+
+ auto *job = openpgp()->importJob();
+ job->startLater(QByteArray{keyData});
+ connect(job, &ImportJob::result, this,
+ [this](ImportResult result, QString, Error)
+ {
+ QVERIFY(!result.error());
+ QVERIFY(!result.imports().empty());
+ QVERIFY(result.numImported());
+ Q_EMIT asyncDone();
+ });
+ job->startNow();
+ QSignalSpy spy (this, SIGNAL(asyncDone()));
+ QVERIFY(spy.wait());
+
+ auto ctx = std::unique_ptr<GpgME::Context>(Context::createForProtocol(GpgME::OpenPGP));
+ GpgME::Error err;
+ const auto key = ctx->key(keyFpr, err, false);
+ QVERIFY(!key.isNull());
+ }
};
QTEST_MAIN(ImportTest)
QVERIFY (job);
hookUpPassphraseProvider(job);
- // Setup the job
+ // Set up the job
job->setExportable(false);
std::vector<unsigned int> uids;
uids.push_back(0);
QVERIFY (job);
hookUpPassphraseProvider(job);
- // Setup the job
+ // Set up the job
job->setExportable(true);
std::vector<unsigned int> uids;
uids.push_back(0);
QVERIFY (job3);
hookUpPassphraseProvider(job3);
- // Setup the job
+ // Set up the job
job3->setExportable(false);
job3->setUserIDsToSign(uids);
job3->setSigningKey(seckey);
QVERIFY (job3);
hookUpPassphraseProvider(job3);
- // Setup the job
+ // Set up the job
job3->setExportable(false);
job3->setUserIDsToSign(uids);
job3->setSigningKey(zulu);
QVERIFY (job);
hookUpPassphraseProvider(job);
- // Setup the job
+ // Set up the job
job->setExportable(false);
std::vector<unsigned int> uids;
uids.push_back(0);
QVERIFY (job3);
hookUpPassphraseProvider(job3);
- // Setup the job
+ // Set up the job
job3->setExportable(false);
job3->setUserIDsToSign(uids);
job3->setSigningKey(seckey);
QVERIFY (job);
hookUpPassphraseProvider(job);
- // Setup the job
+ // Set up the job
job->setExportable(false);
std::vector<unsigned int> uids;
uids.push_back(0);
QVERIFY (job2);
hookUpPassphraseProvider(job2);
- // Setup the job
+ // Set up the job
job2->setExportable(false);
job2->setUserIDsToSign(uids);
job2->setSigningKey(seckey);
QVERIFY (job3);
hookUpPassphraseProvider(job3);
- // Setup the job
+ // Set up the job
job3->setExportable(false);
job3->setUserIDsToSign(uids);
job3->setSigningKey(seckey);
{
public:
char *getPassphrase(const char * /*useridHint*/, const char * /*description*/,
- bool /*previousWasBad*/, bool &/*canceled*/) Q_DECL_OVERRIDE
+ bool /*previousWasBad*/, bool &/*canceled*/) override
{
char *ret;
gpgrt_asprintf(&ret, "abc");
#include "protocol.h"
#include "signkeyjob.h"
+#include <QRegularExpression>
#include <QSignalSpy>
#include <QTemporaryDir>
#include <QTest>
QVERIFY(job);
hookUpPassphraseProvider(job.get());
- // Setup the job
+ // Set up the job
job->setExportable(true);
job->setSigningKey(seckey);
job->setTrustSignature(TrustSignatureTrust::Complete, 1, QStringLiteral("example.org"));
QVERIFY(trustSignature.trustScope());
const auto trustScope = QString::fromUtf8(trustSignature.trustScope());
QVERIFY(!trustScope.isEmpty());
- const QRegExp regex{trustScope};
+ const QRegularExpression regex{trustScope};
QVERIFY(regex.isValid());
- QVERIFY(regex.indexIn(QStringLiteral("Foo <foo@example.org>")) != -1);
+ QVERIFY(regex.match(QStringLiteral("Foo <foo@example.org>")).hasMatch());
}
// Create second trust signature
QVERIFY(job);
hookUpPassphraseProvider(job.get());
- // Setup the job
+ // Set up the job
job->setExportable(true);
job->setSigningKey(seckey);
job->setDupeOk(true);
QVERIFY(trustSignature.trustScope());
const auto trustScope = QString::fromUtf8(trustSignature.trustScope());
QVERIFY(!trustScope.isEmpty());
- const QRegExp regex{trustScope};
+ const QRegularExpression regex{trustScope};
QVERIFY(regex.isValid());
- QVERIFY(regex.indexIn(QStringLiteral("Foo <foo@example.net>")) != -1);
+ QVERIFY(regex.match(QStringLiteral("Foo <foo@example.net>")).hasMatch());
}
}
QVERIFY(job);
hookUpPassphraseProvider(job);
- // Setup the job
+ // Set up the job
job->setExportable(true);
job->setSigningKey(seckey);
job->setTrustSignature(TrustSignatureTrust::Complete, 1, QStringLiteral("example.org"));
QVERIFY(trustSignature.trustScope());
const auto trustScope = QString::fromUtf8(trustSignature.trustScope());
QVERIFY(!trustScope.isEmpty());
- const QRegExp regex{trustScope};
+ const QRegularExpression regex{trustScope};
QVERIFY(regex.isValid());
- QVERIFY(regex.indexIn(QStringLiteral("Foo <foo@example.org>")) != -1);
+ QVERIFY(regex.match(QStringLiteral("Foo <foo@example.org>")).hasMatch());
}
// Create second trust signature
QVERIFY(job);
hookUpPassphraseProvider(job);
- // Setup the job
+ // Set up the job
job->setExportable(true);
job->setSigningKey(seckey);
job->setDupeOk(true);
QVERIFY(trustSignature.trustScope());
const auto trustScope = QString::fromUtf8(trustSignature.trustScope());
QVERIFY(!trustScope.isEmpty());
- const QRegExp regex{trustScope};
+ const QRegularExpression regex{trustScope};
QVERIFY(regex.isValid());
- QVERIFY(regex.indexIn(QStringLiteral("Foo <foo@example.net>")) != -1);
+ QVERIFY(regex.match(QStringLiteral("Foo <foo@example.net>")).hasMatch());
}
}
QVERIFY(job);
hookUpPassphraseProvider(job);
- // Setup the job
+ // Set up the job
job->setExportable(true);
job->setSigningKey(seckey);
job->setUserIDsToSign({0});
QVERIFY(trustSignature.trustScope());
const auto trustScope = QString::fromUtf8(trustSignature.trustScope());
QVERIFY(!trustScope.isEmpty());
- const QRegExp regex{trustScope};
+ const QRegularExpression regex{trustScope};
QVERIFY(regex.isValid());
- QVERIFY(regex.indexIn(QStringLiteral("Foo <foo@example.org>")) != -1);
+ QVERIFY(regex.match(QStringLiteral("Foo <foo@example.org>")).hasMatch());
}
// Create second trust signature
QVERIFY(job);
hookUpPassphraseProvider(job);
- // Setup the job
+ // Set up the job
job->setExportable(true);
job->setSigningKey(seckey);
job->setDupeOk(true);
QVERIFY(trustSignature.trustScope());
const auto trustScope = QString::fromUtf8(trustSignature.trustScope());
QVERIFY(!trustScope.isEmpty());
- const QRegExp regex{trustScope};
+ const QRegularExpression regex{trustScope};
QVERIFY(regex.isValid());
- QVERIFY(regex.indexIn(QStringLiteral("Foo <foo@example.net>")) != -1);
+ QVERIFY(regex.match(QStringLiteral("Foo <foo@example.net>")).hasMatch());
}
}
QVERIFY(job);
hookUpPassphraseProvider(job);
- // Setup the job
+ // Set up the job
job->setExportable(true);
job->setSigningKey(seckey);
job->setTrustSignature(TrustSignatureTrust::Complete, 1, QStringLiteral("example.org"));
QVERIFY(trustSignature.trustScope());
const auto trustScope = QString::fromUtf8(trustSignature.trustScope());
QVERIFY(!trustScope.isEmpty());
- const QRegExp regex{trustScope};
+ const QRegularExpression regex{trustScope};
QVERIFY(regex.isValid());
- QVERIFY(regex.indexIn(QStringLiteral("Foo <foo@example.org>")) != -1);
+ QVERIFY(regex.match(QStringLiteral("Foo <foo@example.org>")).hasMatch());
}
// Create second trust signature
QVERIFY(job);
hookUpPassphraseProvider(job);
- // Setup the job
+ // Set up the job
job->setExportable(true);
job->setSigningKey(seckey);
job->setUserIDsToSign({0});
QVERIFY(trustSignature.trustScope());
const auto trustScope = QString::fromUtf8(trustSignature.trustScope());
QVERIFY(!trustScope.isEmpty());
- const QRegExp regex{trustScope};
+ const QRegularExpression regex{trustScope};
QVERIFY(regex.isValid());
- QVERIFY(regex.indexIn(QStringLiteral("Foo <foo@example.net>")) != -1);
+ QVERIFY(regex.match(QStringLiteral("Foo <foo@example.net>")).hasMatch());
}
}
QVERIFY(job);
hookUpPassphraseProvider(job.get());
- // Setup the job
+ // Set up the job
job->setExportable(true);
job->setSigningKey(seckey);
job->setDupeOk(true);
QVERIFY(job);
hookUpPassphraseProvider(job.get());
- // Setup the job
+ // Set up the job
job->setExportable(true);
job->setSigningKey(seckey);
job->setDupeOk(true);
--- /dev/null
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+# Check whether the given FLAG works with the current language's compiler
+# or gives an error. (Warnings, however, are ignored)
+#
+# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+# success/failure.
+#
+# If EXTRA-FLAGS is defined, it is added to the current language's default
+# flags (e.g. CFLAGS) when the check is done. The check is thus made with
+# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
+# force the compiler to issue an error when a bad flag is given.
+#
+# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 6
+
+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
+ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
+ _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
+ AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
+ [AS_VAR_SET(CACHEVAR,[yes])],
+ [AS_VAR_SET(CACHEVAR,[no])])
+ _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
+AS_VAR_IF(CACHEVAR,yes,
+ [m4_default([$2], :)],
+ [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_COMPILE_FLAGS
# ===========================================================================
-# https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
+# https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
# ===========================================================================
#
# SYNOPSIS
#
# Check for baseline language coverage in the compiler for the specified
# version of the C++ standard. If necessary, add switches to CXX and
-# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard)
-# or '14' (for the C++14 standard).
+# CXXCPP to enable support. VERSION may be '11', '14', '17', or '20' for
+# the respective C++ standard version.
#
# The second argument, if specified, indicates whether you insist on an
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
# -std=c++11). If neither is specified, you get whatever works, with
-# preference for an extended mode.
+# preference for no added switch, and then for an extended mode.
#
# The third argument, if specified 'mandatory' or if left unspecified,
# indicates that baseline support for the specified C++ standard is
# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
# Copyright (c) 2015 Paul Norman <penorman@mac.com>
# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
+# Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
+# Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
+# Copyright (c) 2020 Jason Merrill <jason@redhat.com>
+# Copyright (c) 2021 Jörn Heusipp <osmanx@problemloesungsmaschine.de>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 4
+#serial 15
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
dnl (serial version number 13).
AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
- m4_if([$1], [11], [],
- [$1], [14], [],
- [$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])],
+ m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
+ [$1], [14], [ax_cxx_compile_alternatives="14 1y"],
+ [$1], [17], [ax_cxx_compile_alternatives="17 1z"],
+ [$1], [20], [ax_cxx_compile_alternatives="20"],
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
m4_if([$2], [], [],
[$2], [ext], [],
[m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
AC_LANG_PUSH([C++])dnl
ac_success=no
- AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
- ax_cv_cxx_compile_cxx$1,
- [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
- [ax_cv_cxx_compile_cxx$1=yes],
- [ax_cv_cxx_compile_cxx$1=no])])
- if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
- ac_success=yes
- fi
+
+ m4_if([$2], [], [dnl
+ AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
+ ax_cv_cxx_compile_cxx$1,
+ [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+ [ax_cv_cxx_compile_cxx$1=yes],
+ [ax_cv_cxx_compile_cxx$1=no])])
+ if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
+ ac_success=yes
+ fi])
m4_if([$2], [noext], [], [dnl
if test x$ac_success = xno; then
- for switch in -std=gnu++$1 -std=gnu++0x; do
+ for alternative in ${ax_cxx_compile_alternatives}; do
+ switch="-std=gnu++${alternative}"
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
$cachevar,
CXX="$ac_save_CXX"])
if eval test x\$$cachevar = xyes; then
CXX="$CXX $switch"
- CXXCPP="$CXXCPP $switch"
+ if test -n "$CXXCPP" ; then
+ CXXCPP="$CXXCPP $switch"
+ fi
ac_success=yes
break
fi
dnl HP's aCC needs +std=c++11 according to:
dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
dnl Cray's crayCC needs "-h std=c++11"
- for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do
- cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
- AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
- $cachevar,
- [ac_save_CXX="$CXX"
- CXX="$CXX $switch"
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
- [eval $cachevar=yes],
- [eval $cachevar=no])
- CXX="$ac_save_CXX"])
- if eval test x\$$cachevar = xyes; then
- CXX="$CXX $switch"
- CXXCPP="$CXXCPP $switch"
- ac_success=yes
+ for alternative in ${ax_cxx_compile_alternatives}; do
+ for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
+ cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+ AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+ $cachevar,
+ [ac_save_CXX="$CXX"
+ CXX="$CXX $switch"
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+ [eval $cachevar=yes],
+ [eval $cachevar=no])
+ CXX="$ac_save_CXX"])
+ if eval test x\$$cachevar = xyes; then
+ CXX="$CXX $switch"
+ if test -n "$CXXCPP" ; then
+ CXXCPP="$CXXCPP $switch"
+ fi
+ ac_success=yes
+ break
+ fi
+ done
+ if test x$ac_success = xyes; then
break
fi
done
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
)
-
dnl Test body for checking C++14 support
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
)
+dnl Test body for checking C++17 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_17
+)
+
+dnl Test body for checking C++20 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_20],
+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_17
+ _AX_CXX_COMPILE_STDCXX_testbody_new_in_20
+)
+
dnl Tests for new features in C++11
#error "This is not a C++ compiler"
-#elif __cplusplus < 201103L
+// MSVC always sets __cplusplus to 199711L in older versions; newer versions
+// only set it correctly if /Zc:__cplusplus is specified as well as a
+// /std:c++NN switch:
+// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
+#elif __cplusplus < 201103L && !defined _MSC_VER
#error "This is not a C++11 compiler"
struct Base
{
+ virtual ~Base() {}
virtual void f() {}
};
struct Derived : public Base
{
+ virtual ~Derived() override {}
virtual void f() override {}
};
#error "This is not a C++ compiler"
-#elif __cplusplus < 201402L
+#elif __cplusplus < 201402L && !defined _MSC_VER
#error "This is not a C++14 compiler"
}
- namespace test_digit_seperators
+ namespace test_digit_separators
{
constexpr auto ten_million = 100'000'000;
#endif // __cplusplus >= 201402L
]])
+
+
+dnl Tests for new features in C++17
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
+
+// If the compiler admits that it is not ready for C++17, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201703L && !defined _MSC_VER
+
+#error "This is not a C++17 compiler"
+
+#else
+
+#include <initializer_list>
+#include <utility>
+#include <type_traits>
+
+namespace cxx17
+{
+
+ namespace test_constexpr_lambdas
+ {
+
+ constexpr int foo = [](){return 42;}();
+
+ }
+
+ namespace test::nested_namespace::definitions
+ {
+
+ }
+
+ namespace test_fold_expression
+ {
+
+ template<typename... Args>
+ int multiply(Args... args)
+ {
+ return (args * ... * 1);
+ }
+
+ template<typename... Args>
+ bool all(Args... args)
+ {
+ return (args && ...);
+ }
+
+ }
+
+ namespace test_extended_static_assert
+ {
+
+ static_assert (true);
+
+ }
+
+ namespace test_auto_brace_init_list
+ {
+
+ auto foo = {5};
+ auto bar {5};
+
+ static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
+ static_assert(std::is_same<int, decltype(bar)>::value);
+ }
+
+ namespace test_typename_in_template_template_parameter
+ {
+
+ template<template<typename> typename X> struct D;
+
+ }
+
+ namespace test_fallthrough_nodiscard_maybe_unused_attributes
+ {
+
+ int f1()
+ {
+ return 42;
+ }
+
+ [[nodiscard]] int f2()
+ {
+ [[maybe_unused]] auto unused = f1();
+
+ switch (f1())
+ {
+ case 17:
+ f1();
+ [[fallthrough]];
+ case 42:
+ f1();
+ }
+ return f1();
+ }
+
+ }
+
+ namespace test_extended_aggregate_initialization
+ {
+
+ struct base1
+ {
+ int b1, b2 = 42;
+ };
+
+ struct base2
+ {
+ base2() {
+ b3 = 42;
+ }
+ int b3;
+ };
+
+ struct derived : base1, base2
+ {
+ int d;
+ };
+
+ derived d1 {{1, 2}, {}, 4}; // full initialization
+ derived d2 {{}, {}, 4}; // value-initialized bases
+
+ }
+
+ namespace test_general_range_based_for_loop
+ {
+
+ struct iter
+ {
+ int i;
+
+ int& operator* ()
+ {
+ return i;
+ }
+
+ const int& operator* () const
+ {
+ return i;
+ }
+
+ iter& operator++()
+ {
+ ++i;
+ return *this;
+ }
+ };
+
+ struct sentinel
+ {
+ int i;
+ };
+
+ bool operator== (const iter& i, const sentinel& s)
+ {
+ return i.i == s.i;
+ }
+
+ bool operator!= (const iter& i, const sentinel& s)
+ {
+ return !(i == s);
+ }
+
+ struct range
+ {
+ iter begin() const
+ {
+ return {0};
+ }
+
+ sentinel end() const
+ {
+ return {5};
+ }
+ };
+
+ void f()
+ {
+ range r {};
+
+ for (auto i : r)
+ {
+ [[maybe_unused]] auto v = i;
+ }
+ }
+
+ }
+
+ namespace test_lambda_capture_asterisk_this_by_value
+ {
+
+ struct t
+ {
+ int i;
+ int foo()
+ {
+ return [*this]()
+ {
+ return i;
+ }();
+ }
+ };
+
+ }
+
+ namespace test_enum_class_construction
+ {
+
+ enum class byte : unsigned char
+ {};
+
+ byte foo {42};
+
+ }
+
+ namespace test_constexpr_if
+ {
+
+ template <bool cond>
+ int f ()
+ {
+ if constexpr(cond)
+ {
+ return 13;
+ }
+ else
+ {
+ return 42;
+ }
+ }
+
+ }
+
+ namespace test_selection_statement_with_initializer
+ {
+
+ int f()
+ {
+ return 13;
+ }
+
+ int f2()
+ {
+ if (auto i = f(); i > 0)
+ {
+ return 3;
+ }
+
+ switch (auto i = f(); i + 4)
+ {
+ case 17:
+ return 2;
+
+ default:
+ return 1;
+ }
+ }
+
+ }
+
+ namespace test_template_argument_deduction_for_class_templates
+ {
+
+ template <typename T1, typename T2>
+ struct pair
+ {
+ pair (T1 p1, T2 p2)
+ : m1 {p1},
+ m2 {p2}
+ {}
+
+ T1 m1;
+ T2 m2;
+ };
+
+ void f()
+ {
+ [[maybe_unused]] auto p = pair{13, 42u};
+ }
+
+ }
+
+ namespace test_non_type_auto_template_parameters
+ {
+
+ template <auto n>
+ struct B
+ {};
+
+ B<5> b1;
+ B<'a'> b2;
+
+ }
+
+ namespace test_structured_bindings
+ {
+
+ int arr[2] = { 1, 2 };
+ std::pair<int, int> pr = { 1, 2 };
+
+ auto f1() -> int(&)[2]
+ {
+ return arr;
+ }
+
+ auto f2() -> std::pair<int, int>&
+ {
+ return pr;
+ }
+
+ struct S
+ {
+ int x1 : 2;
+ volatile double y1;
+ };
+
+ S f3()
+ {
+ return {};
+ }
+
+ auto [ x1, y1 ] = f1();
+ auto& [ xr1, yr1 ] = f1();
+ auto [ x2, y2 ] = f2();
+ auto& [ xr2, yr2 ] = f2();
+ const auto [ x3, y3 ] = f3();
+
+ }
+
+ namespace test_exception_spec_type_system
+ {
+
+ struct Good {};
+ struct Bad {};
+
+ void g1() noexcept;
+ void g2();
+
+ template<typename T>
+ Bad
+ f(T*, T*);
+
+ template<typename T1, typename T2>
+ Good
+ f(T1*, T2*);
+
+ static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
+
+ }
+
+ namespace test_inline_variables
+ {
+
+ template<class T> void f(T)
+ {}
+
+ template<class T> inline T g(T)
+ {
+ return T{};
+ }
+
+ template<> inline void f<>(int)
+ {}
+
+ template<> int g<>(int)
+ {
+ return 5;
+ }
+
+ }
+
+} // namespace cxx17
+
+#endif // __cplusplus < 201703L && !defined _MSC_VER
+
+]])
+
+
+dnl Tests for new features in C++20
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_20], [[
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 202002L && !defined _MSC_VER
+
+#error "This is not a C++20 compiler"
+
+#else
+
+#include <version>
+
+namespace cxx20
+{
+
+// As C++20 supports feature test macros in the standard, there is no
+// immediate need to actually test for feature availability on the
+// Autoconf side.
+
+} // namespace cxx20
+
+#endif // __cplusplus < 202002L && !defined _MSC_VER
+
+]])
# gpg-error.m4 - autoconf macro to detect libgpg-error.
-# Copyright (C) 2002, 2003, 2004, 2011, 2014, 2018, 2020, 2021
+# Copyright (C) 2002, 2003, 2004, 2011, 2014, 2018, 2020, 2021, 2022
# g10 Code GmbH
#
# This file is free software; as a special exception the author gives
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
-# Last-changed: 2022-02-15
+# Last-changed: 2023-04-01
-
-dnl AM_PATH_GPG_ERROR([MINIMUM-VERSION,
-dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
dnl
-dnl Test for libgpg-error and define GPG_ERROR_CFLAGS, GPG_ERROR_LIBS,
-dnl GPG_ERROR_MT_CFLAGS, and GPG_ERROR_MT_LIBS. The _MT_ variants are
-dnl used for programs requireing real multi thread support.
+dnl Find gpg-error-config, for backward compatibility
dnl
-dnl If a prefix option is not used, the config script is first
-dnl searched in $SYSROOT/bin and then along $PATH. If the used
-dnl config script does not match the host specification the script
-dnl is added to the gpg_config_script_warn variable.
-dnl
-AC_DEFUN([AM_PATH_GPG_ERROR],
-[ AC_REQUIRE([AC_CANONICAL_HOST])
+dnl _AM_PATH_POSSIBLE_GPG_ERROR_CONFIG
+AC_DEFUN([_AM_PATH_POSSIBLE_GPG_ERROR_CONFIG],[dnl
gpg_error_config_prefix=""
dnl --with-libgpg-error-prefix=PFX is the preferred name for this option,
dnl since that is consistent with how our three siblings use the directory/
fi
AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
- min_gpg_error_version=ifelse([$1], ,1.33,$1)
- ok=no
+])
+dnl
+dnl Find gpgrt-config, which uses .pc file
+dnl (minimum pkg-config functionality, supporting cross build)
+dnl
+dnl _AM_PATH_GPGRT_CONFIG
+AC_DEFUN([_AM_PATH_GPGRT_CONFIG],[dnl
AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no, [$prefix/bin:$PATH])
if test "$GPGRT_CONFIG" != "no"; then
# Determine gpgrt_libdir
fi
if test -n "$gpgrt_libdir"; then break; fi
done
- else
- # When we cannot determine system libdir-format, use this:
+ fi
+ if test -z "$gpgrt_libdir"; then
+ # No valid pkgconfig dir in any of the system directories, fallback
gpgrt_libdir=${possible_libdir1}
fi
else
AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
else
+ gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
unset GPGRT_CONFIG
fi
elif test "$GPG_ERROR_CONFIG" != "no"; then
gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
unset GPGRT_CONFIG
fi
+])
+
+dnl AM_PATH_GPG_ERROR([MINIMUM-VERSION,
+dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
+dnl
+dnl Test for libgpg-error and define GPG_ERROR_CFLAGS, GPG_ERROR_LIBS,
+dnl GPG_ERROR_MT_CFLAGS, and GPG_ERROR_MT_LIBS. The _MT_ variants are
+dnl used for programs requireing real multi thread support.
+dnl
+dnl If a prefix option is not used, the config script is first
+dnl searched in $SYSROOT/bin and then along $PATH. If the used
+dnl config script does not match the host specification the script
+dnl is added to the gpg_config_script_warn variable.
+dnl
+AC_DEFUN([AM_PATH_GPG_ERROR],[dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([_AM_PATH_POSSIBLE_GPG_ERROR_CONFIG])dnl
+AC_REQUIRE([_AM_PATH_GPGRT_CONFIG])dnl
+ min_gpg_error_version=ifelse([$1], ,1.33,$1)
+ ok=no
if test "$GPG_ERROR_CONFIG" != "no"; then
req_major=`echo $min_gpg_error_version | \
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
dnl WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
dnl SPDX-License-Identifier: FSFULLR
-# Last-changed: 2020-11-17
+# Last-changed: 2023-07-26
dnl
dnl Common code used for libassuan detection [internal]
fi
use_gpgrt_config=""
- if test x"${LIBASSUAN_CONFIG}" = x -a x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
+ if test x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
if $GPGRT_CONFIG libassuan --exists; then
LIBASSUAN_CONFIG="$GPGRT_CONFIG libassuan"
AC_MSG_NOTICE([Use gpgrt-config as libassuan-config])
if test $ok = yes; then
AC_MSG_RESULT([yes ($libassuan_config_version)])
+ AC_DEFINE(LIBASSUAN_API_REQUESTED, $req_libassuan_api, Requested API version for libassuan)
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING([LIBASSUAN API version])
if test "$req_libassuan_api" -eq "$tmp" ; then
AC_MSG_RESULT(okay)
+ elif test "$req_libassuan_api" -eq 2 -a "$tmp" -eq 3; then
+ AC_MSG_RESULT(okay)
else
ok=no
AC_MSG_RESULT([does not match. want=$req_libassuan_api got=$tmp.])
## ------------------------ -*- Autoconf -*-
## Python file handling
## From Andrew Dalke
-## Updated by James Henstridge
+## Updated by James Henstridge and other contributors.
## Updated by Werner Koch 2018-10-17
-## ---------------------------------
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+## ------------------------
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# numbers and dots only.
AC_DEFUN([AM_PATH_PYTHON],
[
- dnl Find a Python interpreter. Python versions prior to 2.0 are not
- dnl supported. (2.0 was released on October 16, 2000). Python 3.0
- dnl through to Python 3.9 are also not supported.
+ dnl Find a Python interpreter. Python versions prior to 2.7 are not
+ dnl supported. Python 3.0 through to Python 3.3 are also not supported.
m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
[python2 python2.7 dnl
python dnl
- python3 python3.9 python3.8 python3.7 python3.6 python3.5 python3.4
+ python3 python3.10 python3.9 python3.8 python3.7 python3.6 python3.5 python3.4
])
AC_ARG_VAR([PYTHON], [the Python interpreter])
])
if test "$PYTHON" = :; then
- dnl Run any user-specified action, or abort.
+ dnl Run any user-specified action, or abort.
m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])])
else
- dnl Query Python for its version number. Getting [:3] seems to be
- dnl the best way to do this; it's what "site.py" does in the standard
- dnl library.
-
+ dnl Query Python for its version number. Although site.py simply uses
+ dnl sys.version[:3], printing that failed with Python 3.10, since the
+ dnl trailing zero was eliminated. So now we output just the major
+ dnl and minor version numbers, as numbers. Apparently the tertiary
+ dnl version is not of interest.
+ dnl
AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version],
- [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`])
+ [am_cv_python_version=`$PYTHON -c "import sys; print ('%u.%u' % sys.version_info[[:2]])"`])
AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
- dnl Use the values of $prefix and $exec_prefix for the corresponding
- dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made
- dnl distinct variables so they can be overridden if need be. However,
- dnl general consensus is that you shouldn't need this ability.
-
- AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
- AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
-
- dnl At times (like when building shared libraries) you may want
+ dnl At times, e.g., when building shared libraries, you may want
dnl to know which OS platform Python thinks this is.
-
+ dnl
AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform],
[am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
- # Just factor out some code duplication.
+ dnl emacs-page
+ dnl If --with-python-sys-prefix is given, use the values of sys.prefix
+ dnl and sys.exec_prefix for the corresponding values of PYTHON_PREFIX
+ dnl and PYTHON_EXEC_PREFIX. Otherwise, use the GNU ${prefix} and
+ dnl ${exec_prefix} variables.
+ dnl
+ dnl The two are made distinct variables so they can be overridden if
+ dnl need be, although general consensus is that you shouldn't need
+ dnl this separation.
+ dnl
+ dnl Also allow directly setting the prefixes via configure options,
+ dnl overriding any default.
+ dnl
+ if test "x$prefix" = xNONE; then
+ am__usable_prefix=$ac_default_prefix
+ else
+ am__usable_prefix=$prefix
+ fi
+
+ # Allow user to request using sys.* values from Python,
+ # instead of the GNU $prefix values.
+ AC_ARG_WITH([python-sys-prefix],
+ [AS_HELP_STRING([--with-python-sys-prefix],
+ [use Python's sys.prefix and sys.exec_prefix values])],
+ [am_use_python_sys=:],
+ [am_use_python_sys=false])
+
+ # Allow user to override whatever the default Python prefix is.
+ AC_ARG_WITH([python_prefix],
+ [AS_HELP_STRING([--with-python_prefix],
+ [override the default PYTHON_PREFIX])],
+ [am_python_prefix_subst=$withval
+ am_cv_python_prefix=$withval
+ AC_MSG_CHECKING([for explicit $am_display_PYTHON prefix])
+ AC_MSG_RESULT([$am_cv_python_prefix])],
+ [
+ if $am_use_python_sys; then
+ # using python sys.prefix value, not GNU
+ AC_CACHE_CHECK([for python default $am_display_PYTHON prefix],
+ [am_cv_python_prefix],
+ [am_cv_python_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.prefix)"`])
+
+ dnl If sys.prefix is a subdir of $prefix, replace the literal value of
+ dnl $prefix with a variable reference so it can be overridden.
+ case $am_cv_python_prefix in
+ $am__usable_prefix*)
+ am__strip_prefix=`echo "$am__usable_prefix" | sed 's|.|.|g'`
+ am_python_prefix_subst=`echo "$am_cv_python_prefix" | sed "s,^$am__strip_prefix,\\${prefix},"`
+ ;;
+ *)
+ am_python_prefix_subst=$am_cv_python_prefix
+ ;;
+ esac
+ else # using GNU prefix value, not python sys.prefix
+ am_python_prefix_subst='${prefix}'
+ am_python_prefix=$am_python_prefix_subst
+ AC_MSG_CHECKING([for GNU default $am_display_PYTHON prefix])
+ AC_MSG_RESULT([$am_python_prefix])
+ fi])
+ # Substituting python_prefix_subst value.
+ AC_SUBST([PYTHON_PREFIX], [$am_python_prefix_subst])
+
+ # emacs-page Now do it all over again for Python exec_prefix, but with yet
+ # another conditional: fall back to regular prefix if that was specified.
+ AC_ARG_WITH([python_exec_prefix],
+ [AS_HELP_STRING([--with-python_exec_prefix],
+ [override the default PYTHON_EXEC_PREFIX])],
+ [am_python_exec_prefix_subst=$withval
+ am_cv_python_exec_prefix=$withval
+ AC_MSG_CHECKING([for explicit $am_display_PYTHON exec_prefix])
+ AC_MSG_RESULT([$am_cv_python_exec_prefix])],
+ [
+ # no explicit --with-python_exec_prefix, but if
+ # --with-python_prefix was given, use its value for python_exec_prefix too.
+ AS_IF([test -n "$with_python_prefix"],
+ [am_python_exec_prefix_subst=$with_python_prefix
+ am_cv_python_exec_prefix=$with_python_prefix
+ AC_MSG_CHECKING([for python_prefix-given $am_display_PYTHON exec_prefix])
+ AC_MSG_RESULT([$am_cv_python_exec_prefix])],
+ [
+ # Set am__usable_exec_prefix whether using GNU or Python values,
+ # since we use that variable for pyexecdir.
+ if test "x$exec_prefix" = xNONE; then
+ am__usable_exec_prefix=$am__usable_prefix
+ else
+ am__usable_exec_prefix=$exec_prefix
+ fi
+ #
+ if $am_use_python_sys; then # using python sys.exec_prefix, not GNU
+ AC_CACHE_CHECK([for python default $am_display_PYTHON exec_prefix],
+ [am_cv_python_exec_prefix],
+ [am_cv_python_exec_prefix=`$PYTHON -c "import sys; sys.stdout.write(sys.exec_prefix)"`])
+ dnl If sys.exec_prefix is a subdir of $exec_prefix, replace the
+ dnl literal value of $exec_prefix with a variable reference so it can
+ dnl be overridden.
+ case $am_cv_python_exec_prefix in
+ $am__usable_exec_prefix*)
+ am__strip_prefix=`echo "$am__usable_exec_prefix" | sed 's|.|.|g'`
+ am_python_exec_prefix_subst=`echo "$am_cv_python_exec_prefix" | sed "s,^$am__strip_prefix,\\${exec_prefix},"`
+ ;;
+ *)
+ am_python_exec_prefix_subst=$am_cv_python_exec_prefix
+ ;;
+ esac
+ else # using GNU $exec_prefix, not python sys.exec_prefix
+ am_python_exec_prefix_subst='${exec_prefix}'
+ am_python_exec_prefix=$am_python_exec_prefix_subst
+ AC_MSG_CHECKING([for GNU default $am_display_PYTHON exec_prefix])
+ AC_MSG_RESULT([$am_python_exec_prefix])
+ fi])])
+ # Substituting python_exec_prefix_subst.
+ AC_SUBST([PYTHON_EXEC_PREFIX], [$am_python_exec_prefix_subst])
+
+ # Factor out some code duplication into this shell variable.
am_python_setup_sysconfig="\
import sys
# Prefer sysconfig over distutils.sysconfig, for better compatibility
except ImportError:
pass"
- dnl Set up 4 directories:
+ dnl emacs-page Set up 4 directories:
- dnl pythondir -- where to install python scripts. This is the
- dnl site-packages directory, not the python standard library
- dnl directory like in previous automake betas. This behavior
- dnl is more consistent with lispdir.m4 for example.
+ dnl 1. pythondir: where to install python scripts. This is the
+ dnl site-packages directory, not the python standard library
+ dnl directory like in previous automake betas. This behavior
+ dnl is more consistent with lispdir.m4 for example.
dnl Query distutils for this directory.
- AC_CACHE_CHECK([for $am_display_PYTHON script directory],
- [am_cv_python_pythondir],
- [if test "x$prefix" = xNONE
- then
- am_py_prefix=$ac_default_prefix
- else
- am_py_prefix=$prefix
- fi
- am_cv_python_pythondir=`$PYTHON -c "
+ dnl
+ AC_CACHE_CHECK([for $am_display_PYTHON script directory (pythondir)],
+ [am_cv_python_pythondir],
+ [if test "x$am_cv_python_prefix" = x; then
+ am_py_prefix=$am__usable_prefix
+ else
+ am_py_prefix=$am_cv_python_prefix
+ fi
+ am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pythondir in
- $am_py_prefix*)
- am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
- am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
- ;;
- *)
- case $am_py_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pythondir in
+ $am_py_prefix*)
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,\\${PYTHON_PREFIX},"`
+ ;;
+ *)
+ case $am_py_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pythondir="\${PYTHON_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
- ])
+ ;;
+ esac
+ ])
AC_SUBST([pythondir], [$am_cv_python_pythondir])
- dnl pkgpythondir -- $PACKAGE directory under pythondir. Was
- dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
- dnl more consistent with the rest of automake.
-
+ dnl 2. pkgpythondir: $PACKAGE directory under pythondir. Was
+ dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
+ dnl more consistent with the rest of automake.
+ dnl
AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
- dnl pyexecdir -- directory for installing python extension modules
- dnl (shared libraries)
+ dnl 3. pyexecdir: directory for installing python extension modules
+ dnl (shared libraries).
dnl Query distutils for this directory.
- AC_CACHE_CHECK([for $am_display_PYTHON extension module directory],
- [am_cv_python_pyexecdir],
- [if test "x$exec_prefix" = xNONE
- then
- am_py_exec_prefix=$am_py_prefix
- else
- am_py_exec_prefix=$exec_prefix
- fi
- am_cv_python_pyexecdir=`$PYTHON -c "
+ dnl
+ AC_CACHE_CHECK([for $am_display_PYTHON extension module directory (pyexecdir)],
+ [am_cv_python_pyexecdir],
+ [if test "x$am_cv_python_exec_prefix" = x; then
+ am_py_exec_prefix=$am__usable_exec_prefix
+ else
+ am_py_exec_prefix=$am_cv_python_exec_prefix
+ fi
+ am_cv_python_pyexecdir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
- sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_exec_prefix'})
else:
- from distutils import sysconfig
- sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
+ from distutils import sysconfig
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_exec_prefix')
sys.stdout.write(sitedir)"`
- case $am_cv_python_pyexecdir in
- $am_py_exec_prefix*)
- am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
- am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
- ;;
- *)
- case $am_py_exec_prefix in
- /usr|/System*) ;;
- *)
- am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
- ;;
- esac
- ;;
+ #
+ case $am_cv_python_pyexecdir in
+ $am_py_exec_prefix*)
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,\\${PYTHON_EXEC_PREFIX},"`
+ ;;
+ *)
+ case $am_py_exec_prefix in
+ /usr|/System*) ;;
+ *) am_cv_python_pyexecdir="\${PYTHON_EXEC_PREFIX}/lib/python$PYTHON_VERSION/site-packages"
+ ;;
esac
- ])
+ ;;
+ esac
+ ])
AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir])
- dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
-
+ dnl 4. pkgpyexecdir: $(pyexecdir)/$(PACKAGE)
+ dnl
AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
dnl Run any user-specified action.
$2
fi
-
])
-dnl qt.m4
+dnl qt5.m4
dnl Copyright (C) 2016 Intevation GmbH
dnl
dnl This file is part of gpgme and is provided under the same license as gpgme
-dnl Autoconf macro to find either Qt4 or Qt5
+dnl Autoconf macro to find Qt5
dnl
-dnl sets GPGME_QT_LIBS and GPGME_QT_CFLAGS
+dnl sets GPGME_QT5_LIBS and GPGME_QT5_CFLAGS
dnl
dnl if QT5 was found have_qt5_libs is set to yes
-AC_DEFUN([FIND_QT],
+AC_DEFUN([FIND_QT5],
[
have_qt5_libs="no";
- PKG_CHECK_MODULES(GPGME_QT,
+ PKG_CHECK_MODULES(GPGME_QT5,
Qt5Core >= 5.0.0,
[have_qt5_libs="yes"],
[have_qt5_libs="no"])
- PKG_CHECK_MODULES(GPGME_QTTEST,
+ PKG_CHECK_MODULES(GPGME_QT5TEST,
Qt5Test >= 5.0.0,
[have_qt5test_libs="yes"],
[have_qt5test_libs="no"])
if ! test "$have_w32_system" = yes; then
if "$PKG_CONFIG" --variable qt_config Qt5Core | grep -q "reduce_relocations"; then
- GPGME_QT_CFLAGS="$GPGME_QT_CFLAGS -fpic"
+ GPGME_QT5_CFLAGS="$GPGME_QT5_CFLAGS -fpic"
fi
fi
if test "$have_qt5_libs" = "yes"; then
fi
fi
AC_MSG_RESULT([$mocversion])
+ fi
+ if test "$have_qt5_libs" = "yes"; then
dnl Check that a binary can actually be build with this qt.
dnl pkg-config may be set up in a way that it looks also for libraries
dnl of the build system and not only for the host system. In that case
dnl we check here that we can actually compile / link a qt application
dnl for host.
OLDCPPFLAGS=$CPPFLAGS
- CPPFLAGS=$GPGME_QT_CFLAGS
+ CPPFLAGS=$GPGME_QT5_CFLAGS
OLDLIBS=$LIBS
- LIBS=$GPGME_QT_LIBS
+ LIBS=$GPGME_QT5_LIBS
AC_LANG_PUSH(C++)
AC_MSG_CHECKING([whether a simple qt program can be built])
AC_LINK_IFELSE([AC_LANG_SOURCE([
--- /dev/null
+dnl qt6.m4
+dnl Copyright (C) 2016 Intevation GmbH
+dnl
+dnl This file is part of gpgme and is provided under the same license as gpgme
+
+dnl Autoconf macro to find Qt6
+dnl
+dnl sets GPGME_QT6_LIBS and GPGME_QT6_CFLAGS
+dnl
+dnl if QT6 was found have_qt6_libs is set to yes
+
+AC_DEFUN([FIND_QT6],
+[
+ have_qt6_libs="no";
+
+ PKG_CHECK_MODULES(GPGME_QT6,
+ Qt6Core >= 6.4.0,
+ [have_qt6_libs="yes"],
+ [have_qt6_libs="no"])
+
+ PKG_CHECK_MODULES(GPGME_QT6TEST,
+ Qt6Test >= 6.4.0,
+ [have_qt6test_libs="yes"],
+ [have_qt6test_libs="no"])
+
+ if test "$have_qt6_libs" = "yes"; then
+ # Qt6 moved moc to libexec
+ qt6libexecdir=$($PKG_CONFIG --variable=libexecdir 'Qt6Core >= 6.4.0')
+ AC_PATH_TOOL(MOC, moc, [], [$qt6libexecdir])
+ if test -z "$MOC"; then
+ AC_MSG_WARN([moc not found - Qt 6 binding will not be built.])
+ have_qt6_libs="no";
+ fi
+ fi
+
+ if test "$have_qt6_libs" = "yes"; then
+ if test "$have_no_direct_extern_access" = yes; then
+ if test -z "$use_no_direct_extern_access" && test "$have_w32_system" != yes; then
+ mkspecsdir=$($PKG_CONFIG --variable mkspecsdir Qt6Platform)
+ if test -n "$mkspecsdir"; then
+ AC_MSG_CHECKING([whether Qt was built with -mno-direct-extern-access])
+ if grep -q "QT_CONFIG .* no_direct_extern_access" $mkspecsdir/qconfig.pri; then
+ use_no_direct_extern_access="yes"
+ else
+ use_no_direct_extern_access="no"
+ fi
+ AC_MSG_RESULT([$use_no_direct_extern_access])
+ else
+ AC_MSG_WARN([Failed to determine Qt's mkspecs directory. Cannot check its build configuration.])
+ fi
+ fi
+ if test "$use_no_direct_extern_access" = yes; then
+ GPGME_QT6_CFLAGS="$GPGME_QT6_CFLAGS -mno-direct-extern-access"
+ fi
+ fi
+
+ dnl Check that a binary can actually be build with this qt.
+ dnl pkg-config may be set up in a way that it looks also for libraries
+ dnl of the build system and not only for the host system. In that case
+ dnl we check here that we can actually compile / link a qt application
+ dnl for host.
+ OLDCPPFLAGS=$CPPFLAGS
+ OLDLIBS=$LIBS
+
+ CPPFLAGS=$GPGME_QT6_CFLAGS
+ LIBS=$GPGME_QT6_LIBS
+ AC_LANG_PUSH(C++)
+ AC_MSG_CHECKING([whether a simple Qt program can be built])
+ AC_LINK_IFELSE([AC_LANG_SOURCE([
+ #include <QCoreApplication>
+ int main (int argc, char **argv) {
+ QCoreApplication app(argc, argv);
+ app.exec();
+ }])], [have_qt6_libs='yes'], [have_qt6_libs='no'])
+ AC_MSG_RESULT([$have_qt6_libs])
+ AC_LANG_POP()
+
+ CPPFLAGS=$OLDCPPFLAGS
+ LIBS=$OLDLIBS
+ fi
+])
# wrapper process.
libexec_PROGRAMS = gpgme-w32spawn
+gpgme_w32spawn_CFLAGS = -municode
+
RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE)
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@HAVE_W32_SYSTEM_TRUE@libexec_PROGRAMS = gpgme-w32spawn$(EXEEXT)
subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
gpgme_tool_OBJECTS = $(am_gpgme_tool_OBJECTS)
gpgme_tool_DEPENDENCIES = libgpgme.la
gpgme_w32spawn_SOURCES = gpgme-w32spawn.c
-gpgme_w32spawn_OBJECTS = gpgme-w32spawn.$(OBJEXT)
+gpgme_w32spawn_OBJECTS = gpgme_w32spawn-gpgme-w32spawn.$(OBJEXT)
gpgme_w32spawn_LDADD = $(LDADD)
+gpgme_w32spawn_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(gpgme_w32spawn_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
+ $@
SCRIPTS = $(bin_SCRIPTS) $(noinst_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
./$(DEPDIR)/export.Plo ./$(DEPDIR)/genkey.Plo \
./$(DEPDIR)/get-env.Plo ./$(DEPDIR)/getauditlog.Plo \
./$(DEPDIR)/gpgconf.Plo ./$(DEPDIR)/gpgme-json.Po \
- ./$(DEPDIR)/gpgme-tool.Po ./$(DEPDIR)/gpgme-w32spawn.Po \
- ./$(DEPDIR)/gpgme.Plo ./$(DEPDIR)/import.Plo \
- ./$(DEPDIR)/key.Plo ./$(DEPDIR)/keylist.Plo \
- ./$(DEPDIR)/keysign.Plo ./$(DEPDIR)/mbox-util.Plo \
- ./$(DEPDIR)/op-support.Plo ./$(DEPDIR)/opassuan.Plo \
- ./$(DEPDIR)/parsetlv.Plo ./$(DEPDIR)/passphrase.Plo \
- ./$(DEPDIR)/passwd.Plo ./$(DEPDIR)/posix-io.Plo \
- ./$(DEPDIR)/posix-util.Plo ./$(DEPDIR)/progress.Plo \
- ./$(DEPDIR)/queryswdb.Plo ./$(DEPDIR)/revsig.Plo \
- ./$(DEPDIR)/setexpire.Plo ./$(DEPDIR)/sig-notation.Plo \
- ./$(DEPDIR)/sign.Plo ./$(DEPDIR)/signers.Plo \
- ./$(DEPDIR)/spawn.Plo ./$(DEPDIR)/status-table.Plo \
- ./$(DEPDIR)/tofupolicy.Plo ./$(DEPDIR)/trust-item.Plo \
- ./$(DEPDIR)/trustlist.Plo ./$(DEPDIR)/verify.Plo \
- ./$(DEPDIR)/version.Plo ./$(DEPDIR)/vfs-create.Plo \
- ./$(DEPDIR)/vfs-mount.Plo ./$(DEPDIR)/w32-glib-io.Plo \
- ./$(DEPDIR)/w32-io.Plo ./$(DEPDIR)/w32-util.Plo \
- ./$(DEPDIR)/wait-global.Plo ./$(DEPDIR)/wait-private.Plo \
- ./$(DEPDIR)/wait-user.Plo ./$(DEPDIR)/wait.Plo
+ ./$(DEPDIR)/gpgme-tool.Po ./$(DEPDIR)/gpgme.Plo \
+ ./$(DEPDIR)/gpgme_w32spawn-gpgme-w32spawn.Po \
+ ./$(DEPDIR)/import.Plo ./$(DEPDIR)/key.Plo \
+ ./$(DEPDIR)/keylist.Plo ./$(DEPDIR)/keysign.Plo \
+ ./$(DEPDIR)/mbox-util.Plo ./$(DEPDIR)/op-support.Plo \
+ ./$(DEPDIR)/opassuan.Plo ./$(DEPDIR)/parsetlv.Plo \
+ ./$(DEPDIR)/passphrase.Plo ./$(DEPDIR)/passwd.Plo \
+ ./$(DEPDIR)/posix-io.Plo ./$(DEPDIR)/posix-util.Plo \
+ ./$(DEPDIR)/progress.Plo ./$(DEPDIR)/queryswdb.Plo \
+ ./$(DEPDIR)/revsig.Plo ./$(DEPDIR)/setexpire.Plo \
+ ./$(DEPDIR)/sig-notation.Plo ./$(DEPDIR)/sign.Plo \
+ ./$(DEPDIR)/signers.Plo ./$(DEPDIR)/spawn.Plo \
+ ./$(DEPDIR)/status-table.Plo ./$(DEPDIR)/tofupolicy.Plo \
+ ./$(DEPDIR)/trust-item.Plo ./$(DEPDIR)/trustlist.Plo \
+ ./$(DEPDIR)/verify.Plo ./$(DEPDIR)/version.Plo \
+ ./$(DEPDIR)/vfs-create.Plo ./$(DEPDIR)/vfs-mount.Plo \
+ ./$(DEPDIR)/w32-glib-io.Plo ./$(DEPDIR)/w32-io.Plo \
+ ./$(DEPDIR)/w32-util.Plo ./$(DEPDIR)/wait-global.Plo \
+ ./$(DEPDIR)/wait-private.Plo ./$(DEPDIR)/wait-user.Plo \
+ ./$(DEPDIR)/wait.Plo
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gpgme-config.in \
$(srcdir)/gpgme-glib.pc.in $(srcdir)/gpgme.h.in \
$(srcdir)/gpgme.pc.in $(srcdir)/versioninfo.rc.in \
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
gpgme_tool_LDADD = libgpgme.la @LIBASSUAN_LIBS@ @GPG_ERROR_LIBS@
gpgme_json_SOURCES = gpgme-json.c cJSON.c cJSON.h
gpgme_json_LDADD = -lm libgpgme.la $(GPG_ERROR_LIBS)
+@HAVE_W32_SYSTEM_TRUE@gpgme_w32spawn_CFLAGS = -municode
@HAVE_W32_SYSTEM_TRUE@RCCOMPILE = $(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
@HAVE_W32_SYSTEM_TRUE@LTRCCOMPILE = $(LIBTOOL) --mode=compile --tag=RC $(RCCOMPILE)
@HAVE_W32_SYSTEM_TRUE@SUFFIXES = .rc .lo
gpgme-w32spawn$(EXEEXT): $(gpgme_w32spawn_OBJECTS) $(gpgme_w32spawn_DEPENDENCIES) $(EXTRA_gpgme_w32spawn_DEPENDENCIES)
@rm -f gpgme-w32spawn$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(gpgme_w32spawn_OBJECTS) $(gpgme_w32spawn_LDADD) $(LIBS)
+ $(AM_V_CCLD)$(gpgme_w32spawn_LINK) $(gpgme_w32spawn_OBJECTS) $(gpgme_w32spawn_LDADD) $(LIBS)
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpgconf.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpgme-json.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpgme-tool.Po@am__quote@ # am--include-marker
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpgme-w32spawn.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpgme.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpgme_w32spawn-gpgme-w32spawn.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/import.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/key.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keylist.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+gpgme_w32spawn-gpgme-w32spawn.o: gpgme-w32spawn.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gpgme_w32spawn_CFLAGS) $(CFLAGS) -MT gpgme_w32spawn-gpgme-w32spawn.o -MD -MP -MF $(DEPDIR)/gpgme_w32spawn-gpgme-w32spawn.Tpo -c -o gpgme_w32spawn-gpgme-w32spawn.o `test -f 'gpgme-w32spawn.c' || echo '$(srcdir)/'`gpgme-w32spawn.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gpgme_w32spawn-gpgme-w32spawn.Tpo $(DEPDIR)/gpgme_w32spawn-gpgme-w32spawn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpgme-w32spawn.c' object='gpgme_w32spawn-gpgme-w32spawn.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gpgme_w32spawn_CFLAGS) $(CFLAGS) -c -o gpgme_w32spawn-gpgme-w32spawn.o `test -f 'gpgme-w32spawn.c' || echo '$(srcdir)/'`gpgme-w32spawn.c
+
+gpgme_w32spawn-gpgme-w32spawn.obj: gpgme-w32spawn.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gpgme_w32spawn_CFLAGS) $(CFLAGS) -MT gpgme_w32spawn-gpgme-w32spawn.obj -MD -MP -MF $(DEPDIR)/gpgme_w32spawn-gpgme-w32spawn.Tpo -c -o gpgme_w32spawn-gpgme-w32spawn.obj `if test -f 'gpgme-w32spawn.c'; then $(CYGPATH_W) 'gpgme-w32spawn.c'; else $(CYGPATH_W) '$(srcdir)/gpgme-w32spawn.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gpgme_w32spawn-gpgme-w32spawn.Tpo $(DEPDIR)/gpgme_w32spawn-gpgme-w32spawn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpgme-w32spawn.c' object='gpgme_w32spawn-gpgme-w32spawn.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gpgme_w32spawn_CFLAGS) $(CFLAGS) -c -o gpgme_w32spawn-gpgme-w32spawn.obj `if test -f 'gpgme-w32spawn.c'; then $(CYGPATH_W) 'gpgme-w32spawn.c'; else $(CYGPATH_W) '$(srcdir)/gpgme-w32spawn.c'; fi`
+
mostlyclean-libtool:
-rm -f *.lo
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
$(HEADERS)
install-binPROGRAMS: install-libLTLIBRARIES
+install-libexecPROGRAMS: install-libLTLIBRARIES
+
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-rm -f ./$(DEPDIR)/gpgconf.Plo
-rm -f ./$(DEPDIR)/gpgme-json.Po
-rm -f ./$(DEPDIR)/gpgme-tool.Po
- -rm -f ./$(DEPDIR)/gpgme-w32spawn.Po
-rm -f ./$(DEPDIR)/gpgme.Plo
+ -rm -f ./$(DEPDIR)/gpgme_w32spawn-gpgme-w32spawn.Po
-rm -f ./$(DEPDIR)/import.Plo
-rm -f ./$(DEPDIR)/key.Plo
-rm -f ./$(DEPDIR)/keylist.Plo
-rm -f ./$(DEPDIR)/gpgconf.Plo
-rm -f ./$(DEPDIR)/gpgme-json.Po
-rm -f ./$(DEPDIR)/gpgme-tool.Po
- -rm -f ./$(DEPDIR)/gpgme-w32spawn.Po
-rm -f ./$(DEPDIR)/gpgme.Plo
+ -rm -f ./$(DEPDIR)/gpgme_w32spawn-gpgme-w32spawn.Po
-rm -f ./$(DEPDIR)/import.Plo
-rm -f ./$(DEPDIR)/key.Plo
-rm -f ./$(DEPDIR)/keylist.Plo
}
static void
-show_version ()
+show_version (void)
{
const char *s;
int i;
/* Note for Windows: Ignore the incompatible pointer type warning for
my_read and my_write. Mingw has been changed to use int for
ssize_t on 32 bit systems while we use long. For 64 bit we use
- int64_t while mingw uses __int64_t. It doe not matter at all
+ int64_t while mingw uses __int64_t. It does not matter at all
because under Windows long and int are both 32 bit even on 64
bit. */
struct assuan_system_hooks _gpgme_assuan_system_hooks =
* after the operation. */
unsigned int ignore_mdc_error : 1;
+ /* True if the option --no-auto-check-trustdb shall be passed to gpg. */
+ unsigned int no_auto_check_trustdb : 1;
+
/* Pass --expert to gpg edit key. */
unsigned int extended_edit : 1;
/* Convert STRING into an offset value. Note that this functions only
* allows for a base-10 length. This function is similar to atoi()
* and thus there is no error checking. */
-gpgme_off_t
+uint64_t
_gpgme_string_to_off (const char *string)
{
- gpgme_off_t value = 0;
+ uint64_t value = 0;
while (*string == ' ' || *string == '\t')
string++;
SEQUENCE SEQUENCE [0] INTEGER INTEGER SEQU
(tbs) (version) (s/n) (Algo)
- Thus we need to read at least 22 bytes, we add 2 bytes to cope with
- length headers stored with 4 bytes.
+ Thus we need to read at least 22 bytes, we add 2 bytes to cope
+ with length headers stored with 4 bytes. For a v0 certificate the
+ tag and the bersion are missin (they are implicit) - detect this
+ too as a cert becuase some root CA use this.
*/
{
if (parse_tlv (&s, &n, &ti))
goto try_pgp;
- if (!(ti.cls == ASN1_CLASS_CONTEXT && ti.tag == 0
- && ti.is_cons && ti.length == 3 && n >= ti.length))
- goto try_pgp;
+ if (ti.cls == ASN1_CLASS_CONTEXT && ti.tag == 0
+ && ti.is_cons && ti.length == 3 && n >= ti.length)
+ {
+ if (parse_tlv (&s, &n, &ti))
+ goto try_pgp;
+ if (!(ti.cls == ASN1_CLASS_UNIVERSAL && ti.tag == ASN1_TAG_INTEGER
+ && !ti.is_cons && ti.length == 1 && n && (*s == 1 || *s == 2)))
+ goto try_pgp;
+ s++;
+ n--;
+ if (!(ti.cls == ASN1_CLASS_UNIVERSAL && ti.tag == ASN1_TAG_INTEGER
+ && !ti.is_cons))
+ goto try_pgp;
+ /* Because the now following S/N may be larger than the sample
+ data we have, we stop parsing here and don't check for the
+ algorithm ID. */
+ return GPGME_DATA_TYPE_X509_CERT; /* regular cert. */
+ }
+ if (ti.cls == ASN1_CLASS_UNIVERSAL && ti.tag == ASN1_TAG_INTEGER
+ && !ti.is_cons)
+ {
+ /* Because this S/N may be larger than the sample data we
+ have, we can't check that a SEQUENCE follows. */
+ return GPGME_DATA_TYPE_X509_CERT; /* v0 cert with implict tag. */
+ }
+
+ goto try_pgp;
- if (parse_tlv (&s, &n, &ti))
- goto try_pgp;
- if (!(ti.cls == ASN1_CLASS_UNIVERSAL && ti.tag == ASN1_TAG_INTEGER
- && !ti.is_cons && ti.length == 1 && n && (*s == 1 || *s == 2)))
- goto try_pgp;
- s++;
- n--;
- if (!(ti.cls == ASN1_CLASS_UNIVERSAL && ti.tag == ASN1_TAG_INTEGER
- && !ti.is_cons))
- goto try_pgp;
- /* Because the now following S/N may be larger than the sample
- data we have, we stop parsing here and don't check for the
- algorithm ID. */
- return GPGME_DATA_TYPE_X509_CERT;
}
if (ti.cls == ASN1_CLASS_UNIVERSAL && ti.tag == ASN1_TAG_INTEGER
&& !ti.is_cons && ti.length == 1 && n && *s == 3)
}
else if (!strcmp (name, "io-buffer-size"))
{
- gpgme_off_t val;
+ uint64_t val;
/* We may set this only once. */
if (dh->io_buffer_size)
/* Get the size-hint value for DH or 0 if not available. */
-gpgme_off_t
+uint64_t
_gpgme_data_get_size_hint (gpgme_data_t dh)
{
return dh ? dh->size_hint : 0;
char *file_name;
/* Hint on the to be expected total size of the data. */
- gpgme_off_t size_hint;
+ uint64_t size_hint;
/* If no 0 the size of an allocated inbound or outpund buffers. The
* value is at least BUFFER_SIZE and capped at 1MiB. */
int _gpgme_data_get_fd (gpgme_data_t dh);
/* Get the size-hint value for DH or 0 if not available. */
-gpgme_off_t _gpgme_data_get_size_hint (gpgme_data_t dh);
+uint64_t _gpgme_data_get_size_hint (gpgme_data_t dh);
#endif /* DATA_H */
/* debug.c - helpful output in desperate situations
* Copyright (C) 2000 Werner Koch (dd9jn)
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2019 g10 Code GmbH
+ * Copyright (C) 2001-2005, 2007, 2009, 2019-2023 g10 Code GmbH
*
* This file is part of GPGME.
*
variable GPGME_DEBUG. */
static int debug_level;
-/* The output stream for the debug messages. */
-static FILE *errfp;
-
/* If not NULL, this malloced string is used instead of the
GPGME_DEBUG envvar. It must have been set before the debug
subsystem has been initialized. Using it later may or may not have
}
+static int
+safe_to_use_debug_file (void)
+{
+#ifdef HAVE_DOSISH_SYSTEM
+ return 1;
+#else /* Unix */
+ return (getuid () == geteuid ()
+#if defined(HAVE_GETGID) && defined(HAVE_GETEGID)
+ && getgid () == getegid ()
+#endif
+ );
+#endif /* Unix */
+}
+
+
+static int
+tid_log_callback (unsigned long *rvalue)
+{
+ int len = sizeof (*rvalue);
+ uintptr_t thread;
+
+ thread = ath_self ();
+ if (sizeof (thread) < len)
+ len = sizeof (thread);
+ memcpy (rvalue, &thread, len);
+
+ return 2; /* Use use hex representation. */
+}
+
+
+
static void
debug_init (void)
{
{
gpgme_error_t err;
char *e;
- const char *s1, *s2;;
+ const char *s1, *s2;
if (envvar_override)
{
}
initialized = 1;
- errfp = stderr;
if (e)
{
+ char *p, *r;
+ unsigned int flags;
+
debug_level = atoi (e);
- s1 = strchr (e, PATHSEP_C);
- if (s1)
- {
-#ifndef HAVE_DOSISH_SYSTEM
- if (getuid () == geteuid ()
-#if defined(HAVE_GETGID) && defined(HAVE_GETEGID)
- && getgid () == getegid ()
-#endif
- )
- {
-#endif
- char *p;
- FILE *fp;
-
- s1++;
- if (!(s2 = strchr (s1, PATHSEP_C)))
- s2 = s1 + strlen (s1);
- p = malloc (s2 - s1 + 1);
- if (p)
- {
- memcpy (p, s1, s2 - s1);
- p[s2-s1] = 0;
- trim_spaces (p);
- fp = fopen (p,"a");
- if (fp)
- {
- setvbuf (fp, NULL, _IOLBF, 0);
- errfp = fp;
- }
- free (p);
- }
-#ifndef HAVE_DOSISH_SYSTEM
- }
-#endif
- }
+ s1 = strchr (e, PATHSEP_C);
+ if (s1 && safe_to_use_debug_file ())
+ {
+ s1++;
+ if (!(s2 = strchr (s1, PATHSEP_C)))
+ s2 = s1 + strlen (s1);
+ p = malloc (s2 - s1 + 1);
+ if (p)
+ {
+ memcpy (p, s1, s2 - s1);
+ p[s2-s1] = 0;
+ trim_spaces (p);
+ if (strstr (p, "^//"))
+ {
+ /* map chars to allow socket: and tcp: */
+ for (r=p; *r; r++)
+ if (*r == '^')
+ *r = ':';
+ }
+ if (*p)
+ gpgrt_log_set_sink (p, NULL, -1);
+ free (p);
+ }
+ }
free (e);
+
+ gpgrt_log_get_prefix (&flags);
+ flags |= (GPGRT_LOG_WITH_PREFIX
+ | GPGRT_LOG_WITH_TIME
+ | GPGRT_LOG_WITH_PID);
+ gpgrt_log_set_prefix (*gpgrt_log_get_prefix (NULL)?NULL:"gpgme",
+ flags);
+ gpgrt_log_set_pid_suffix_cb (tid_log_callback);
}
}
if (debug_level > 0)
{
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme_debug: level=%d\n", debug_level);
+ "gpgme_debug: level=%d", debug_level);
#ifdef HAVE_W32_SYSTEM
{
const char *name = _gpgme_get_inst_dir ();
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme_debug: gpgme='%s'\n", name? name: "?");
+ "gpgme_debug: gpgme='%s'", name? name: "?");
}
#endif
}
{
va_list arg_ptr;
int saved_errno;
- int need_lf;
int indent;
- char *prefix, *stdinfo, *userinfo;
+ char *stdinfo, *userinfo;
const char *modestr;
int no_userinfo = 0;
saved_errno = errno;
va_start (arg_ptr, format);
- {
- struct tm *tp;
- time_t atime = time (NULL);
-
- tp = localtime (&atime);
- prefix = gpgrt_bsprintf ("GPGME %04d%02d%02dT%02d%02d%02d %04llX %*s",
- 1900+tp->tm_year, tp->tm_mon+1, tp->tm_mday,
- tp->tm_hour, tp->tm_min, tp->tm_sec,
- (unsigned long long) ath_self (),
- indent < 40? indent : 40, "");
- }
switch (mode)
{
}
va_end (arg_ptr);
- if (mode != -1 && (!format || !*format))
- need_lf = 1;
- else if (userinfo && *userinfo && userinfo[strlen (userinfo) - 1] != '\n')
- need_lf = 1;
- else
- need_lf = 0;
-
if (line)
- *line = gpgrt_bsprintf ("%s%s%s",
- prefix? prefix : "GPGME out-of-core ",
- !modestr? "" : stdinfo? stdinfo :
- (!format || !*format)? "" :"out-of-core ",
+ *line = gpgrt_bsprintf ("%s%s",
+ (!modestr ? "" :
+ stdinfo ? stdinfo :
+ (!format || !*format)? "" :"out-of-core "),
userinfo? userinfo : "out-of-core");
else
{
- fprintf (errfp, "%s%s%s%s",
- prefix? prefix : "GPGME out-of-core ",
- !modestr? "" : stdinfo? stdinfo :
- (!format || !*format)? "" :"out-of-core ",
- userinfo? userinfo : no_userinfo? "" : "out-of-core",
- need_lf? "\n":"");
- fflush (errfp);
+ gpgrt_log (GPGRT_LOGLVL_INFO, "%*s%s%s",
+ indent < 40? indent : 40, "",
+ (!modestr ? "" :
+ stdinfo ? stdinfo :
+ (!format || !*format)? "" : "out-of-core "),
+ (userinfo? userinfo :
+ no_userinfo? "" : "out-of-core"));
}
gpgrt_free (userinfo);
gpgrt_free (stdinfo);
- gpgrt_free (prefix);
gpg_err_set_errno (saved_errno);
return 0;
}
return;
string = *line;
- fprintf (errfp, "%s%s",
- string,
- (*string && string[strlen (string)-1] != '\n')? "\n":"");
- fflush (errfp);
+ gpgrt_log (GPGRT_LOGLVL_INFO, "%s", string);
gpgrt_free (*line);
*line = NULL;
}
_trace_sysres_ssize_t (gpgme_ssize_t res, int lvl, const char *func, int line)
{
if (res >= 0)
- _gpgme_debug (NULL, lvl, 3, func, NULL, NULL, "result=%zd", res);
+ _gpgme_debug (NULL, lvl, 3, func, NULL, NULL, "result=%zd", (ssize_t)res);
else
_gpgme_debug (NULL, lvl, -1, NULL, NULL, NULL,
"%s:%d: error: %s (%d)\n",
char *args)
{
gpgme_error_t err;
+ gpgme_error_t err2;
err = _gpgme_progress_status_handler (priv, code, args);
if (!err)
err = _gpgme_decrypt_status_handler (priv, code, args);
- if (!err)
- err = _gpgme_verify_status_handler (priv, code, args);
- return err;
+ /* Allow finalization of signature verification even if previous handler
+ * returned NO DATA error which just means that the data wasn't encrypted. */
+ if (!err
+ || (code == GPGME_STATUS_EOF && gpg_err_code (err) == GPG_ERR_NO_DATA))
+ err2 = _gpgme_verify_status_handler (priv, code, args);
+ return err ? err : err2;
}
#include "sema.h"
#include "sys-util.h"
+#ifdef HAVE_DOSISH_SYSTEM
+# define EXEEXT_S ".exe"
+#else
+# define EXEEXT_S ""
+#endif
+
DEFINE_STATIC_LOCK (dirinfo_lock);
/* Constants used internally to select the data. */
WANT_DIRMNGR_NAME,
WANT_PINENTRY_NAME,
WANT_GPG_WKS_CLIENT_NAME,
+ WANT_GPGTAR_NAME,
WANT_GPG_ONE_MODE
};
char *dirmngr_name;
char *pinentry_name;
char *gpg_wks_client_name;
+ char *gpgtar_name;
int gpg_one_mode; /* System is in gpg1 mode. */
} dirinfo;
if (pgmname && _gpgme_access (pgmname, F_OK))
{
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: gpgconf='%s' [not installed]\n", pgmname);
+ "gpgme-dinfo: gpgconf='%s' [not installed]", pgmname);
free (pgmname);
pgmname = NULL; /* Not available. */
}
else
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: gpgconf='%s'\n",
+ "gpgme-dinfo: gpgconf='%s'",
pgmname? pgmname : "[null]");
if (!pgmname)
{
dirinfo.valid = 1;
if (dirinfo.gpg_name)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: gpg='%s'\n",
+ "gpgme-dinfo: gpg='%s'",
dirinfo.gpg_name);
if (dirinfo.g13_name)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: g13='%s'\n",
+ "gpgme-dinfo: g13='%s'",
dirinfo.g13_name);
if (dirinfo.gpgsm_name)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: gpgsm='%s'\n",
+ "gpgme-dinfo: gpgsm='%s'",
dirinfo.gpgsm_name);
if (dirinfo.keyboxd_name)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: keyboxd='%s'\n",
+ "gpgme-dinfo: keyboxd='%s'",
dirinfo.keyboxd_name);
if (dirinfo.agent_name)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: gpg-agent='%s'\n",
+ "gpgme-dinfo: gpg-agent='%s'",
dirinfo.agent_name);
if (dirinfo.scdaemon_name)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: scdaemon='%s'\n",
+ "gpgme-dinfo: scdaemon='%s'",
dirinfo.scdaemon_name);
if (dirinfo.dirmngr_name)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: dirmngr='%s'\n",
+ "gpgme-dinfo: dirmngr='%s'",
dirinfo.dirmngr_name);
if (dirinfo.pinentry_name)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: pinentry='%s'\n",
+ "gpgme-dinfo: pinentry='%s'",
dirinfo.pinentry_name);
if (dirinfo.homedir)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: homedir='%s'\n",
+ "gpgme-dinfo: homedir='%s'",
dirinfo.homedir);
if (dirinfo.socketdir)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: sockdir='%s'\n",
+ "gpgme-dinfo: sockdir='%s'",
dirinfo.socketdir);
if (dirinfo.agent_socket)
- _gpgme_debug (NULL,DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: agent='%s'\n",
+ _gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
+ "gpgme-dinfo: agent='%s'",
dirinfo.agent_socket);
if (dirinfo.agent_ssh_socket)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: ssh='%s'\n",
+ "gpgme-dinfo: ssh='%s'",
dirinfo.agent_ssh_socket);
if (dirinfo.dirmngr_socket)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: dirmngr='%s'\n",
+ "gpgme-dinfo: dirmngr='%s'",
dirinfo.dirmngr_socket);
if (dirinfo.uisrv_socket)
_gpgme_debug (NULL, DEBUG_INIT, -1, NULL, NULL, NULL,
- "gpgme-dinfo: uisrv='%s'\n",
+ "gpgme-dinfo: uisrv='%s'",
dirinfo.uisrv_socket);
}
switch (what)
case WANT_GPG_WKS_CLIENT_NAME:
if (!dirinfo.gpg_wks_client_name && dirinfo.libexecdir)
dirinfo.gpg_wks_client_name = _gpgme_strconcat (dirinfo.libexecdir,
- "/",
+ DIRSEP_S,
"gpg-wks-client",
+ EXEEXT_S,
NULL);
result = dirinfo.gpg_wks_client_name;
break;
+ case WANT_GPGTAR_NAME:
+ if (!dirinfo.gpgtar_name && dirinfo.bindir)
+ dirinfo.gpgtar_name = _gpgme_strconcat (dirinfo.bindir,
+ DIRSEP_S,
+ "gpgtar",
+ EXEEXT_S,
+ NULL);
+ result = dirinfo.gpgtar_name;
+ break;
}
UNLOCK (dirinfo_lock);
return result;
return get_gpgconf_item (WANT_GPGCONF_NAME);
}
+/* Return the default gpgtar file name. Returns NULL if not known. */
+const char *
+_gpgme_get_default_gpgtar_name (void)
+{
+ return get_gpgconf_item (WANT_GPGTAR_NAME);
+}
+
/* Return the default UI-server socket name. Returns NULL if not
known. */
const char *
return get_gpgconf_item (WANT_UISRV_SOCKET);
}
-/* Return true if we are in GnuPG-1 mode - ie. no gpgconf and agent
+/* Return true if we are in GnuPG-1 mode - i.e. no gpgconf and agent
being optional. */
int
_gpgme_in_gpg_one_mode (void)
return get_gpgconf_item (WANT_PINENTRY_NAME);
else if (!strcmp (what, "gpg-wks-client-name"))
return get_gpgconf_item (WANT_GPG_WKS_CLIENT_NAME);
+ else if (!strcmp (what, "gpgtar-name"))
+ return get_gpgconf_item (WANT_GPGTAR_NAME);
else if (!strcmp (what, "agent-ssh-socket"))
return get_gpgconf_item (WANT_AGENT_SSH_SOCKET);
else if (!strcmp (what, "dirmngr-socket"))
gpgme_error_t err;
void *hook;
op_data_t opd;
+ int card_edit = (flags & GPGME_INTERACT_CARD)? 1: 0;
err = _gpgme_op_reset (ctx, synchronous);
if (err)
return err;
- if (!fnc || !out)
+ if ((card_edit == 0 && !key) || !fnc || !out)
return gpg_error (GPG_ERR_INV_VALUE);
err = _gpgme_op_data_lookup (ctx, OPDATA_EDIT, &hook, sizeof (*opd), NULL);
_gpgme_engine_set_status_handler (ctx->engine, edit_status_handler, ctx);
return _gpgme_engine_op_edit (ctx->engine,
- (flags & GPGME_INTERACT_CARD)? 1: 0,
+ card_edit,
key, out, ctx);
}
if (err)
return err;
- if (!fnc || !out)
+ if ((type == 0 && !key) || !fnc || !out)
return gpg_error (GPG_ERR_INV_VALUE);
err = _gpgme_op_data_lookup (ctx, OPDATA_EDIT, &hook, sizeof (*opd), NULL);
const char *import_filter,
const char *key_origin);
gpgme_error_t (*keylist) (void *engine, const char *pattern,
- int secret_only, gpgme_keylist_mode_t mode,
- int engine_flags);
+ int secret_only, gpgme_keylist_mode_t mode);
gpgme_error_t (*keylist_ext) (void *engine, const char *pattern[],
int secret_only, int reserved,
- gpgme_keylist_mode_t mode,
- int engine_flags);
+ gpgme_keylist_mode_t mode);
gpgme_error_t (*keylist_data) (void *engine, gpgme_keylist_mode_t mode,
gpgme_data_t data);
gpgme_error_t (*keysign) (void *engine,
gpgme_key_t key,
gpgme_tofu_policy_t policy);
gpgme_error_t (*sign) (void *engine, gpgme_data_t in, gpgme_data_t out,
- gpgme_sig_mode_t mode, int use_armor,
+ gpgme_sig_mode_t flags, int use_armor,
int use_textmode, int include_certs,
gpgme_ctx_t ctx /* FIXME */);
- gpgme_error_t (*verify) (void *engine, gpgme_data_t sig,
- gpgme_data_t signed_text, gpgme_data_t plaintext,
- gpgme_ctx_t ctx);
+ gpgme_error_t (*verify) (void *engine, gpgme_verify_flags_t flags,
+ gpgme_data_t sig, gpgme_data_t signed_text,
+ gpgme_data_t plaintext, gpgme_ctx_t ctx);
gpgme_error_t (*getauditlog) (void *engine, gpgme_data_t output,
unsigned int flags);
gpgme_error_t (*setexpire) (void *engine, gpgme_key_t key,
int inbound; /* True if this is used for reading from gpg. */
int dup_to;
int print_fd; /* Print the fd number and not the special form of it. */
+ int gpg_arg; /* True if this argument is not known by gpgtar. */
int *arg_locp; /* Write back the argv idx of this argument when
building command line to this location. */
char arg[FLEXIBLE_ARRAY_MEMBER]; /* Used if data above is not used. */
char *trust_model;
struct {
+ unsigned int use_gpgtar : 1;
unsigned int no_symkey_cache : 1;
unsigned int offline : 1;
unsigned int ignore_mdc_error : 1;
unsigned int include_key_block : 1;
unsigned int auto_key_import : 1;
+ unsigned int no_auto_check_trustdb : 1;
} flags;
/* NULL or the data object fed to --override_session_key-fd. */
}
}
+static void
+_append_to_arglist (engine_gpg_t gpg, struct arg_and_data_s *a)
+{
+ a->next = NULL;
+ *gpg->argtail = a;
+ gpg->argtail = &a->next;
+}
+
+static void
+_prepend_to_arglist (engine_gpg_t gpg, struct arg_and_data_s *a)
+{
+ a->next = gpg->arglist;
+ if (!gpg->arglist)
+ {
+ /* If this is the first argument, we need to update the tail
+ pointer. */
+ gpg->argtail = &a->next;
+ }
+ gpg->arglist = a;
+}
+
/* If FRONT is true, push at the front of the list. Use this for
options added late in the process. */
static gpgme_error_t
_add_arg (engine_gpg_t gpg, const char *prefix, const char *arg, size_t arglen,
- int front, int *arg_locp)
+ int front, int *arg_locp, int gpg_arg)
{
struct arg_and_data_s *a;
size_t prefixlen = prefix? strlen (prefix) : 0;
a->data = NULL;
a->dup_to = -1;
a->arg_locp = arg_locp;
+ a->gpg_arg = gpg_arg;
if (prefixlen)
memcpy (a->arg, prefix, prefixlen);
memcpy (a->arg + prefixlen, arg, arglen);
a->arg[prefixlen + arglen] = 0;
if (front)
- {
- a->next = gpg->arglist;
- if (!gpg->arglist)
- {
- /* If this is the first argument, we need to update the tail
- pointer. */
- gpg->argtail = &a->next;
- }
- gpg->arglist = a;
- }
+ _prepend_to_arglist (gpg, a);
else
- {
- a->next = NULL;
- *gpg->argtail = a;
- gpg->argtail = &a->next;
- }
+ _append_to_arglist (gpg, a);
return 0;
}
static gpgme_error_t
add_arg_ext (engine_gpg_t gpg, const char *arg, int front)
{
- return _add_arg (gpg, NULL, arg, strlen (arg), front, NULL);
+ return _add_arg (gpg, NULL, arg, strlen (arg), front, NULL, 0);
}
static gpgme_error_t
-add_arg_with_locp (engine_gpg_t gpg, const char *arg, int *locp)
+add_arg_with_locp (engine_gpg_t gpg, const char *arg, int *locp, int front)
{
- return _add_arg (gpg, NULL, arg, strlen (arg), 0, locp);
+ return _add_arg (gpg, NULL, arg, strlen (arg), front, locp, 0);
}
static gpgme_error_t
add_arg (engine_gpg_t gpg, const char *arg)
{
- return _add_arg (gpg, NULL, arg, strlen (arg), 0, NULL);
+ return _add_arg (gpg, NULL, arg, strlen (arg), 0, NULL, 0);
}
static gpgme_error_t
add_arg_pfx (engine_gpg_t gpg, const char *prefix, const char *arg)
{
- return _add_arg (gpg, prefix, arg, strlen (arg), 0, NULL);
+ return _add_arg (gpg, prefix, arg, strlen (arg), 0, NULL, 0);
+}
+
+static gpgme_error_t
+add_gpg_arg (engine_gpg_t gpg, const char *arg)
+{
+ return _add_arg (gpg, NULL, arg, strlen (arg), 0, NULL, 1);
+}
+
+static gpgme_error_t
+add_gpg_arg_with_value (engine_gpg_t gpg, const char *arg, const char *value,
+ int front)
+{
+ return _add_arg (gpg, arg, value, strlen (value), front, NULL, 1);
}
static gpgme_error_t
add_arg_len (engine_gpg_t gpg, const char *prefix,
const char *arg, size_t arglen)
{
- return _add_arg (gpg, prefix, arg, arglen, 0, NULL);
+ return _add_arg (gpg, prefix, arg, arglen, 0, NULL, 0);
}
static gpgme_error_t
-add_data (engine_gpg_t gpg, gpgme_data_t data, int dup_to, int inbound)
+add_data_ext (engine_gpg_t gpg, gpgme_data_t data, int dup_to, int inbound, int front)
{
struct arg_and_data_s *a;
a = malloc (offsetof (struct arg_and_data_s, arg));
if (!a)
return gpg_error_from_syserror ();
- a->next = NULL;
a->data = data;
a->inbound = inbound;
a->arg_locp = NULL;
a->print_fd = 0;
a->dup_to = dup_to;
}
- *gpg->argtail = a;
- gpg->argtail = &a->next;
+
+ if (front)
+ _prepend_to_arglist (gpg, a);
+ else
+ _append_to_arglist (gpg, a);
+
return 0;
}
+static gpgme_error_t
+add_data (engine_gpg_t gpg, gpgme_data_t data, int dup_to, int inbound)
+{
+ return add_data_ext (gpg, data, dup_to, inbound, 0);
+}
+
+
+static gpgme_error_t
+add_file_name_arg_or_data (engine_gpg_t gpg, gpgme_data_t data, int dup_to, int inbound)
+{
+ const char *file_name = gpgme_data_get_file_name (data);
+ if (file_name)
+ return add_arg (gpg, file_name);
+ else
+ return add_data (gpg, data, dup_to, inbound);
+}
+
+
/* Return true if the engine's version is at least VERSION. */
static int
have_gpg_version (engine_gpg_t gpg, const char *version)
}
+static int
+have_usable_gpgtar (engine_gpg_t gpg)
+{
+ return have_gpg_version (gpg, "2.4.1")
+ || (have_gpg_version (gpg, "2.2.42") && !have_gpg_version (gpg, "2.3.0"));
+}
+
+
static void
free_argv (char **argv)
{
if (home_dir)
{
- rc = add_arg (gpg, "--homedir");
- if (!rc)
- rc = add_arg (gpg, home_dir);
+ rc = add_gpg_arg_with_value (gpg, "--homedir=", home_dir, 0);
if (rc)
goto leave;
}
- rc = add_arg (gpg, "--status-fd");
- if (rc)
- goto leave;
-
- {
- char buf[25];
- _gpgme_io_fd2str (buf, sizeof (buf), gpg->status.fd[1]);
- rc = add_arg_with_locp (gpg, buf, &gpg->status.arg_loc);
- if (rc)
- goto leave;
- }
-
- rc = add_arg (gpg, "--no-tty");
+ rc = add_gpg_arg (gpg, "--no-tty");
if (!rc)
- rc = add_arg (gpg, "--charset");
+ rc = add_gpg_arg (gpg, "--charset=utf8");
if (!rc)
- rc = add_arg (gpg, "utf8");
- if (!rc)
- rc = add_arg (gpg, "--enable-progress-filter");
+ rc = add_gpg_arg (gpg, "--enable-progress-filter");
if (!rc && have_gpg_version (gpg, "2.1.11"))
- rc = add_arg (gpg, "--exit-on-status-write-error");
+ rc = add_gpg_arg (gpg, "--exit-on-status-write-error");
if (rc)
goto leave;
goto leave;
if (dft_display)
{
- rc = add_arg (gpg, "--display");
- if (!rc)
- rc = add_arg (gpg, dft_display);
+ rc = add_gpg_arg_with_value (gpg, "--display=", dft_display, 0);
free (dft_display);
if (rc)
if (!err)
{
if (*dft_ttyname)
- {
- rc = add_arg (gpg, "--ttyname");
- if (!rc)
- rc = add_arg (gpg, dft_ttyname);
- }
+ rc = add_gpg_arg_with_value (gpg, "--ttyname=", dft_ttyname, 0);
else
rc = 0;
if (!rc)
goto leave;
if (dft_ttytype)
- {
- rc = add_arg (gpg, "--ttytype");
- if (!rc)
- rc = add_arg (gpg, dft_ttytype);
- }
+ rc = add_gpg_arg_with_value (gpg, "--ttytype=", dft_ttytype, 0);
free (dft_ttytype);
}
}
}
- rc = gpgme_data_new (&gpg->diagnostics);
- if (rc)
- goto leave;
-
- rc = add_arg (gpg, "--logger-fd");
- if (rc)
- goto leave;
-
- rc = add_data (gpg, gpg->diagnostics, -2, 1);
-
leave:
if (rc)
gpg_release (gpg);
if (ctx->include_key_block)
gpg->flags.include_key_block = 1;
}
+
+ gpg->flags.no_auto_check_trustdb = !!ctx->no_auto_check_trustdb;
}
static gpgme_error_t
build_argv (engine_gpg_t gpg, const char *pgmname)
{
- gpgme_error_t err;
+ gpgme_error_t err = 0;
struct arg_and_data_s *a;
- struct fd_data_map_s *fd_data_map;
+ struct fd_data_map_s *fd_data_map = NULL;
size_t datac=0, argc=0, allocated_argc=0;
- char **argv;
+ char **argv = NULL;
int need_special = 0;
int use_agent = 0;
char *p;
argc++; /* For argv[0]. */
for (a = gpg->arglist; a; a = a->next)
{
- argc++;
+ argc += 1 + (gpg->flags.use_gpgtar && a->gpg_arg);
if (a->data)
{
/*fprintf (stderr, "build_argv: data\n" );*/
if (use_agent)
argc++;
if (*gpg->request_origin)
- argc++;
+ argc += 1 + !!gpg->flags.use_gpgtar;
if (gpg->auto_key_locate)
- argc++;
+ argc += 1 + !!gpg->flags.use_gpgtar;
if (gpg->trust_model)
- argc++;
+ argc += 1 + !!gpg->flags.use_gpgtar;
if (gpg->flags.no_symkey_cache)
- argc++;
+ argc += 1 + !!gpg->flags.use_gpgtar;
if (gpg->flags.ignore_mdc_error)
- argc++;
+ argc += 1 + !!gpg->flags.use_gpgtar;
if (gpg->flags.offline)
- argc++;
+ argc += 1 + !!gpg->flags.use_gpgtar;
+ if (gpg->flags.no_auto_check_trustdb)
+ argc += 1 + !!gpg->flags.use_gpgtar;
if (gpg->pinentry_mode)
- argc++;
+ argc += 1 + !!gpg->flags.use_gpgtar;
if (!gpg->cmd.used)
argc++; /* --batch */
- argc++; /* --no-sk-comments */
-
argv = calloc (argc + 1, sizeof *argv);
allocated_argc = argc;
fd_data_map = calloc (datac + 1, sizeof *fd_data_map);
if (!fd_data_map)
{
- int saved_err = gpg_error_from_syserror ();
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc = datac = 0;
argv[argc] = strdup (_gpgme_get_basename (pgmname)); /* argv[0] */
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
if (need_special)
argv[argc] = strdup ("--enable-special-filenames");
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
}
argv[argc] = strdup ("--use-agent");
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
}
if (*gpg->request_origin)
{
+ if (gpg->flags.use_gpgtar)
+ {
+ argv[argc] = strdup ("--gpg-args");
+ if (!argv[argc])
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ argc++;
+ }
argv[argc] = _gpgme_strconcat ("--request-origin=",
gpg->request_origin, NULL);
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
}
if (gpg->auto_key_locate)
{
+ if (gpg->flags.use_gpgtar)
+ {
+ argv[argc] = strdup ("--gpg-args");
+ if (!argv[argc])
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ argc++;
+ }
argv[argc] = strdup (gpg->auto_key_locate);
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
}
if (gpg->trust_model)
{
+ if (gpg->flags.use_gpgtar)
+ {
+ argv[argc] = strdup ("--gpg-args");
+ if (!argv[argc])
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ argc++;
+ }
argv[argc] = strdup (gpg->trust_model);
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
}
if (gpg->flags.no_symkey_cache)
{
+ if (gpg->flags.use_gpgtar)
+ {
+ argv[argc] = strdup ("--gpg-args");
+ if (!argv[argc])
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ argc++;
+ }
argv[argc] = strdup ("--no-symkey-cache");
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
}
if (gpg->flags.ignore_mdc_error)
{
+ if (gpg->flags.use_gpgtar)
+ {
+ argv[argc] = strdup ("--gpg-args");
+ if (!argv[argc])
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ argc++;
+ }
argv[argc] = strdup ("--ignore-mdc-error");
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
}
if (gpg->flags.offline)
{
+ if (gpg->flags.use_gpgtar)
+ {
+ argv[argc] = strdup ("--gpg-args");
+ if (!argv[argc])
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ argc++;
+ }
argv[argc] = strdup ("--disable-dirmngr");
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ argc++;
+ }
+
+ if (gpg->flags.no_auto_check_trustdb)
+ {
+ if (gpg->flags.use_gpgtar)
+ {
+ argv[argc] = strdup ("--gpg-args");
+ if (!argv[argc])
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ argc++;
+ }
+ argv[argc] = strdup ("--no-auto-check-trustdb");
+ if (!argv[argc])
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
}
}
if (s)
{
+ if (gpg->flags.use_gpgtar)
+ {
+ argv[argc] = strdup ("--gpg-args");
+ if (!argv[argc])
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ argc++;
+ }
argv[argc] = strdup (s);
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
}
argv[argc] = strdup ("--batch");
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
}
- argv[argc] = strdup ("--no-sk-comments");
- if (!argv[argc])
- {
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
- }
- argc++;
for (a = gpg->arglist; a; a = a->next)
{
if (a->arg_locp)
if (_gpgme_io_pipe (fds, fd_data_map[datac].inbound ? 1 : 0)
== -1)
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
if (_gpgme_io_set_close_notify (fds[0],
close_notify_handler, gpg)
argv[argc] = malloc (buflen);
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
ptr = argv[argc];
}
else
{
+ if (gpg->flags.use_gpgtar && a->gpg_arg)
+ {
+ argv[argc] = strdup ("--gpg-args");
+ if (!argv[argc])
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ argc++;
+ }
argv[argc] = strdup (a->arg);
if (!argv[argc])
{
- int saved_err = gpg_error_from_syserror ();
- free (fd_data_map);
- free_argv (argv);
- return saved_err;
+ err = gpg_error_from_syserror ();
+ goto leave;
}
argc++;
}
allocated array like ccparray in gnupg. */
assert (argc <= allocated_argc);
- gpg->argv = argv;
- gpg->fd_data_map = fd_data_map;
- return 0;
+leave:
+ if (err)
+ {
+ free (fd_data_map);
+ free_argv (argv);
+ }
+ else
+ {
+ gpg->argv = argv;
+ gpg->fd_data_map = fd_data_map;
+ }
+ return err;
}
if (!gpg)
return gpg_error (GPG_ERR_INV_VALUE);
- if (!gpg->file_name && !_gpgme_get_default_gpg_name ())
+ if (!gpg->flags.use_gpgtar)
+ pgmname = gpg->file_name ? gpg->file_name : _gpgme_get_default_gpg_name ();
+ else
+ pgmname = _gpgme_get_default_gpgtar_name ();
+ if (!pgmname)
return trace_gpg_error (GPG_ERR_INV_ENGINE);
+ rc = gpgme_data_new (&gpg->diagnostics);
+ if (rc)
+ return rc;
+
+ if (gpg->flags.use_gpgtar)
+ {
+ /* Read the diagnostics output from gpgtar's stderr. */
+ rc = add_data (gpg, gpg->diagnostics, 2, 1);
+ if (rc)
+ return rc;
+ }
+ else
+ {
+ rc = add_data_ext (gpg, gpg->diagnostics, -2, 1, 1);
+ if (rc)
+ return rc;
+
+ rc = add_arg_ext (gpg, "--logger-fd", 1);
+ if (rc)
+ return rc;
+ }
+
+ {
+ char buf[25];
+ _gpgme_io_fd2str (buf, sizeof (buf), gpg->status.fd[1]);
+ rc = add_arg_with_locp (gpg, buf, &gpg->status.arg_loc, 1);
+ if (rc)
+ return rc;
+ }
+
+ rc = add_arg_ext (gpg, "--status-fd", 1);
+ if (rc)
+ return rc;
+
if (gpg->lc_ctype)
{
- rc = add_arg_ext (gpg, gpg->lc_ctype, 1);
- if (!rc)
- rc = add_arg_ext (gpg, "--lc-ctype", 1);
+ rc = add_gpg_arg_with_value (gpg, "--lc-ctype=", gpg->lc_ctype, 1);
if (rc)
return rc;
}
if (gpg->lc_messages)
{
- rc = add_arg_ext (gpg, gpg->lc_messages, 1);
- if (!rc)
- rc = add_arg_ext (gpg, "--lc-messages", 1);
+ rc = add_gpg_arg_with_value (gpg, "--lc-messages=", gpg->lc_messages, 1);
if (rc)
return rc;
}
- pgmname = gpg->file_name ? gpg->file_name : _gpgme_get_default_gpg_name ();
rc = build_argv (gpg, pgmname);
if (rc)
return rc;
static gpgme_error_t
add_input_size_hint (engine_gpg_t gpg, gpgme_data_t data)
{
- gpgme_error_t err;
- gpgme_off_t value = _gpgme_data_get_size_hint (data);
+ uint64_t value = _gpgme_data_get_size_hint (data);
char numbuf[50]; /* Large enough for even 2^128 in base-10. */
char *p;
if (!value || !have_gpg_version (gpg, "2.1.15"))
return 0;
- err = add_arg (gpg, "--input-size-hint");
- if (!err)
+ p = numbuf + sizeof numbuf;
+ *--p = 0;
+ do
{
- p = numbuf + sizeof numbuf;
- *--p = 0;
- do
- {
- *--p = '0' + (value % 10);
- value /= 10;
- }
- while (value);
- err = add_arg (gpg, p);
+ *--p = '0' + (value % 10);
+ value /= 10;
}
- return err;
+ while (value);
+
+ return add_gpg_arg_with_value (gpg, "--input-size-hint=", p, 0);
}
engine_gpg_t gpg = engine;
gpgme_error_t err;
+ gpg->flags.use_gpgtar = !!(flags & GPGME_DECRYPT_ARCHIVE);
+
+ if (gpg->flags.use_gpgtar && !have_usable_gpgtar (gpg))
+ return gpg_error (GPG_ERR_NOT_SUPPORTED);
+
+ if (gpg->flags.use_gpgtar && (flags & GPGME_DECRYPT_UNWRAP))
+ return gpg_error (GPG_ERR_INV_VALUE);
+
err = add_arg (gpg, "--decrypt");
if (!err && (flags & GPGME_DECRYPT_UNWRAP))
}
if (!err && export_session_key)
- err = add_arg (gpg, "--show-session-key");
+ err = add_gpg_arg (gpg, "--show-session-key");
if (!err && auto_key_retrieve)
- err = add_arg (gpg, "--auto-key-retrieve");
+ err = add_gpg_arg (gpg, "--auto-key-retrieve");
if (!err && gpg->flags.auto_key_import)
- err = add_arg (gpg, "--auto-key-import");
+ err = add_gpg_arg (gpg, "--auto-key-import");
if (!err && override_session_key && *override_session_key)
{
- if (have_gpg_version (gpg, "2.1.16"))
+ if (have_gpg_version (gpg, "2.1.16") && !gpg->flags.use_gpgtar)
{
gpgme_data_release (gpg->override_session_key);
TRACE (DEBUG_ENGINE, "override", gpg, "seskey='%s' len=%zu\n",
else
{
/* Using that option may leak the session key via ps(1). */
- err = add_arg (gpg, "--override-session-key");
- if (!err)
- err = add_arg (gpg, override_session_key);
+ err = add_gpg_arg_with_value (gpg, "--override-session-key=",
+ override_session_key, 0);
}
}
/* Tell the gpg object about the data. */
- if (!err)
- err = add_arg (gpg, "--output");
- if (!err)
- err = add_arg (gpg, "-");
- if (!err)
- err = add_data (gpg, plain, 1, 1);
- if (!err)
- err = add_input_size_hint (gpg, ciph);
- if (!err)
- err = add_arg (gpg, "--");
- if (!err)
- err = add_data (gpg, ciph, -1, 0);
+ if (gpg->flags.use_gpgtar)
+ {
+ const char *file_name = gpgme_data_get_file_name (plain);
+ if (!err && file_name)
+ {
+ err = add_arg (gpg, "--directory");
+ if (!err)
+ err = add_arg (gpg, file_name);
+ }
+ if (!err)
+ err = add_input_size_hint (gpg, ciph);
+ if (!err)
+ err = add_arg (gpg, "--");
+ if (!err)
+ err = add_file_name_arg_or_data (gpg, ciph, 0, 0);
+ }
+ else
+ {
+ if (!err)
+ err = add_arg (gpg, "--output");
+ if (!err)
+ err = add_arg (gpg, "-");
+ if (!err)
+ err = add_data (gpg, plain, 1, 1);
+ if (!err)
+ err = add_input_size_hint (gpg, ciph);
+ if (!err)
+ err = add_arg (gpg, "--");
+ if (!err)
+ err = add_file_name_arg_or_data (gpg, ciph, -1, 0);
+ }
if (!err)
err = start (gpg);
static gpgme_error_t
append_args_from_sender (engine_gpg_t gpg, gpgme_ctx_t ctx)
{
- gpgme_error_t err;
+ gpgme_error_t err = 0;
if (ctx->sender && have_gpg_version (gpg, "2.1.15"))
- {
- err = add_arg (gpg, "--sender");
- if (!err)
- err = add_arg (gpg, ctx->sender);
- }
- else
- err = 0;
+ err = add_gpg_arg_with_value (gpg, "--sender=", ctx->sender, 0);
+
return err;
}
if (!err)
{
if ((flags & NOTATION_FLAG_SET))
- err = add_arg (gpg, "--set-notation");
+ err = add_gpg_arg_with_value (gpg, "--set-notation=", arg, 0);
else if ((flags & NOTATION_FLAG_CERT))
- err = add_arg (gpg, "--cert-notation");
+ err = add_gpg_arg_with_value (gpg, "--cert-notation=", arg, 0);
else
- err = add_arg (gpg, "--sig-notation");
+ err = add_gpg_arg_with_value (gpg, "--sig-notation=", arg, 0);
}
- if (!err)
- err = add_arg (gpg, arg);
if (arg)
free (arg);
value = notation->value;
if (!err)
- err = add_arg (gpg, "--sig-policy-url");
- if (!err)
- err = add_arg (gpg, value);
+ err = add_gpg_arg_with_value (gpg, "--sig-policy-url=", value, 0);
if (value != notation->value)
free (value);
engine_gpg_t gpg = engine;
gpgme_error_t err = 0;
+ gpg->flags.use_gpgtar = !!(flags & GPGME_ENCRYPT_ARCHIVE);
+
+ if (gpg->flags.use_gpgtar && !have_usable_gpgtar (gpg))
+ return gpg_error (GPG_ERR_NOT_SUPPORTED);
+
+ if (gpg->flags.use_gpgtar && (flags & GPGME_ENCRYPT_WRAP))
+ return gpg_error (GPG_ERR_INV_VALUE);
+
if (recp || recpstring)
err = add_arg (gpg, "--encrypt");
err = add_arg (gpg, "--symmetric");
if (!err && use_armor)
- err = add_arg (gpg, "--armor");
+ err = add_gpg_arg (gpg, "--armor");
if (!err && (flags & GPGME_ENCRYPT_WRAP))
{
* the encryption would add an additional compression layer.
* We better suppress that. */
flags |= GPGME_ENCRYPT_NO_COMPRESS;
- err = add_arg (gpg, "--no-literal");
+ err = add_gpg_arg (gpg, "--no-literal");
}
if (!err && (flags & GPGME_ENCRYPT_NO_COMPRESS))
- err = add_arg (gpg, "--compress-algo=none");
+ err = add_gpg_arg (gpg, "--compress-algo=none");
if (!err && (flags & GPGME_ENCRYPT_THROW_KEYIDS))
- err = add_arg (gpg, "--throw-keyids");
+ err = add_gpg_arg (gpg, "--throw-keyids");
if (gpgme_data_get_encoding (plain) == GPGME_DATA_ENCODING_MIME
&& have_gpg_version (gpg, "2.1.14"))
- err = add_arg (gpg, "--mimemode");
+ err = add_gpg_arg (gpg, "--mimemode");
if (!err && gpg->flags.include_key_block)
- err = add_arg (gpg, "--include-key-block");
+ err = add_gpg_arg (gpg, "--include-key-block");
if (recp || recpstring)
{
/* If we know that all recipients are valid (full or ultimate trust)
we can suppress further checks. */
if (!err && (flags & GPGME_ENCRYPT_ALWAYS_TRUST))
- err = add_arg (gpg, "--always-trust");
+ err = add_gpg_arg (gpg, "--always-trust");
if (!err && (flags & GPGME_ENCRYPT_NO_ENCRYPT_TO))
- err = add_arg (gpg, "--no-encrypt-to");
+ err = add_gpg_arg (gpg, "--no-encrypt-to");
if (!err && !recp && recpstring)
err = append_args_from_recipients_string (gpg, flags, recpstring);
if (!err)
err = add_arg (gpg, "--output");
if (!err)
- err = add_arg (gpg, "-");
- if (!err)
- err = add_data (gpg, ciph, 1, 1);
- if (gpgme_data_get_file_name (plain))
{
+ const char *output = gpgme_data_get_file_name (ciph);
+ if (output)
+ err = add_arg (gpg, output);
+ else
+ {
+ err = add_arg (gpg, "-");
+ if (!err)
+ err = add_data (gpg, ciph, 1, 1);
+ }
+ }
+ if (gpg->flags.use_gpgtar)
+ {
+ const char *file_name = gpgme_data_get_file_name (plain);
+ if (!err && file_name)
+ {
+ err = add_arg (gpg, "--directory");
+ if (!err)
+ err = add_arg (gpg, file_name);
+ }
+ if (!err)
+ err = add_arg (gpg, "--files-from");
+ if (!err)
+ err = add_arg (gpg, "-");
if (!err)
- err = add_arg (gpg, "--set-filename");
+ err = add_arg (gpg, "--null");
if (!err)
- err = add_arg (gpg, gpgme_data_get_file_name (plain));
+ err = add_arg (gpg, "--utf8-strings");
+ /* Pass the filenames to gpgtar's stdin. */
+ if (!err)
+ err = add_data (gpg, plain, 0, 0);
+ }
+ else
+ {
+ const char *file_name = gpgme_data_get_file_name (plain);
+ if (!err && file_name)
+ err = add_gpg_arg_with_value (gpg, "--set-filename=", file_name, 0);
+ if (!err)
+ err = add_input_size_hint (gpg, plain);
+ if (!err)
+ err = add_arg (gpg, "--");
+ if (!err)
+ err = add_data (gpg, plain, -1, 0);
}
- if (!err)
- err = add_input_size_hint (gpg, plain);
- if (!err)
- err = add_arg (gpg, "--");
- if (!err)
- err = add_data (gpg, plain, -1, 0);
if (!err)
err = start (gpg);
engine_gpg_t gpg = engine;
gpgme_error_t err = 0;
+ gpg->flags.use_gpgtar = !!(flags & GPGME_ENCRYPT_ARCHIVE);
+
+ if (gpg->flags.use_gpgtar && !have_usable_gpgtar (gpg))
+ return gpg_error (GPG_ERR_NOT_SUPPORTED);
+
if (recp || recpstring)
err = add_arg (gpg, "--encrypt");
if (!err)
err = add_arg (gpg, "--sign");
if (!err && use_armor)
- err = add_arg (gpg, "--armor");
+ err = add_gpg_arg (gpg, "--armor");
if (!err && (flags & GPGME_ENCRYPT_NO_COMPRESS))
- err = add_arg (gpg, "--compress-algo=none");
+ err = add_gpg_arg (gpg, "--compress-algo=none");
if (!err && (flags & GPGME_ENCRYPT_THROW_KEYIDS))
- err = add_arg (gpg, "--throw-keyids");
+ err = add_gpg_arg (gpg, "--throw-keyids");
if (gpgme_data_get_encoding (plain) == GPGME_DATA_ENCODING_MIME
&& have_gpg_version (gpg, "2.1.14"))
- err = add_arg (gpg, "--mimemode");
+ err = add_gpg_arg (gpg, "--mimemode");
if (!err && gpg->flags.include_key_block)
- err = add_arg (gpg, "--include-key-block");
+ err = add_gpg_arg (gpg, "--include-key-block");
if (recp || recpstring)
{
/* If we know that all recipients are valid (full or ultimate trust)
we can suppress further checks. */
if (!err && (flags & GPGME_ENCRYPT_ALWAYS_TRUST))
- err = add_arg (gpg, "--always-trust");
+ err = add_gpg_arg (gpg, "--always-trust");
if (!err && (flags & GPGME_ENCRYPT_NO_ENCRYPT_TO))
- err = add_arg (gpg, "--no-encrypt-to");
+ err = add_gpg_arg (gpg, "--no-encrypt-to");
if (!err && !recp && recpstring)
err = append_args_from_recipients_string (gpg, flags, recpstring);
if (!err)
err = add_arg (gpg, "--output");
if (!err)
- err = add_arg (gpg, "-");
- if (!err)
- err = add_data (gpg, ciph, 1, 1);
- if (gpgme_data_get_file_name (plain))
{
+ const char *output = gpgme_data_get_file_name (ciph);
+ if (output)
+ err = add_arg (gpg, output);
+ else
+ {
+ err = add_arg (gpg, "-");
+ if (!err)
+ err = add_data (gpg, ciph, 1, 1);
+ }
+ }
+ if (gpg->flags.use_gpgtar)
+ {
+ const char *file_name = gpgme_data_get_file_name (plain);
+ if (!err && file_name)
+ {
+ err = add_arg (gpg, "--directory");
+ if (!err)
+ err = add_arg (gpg, file_name);
+ }
+ if (!err)
+ err = add_arg (gpg, "--files-from");
+ if (!err)
+ err = add_arg (gpg, "-");
if (!err)
- err = add_arg (gpg, "--set-filename");
+ err = add_arg (gpg, "--null");
if (!err)
- err = add_arg (gpg, gpgme_data_get_file_name (plain));
+ err = add_arg (gpg, "--utf8-strings");
+ /* Pass the filenames to gpgtar's stdin. */
+ if (!err)
+ err = add_data (gpg, plain, 0, 0);
+ }
+ else
+ {
+ const char *file_name = gpgme_data_get_file_name (plain);
+ if (!err && file_name)
+ err = add_gpg_arg_with_value (gpg, "--set-filename=", file_name, 0);
+ if (!err)
+ err = add_input_size_hint (gpg, plain);
+ if (!err)
+ err = add_arg (gpg, "--");
+ if (!err)
+ err = add_data (gpg, plain, -1, 0);
}
- if (!err)
- err = add_input_size_hint (gpg, plain);
- if (!err)
- err = add_arg (gpg, "--");
- if (!err)
- err = add_data (gpg, plain, -1, 0);
if (!err)
err = start (gpg);
err = add_arg (gpg, "--with-fingerprint");
}
+ if (!err && (mode & GPGME_KEYLIST_MODE_WITH_V5FPR)
+ && (have_gpg_version (gpg, "2.4.4")
+ || (have_gpg_version (gpg, "2.2.42")
+ && !have_gpg_version (gpg, "2.3.0"))))
+ err = add_arg (gpg, "--with-v5-fingerprint");
+
if (!err && (mode & GPGME_KEYLIST_MODE_WITH_TOFU)
&& have_gpg_version (gpg, "2.1.16"))
err = add_arg (gpg, "--with-tofu-info");
static gpgme_error_t
gpg_keylist (void *engine, const char *pattern, int secret_only,
- gpgme_keylist_mode_t mode, int engine_flags)
+ gpgme_keylist_mode_t mode)
{
engine_gpg_t gpg = engine;
gpgme_error_t err;
- (void)engine_flags;
-
err = gpg_keylist_build_options (gpg, secret_only, mode);
if (!err && pattern && *pattern)
static gpgme_error_t
gpg_keylist_ext (void *engine, const char *pattern[], int secret_only,
- int reserved, gpgme_keylist_mode_t mode, int engine_flags)
+ int reserved, gpgme_keylist_mode_t mode)
{
engine_gpg_t gpg = engine;
gpgme_error_t err;
- (void)engine_flags;
-
if (reserved)
return gpg_error (GPG_ERR_INV_VALUE);
if (!err)
err = add_arg (gpg, key->fpr);
- if (!err && userid)
+ if (!err && userid && *userid)
{
if ((flags & GPGME_KEYSIGN_LFSEP))
{
if (!err)
err = add_arg (gpg, signing_key->fpr);
- if (!err && userid)
+ if (!err && userid && *userid)
{
if ((flags & GPGME_REVSIG_LFSEP))
{
static gpgme_error_t
gpg_sign (void *engine, gpgme_data_t in, gpgme_data_t out,
- gpgme_sig_mode_t mode, int use_armor, int use_textmode,
+ gpgme_sig_mode_t flags, int use_armor, int use_textmode,
int include_certs, gpgme_ctx_t ctx /* FIXME */)
{
engine_gpg_t gpg = engine;
gpgme_error_t err;
+ const char *output = NULL;
(void)include_certs;
- if (mode == GPGME_SIG_MODE_CLEAR)
+ if ((flags != GPGME_SIG_MODE_NORMAL) && (flags != GPGME_SIG_MODE_DETACH)
+ && (flags != GPGME_SIG_MODE_CLEAR) && (flags != GPGME_SIG_MODE_ARCHIVE))
+ return gpg_error (GPG_ERR_INV_VALUE);
+
+ gpg->flags.use_gpgtar = !!(flags & GPGME_SIG_MODE_ARCHIVE);
+
+ if (gpg->flags.use_gpgtar && !have_usable_gpgtar (gpg))
+ return gpg_error (GPG_ERR_NOT_SUPPORTED);
+
+ if (flags & GPGME_SIG_MODE_CLEAR)
err = add_arg (gpg, "--clearsign");
else
{
err = add_arg (gpg, "--sign");
- if (!err && mode == GPGME_SIG_MODE_DETACH)
+ if (!err && (flags & GPGME_SIG_MODE_DETACH))
err = add_arg (gpg, "--detach");
if (!err && use_armor)
- err = add_arg (gpg, "--armor");
+ err = add_gpg_arg (gpg, "--armor");
if (!err)
{
if (gpgme_data_get_encoding (in) == GPGME_DATA_ENCODING_MIME
&& have_gpg_version (gpg, "2.1.14"))
- err = add_arg (gpg, "--mimemode");
+ err = add_gpg_arg (gpg, "--mimemode");
else if (use_textmode)
- err = add_arg (gpg, "--textmode");
+ err = add_gpg_arg (gpg, "--textmode");
}
}
if (!err && gpg->flags.include_key_block)
- err = add_arg (gpg, "--include-key-block");
+ err = add_gpg_arg (gpg, "--include-key-block");
if (!err)
err = append_args_from_signers (gpg, ctx);
if (!err)
if (!err)
err = append_args_from_sig_notations (gpg, ctx, NOTATION_FLAG_SIG);
- if (gpgme_data_get_file_name (in))
+ if (!err)
+ {
+ output = gpgme_data_get_file_name (out);
+ if (output)
+ {
+ err = add_arg (gpg, "--output");
+ if (!err)
+ err = add_arg (gpg, output);
+ }
+ }
+
+ /* Tell the gpg object about the data. */
+ if (gpg->flags.use_gpgtar)
+ {
+ const char *file_name = gpgme_data_get_file_name (in);
+ if (!err && file_name)
+ {
+ err = add_arg (gpg, "--directory");
+ if (!err)
+ err = add_arg (gpg, file_name);
+ }
+ if (!err)
+ err = add_arg (gpg, "--files-from");
+ if (!err)
+ err = add_arg (gpg, "-");
+ if (!err)
+ err = add_arg (gpg, "--null");
+ if (!err)
+ err = add_arg (gpg, "--utf8-strings");
+ /* Pass the filenames to gpgtar's stdin. */
+ if (!err)
+ err = add_data (gpg, in, 0, 0);
+ }
+ else
{
+ const char *file_name = gpgme_data_get_file_name (in);
+ if (!err && file_name)
+ err = add_gpg_arg_with_value (gpg, "--set-filename=", file_name, 0);
if (!err)
- err = add_arg (gpg, "--set-filename");
+ err = add_input_size_hint (gpg, in);
if (!err)
- err = add_arg (gpg, gpgme_data_get_file_name (in));
+ err = add_arg (gpg, "--");
+ if (!err)
+ err = add_data (gpg, in, -1, 0);
}
- /* Tell the gpg object about the data. */
- if (!err)
- err = add_input_size_hint (gpg, in);
- if (!err)
- err = add_arg (gpg, "--");
- if (!err)
- err = add_data (gpg, in, -1, 0);
- if (!err)
+ if (!err && !output)
err = add_data (gpg, out, 1, 1);
if (!err)
}
static gpgme_error_t
-gpg_verify (void *engine, gpgme_data_t sig, gpgme_data_t signed_text,
- gpgme_data_t plaintext, gpgme_ctx_t ctx)
+gpg_verify (void *engine, gpgme_verify_flags_t flags, gpgme_data_t sig,
+ gpgme_data_t signed_text, gpgme_data_t plaintext, gpgme_ctx_t ctx)
{
engine_gpg_t gpg = engine;
gpgme_error_t err;
+ gpg->flags.use_gpgtar = !!(flags & GPGME_VERIFY_ARCHIVE);
+
+ if (gpg->flags.use_gpgtar && !have_usable_gpgtar (gpg))
+ return gpg_error (GPG_ERR_NOT_SUPPORTED);
+
err = append_args_from_sender (gpg, ctx);
if (!err && gpg->flags.auto_key_import)
- err = add_arg (gpg, "--auto-key-import");
+ err = add_gpg_arg (gpg, "--auto-key-import");
if (!err && ctx->auto_key_retrieve)
- err = add_arg (gpg, "--auto-key-retrieve");
+ err = add_gpg_arg (gpg, "--auto-key-retrieve");
if (err)
;
+ else if (gpg->flags.use_gpgtar)
+ {
+ const char *file_name = gpgme_data_get_file_name (plaintext);
+ if (!err && file_name)
+ {
+ err = add_arg (gpg, "--directory");
+ if (!err)
+ err = add_arg (gpg, file_name);
+ }
+ /* gpgtar uses --decrypt also for signed-only archives */
+ err = add_arg (gpg, "--decrypt");
+ if (!err)
+ err = add_input_size_hint (gpg, sig);
+ if (!err)
+ err = add_arg (gpg, "--");
+ if (!err)
+ err = add_file_name_arg_or_data (gpg, sig, 0, 0);
+ }
else if (plaintext)
{
/* Normal or cleartext signature. */
err = add_arg (gpg, "--output");
if (!err)
- err = add_arg (gpg, "-");
+ err = add_data (gpg, plaintext, -1, 1);
if (!err)
err = add_input_size_hint (gpg, sig);
if (!err)
err = add_arg (gpg, "--");
if (!err)
- err = add_data (gpg, sig, -1, 0);
- if (!err)
- err = add_data (gpg, plaintext, 1, 1);
+ err = add_file_name_arg_or_data (gpg, sig, -1, 0);
}
else
{
if (!err)
err = add_arg (gpg, "--");
if (!err)
- err = add_data (gpg, sig, -1, 0);
+ err = add_file_name_arg_or_data (gpg, sig, -1, 0);
if (!err && signed_text)
- err = add_data (gpg, signed_text, -1, 0);
+ err = add_file_name_arg_or_data (gpg, signed_text, -1, 0);
}
if (!err)
struct engine_gpgsm
{
assuan_context_t assuan_ctx;
+ char *version;
int lc_ctype_set;
int lc_messages_set;
/* Memory data containing diagnostics (--logger-fd) of gpgsm */
gpgme_data_t diagnostics;
+
+ struct {
+ unsigned int offline : 1;
+ } flags;
};
typedef struct engine_gpgsm *engine_gpgsm_t;
gpgme_event_io_t type, void *type_data);
+/* Return true if the engine's version is at least VERSION. */
+static int
+have_gpgsm_version (engine_gpgsm_t gpgsm, const char *version)
+{
+ return _gpgme_compare_versions (gpgsm->version, version);
+}
+
\f
static char *
gpgsm_get_version (const char *file_name)
gpgsm_cancel (engine);
+ if (gpgsm->version)
+ free (gpgsm->version);
+
gpgme_data_release (gpgsm->diagnostics);
free (gpgsm->colon.attic.line);
char *optstr;
unsigned int connect_flags;
- (void)version; /* Not yet used. */
-
gpgsm = calloc (1, sizeof *gpgsm);
if (!gpgsm)
return gpg_error_from_syserror ();
+ if (version)
+ {
+ gpgsm->version = strdup (version);
+ if (!gpgsm->version)
+ {
+ err = gpg_error_from_syserror ();
+ goto leave;
+ }
+ }
+
gpgsm->status_cb.fd = -1;
gpgsm->status_cb.dir = 1;
gpgsm->status_cb.tag = 0;
}
else
*gpgsm->request_origin = 0;
+
+ gpgsm->flags.offline = (ctx->offline && have_gpgsm_version (gpgsm, "2.1.6"));
}
return err;
}
+ gpgsm_assuan_simple_command (gpgsm,
+ gpgsm->flags.offline ?
+ "OPTION offline=1":
+ "OPTION offline=0" ,
+ NULL, NULL);
+
/* We need to know the fd used by assuan for reads. We do this by
using the assumption that the first returned fd from
assuan_get_active_fds() is always this one. */
/* IF we have an active connection we must send a reset because we
need to reset the list of signers. Note that RESET does not
- reset OPTION commands. */
+ reset all OPTION commands. */
return (gpgsm->assuan_ctx
? gpgsm_assuan_simple_command (gpgsm, "RESET", NULL, NULL)
: 0);
#endif
+/* Send the input-size-hint option. Note that we need to send it
+ * always so that we don't actually use a wrong hint from the last
+ * command. */
+static gpgme_error_t
+send_input_size_hint (engine_gpgsm_t gpgsm, gpgme_data_t data)
+{
+ gpg_error_t err;
+ uint64_t value;
+ char numbuf[50]; /* Large enough for even 2^128 in base-10. */
+ char cmd[100];
+ char *p;
+
+ value = _gpgme_data_get_size_hint (data);
+ if (!value)
+ value = 0;
+
+ p = numbuf + sizeof numbuf;
+ *--p = 0;
+ do
+ {
+ *--p = '0' + (value % 10);
+ value /= 10;
+ }
+ while (value);
+
+ snprintf (cmd, sizeof cmd, "OPTION input-size-hint=%s", p);
+ err = gpgsm_assuan_simple_command (gpgsm, cmd, NULL, NULL);
+ if (gpg_err_code (err) == GPG_ERR_UNKNOWN_OPTION)
+ err = 0; /* Ignore error from older gpgsm versions. */
+ return err;
+}
+
static gpgme_error_t
gpgsm_decrypt (void *engine,
if (!gpgsm)
return gpg_error (GPG_ERR_INV_VALUE);
+ err = send_input_size_hint (gpgsm, ciph);
+ if (err)
+ return err;
+
gpgsm->input_cb.data = ciph;
err = gpgsm_set_fd (gpgsm, INPUT_FD, map_data_enc (gpgsm->input_cb.data));
if (err)
if (!recp && !recpstring) /* Symmetric only */
return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
+ if (flags & GPGME_ENCRYPT_ARCHIVE)
+ return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
+
if ((flags & GPGME_ENCRYPT_NO_ENCRYPT_TO))
{
err = gpgsm_assuan_simple_command (gpgsm,
return err;
}
+ if ((flags & GPGME_ENCRYPT_ALWAYS_TRUST))
+ {
+ /* Note that a RESET and the actual operation resets the
+ * always-trust option. To support older gnupg versions we
+ * ignore the unknown option error. */
+ err = gpgsm_assuan_simple_command (gpgsm,
+ "OPTION always-trust", NULL, NULL);
+ if (err && gpg_err_code (err) != GPG_ERR_UNKNOWN_OPTION)
+ return err;
+ }
+
+ err = send_input_size_hint (gpgsm, plain);
+ if (err)
+ return err;
+
gpgsm->input_cb.data = plain;
err = gpgsm_set_fd (gpgsm, INPUT_FD, map_data_enc (gpgsm->input_cb.data));
if (err)
static gpgme_error_t
gpgsm_keylist (void *engine, const char *pattern, int secret_only,
- gpgme_keylist_mode_t mode, int engine_flags)
+ gpgme_keylist_mode_t mode)
{
engine_gpgsm_t gpgsm = engine;
char *line;
"OPTION with-secret=1":
"OPTION with-secret=0" ,
NULL, NULL);
- gpgsm_assuan_simple_command (gpgsm,
- (engine_flags & GPGME_ENGINE_FLAG_OFFLINE)?
- "OPTION offline=1":
- "OPTION offline=0" ,
- NULL, NULL);
-
/* Length is "LISTSECRETKEYS " + p + '\0'. */
line = malloc (15 + strlen (pattern) + 1);
static gpgme_error_t
gpgsm_keylist_ext (void *engine, const char *pattern[], int secret_only,
- int reserved, gpgme_keylist_mode_t mode, int engine_flags)
+ int reserved, gpgme_keylist_mode_t mode)
{
engine_gpgsm_t gpgsm = engine;
char *line;
"OPTION with-secret=1":
"OPTION with-secret=0" ,
NULL, NULL);
- gpgsm_assuan_simple_command (gpgsm,
- (engine_flags & GPGME_ENGINE_FLAG_OFFLINE)?
- "OPTION offline=1":
- "OPTION offline=0" ,
- NULL, NULL);
if (pattern && *pattern)
{
static gpgme_error_t
gpgsm_sign (void *engine, gpgme_data_t in, gpgme_data_t out,
- gpgme_sig_mode_t mode, int use_armor, int use_textmode,
+ gpgme_sig_mode_t flags, int use_armor, int use_textmode,
int include_certs, gpgme_ctx_t ctx /* FIXME */)
{
engine_gpgsm_t gpgsm = engine;
if (!gpgsm)
return gpg_error (GPG_ERR_INV_VALUE);
+ if (flags & (GPGME_SIG_MODE_CLEAR | GPGME_SIG_MODE_ARCHIVE))
+ return gpg_error (GPG_ERR_INV_VALUE);
+
/* FIXME: This does not work as RESET does not reset it so we can't
revert back to default. */
if (include_certs != GPGME_INCLUDE_CERTS_DEFAULT)
return err;
}
+ err = send_input_size_hint (gpgsm, in);
+ if (err)
+ return err;
+
gpgsm->input_cb.data = in;
err = gpgsm_set_fd (gpgsm, INPUT_FD, map_data_enc (gpgsm->input_cb.data));
if (err)
gpgsm_clear_fd (gpgsm, MESSAGE_FD);
gpgsm->inline_data = NULL;
- err = start (gpgsm, mode == GPGME_SIG_MODE_DETACH
+ err = start (gpgsm, (flags & GPGME_SIG_MODE_DETACH)
? "SIGN --detached" : "SIGN");
return err;
}
static gpgme_error_t
-gpgsm_verify (void *engine, gpgme_data_t sig, gpgme_data_t signed_text,
- gpgme_data_t plaintext, gpgme_ctx_t ctx)
+gpgsm_verify (void *engine, gpgme_verify_flags_t flags, gpgme_data_t sig,
+ gpgme_data_t signed_text, gpgme_data_t plaintext,
+ gpgme_ctx_t ctx)
{
engine_gpgsm_t gpgsm = engine;
gpgme_error_t err;
if (!gpgsm)
return gpg_error (GPG_ERR_INV_VALUE);
+ if (flags & GPGME_VERIFY_ARCHIVE)
+ return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
+
gpgsm->input_cb.data = sig;
err = gpgsm_set_fd (gpgsm, INPUT_FD, map_data_enc (gpgsm->input_cb.data));
if (err)
if (!signed_text)
{
/* Normal or cleartext signature. */
+ err = send_input_size_hint (gpgsm, sig);
+ if (err)
+ return err;
+
if (plaintext)
{
gpgsm->output_cb.data = plaintext;
else
{
/* Detached signature. */
+ err = send_input_size_hint (gpgsm, signed_text);
+ if (err)
+ return err;
+
gpgsm->message_cb.data = signed_text;
err = gpgsm_set_fd (gpgsm, MESSAGE_FD, 0);
gpgsm_clear_fd (gpgsm, OUTPUT_FD);
else
return gpgme_error (GPG_ERR_UNSUPPORTED_PROTOCOL);
+ if (flags & GPGME_ENCRYPT_ARCHIVE)
+ return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
+
if (flags & GPGME_ENCRYPT_PREPARE)
{
if (!recp || plain || ciph)
static gpgme_error_t
uiserver_sign (void *engine, gpgme_data_t in, gpgme_data_t out,
- gpgme_sig_mode_t mode, int use_armor, int use_textmode,
+ gpgme_sig_mode_t flags, int use_armor, int use_textmode,
int include_certs, gpgme_ctx_t ctx /* FIXME */)
{
engine_uiserver_t uiserver = engine;
else
return gpgme_error (GPG_ERR_UNSUPPORTED_PROTOCOL);
+ if (flags & (GPGME_SIG_MODE_CLEAR | GPGME_SIG_MODE_ARCHIVE))
+ return gpg_error (GPG_ERR_INV_VALUE);
+
if (gpgrt_asprintf (&cmd, "SIGN%s%s", protocol,
- (mode == GPGME_SIG_MODE_DETACH) ? " --detached" : "") < 0)
+ (flags & GPGME_SIG_MODE_DETACH) ? " --detached" : "") < 0)
return gpg_error_from_syserror ();
key = gpgme_signers_enum (ctx, 0);
/* FIXME: Missing a way to specify --silent. */
static gpgme_error_t
-uiserver_verify (void *engine, gpgme_data_t sig, gpgme_data_t signed_text,
- gpgme_data_t plaintext, gpgme_ctx_t ctx)
+uiserver_verify (void *engine, gpgme_verify_flags_t flags, gpgme_data_t sig,
+ gpgme_data_t signed_text, gpgme_data_t plaintext,
+ gpgme_ctx_t ctx)
{
engine_uiserver_t uiserver = engine;
gpgme_error_t err;
else
return gpgme_error (GPG_ERR_UNSUPPORTED_PROTOCOL);
+ if (flags & GPGME_VERIFY_ARCHIVE)
+ return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
+
if (gpgrt_asprintf (&cmd, "VERIFY%s", protocol) < 0)
return gpg_error_from_syserror ();
gpgme_error_t
_gpgme_engine_op_keylist (engine_t engine, const char *pattern,
- int secret_only, gpgme_keylist_mode_t mode,
- int engine_flags)
+ int secret_only, gpgme_keylist_mode_t mode)
{
if (!engine)
return gpg_error (GPG_ERR_INV_VALUE);
if (!engine->ops->keylist)
return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
- return (*engine->ops->keylist) (engine->engine, pattern, secret_only, mode,
- engine_flags);
+ return (*engine->ops->keylist) (engine->engine, pattern, secret_only, mode);
}
gpgme_error_t
_gpgme_engine_op_keylist_ext (engine_t engine, const char *pattern[],
int secret_only, int reserved,
- gpgme_keylist_mode_t mode, int engine_flags)
+ gpgme_keylist_mode_t mode)
{
if (!engine)
return gpg_error (GPG_ERR_INV_VALUE);
return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
return (*engine->ops->keylist_ext) (engine->engine, pattern, secret_only,
- reserved, mode, engine_flags);
+ reserved, mode);
}
gpgme_error_t
_gpgme_engine_op_sign (engine_t engine, gpgme_data_t in, gpgme_data_t out,
- gpgme_sig_mode_t mode, int use_armor,
+ gpgme_sig_mode_t flags, int use_armor,
int use_textmode, int include_certs,
gpgme_ctx_t ctx /* FIXME */)
{
if (!engine->ops->sign)
return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
- return (*engine->ops->sign) (engine->engine, in, out, mode, use_armor,
+ return (*engine->ops->sign) (engine->engine, in, out, flags, use_armor,
use_textmode, include_certs, ctx);
}
gpgme_error_t
-_gpgme_engine_op_verify (engine_t engine, gpgme_data_t sig,
- gpgme_data_t signed_text, gpgme_data_t plaintext,
- gpgme_ctx_t ctx)
+_gpgme_engine_op_verify (engine_t engine, gpgme_verify_flags_t flags,
+ gpgme_data_t sig, gpgme_data_t signed_text,
+ gpgme_data_t plaintext, gpgme_ctx_t ctx)
{
if (!engine)
return gpg_error (GPG_ERR_INV_VALUE);
if (!engine->ops->verify)
return gpg_error (GPG_ERR_NOT_IMPLEMENTED);
- return (*engine->ops->verify) (engine->engine, sig, signed_text, plaintext,
- ctx);
+ return (*engine->ops->verify) (engine->engine, flags, sig, signed_text,
+ plaintext, ctx);
}
gpgme_error_t _gpgme_engine_op_keylist (engine_t engine,
const char *pattern,
int secret_only,
- gpgme_keylist_mode_t mode,
- int engine_flags);
+ gpgme_keylist_mode_t mode);
gpgme_error_t _gpgme_engine_op_keylist_ext (engine_t engine,
const char *pattern[],
int secret_only,
int reserved,
- gpgme_keylist_mode_t mode,
- int engine_flags);
+ gpgme_keylist_mode_t mode);
gpgme_error_t _gpgme_engine_op_keylist_data (engine_t engine,
gpgme_keylist_mode_t mode,
gpgme_data_t data);
gpgme_error_t _gpgme_engine_op_sign (engine_t engine, gpgme_data_t in,
- gpgme_data_t out, gpgme_sig_mode_t mode,
+ gpgme_data_t out, gpgme_sig_mode_t flags,
int use_armor, int use_textmode,
int include_certs,
gpgme_ctx_t ctx /* FIXME */);
gpgme_error_t _gpgme_engine_op_trustlist (engine_t engine,
const char *pattern);
-gpgme_error_t _gpgme_engine_op_verify (engine_t engine, gpgme_data_t sig,
+gpgme_error_t _gpgme_engine_op_verify (engine_t engine,
+ gpgme_verify_flags_t flags,
+ gpgme_data_t sig,
gpgme_data_t signed_text,
gpgme_data_t plaintext,
gpgme_ctx_t ctx);
const char *subfprs,
unsigned int reserved);
-/* The available engine option flags. */
-#define GPGME_ENGINE_FLAG_OFFLINE 1
-
#endif /* ENGINE_H */
/* Local operation data. */
typedef struct
{
- gpg_error_t err; /* Error encountered during the export. */
+ /* The error code from a FAILURE status line or 0. */
+ gpg_error_t failure_code;
+
+ /* Error encountered during the export. */
+ gpg_error_t err;
+
} *op_data_t;
opd->err = err;
break;
+ case GPGME_STATUS_FAILURE:
+ opd->failure_code = _gpgme_parse_failure (args);
+ break;
+
default:
break;
}
err = _gpgme_op_data_lookup (ctx, OPDATA_EXPORT, &hook, -1, NULL);
opd = hook;
if (!err)
- err = opd->err;
+ err = opd->err ? opd->err : opd->failure_code;
}
}
err = _gpgme_op_data_lookup (ctx, OPDATA_EXPORT, &hook, -1, NULL);
opd = hook;
if (!err)
- err = opd->err;
+ err = opd->err ? opd->err : opd->failure_code;
}
}
\f
+static const char *
+data_type_to_string (gpgme_data_type_t dt)
+{
+ const char *s = "[?]";
+
+ switch (dt)
+ {
+ case GPGME_DATA_TYPE_INVALID : s = "invalid"; break;
+ case GPGME_DATA_TYPE_UNKNOWN : s = "unknown"; break;
+ case GPGME_DATA_TYPE_PGP_SIGNED : s = "PGP-signed"; break;
+ case GPGME_DATA_TYPE_PGP_SIGNATURE: s = "PGP-signature"; break;
+ case GPGME_DATA_TYPE_PGP_ENCRYPTED: s = "PGP-encrypted"; break;
+ case GPGME_DATA_TYPE_PGP_OTHER : s = "PGP"; break;
+ case GPGME_DATA_TYPE_PGP_KEY : s = "PGP-key"; break;
+ case GPGME_DATA_TYPE_CMS_SIGNED : s = "CMS-signed"; break;
+ case GPGME_DATA_TYPE_CMS_ENCRYPTED: s = "CMS-encrypted"; break;
+ case GPGME_DATA_TYPE_CMS_OTHER : s = "CMS"; break;
+ case GPGME_DATA_TYPE_X509_CERT : s = "X.509"; break;
+ case GPGME_DATA_TYPE_PKCS12 : s = "PKCS12"; break;
+ }
+ return s;
+}
+
+
+static const char hlp_identify[] =
+ "op: \"identify\"\n"
+ "data: The data to identify.\n"
+ "\n"
+ "Optional boolean flags (default is false):\n"
+ "base64: Input data is base64 encoded.\n"
+ "\n"
+ "Response:\n"
+ "result: A string describing the object.\n";
+static gpg_error_t
+op_identify (cjson_t request, cjson_t result)
+{
+ gpg_error_t err;
+ gpgme_data_t input = NULL;
+ gpgme_data_type_t dt;
+
+ if ((err = get_string_data (request, result, "data", &input)))
+ goto leave;
+
+ dt = gpgme_data_identify (input, 0);
+ xjson_AddStringToObject (result, "result", data_type_to_string (dt));
+
+ leave:
+ gpgme_data_release (input);
+ return err;
+}
+
+
+\f
static const char hlp_getmore[] =
"op: \"getmore\"\n"
"\n"
" keylist List keys.\n"
" sign Sign data.\n"
" verify Verify data.\n"
+ " identify Identify the type of the data\n"
" version Get engine information.\n"
" getmore Retrieve remaining data if chunksize was used.\n"
" help Help overview.\n"
{ "createkey", op_createkey, hlp_createkey },
{ "keylist", op_keylist, hlp_keylist },
{ "import", op_import, hlp_import },
+ { "identify", op_identify, hlp_identify },
{ "sign", op_sign, hlp_sign },
{ "verify", op_verify, hlp_verify },
{ "version", op_version, hlp_version },
}
+/* Run the --identify command. */
+static gpg_error_t
+cmd_identify (const char *fname)
+{
+ gpg_error_t err;
+ estream_t fp;
+ gpgme_data_t data;
+ gpgme_data_type_t dt;
+
+ if (fname)
+ {
+ fp = es_fopen (fname, "rb");
+ if (!fp)
+ {
+ err = gpg_error_from_syserror ();
+ log_error ("can't open '%s': %s\n", fname, gpg_strerror (err));
+ return err;
+ }
+ err = gpgme_data_new_from_estream (&data, fp);
+ }
+ else
+ {
+ char *buffer;
+ int n;
+
+ fp = NULL;
+ es_set_binary (es_stdin);
+
+ /* Urgs: gpgme_data_identify does a seek and that fails for stdin. */
+ buffer = xmalloc (2048+1);
+ n = es_fread (buffer, 1, 2048, es_stdin);
+ if (n < 0 || es_ferror (es_stdin))
+ {
+ err = gpg_error_from_syserror ();
+ log_error ("error reading '%s': %s\n", "[stdin]", gpg_strerror (err));
+ xfree (buffer);
+ return err;
+ }
+ buffer[n] = 0;
+ err = gpgme_data_new_from_mem (&data, buffer, n, 1);
+ xfree (buffer);
+ }
+
+ if (err)
+ {
+ log_error ("error creating data object: %s\n", gpg_strerror (err));
+ return err;
+ }
+
+ dt = gpgme_data_identify (data, 0);
+ if (dt == GPGME_DATA_TYPE_INVALID)
+ log_error ("error identifying data\n");
+ printf ("%s\n", data_type_to_string (dt));
+ gpgme_data_release (data);
+ es_fclose (fp);
+ return 0;
+}
+
\f
static const char *
my_strusage( int level )
CMD_INTERACTIVE = 'i',
CMD_SINGLE = 's',
CMD_LIBVERSION = 501,
+ CMD_IDENTIFY
} cmd = CMD_DEFAULT;
enum {
OPT_DEBUG = 600
static gpgrt_opt_t opts[] = {
ARGPARSE_c (CMD_INTERACTIVE, "interactive", "Interactive REPL"),
ARGPARSE_c (CMD_SINGLE, "single", "Single request mode"),
+ ARGPARSE_c (CMD_IDENTIFY, "identify", "Identify the input"),
ARGPARSE_c (CMD_LIBVERSION, "lib-version", "Show library version"),
ARGPARSE_s_n(OPT_DEBUG, "debug", "Flyswatter"),
ARGPARSE_end()
};
gpgrt_argparse_t pargs = { &argc, &argv};
-
int log_file_set = 0;
gpgrt_set_strusage (my_strusage);
opt_interactive = 1;
/*FALLTHROUGH*/
case CMD_SINGLE:
+ case CMD_IDENTIFY:
case CMD_LIBVERSION:
cmd = pargs.r_opt;
break;
interactive_repl ();
break;
+ case CMD_IDENTIFY:
+ if (argc > 1)
+ {
+ log_error ("usage: %s --identify [filename|-]\n",
+ gpgrt_strusage (11));
+ exit (1);
+ }
+ cmd_identify (argc && strcmp (*argv, "-")? *argv : NULL);
+ break;
+
case CMD_LIBVERSION:
printf ("Version from header: %s (0x%06x)\n",
GPGME_VERSION, GPGME_VERSION_NUMBER);
err = gpgme_data_new_from_stream (data, *fs);
}
else
- err = gpgme_data_new_from_fd (data, (int) fd);
+ {
+ int posix_fd;
+
+#if defined(HAVE_W32_SYSTEM)
+ posix_fd = _open_osfhandle ((intptr_t)fd, out ? 1 : 0);
+ if (posix_fd == -1)
+ return gpg_error_from_syserror ();
+#else
+ posix_fd = fd;
+#endif
+
+ err = gpgme_data_new_from_fd (data, posix_fd);
+ }
if (err)
return err;
#include "priv-io.h"
+/* #define DEBUG_TO_FILE 1 */
+
/* Name of this program. */
#define PGM "gpgme-w32spawn"
+#ifdef DEBUG_TO_FILE
+static FILE *mystderr;
+#else
+#define mystderr stderr
+#endif
+
\f
-static char *
-build_commandline (char **argv)
+static wchar_t *
+build_commandline (wchar_t **argv)
{
int i;
int n = 0;
- char *buf;
- char *p;
+ wchar_t *buf;
+ wchar_t *p;
/* We have to quote some things because under Windows the program
parses the commandline and does some unquoting. We enclose the
while (*p)
{
/* An extra one for each literal that must be escaped. */
- if (*p == '\\' || *p == '"')
+ if (*p == L'\\' || *p == L'"')
n++;
n++;
p++;
/* And a trailing zero. */
n++;
- buf = p = malloc (n);
+ buf = p = malloc (n * sizeof (wchar_t));
if (!buf)
return NULL;
for (i = 0; argv[i]; i++)
{
- char *argvp = argv[i];
+ wchar_t *argvp = argv[i];
- *(p++) = '"';
+ *(p++) = L'"';
while (*argvp)
{
- if (*argvp == '\\' || *argvp == '"')
- *(p++) = '\\';
+ if (*argvp == L'\\' || *argvp == L'"')
+ *(p++) = L'\\';
*(p++) = *(argvp++);
}
- *(p++) = '"';
- *(p++) = ' ';
+ *(p++) = L'"';
+ *(p++) = L' ';
}
*(p++) = 0;
int
-my_spawn (char **argv, struct spawn_fd_item_s *fd_list, unsigned int flags)
+my_spawn (wchar_t **argv, struct spawn_fd_item_s *fd_list, unsigned int flags)
{
SECURITY_ATTRIBUTES sec_attr;
PROCESS_INFORMATION pi =
0, /* returns pid */
0 /* returns tid */
};
- STARTUPINFO si;
- char *envblock = NULL;
+ STARTUPINFOW si;
int cr_flags = CREATE_DEFAULT_ERROR_MODE
| GetPriorityClass (GetCurrentProcess ());
int i;
- char *arg_string;
+ wchar_t *arg_string;
int duped_stdin = 0;
int duped_stdout = 0;
int duped_stderr = 0;
i = 0;
while (argv[i])
{
- fprintf (stderr, PGM": argv[%2i] = %s\n", i, argv[i]);
+ fprintf (mystderr, PGM": argv[%2i] = %S\n", i, argv[i]);
i++;
}
si.hStdOutput = GetStdHandle (STD_OUTPUT_HANDLE);
si.hStdError = GetStdHandle (STD_ERROR_HANDLE);
- fprintf (stderr, PGM": spawning: %s\n", arg_string);
-
for (i = 0; fd_list[i].fd != -1; i++)
{
/* The handle already is inheritable. */
{
si.hStdInput = (HANDLE) fd_list[i].peer_name;
duped_stdin = 1;
- fprintf (stderr, PGM": dup 0x%x to stdin\n", fd_list[i].peer_name);
+ fprintf (mystderr, PGM": dup 0x%x to stdin\n", fd_list[i].peer_name);
}
else if (fd_list[i].dup_to == 1)
{
si.hStdOutput = (HANDLE) fd_list[i].peer_name;
duped_stdout = 1;
- fprintf (stderr, PGM": dup 0x%x to stdout\n", fd_list[i].peer_name);
+ fprintf (mystderr, PGM": dup 0x%x to stdout\n", fd_list[i].peer_name);
}
else if (fd_list[i].dup_to == 2)
{
si.hStdError = (HANDLE) fd_list[i].peer_name;
duped_stderr = 1;
- fprintf (stderr, PGM":dup 0x%x to stderr\n", fd_list[i].peer_name);
+ fprintf (mystderr, PGM":dup 0x%x to stderr\n", fd_list[i].peer_name);
}
}
memset (&sa, 0, sizeof sa);
sa.nLength = sizeof sa;
sa.bInheritHandle = TRUE;
- hnul = CreateFile ("nul",
- GENERIC_READ|GENERIC_WRITE,
- FILE_SHARE_READ|FILE_SHARE_WRITE,
- &sa,
- OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL,
- NULL);
+ hnul = CreateFileW (L"nul",
+ GENERIC_READ|GENERIC_WRITE,
+ FILE_SHARE_READ|FILE_SHARE_WRITE,
+ &sa,
+ OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL,
+ NULL);
if (hnul == INVALID_HANDLE_VALUE)
{
free (arg_string);
}
cr_flags |= CREATE_SUSPENDED;
- if (!CreateProcessA (argv[0],
+ if (!CreateProcessW (argv[0],
arg_string,
&sec_attr, /* process security attributes */
&sec_attr, /* thread security attributes */
TRUE, /* inherit handles */
cr_flags, /* creation flags */
- envblock, /* environment */
+ NULL, /* environment */
NULL, /* use current drive/directory */
&si, /* startup information */
&pi)) /* returns process information */
{
free (arg_string);
+ fprintf (mystderr, PGM": spawn error: %d\n", (int)GetLastError ());
/* FIXME: Should translate the error code. */
errno = EIO;
return -1;
{
/* Available since W2000; thus we dynload it. */
initialized = 1;
- handle = LoadLibrary ("user32.dll");
+ handle = LoadLibraryA ("user32.dll");
if (handle)
{
func = GetProcAddress (handle, "AllowSetForegroundWindow");
if (func)
{
int rc = func (pi.dwProcessId);
- fprintf (stderr, PGM": AllowSetForegroundWindow(%d): rc=%d\n",
+ fprintf (mystderr, PGM": AllowSetForegroundWindow(%d): rc=%d\n",
(int)pi.dwProcessId, rc);
}
}
#define MAX_TRANS 10
int
-translate_get_from_file (const char *trans_file,
+translate_get_from_file (const wchar_t *trans_file,
struct spawn_fd_item_s *fd_list,
unsigned int *r_flags)
{
*r_flags = 0;
- fd = open (trans_file, O_RDONLY);
+ fd = _wopen (trans_file, O_RDONLY);
if (fd < 0)
return -1;
/* Read the translated handles from TRANS_FILE and do a substitution
in ARGV. Returns the new argv and the list of substitutions in
FD_LIST (which must be MAX_TRANS+1 large). */
-char **
-translate_handles (const char *trans_file, const char * const *argv,
+wchar_t **
+translate_handles (const wchar_t *trans_file, const wchar_t * const *argv,
struct spawn_fd_item_s *fd_list, unsigned int *r_flags)
{
int res;
int idx;
int n_args;
- char **args;
+ wchar_t **args;
res = translate_get_from_file (trans_file, fd_list, r_flags);
if (res < 0)
args = malloc (sizeof (*args) * (idx + 1));
for (idx = 0; argv[idx]; idx++)
{
- args[idx] = strdup (argv[idx]);
+ args[idx] = wcsdup (argv[idx]);
if (!args[idx])
return NULL;
}
for (idx = 0; fd_list[idx].fd != -1; idx++)
{
- char buf[25];
+ wchar_t buf[25];
int aidx;
aidx = fd_list[idx].arg_loc;
if (aidx >= n_args)
{
- fprintf (stderr, PGM": translation file does not match args\n");
+ fprintf (mystderr, PGM": translation file does not match args\n");
return NULL;
}
/* NOTE: Here is the part where application specific knowledge
comes in. GPGME/GnuPG uses two forms of descriptor
specification, a plain number and a "-&" form. */
- if (argv[aidx][0] == '-' && argv[aidx][1] == '&')
- snprintf (args[aidx], sizeof (buf), "-&%d", fd_list[idx].peer_name);
+ if (argv[aidx][0] == L'-' && argv[aidx][1] == L'&')
+ snwprintf (args[aidx], sizeof (buf), L"-&%d", fd_list[idx].peer_name);
else
- snprintf (args[aidx], sizeof (buf), "%d", fd_list[idx].peer_name);
+ snwprintf (args[aidx], sizeof (buf), L"%d", fd_list[idx].peer_name);
}
return args;
}
+/* Since GPGME might be installed in a unicode directory it
+ must be callable with CreateProcessW which provides the
+ arguments in Unicode form.
+
+ So GPGME converts from its internal UTF-8 representation
+ to wchar, spawns gpgme-w32-spawn with CreateProcessW and then
+ we also forward this as wchar. */
int
-main (int argc, const char * const *argv)
+wmain (int argc, const wchar_t * const *argv)
{
int rc = 0;
- char **argv_spawn;
+ wchar_t **argv_spawn;
struct spawn_fd_item_s fd_list[MAX_TRANS + 1];
unsigned int flags;
goto leave;
}
+#ifdef DEBUG_TO_FILE
+ mystderr = fopen ("h:/gpgme-w32spawn.log", "w");
+#endif
+
argv_spawn = translate_handles (argv[1], &argv[2], fd_list, &flags);
if (!argv_spawn)
{
rc = my_spawn (argv_spawn, fd_list, flags);
if (rc < 0)
{
- fprintf (stderr, PGM": executing `%s' failed: %s\n",
+ fprintf (mystderr, PGM": executing `%S' failed: %s\n",
argv[0], strerror (errno));
rc = 2;
goto leave;
leave:
if (rc)
- fprintf (stderr, PGM": internal error\n");
+ fprintf (mystderr, PGM": internal error\n");
/* Always try to delete the temporary file. */
if (argc >= 2)
{
- if (DeleteFile (argv[1]) == 0)
- fprintf (stderr, PGM": failed to delete %s: ec=%ld\n",
+ if (DeleteFileW (argv[1]) == 0)
+ fprintf (mystderr, PGM": failed to delete %S: ec=%ld\n",
argv[1], GetLastError ());
}
return rc;
return _gpgme_set_default_gpgconf_name (value);
else if (!strcmp (name, "gpg-name"))
return _gpgme_set_default_gpg_name (value);
+ else if (!strcmp (name, "inst-type"))
+ {
+ _gpgme_set_get_inst_type (value);
+ return 0;
+ }
else if (!strcmp (name, "w32-inst-dir"))
return _gpgme_set_override_inst_dir (value);
else
if (!ctx->import_filter)
err = gpg_error_from_syserror ();
}
+ else if (!strcmp (name, "no-auto-check-trustdb"))
+ {
+ ctx->no_auto_check_trustdb = abool;
+ }
else
err = gpg_error (GPG_ERR_UNKNOWN_NAME);
{
return ctx->import_filter? ctx->import_filter : "";
}
+ else if (!strcmp (name, "no-auto-check-trustdb"))
+ {
+ return ctx->no_auto_check_trustdb? "1":"";
+ }
else
return NULL;
}
gpgme_op_receive_keys @209
gpgme_op_receive_keys_start @210
+ gpgme_op_verify_ext @211
+ gpgme_op_verify_ext_start @212
; END
gpgme_hash_algo_t;
-/* The available signature modes. */
+/* The available signature mode flags. */
typedef enum
{
GPGME_SIG_MODE_NORMAL = 0,
GPGME_SIG_MODE_DETACH = 1,
- GPGME_SIG_MODE_CLEAR = 2
+ GPGME_SIG_MODE_CLEAR = 2,
+ GPGME_SIG_MODE_ARCHIVE = 4
}
gpgme_sig_mode_t;
#define GPGME_KEYLIST_MODE_EPHEMERAL 128
#define GPGME_KEYLIST_MODE_VALIDATE 256
#define GPGME_KEYLIST_MODE_FORCE_EXTERN 512
+#define GPGME_KEYLIST_MODE_WITH_V5FPR 1024
#define GPGME_KEYLIST_MODE_LOCATE (1|2)
#define GPGME_KEYLIST_MODE_LOCATE_EXTERNAL (1|2|512)
/* True if the key is compliant to the de-vs mode. */
unsigned int is_de_vs : 1;
+ /* True if the key can be used for restricted encryption (ADSK). */
+ unsigned int can_renc : 1;
+
+ /* True if the key can be used for timestamping. */
+ unsigned int can_timestamp : 1;
+
+ /* True if the private key is possessed by more than one person. */
+ unsigned int is_group_owned : 1;
+
/* Internal to GPGME, do not use. */
- unsigned int _unused : 20;
+ unsigned int _unused : 17;
/* Public key algorithm supported by this subkey. */
gpgme_pubkey_algo_t pubkey_algo;
/* The keygrip of the subkey in hex digit form or NULL if not available. */
char *keygrip;
+
+ /* For OpenPGP the v5 fpr of a v4 key. For X.509 the SHA256 fingerprint. */
+ char *v5fpr;
};
typedef struct _gpgme_subkey *gpgme_subkey_t;
/* True if subkey is qualified for signatures according to German law. */
unsigned int is_qualified : 1;
+ /* True if key has at least one encryption subkey. */
+ unsigned int has_encrypt : 1;
+
+ /* True if key has at least one signing subkey. */
+ unsigned int has_sign : 1;
+
+ /* True if key has a certification capability. */
+ unsigned int has_certify : 1;
+
+ /* True if key has at least one authentication subkey. */
+ unsigned int has_authenticate : 1;
+
/* Internal to GPGME, do not use. */
- unsigned int _unused : 17;
+ unsigned int _unused : 13;
/* Origin of this key. */
unsigned int origin : 5;
GPGME_ENCRYPT_SYMMETRIC = 32,
GPGME_ENCRYPT_THROW_KEYIDS = 64,
GPGME_ENCRYPT_WRAP = 128,
- GPGME_ENCRYPT_WANT_ADDRESS = 256
+ GPGME_ENCRYPT_WANT_ADDRESS = 256,
+ GPGME_ENCRYPT_ARCHIVE = 512
}
gpgme_encrypt_flags_t;
typedef enum
{
GPGME_DECRYPT_VERIFY = 1,
+ GPGME_DECRYPT_ARCHIVE = 2,
GPGME_DECRYPT_UNWRAP = 128
}
gpgme_decrypt_flags_t;
/* Sign the plaintext PLAIN and store the signature in SIG. */
gpgme_error_t gpgme_op_sign_start (gpgme_ctx_t ctx,
gpgme_data_t plain, gpgme_data_t sig,
- gpgme_sig_mode_t mode);
+ gpgme_sig_mode_t flags);
gpgme_error_t gpgme_op_sign (gpgme_ctx_t ctx,
gpgme_data_t plain, gpgme_data_t sig,
- gpgme_sig_mode_t mode);
+ gpgme_sig_mode_t flags);
\f
/*
/* Retrieve a pointer to the result of the verify operation. */
gpgme_verify_result_t gpgme_op_verify_result (gpgme_ctx_t ctx);
+/* The valid verify flags. */
+typedef enum
+ {
+ GPGME_VERIFY_ARCHIVE = 1
+ }
+gpgme_verify_flags_t;
+
/* Verify within CTX that SIG is a valid signature for TEXT. */
gpgme_error_t gpgme_op_verify_start (gpgme_ctx_t ctx, gpgme_data_t sig,
gpgme_data_t signed_text,
gpgme_error_t gpgme_op_verify (gpgme_ctx_t ctx, gpgme_data_t sig,
gpgme_data_t signed_text,
gpgme_data_t plaintext);
+gpgme_error_t gpgme_op_verify_ext_start (gpgme_ctx_t ctx,
+ gpgme_verify_flags_t flags,
+ gpgme_data_t sig,
+ gpgme_data_t signed_text,
+ gpgme_data_t plaintext);
+gpgme_error_t gpgme_op_verify_ext (gpgme_ctx_t ctx,
+ gpgme_verify_flags_t flags,
+ gpgme_data_t sig,
+ gpgme_data_t signed_text,
+ gpgme_data_t plaintext);
\f
/*
# gpgme.m4 - autoconf macro to detect GPGME.
-# Copyright (C) 2002, 2003, 2004, 2014, 2018 g10 Code GmbH
+# Copyright (C) 2002, 2003, 2004, 2014, 2018, 2022 g10 Code GmbH
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
-# Last-changed: 2020-11-20
+# Last-changed: 2022-11-25
-AC_DEFUN([_AM_PATH_GPGME_CONFIG],
-[ AC_ARG_WITH(gpgme-prefix,
- AS_HELP_STRING([--with-gpgme-prefix=PFX],
- [prefix where GPGME is installed (optional)]),
+dnl
+dnl Find gpgrt-config, which uses .pc file
+dnl (minimum pkg-config functionality, supporting cross build)
+dnl
+dnl _AM_PATH_GPGRT_CONFIG
+AC_DEFUN([_AM_PATH_GPGRT_CONFIG],[dnl
+ AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no, [$prefix/bin:$PATH])
+ if test "$GPGRT_CONFIG" != "no"; then
+ # Determine gpgrt_libdir
+ #
+ # Get the prefix of gpgrt-config assuming it's something like:
+ # <PREFIX>/bin/gpgrt-config
+ gpgrt_prefix=${GPGRT_CONFIG%/*/*}
+ possible_libdir1=${gpgrt_prefix}/lib
+ # Determine by using system libdir-format with CC, it's like:
+ # Normal style: /usr/lib
+ # GNU cross style: /usr/<triplet>/lib
+ # Debian style: /usr/lib/<multiarch-name>
+ # Fedora/openSUSE style: /usr/lib, /usr/lib32 or /usr/lib64
+ # It is assumed that CC is specified to the one of host on cross build.
+ if libdir_candidates=$(${CC:-cc} -print-search-dirs | \
+ sed -n -e "/^libraries/{s/libraries: =//;s/:/\\
+/g;p;}"); then
+ # From the output of -print-search-dirs, select valid pkgconfig dirs.
+ libdir_candidates=$(for dir in $libdir_candidates; do
+ if p=$(cd $dir 2>/dev/null && pwd); then
+ test -d "$p/pkgconfig" && echo $p;
+ fi
+ done)
+
+ for possible_libdir0 in $libdir_candidates; do
+ # possible_libdir0:
+ # Fallback candidate, the one of system-installed (by $CC)
+ # (/usr/<triplet>/lib, /usr/lib/<multiarch-name> or /usr/lib32)
+ # possible_libdir1:
+ # Another candidate, user-locally-installed
+ # (<gpgrt_prefix>/lib)
+ # possible_libdir2
+ # Most preferred
+ # (<gpgrt_prefix>/<triplet>/lib,
+ # <gpgrt_prefix>/lib/<multiarch-name> or <gpgrt_prefix>/lib32)
+ if test "${possible_libdir0##*/}" = "lib"; then
+ possible_prefix0=${possible_libdir0%/lib}
+ possible_prefix0_triplet=${possible_prefix0##*/}
+ if test -z "$possible_prefix0_triplet"; then
+ continue
+ fi
+ possible_libdir2=${gpgrt_prefix}/$possible_prefix0_triplet/lib
+ else
+ possible_prefix0=${possible_libdir0%%/lib*}
+ possible_libdir2=${gpgrt_prefix}${possible_libdir0#$possible_prefix0}
+ fi
+ if test -f ${possible_libdir2}/pkgconfig/gpg-error.pc; then
+ gpgrt_libdir=${possible_libdir2}
+ elif test -f ${possible_libdir1}/pkgconfig/gpg-error.pc; then
+ gpgrt_libdir=${possible_libdir1}
+ elif test -f ${possible_libdir0}/pkgconfig/gpg-error.pc; then
+ gpgrt_libdir=${possible_libdir0}
+ fi
+ if test -n "$gpgrt_libdir"; then break; fi
+ done
+ if test -z "$libdir_candidates"; then
+ # No valid pkgconfig dir in any of the system directories, fallback
+ gpgrt_libdir=${possible_libdir1}
+ fi
+ else
+ # When we cannot determine system libdir-format, use this:
+ gpgrt_libdir=${possible_libdir1}
+ fi
+ else
+ unset GPGRT_CONFIG
+ fi
+
+ if test -n "$gpgrt_libdir"; then
+ GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
+ if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
+ GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
+ AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
+ gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
+ else
+ unset GPGRT_CONFIG
+ fi
+ elif test "$GPG_ERROR_CONFIG" != "no"; then
+ gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
+ unset GPGRT_CONFIG
+ fi
+])
+
+AC_DEFUN([_AM_PATH_GPGME_CONFIG],[dnl
+AC_REQUIRE([_AM_PATH_GPGRT_CONFIG])dnl
+ AC_ARG_WITH(gpgme-prefix,
+ AS_HELP_STRING([--with-gpgme-prefix=PFX],
+ [prefix where GPGME is installed (optional)]),
gpgme_config_prefix="$withval", gpgme_config_prefix="")
if test x"${GPGME_CONFIG}" = x ; then
if test x"${gpgme_config_prefix}" != x ; then
fi
use_gpgrt_config=""
- if test x"${GPGME_CONFIG}" = x -a x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
+ if test x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
if $GPGRT_CONFIG gpgme --exists; then
GPGME_CONFIG="$GPGRT_CONFIG gpgme"
AC_MSG_NOTICE([Use gpgrt-config as gpgme-config])
dnl Test for libgpgme and define GPGME_PTHREAD_CFLAGS
dnl and GPGME_PTHREAD_LIBS.
dnl
-AC_DEFUN([AM_PATH_GPGME_PTHREAD],
-[ AC_REQUIRE([_AM_PATH_GPGME_CONFIG])dnl
+AC_DEFUN([AM_PATH_GPGME_PTHREAD],[
+ AC_OBSOLETE([$0], [; use AM_PATH_GPGME instead to use GPGME_CFLAGS and GPGME_LIBS])dnl
+ AC_REQUIRE([_AM_PATH_GPGME_CONFIG])dnl
tmp=ifelse([$1], ,1:0.4.2,$1)
if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
req_gpgme_api=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\1/'`
AC_MSG_CHECKING(for GPGME pthread - version >= $min_gpgme_version)
ok=no
if test "$GPGME_CONFIG" != "no" ; then
- if `$GPGME_CONFIG --thread=pthread 2> /dev/null` ; then
- req_major=`echo $min_gpgme_version | \
+ req_major=`echo $min_gpgme_version | \
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
- req_minor=`echo $min_gpgme_version | \
+ req_minor=`echo $min_gpgme_version | \
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
- req_micro=`echo $min_gpgme_version | \
+ req_micro=`echo $min_gpgme_version | \
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
- if test "$gpgme_version_major" -gt "$req_major"; then
+ if test "$gpgme_version_major" -gt "$req_major"; then
ok=yes
- else
+ else
if test "$gpgme_version_major" -eq "$req_major"; then
- if test "$gpgme_version_minor" -gt "$req_minor"; then
- ok=yes
- else
- if test "$gpgme_version_minor" -eq "$req_minor"; then
- if test "$gpgme_version_micro" -ge "$req_micro"; then
- ok=yes
- fi
+ if test "$gpgme_version_minor" -gt "$req_minor"; then
+ ok=yes
+ else
+ if test "$gpgme_version_minor" -eq "$req_minor"; then
+ if test "$gpgme_version_micro" -ge "$req_micro"; then
+ ok=yes
+ fi
+ fi
fi
- fi
fi
- fi
fi
fi
if test $ok = yes; then
# If we have a recent GPGME, we should also check that the
# API is compatible.
if test "$req_gpgme_api" -gt 0 ; then
- tmp=`$GPGME_CONFIG --api-version 2>/dev/null || echo 0`
+ if test -z "$use_gpgrt_config"; then
+ tmp=`$GPGME_CONFIG --api-version 2>/dev/null || echo 0`
+ else
+ tmp=`$GPGME_CONFIG --variable=api_version 2>/dev/null || echo 0`
+ fi
if test "$tmp" -gt 0 ; then
if test "$req_gpgme_api" -ne "$tmp" ; then
ok=no
fi
fi
if test $ok = yes; then
- GPGME_PTHREAD_CFLAGS=`$GPGME_CONFIG --thread=pthread --cflags`
- GPGME_PTHREAD_LIBS=`$GPGME_CONFIG --thread=pthread --libs`
+ GPGME_PTHREAD_CFLAGS=`$GPGME_CONFIG --cflags`
+ GPGME_PTHREAD_LIBS=`$GPGME_CONFIG --libs`
AC_MSG_RESULT(yes)
ifelse([$2], , :, [$2])
_AM_PATH_GPGME_CONFIG_HOST_CHECK
Description: GnuPG Made Easy to access GnuPG
Requires.private: gpg-error, libassuan
Version: @PACKAGE_VERSION@
-Cflags: -I${includedir} @GPGME_CONFIG_CFLAGS@
-Libs: -L${libdir} @GPGME_CONFIG_LIBS@
+Cflags: @GPGME_CONFIG_CFLAGS@
+Libs: @GPGME_CONFIG_LIBS@
URL: https://www.gnupg.org/software/gpgme/index.html
gpg_err_set_errno (0);
nr = strtol (args, &tail, 0);
- if (errno || args == tail || *tail != ' ')
+ if (errno || args == tail)
{
/* The crypto backend does not behave. */
free (import);
if (tail)
*tail = '\0';
- import->fpr = strdup (args);
- if (!import->fpr)
+ if (*args)
{
- free (import);
- return gpg_error_from_syserror ();
+ import->fpr = strdup (args);
+ if (!import->fpr)
+ {
+ free (import);
+ return gpg_error_from_syserror ();
+ }
}
+ else
+ import->fpr = NULL;
*import_status = import;
return 0;
{
gpgme_subkey_t next = subkey->next;
free (subkey->fpr);
+ free (subkey->v5fpr);
free (subkey->curve);
free (subkey->keygrip);
free (subkey->card_number);
/* The error code from ERROR keydb_search. */
gpgme_error_t keydb_search_err;
+ /* The error code from a FAILURE status line or 0. */
+ gpg_error_t failure_code;
+
gpgme_key_t tmp_key;
/* This points to the last uid in tmp_key. */
err = 0;
break;
+ case GPGME_STATUS_FAILURE:
+ opd->failure_code = _gpgme_parse_failure (args);
+ if (opd->failure_code && !strcmp (args, "option-parser")
+ && gpg_err_code (opd->failure_code) == GPG_ERR_GENERAL)
+ err = gpg_error (GPG_ERR_INV_ENGINE);
+ break;
+
case GPGME_STATUS_IMPORT_OK:
case GPGME_STATUS_IMPORT_PROBLEM:
case GPGME_STATUS_IMPORT_RES:
subkey->can_authenticate = 1;
break;
+ case 'r':
+ subkey->can_renc = 1;
+ break;
+
+ case 't':
+ subkey->can_timestamp = 1;
+ break;
+
+ case 'g':
+ subkey->is_group_owned = 1;
+ break;
+
case 'q':
subkey->is_qualified = 1;
break;
finish_key (gpgme_ctx_t ctx, op_data_t opd)
{
gpgme_key_t key = opd->tmp_key;
+ gpgme_subkey_t subkey;
+
+ /* Set the has_foo flags from the subkey capabilities. */
+ if (key)
+ {
+ /* Note that we could have set has_certify always for OpenPGP
+ * but for X.509 a key is often not allowed to certify and thus
+ * we better take it from the subkey capabilities. */
+ for (subkey = key->subkeys; subkey; subkey = subkey->next)
+ {
+ if (subkey->can_encrypt)
+ key->has_encrypt = 1;
+ if (subkey->can_sign)
+ key->has_sign = 1;
+ if (subkey->can_certify)
+ key->has_certify = 1;
+ if (subkey->can_authenticate)
+ key->has_authenticate = 1;
+ }
+ }
opd->tmp_key = NULL;
opd->tmp_uid = NULL;
gpgme_ctx_t ctx = (gpgme_ctx_t) priv;
enum
{
- RT_NONE, RT_SIG, RT_UID, RT_TFS, RT_SUB, RT_PUB, RT_FPR, RT_GRP,
+ RT_NONE, RT_SIG, RT_UID, RT_TFS, RT_SUB, RT_PUB, RT_FPR, RT_FP2, RT_GRP,
RT_SSB, RT_SEC, RT_CRT, RT_CRS, RT_REV, RT_SPK
}
rectype = RT_NONE;
rectype = RT_CRS;
else if (!strcmp (field[0], "fpr") && key)
rectype = RT_FPR;
+ else if (!strcmp (field[0], "fp2") && key)
+ rectype = RT_FP2;
else if (!strcmp (field[0], "grp") && key)
rectype = RT_GRP;
else if (!strcmp (field[0], "uid") && key)
}
break;
+ case RT_FP2:
+ /* Either the SHA256 fingerprint of an X.509 cert or the
+ * alternate fingerprint of a v4 OpenPGP packet. (We take only
+ * the first one). */
+ if (fields >= 10 && field[9] && *field[9])
+ {
+ /* Need to apply it to the last subkey because all subkeys
+ do have fingerprints. */
+ subkey = key->_last_subkey;
+ if (!subkey->v5fpr)
+ {
+ subkey->v5fpr = strdup (field[9]);
+ if (!subkey->v5fpr)
+ return gpg_error_from_syserror ();
+ }
+ /* Note that we don't store a copy in the key object as we
+ * do with the standard fingerprint. */
+ }
+ break;
+
+
case RT_GRP:
/* Field 10 has the keygrip. */
if (fields >= 10 && field[9] && *field[9])
gpgme_error_t err;
void *hook;
op_data_t opd;
- int flags = 0;
TRACE_BEG (DEBUG_CTX, "gpgme_op_keylist_start", ctx,
"pattern=%s, secret_only=%i", pattern, secret_only);
if (err)
return TRACE_ERR (err);
- if (ctx->offline)
- flags |= GPGME_ENGINE_FLAG_OFFLINE;
-
err = _gpgme_engine_op_keylist (ctx->engine, pattern, secret_only,
- ctx->keylist_mode, flags);
+ ctx->keylist_mode);
return TRACE_ERR (err);
}
gpgme_error_t err;
void *hook;
op_data_t opd;
- int flags = 0;
TRACE_BEG (DEBUG_CTX, "gpgme_op_keylist_ext_start", ctx,
"secret_only=%i, reserved=0x%x", secret_only, reserved);
if (err)
return TRACE_ERR (err);
- if (ctx->offline)
- flags |= GPGME_ENGINE_FLAG_OFFLINE;
-
err = _gpgme_engine_op_keylist_ext (ctx->engine, pattern, secret_only,
- reserved, ctx->keylist_mode,
- flags);
+ reserved, ctx->keylist_mode);
return TRACE_ERR (err);
}
gpgme_error_t
gpgme_op_keylist_end (gpgme_ctx_t ctx)
{
+ void *hook;
+ op_data_t opd;
+ gpg_error_t err;
+
TRACE (DEBUG_CTX, "gpgme_op_keylist_end", ctx, "");
if (!ctx)
return gpg_error (GPG_ERR_INV_VALUE);
- return 0;
+ err = _gpgme_op_data_lookup (ctx, OPDATA_KEYLIST, &hook, -1, NULL);
+ opd = hook;
+ if (!err && opd && opd->failure_code)
+ err = opd->failure_code;
+
+ return err;
}
\f
gpgme_op_receive_keys;
gpgme_op_receive_keys_start;
+ gpgme_op_verify_ext;
+ gpgme_op_verify_ext_start;
+
local:
*;
ti->length = len;
}
+ if (ti->length > ti->nhdr && (ti->nhdr + ti->length) < ti->length)
+ return -1; /* Integer overflow. */
+
*buffer = (void*)buf;
*size = length;
return 0;
return 0;
}
+/* Dummy function - see w32-util.c for the actual code. */
+int
+_gpgme_set_get_inst_type (const char *value)
+{
+ (void)value;
+ return 0; /* Posix installation type is fixed. */
+}
+
+
/* Find an executable program in the colon seperated paths. */
static char *
walk_path_str (const char *path_str, const char *pgm)
/* On apple, especially when started through gpgme-json via
the browser interface we should look into some additional
fallback paths. */
- const char *additional_path = "/usr/local/bin:/usr/local/MacGPG2/bin";
+ const char *additional_path
+ = "/usr/local/bin:/usr/local/MacGPG2/bin:/opt/homebrew/bin";
if (!ret)
{
ret = walk_path_str (additional_path, pgm);
if (gpgme_signers_count (ctx)
&& signatures + inv_signers != gpgme_signers_count (ctx))
{
- /* In this case at least one signatures was not created perhaps
+ /* In this case at least one signature was not created perhaps
due to a bad passphrase etc. Thus the entire message is
broken and should not be used. We add the already created
signatures to the invalid signers list and thus this case can
}
args = tail;
+ /* strtol has been used wrongly here. We can't change this anymore
+ * but we now take care of the 0x1f class which would otherwise let
+ * us run into an error. */
sig->sig_class = strtol (args, &tail, 0);
+ if (!errno && args != tail && sig->sig_class == 1
+ && (*tail == 'F' || *tail == 'f'))
+ {
+ tail++;
+ sig->sig_class = 131; /* Arbitrary unused value in rfc4880. */
+ }
sig->class = sig->sig_class;
sig->_obsolete_class = sig->sig_class;
if (errno || args == tail || *tail != ' ')
static gpgme_error_t
sign_start (gpgme_ctx_t ctx, int synchronous, gpgme_data_t plain,
- gpgme_data_t sig, gpgme_sig_mode_t mode)
+ gpgme_data_t sig, gpgme_sig_mode_t flags)
{
gpgme_error_t err;
if (err)
return err;
- if (mode != GPGME_SIG_MODE_NORMAL && mode != GPGME_SIG_MODE_DETACH
- && mode != GPGME_SIG_MODE_CLEAR)
+ if (flags & ~(GPGME_SIG_MODE_DETACH
+ |GPGME_SIG_MODE_CLEAR
+ |GPGME_SIG_MODE_ARCHIVE))
return gpg_error (GPG_ERR_INV_VALUE);
if (!plain)
_gpgme_engine_set_status_handler (ctx->engine, sign_status_handler,
ctx);
- return _gpgme_engine_op_sign (ctx->engine, plain, sig, mode, ctx->use_armor,
+ return _gpgme_engine_op_sign (ctx->engine, plain, sig, flags, ctx->use_armor,
ctx->use_textmode, ctx->include_certs,
ctx /* FIXME */);
}
/* Sign the plaintext PLAIN and store the signature in SIG. */
gpgme_error_t
gpgme_op_sign_start (gpgme_ctx_t ctx, gpgme_data_t plain, gpgme_data_t sig,
- gpgme_sig_mode_t mode)
+ gpgme_sig_mode_t flags)
{
gpg_error_t err;
TRACE_BEG (DEBUG_CTX, "gpgme_op_sign_start", ctx,
- "plain=%p, sig=%p, mode=%i", plain, sig, mode);
+ "plain=%p, sig=%p, flags=%i", plain, sig, flags);
if (!ctx)
return TRACE_ERR (gpg_error (GPG_ERR_INV_VALUE));
- err = sign_start (ctx, 0, plain, sig, mode);
+ err = sign_start (ctx, 0, plain, sig, flags);
return TRACE_ERR (err);
}
/* Sign the plaintext PLAIN and store the signature in SIG. */
gpgme_error_t
gpgme_op_sign (gpgme_ctx_t ctx, gpgme_data_t plain, gpgme_data_t sig,
- gpgme_sig_mode_t mode)
+ gpgme_sig_mode_t flags)
{
gpgme_error_t err;
TRACE_BEG (DEBUG_CTX, "gpgme_op_sign", ctx,
- "plain=%p, sig=%p, mode=%i", plain, sig, mode);
+ "plain=%p, sig=%p, flags=%i", plain, sig, flags);
if (!ctx)
return TRACE_ERR (gpg_error (GPG_ERR_INV_VALUE));
- err = sign_start (ctx, 1, plain, sig, mode);
+ err = sign_start (ctx, 1, plain, sig, flags);
if (!err)
err = _gpgme_wait_one (ctx);
return TRACE_ERR (err);
int _gpgme_set_default_gpg_name (const char *name);
int _gpgme_set_default_gpgconf_name (const char *name);
int _gpgme_set_override_inst_dir (const char *dir);
+int _gpgme_set_get_inst_type (const char *value);
char *_gpgme_get_gpg_path (void);
char *_gpgme_get_gpgconf_path (void);
With TYPE = U for a user ID
K for a key
The RECNO is either the one of the dir record or the one of the uid
- record. OT is the the usual trust letter and only available on K
+ record. OT is the usual trust letter and only available on K
lines. VAL is the calculated validity MC is the marginal trust
counter and only available on U lines CC is the same for the
complete count NAME ist the username and only printed on U
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
+#include <stdint.h>
+
#include "gpgme.h"
const char *_gpgme_get_default_gpgsm_name (void);
const char *_gpgme_get_default_g13_name (void);
const char *_gpgme_get_default_gpgconf_name (void);
+const char *_gpgme_get_default_gpgtar_name (void);
const char *_gpgme_get_default_uisrv_socket (void);
int _gpgme_in_gpg_one_mode (void);
\f
/*-- conversion.c --*/
-/* Make sure to to erase the memory (PTR,LEN). */
+/* Make sure to erase the memory (PTR,LEN). */
void _gpgme_wipememory (void *ptr, size_t len);
/* Concatenate the string S1 with all the following strings up to a
size_t len);
/* Split a string into space delimited fields and remove leading and
- * trailing spaces from each field. A pointer to the each field is
+ * trailing spaces from each field. A pointer to each field is
* stored in ARRAY. Stop splitting at ARRAYSIZE fields. The function
* modifies STRING. The number of parsed fields is returned. */
int _gpgme_split_fields (char *string, char **array, int arraysize);
gpgme_error_t _gpgme_strtoul_field (const char *string, unsigned long *result);
/* Convert STRING into an offset value similar to atoi(). */
-gpgme_off_t _gpgme_string_to_off (const char *string);
+uint64_t _gpgme_string_to_off (const char *string);
/* Parse the string TIMESTAMP into a time_t. The string may either be
seconds since Epoch or in the ISO 8601 format like
case GPGME_STATUS_UNEXPECTED:
opd->only_newsig_seen = 0;
if (!sig)
- return gpg_error (GPG_ERR_GENERAL);
+ return gpg_error (GPG_ERR_BAD_DATA);
sig->status = gpg_error (GPG_ERR_NO_DATA);
break;
static gpgme_error_t
-verify_start (gpgme_ctx_t ctx, int synchronous, gpgme_data_t sig,
- gpgme_data_t signed_text, gpgme_data_t plaintext)
+verify_start (gpgme_ctx_t ctx, int synchronous, gpgme_verify_flags_t flags,
+ gpgme_data_t sig, gpgme_data_t signed_text,
+ gpgme_data_t plaintext)
{
gpgme_error_t err;
if (!sig)
return gpg_error (GPG_ERR_NO_DATA);
- return _gpgme_engine_op_verify (ctx->engine, sig, signed_text, plaintext,
- ctx);
+ return _gpgme_engine_op_verify (ctx->engine, flags, sig, signed_text,
+ plaintext, ctx);
}
-/* Decrypt ciphertext CIPHER and make a signature verification within
- CTX and store the resulting plaintext in PLAIN. */
+/* Old version of gpgme_op_verify_ext_start without FLAGS. */
gpgme_error_t
gpgme_op_verify_start (gpgme_ctx_t ctx, gpgme_data_t sig,
gpgme_data_t signed_text, gpgme_data_t plaintext)
{
+ return gpgme_op_verify_ext_start (ctx, 0, sig, signed_text, plaintext);
+}
+
+
+/* Old version of gpgme_op_verify_ext without FLAGS. */
+gpgme_error_t
+gpgme_op_verify (gpgme_ctx_t ctx, gpgme_data_t sig, gpgme_data_t signed_text,
+ gpgme_data_t plaintext)
+{
+ return gpgme_op_verify_ext (ctx, 0, sig, signed_text, plaintext);
+}
+
+\f
+/* Decrypt ciphertext CIPHER and make a signature verification within
+ CTX and store the resulting plaintext in PLAIN. */
+gpgme_error_t
+gpgme_op_verify_ext_start (gpgme_ctx_t ctx, gpgme_verify_flags_t flags,
+ gpgme_data_t sig, gpgme_data_t signed_text,
+ gpgme_data_t plaintext)
+{
gpg_error_t err;
TRACE_BEG (DEBUG_CTX, "gpgme_op_verify_start", ctx,
- "sig=%p, signed_text=%p, plaintext=%p",
- sig, signed_text, plaintext);
+ "flags=0x%x, sig=%p, signed_text=%p, plaintext=%p",
+ flags, sig, signed_text, plaintext);
if (!ctx)
return TRACE_ERR (gpg_error (GPG_ERR_INV_VALUE));
- err = verify_start (ctx, 0, sig, signed_text, plaintext);
+ err = verify_start (ctx, 0, flags, sig, signed_text, plaintext);
return TRACE_ERR (err);
}
/* Decrypt ciphertext CIPHER and make a signature verification within
CTX and store the resulting plaintext in PLAIN. */
gpgme_error_t
-gpgme_op_verify (gpgme_ctx_t ctx, gpgme_data_t sig, gpgme_data_t signed_text,
- gpgme_data_t plaintext)
+gpgme_op_verify_ext (gpgme_ctx_t ctx, gpgme_verify_flags_t flags,
+ gpgme_data_t sig, gpgme_data_t signed_text,
+ gpgme_data_t plaintext)
{
gpgme_error_t err;
TRACE_BEG (DEBUG_CTX, "gpgme_op_verify", ctx,
- "sig=%p, signed_text=%p, plaintext=%p",
- sig, signed_text, plaintext);
+ "flags=0x%x, sig=%p, signed_text=%p, plaintext=%p",
+ flags, sig, signed_text, plaintext);
if (!ctx)
return TRACE_ERR (gpg_error (GPG_ERR_INV_VALUE));
- err = verify_start (ctx, 1, sig, signed_text, plaintext);
+ err = verify_start (ctx, 1, flags, sig, signed_text, plaintext);
if (!err)
err = _gpgme_wait_one (ctx);
return TRACE_ERR (err);
WSAStartup (0x202, &wsadat);
}
+
+ /* We want gpgrt's gettext to always output UTF-8. */
+ gettext_use_utf8 (1);
#endif
_gpgme_debug_subsystem_init ();
}
-/* Check that the the version of the library is at minimum the
+/* Check that the version of the library is at minimum the
requested one and return the version string; return NULL if the
condition is not met. If a NULL is passed to this function, no
check is done and the version string is simply returned.
/* Catch-22: We need to get at least the debug subsystem ready
before using the trace facility. If we won't the trace would
- automagically initialize the debug system with out the locks
+ automagically initialize the debug system without the locks
being initialized and missing the assuan log level setting. */
TRACE (DEBUG_INIT, "gpgme_check_version", NULL,
"req_version=%s, VERSION=%s",
VALUE "FileDescription", "GPGME - GnuPG Made Easy\0"
VALUE "FileVersion", "@LIBGPGME_LT_CURRENT@.@LIBGPGME_LT_AGE@.@LIBGPGME_LT_REVISION@.@BUILD_REVISION@\0"
VALUE "InternalName", "gpgme\0"
- VALUE "LegalCopyright", "Copyright © 2001-2021 g10 Code GmbH\0"
+ VALUE "LegalCopyright", "Copyright © 2001-2023 g10 Code GmbH\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "gpgme.dll\0"
VALUE "PrivateBuild", "\0"
TRACE_END (dbg_help, "]");
}
- /* COUNT is used to stop the lop as soon as possible. */
+ /* COUNT is used to stop the loop as soon as possible. */
for (n = count, i = 0; i < npollfds && n; i++)
{
j = pollfds_map[i];
/* The context of an associated writer object or NULL. */
struct writer_context_s *writer;
- /* A notification handler. Noet that we current support only one
+ /* A notification handler. Note that we currently support only one
* callback per fd. */
struct {
_gpgme_close_notify_handler_t handler;
else
{
/* Check whether the shutdown triggered the error -
- no need to to print a warning in this case. */
+ no need to print a warning in this case. */
if ( ctx->error_code == WSAECONNABORTED
|| ctx->error_code == WSAECONNRESET)
{
/* The writer does use a simple buffering strategy so that we are
- informed about write errors as soon as possible (i. e. with the the
- next call to the write function. */
+ informed about write errors as soon as possible (i.e. with the
+ next call to the write function). */
static DWORD CALLBACK
writer (void *arg)
{
/* Set a close notification callback which is called right after FD
- * has been closed but before its slot (ie. the FD number) is being
+ * has been closed but before its slot (i.e. the FD number) is being
* released. The HANDLER may thus use the provided value of the FD
* but it may not pass it to any I/O functions. Note: Only the last
* handler set for an FD is used. */
# define GNUPG_REGKEY_3 "Software\\GnuPG"
#endif
+/* Installation type constants. */
+#define INST_TYPE_GPG4WIN 1
+#define INST_TYPE_GPGDESK 2
+
+/* Relative name parts for different installation types. */
+#define INST_TYPE_GPG4WIN_DIR "\\..\\..\\GnuPG\\bin"
+#define INST_TYPE_GPGDESK_DIR "\\..\\GnuPG\\bin"
+
+
+
+
DEFINE_STATIC_LOCK (get_path_lock);
/* The module handle of this DLL. If we are linked statically,
- dllmain does not exists and thus the value of my_hmodule will be
+ dllmain does not exist and thus the value of my_hmodule will be
NULL. The effect is that a GetModuleFileName always returns the
file name of the DLL or executable which contains the gpgme code. */
static HMODULE my_hmodule;
/* These variables store the malloced name of alternative default
- binaries. The are set only once by gpgme_set_global_flag. */
+ binaries. They are set only once by gpgme_set_global_flag. */
static char *default_gpg_name;
static char *default_gpgconf_name;
/* If this variable is not NULL the value is assumed to be the
}
-/* Return a malloced wide char string from an UTF-8 encoded input
+/* Return a malloced wide char string from a UTF-8 encoded input
string STRING. Caller must free this value. On failure returns
NULL; caller may use GetLastError to get the actual error number.
Calling this function with STRING set to NULL is not defined. */
}
+/* Used by gpgme_set_global_flag to set the installation type.
+ * VALUE is a string interpreted as integer with this meaning:
+ * 0 = standard
+ * 1 = Gpg4win 4 style (INST_TYPE_GPG4WIN)
+ * 2 = GnuPG (VS-)Desktop style (INST_TYPE_GPGDESK)
+ * If VALUE is NULL, nothing is changed. The return value is the
+ * previous value.
+ */
+int
+_gpgme_set_get_inst_type (const char *value)
+{
+ static int inst_type;
+ int previous_type;
+
+ previous_type = inst_type;
+ if (value)
+ inst_type = atoi (value);
+ return previous_type;
+}
+
+
/* Return the full file name of the GPG binary. This function is used
iff gpgconf was not found and thus it can be assumed that gpg2 is
not installed. This function is only called by get_gpgconf_item
}
+/* Helper for _gpgme_get_gpgconf_path. */
+static char *
+find_version_file (const char *inst_dir)
+{
+ char *fname;
+
+ fname = _gpgme_strconcat (inst_dir, "\\..\\", "VERSION.sig", NULL);
+ if (fname && !_gpgme_access (fname, F_OK))
+ {
+ fname[strlen(fname)-4] = 0;
+ if (!_gpgme_access (fname, F_OK))
+ return fname;
+ }
+ free (fname);
+ /* Check the case that a binary in gnupg/bin uses libgpgme. */
+ fname = _gpgme_strconcat (inst_dir, "\\..\\..\\", "VERSION.sig", NULL);
+ if (fname && !_gpgme_access (fname, F_OK))
+ {
+ fname[strlen(fname)-4] = 0;
+ if (!_gpgme_access (fname, F_OK))
+ return fname;
+ }
+ free (fname);
+ return NULL;
+}
+
+
/* This function is only called by get_gpgconf_item and may not be
called concurrently. */
char *
{
char *gpgconf = NULL;
const char *inst_dir, *name;
+ int inst_type;
+ char *dir = NULL;
name = default_gpgconf_name? get_basename(default_gpgconf_name):"gpgconf.exe";
- /* 1. Try to find gpgconf.exe in the installation directory of gpgme. */
inst_dir = _gpgme_get_inst_dir ();
- if (inst_dir)
+ inst_type = _gpgme_set_get_inst_type (NULL);
+
+ /* 0.0. If no installation type has been explicitly requested guess
+ * one by looking at files used by the installation type. */
+ if (inst_dir && !inst_type)
+ {
+ gpgrt_stream_t fp;
+ char buffer[128];
+ int n;
+
+ free (dir);
+ dir = find_version_file (inst_dir);
+ if (dir && (fp = gpgrt_fopen (dir, "r")))
+ {
+ n = gpgrt_fread (buffer, 1, 128, fp);
+ if (n > 10)
+ {
+ buffer[n-1] = 0;
+ if (strstr (buffer, "GnuPG") && strstr (buffer, "Desktop"))
+ inst_type = INST_TYPE_GPGDESK;
+ }
+ gpgrt_fclose (fp);
+ }
+ }
+
+ /* 0.1. If an installation type was requested or guessed try to find
+ * gpgconf.exe depending on that installation type. */
+ if (inst_dir
+ && (inst_type == INST_TYPE_GPG4WIN || inst_type == INST_TYPE_GPGDESK))
+ {
+ free (dir);
+ dir = _gpgme_strconcat
+ (inst_dir,
+ inst_type == INST_TYPE_GPG4WIN? INST_TYPE_GPG4WIN_DIR
+ /* */ : INST_TYPE_GPGDESK_DIR,
+ NULL);
+ gpgconf = find_program_in_dir (dir, name);
+ }
+
+ /* 1. Try to find gpgconf.exe in the installation directory of gpgme. */
+ if (!gpgconf && inst_dir)
{
gpgconf = find_program_in_dir (inst_dir, name);
}
/* 3. Try to find gpgconf.exe using the Windows registry. */
if (!gpgconf)
{
- char *dir;
-
+ free (dir);
dir = read_w32_registry_string (NULL,
GNUPG_REGKEY_2,
"Install Directory");
}
}
if (dir)
- {
- gpgconf = find_program_in_dir (dir, name);
- free (dir);
- }
+ gpgconf = find_program_in_dir (dir, name);
}
/* 4. Try to find gpgconf.exe from Gpg4win below CSIDL_PROGRAM_FILES. */
gpgconf = find_program_at_standard_place ("GNU\\GnuPG\\gpgconf.exe");
}
- /* 5. Try to find gpgconf.exe relative to us. */
+ /* 5. Try to find gpgconf.exe relative to us as Gpg4win installs it. */
if (!gpgconf && inst_dir)
{
- char *dir = _gpgme_strconcat (inst_dir, "\\..\\..\\GnuPG\\bin", NULL);
+ free (dir);
+ dir = _gpgme_strconcat (inst_dir, INST_TYPE_GPG4WIN_DIR, NULL);
gpgconf = find_program_in_dir (dir, name);
+ }
+
+ /* 6. Try to find gpgconf.exe relative to us as GnuPG VSD installs it. */
+ if (!gpgconf && inst_dir)
+ {
free (dir);
+ dir = _gpgme_strconcat (inst_dir, INST_TYPE_GPGDESK_DIR, NULL);
+ gpgconf = find_program_in_dir (dir, name);
}
- /* 5. Print a debug message if not found. */
+ /* Print a debug message if not found. */
if (!gpgconf)
_gpgme_debug (NULL, DEBUG_ENGINE, -1, NULL, NULL, NULL,
"_gpgme_get_gpgconf_path: '%s' not found",name);
+ free (dir);
return gpgconf;
}
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
run-receive-keys$(EXEEXT)
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
am__tty_colors_dummy = \
mgn= red= grn= lgn= blu= brg= std=; \
am__color_tests=no
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
echo "$${col}$$dashes$${std}"; \
test "$$failed" -eq 0; \
else :; fi
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
pubdemo.asc secdemo.asc cipher-1.asc cipher-2.asc \
cipher-3.asc cipher-no-sig.asc \
geheim.txt pubkey-1.asc seckey-1.asc pinentry $(private_keys) \
- gpg.conf.in
+ gpg.conf.in ownertrust.txt
BUILT_SOURCES = gpg.conf gpg-agent.conf pubring-stamp \
gpg-sample.stamp
-$(TESTS_ENVIRONMENT) gpgconf --kill all
$(MKDIR_P) ./private-keys-v1.d
for k in $(private_keys); do \
- cp $(srcdir)/$$k private-keys-v1.d/$$k.key; \
- done
+ cp $(srcdir)/$$k private-keys-v1.d/$$k.key; \
+ done
echo x > ./gpg-sample.stamp
pubring-stamp: $(srcdir)/pubdemo.asc gpg-sample.stamp
$(TESTS_ENVIRONMENT) $(GPG) --batch --no-permission-warning \
- --import $(srcdir)/pubdemo.asc
+ --import $(srcdir)/pubdemo.asc
-$(TESTS_ENVIRONMENT) $(GPG) --batch --no-permission-warning \
--import $(srcdir)/secdemo.asc
+ -$(TESTS_ENVIRONMENT) $(GPG) --batch --no-permission-warning \
+ --import-ownertrust $(srcdir)/ownertrust.txt
+ -$(TESTS_ENVIRONMENT) gpgconf --kill all
echo x > ./pubring-stamp
gpg.conf: $(srcdir)/gpg.conf.in
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
noinst_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_4)
subdir = tests/gpg
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
am__tty_colors_dummy = \
mgn= red= grn= lgn= blu= brg= std=; \
am__color_tests=no
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
pubdemo.asc secdemo.asc cipher-1.asc cipher-2.asc \
cipher-3.asc cipher-no-sig.asc \
geheim.txt pubkey-1.asc seckey-1.asc pinentry $(private_keys) \
- gpg.conf.in
+ gpg.conf.in ownertrust.txt
BUILT_SOURCES = gpg.conf gpg-agent.conf pubring-stamp \
gpg-sample.stamp
echo "$${col}$$dashes$${std}"; \
test "$$failed" -eq 0; \
else :; fi
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
-$(TESTS_ENVIRONMENT) gpgconf --kill all
$(MKDIR_P) ./private-keys-v1.d
for k in $(private_keys); do \
- cp $(srcdir)/$$k private-keys-v1.d/$$k.key; \
- done
+ cp $(srcdir)/$$k private-keys-v1.d/$$k.key; \
+ done
echo x > ./gpg-sample.stamp
pubring-stamp: $(srcdir)/pubdemo.asc gpg-sample.stamp
$(TESTS_ENVIRONMENT) $(GPG) --batch --no-permission-warning \
- --import $(srcdir)/pubdemo.asc
+ --import $(srcdir)/pubdemo.asc
-$(TESTS_ENVIRONMENT) $(GPG) --batch --no-permission-warning \
--import $(srcdir)/secdemo.asc
+ -$(TESTS_ENVIRONMENT) $(GPG) --batch --no-permission-warning \
+ --import-ownertrust $(srcdir)/ownertrust.txt
+ -$(TESTS_ENVIRONMENT) gpgconf --kill all
echo x > ./pubring-stamp
gpg.conf: $(srcdir)/gpg.conf.in
--- /dev/null
+# List of assigned trustvalues, created Mi 08 Feb 2023 09:52:04 CET
+# (Use "gpg --import-ownertrust" to restore them)
+A0FF4590BB6122EDEF6E3C542D727CC768697734:6:
#include "t-support.h"
\f
+static const char normal_signed_message[] =
+"-----BEGIN PGP MESSAGE-----\n"
+"\n"
+"owGbwMvMwCSoW1RzPCOz3IRxjXQSR0lqcYleSUWJTZOvjVdpcYmCu1+oQmaJIleH\n"
+"GwuDIBMDGysTSIqBi1MApi+nlGGuwDeHao53HBr+FoVGP3xX+kvuu9fCMJvl6IOf\n"
+"y1kvP4y+8D5a11ang0udywsA\n"
+"=Crq6\n"
+"-----END PGP MESSAGE-----\n";
+
+
static void
check_verify_result (gpgme_verify_result_t result, unsigned int summary,
- const char *fpr, gpgme_error_t status)
+ const char *fpr, gpgme_error_t status, int validity)
{
gpgme_signature_t sig;
__FILE__, __LINE__);
exit (1);
}
- if (sig->validity != GPGME_VALIDITY_UNKNOWN)
+ if (sig->validity != validity)
{
- fprintf (stderr, "%s:%i: Unexpected validity: %i\n",
- __FILE__, __LINE__, sig->validity);
+ fprintf (stderr, "%s:%i: Unexpected validity: "
+ "want=%i have=%i\n",
+ __FILE__, __LINE__, validity, sig->validity);
exit (1);
}
if (gpgme_err_code (sig->validity_reason) != GPG_ERR_NO_ERROR)
}
print_data (out);
verify_result = gpgme_op_verify_result (ctx);
- check_verify_result (verify_result, 0,
+ check_verify_result (verify_result, GPGME_SIGSUM_VALID|GPGME_SIGSUM_GREEN,
"A0FF4590BB6122EDEF6E3C542D727CC768697734",
- GPG_ERR_NO_ERROR);
+ GPG_ERR_NO_ERROR, GPGME_VALIDITY_FULL);
gpgme_data_release (in);
gpgme_data_release (out);
+
+ /* Checking a signed, but not encrypted message. */
+ err = gpgme_data_new_from_mem (&in, normal_signed_message, strlen (normal_signed_message), 0);
+ fail_if_err (err);
+ err = gpgme_data_new (&out);
+ fail_if_err (err);
+ err = gpgme_op_decrypt_verify (ctx, in, out);
+ /* should have returned "no data" because the message is not encrypted */
+ if (gpgme_err_code (err) != GPG_ERR_NO_DATA)
+ {
+ fprintf (stderr, "%s:%i: Unexpected result of gpgme_op_decrypt_verify: %s\n",
+ __FILE__, __LINE__, gpgme_strerror (err));
+ }
+ verify_result = gpgme_op_verify_result (ctx);
+ check_verify_result (verify_result, GPGME_SIGSUM_VALID|GPGME_SIGSUM_GREEN,
+ "A0FF4590BB6122EDEF6E3C542D727CC768697734",
+ GPG_ERR_NO_ERROR, GPGME_VALIDITY_FULL);
+
+ gpgme_data_release (in);
+ gpgme_data_release (out);
+
gpgme_release (ctx);
return 0;
}
#include "t-support.h"
+static const char *test_key = "-----BEGIN PGP PUBLIC KEY BLOCK-----\n"
+"\n"
+"mDMEY+NyJBYJKwYBBAHaRw8BAQdA4VfyC5sa6T3xVSus55LjyqQetFuE1shtu/71\n"
+"pHLxg8W0KFNpZ24gbWUgKGRlbW8ga2V5KSA8c2lnbi1tZUBleGFtcGxlLm5ldD6I\n"
+"kwQTFgoAOxYhBPPHuA+qbf/jPmLyYnJg+w/EtKy+BQJj43IkAhsDBQsJCAcCAiIC\n"
+"BhUKCQgLAgQWAgMBAh4HAheAAAoJEHJg+w/EtKy+26gBAMhaI/lYA9BK35525kQT\n"
+"OhvpQwgThJxQp8AOQk3UMgkGAP0ahV9lFXwv9ZnoeHEhjECsNpAFbj9fxBlzNmMZ\n"
+"Z92+AA==\n"
+"=Koy1\n"
+"-----END PGP PUBLIC KEY BLOCK-----\n";
+static const char *test_key_fpr = "F3C7B80FAA6DFFE33E62F2627260FB0FC4B4ACBE";
+
+static void
+import_key (const char *keydata)
+{
+ gpgme_ctx_t ctx;
+ gpgme_error_t err;
+ gpgme_data_t in;
+
+ err = gpgme_new (&ctx);
+ fail_if_err (err);
+
+ err = gpgme_data_new_from_mem (&in, keydata, strlen(keydata), 0);
+ fail_if_err (err);
+
+ err = gpgme_op_import (ctx, in);
+ fail_if_err (err);
+
+ gpgme_data_release (in);
+ gpgme_release (ctx);
+}
+
+static void
+delete_key (const char *fpr)
+{
+ gpgme_ctx_t ctx;
+ gpgme_error_t err;
+ gpgme_key_t key = NULL;
+
+ err = gpgme_new (&ctx);
+ fail_if_err (err);
+
+ err = gpgme_get_key (ctx, fpr, &key, 0);
+ fail_if_err (err);
+
+ err = gpgme_op_delete_ext (ctx, key, GPGME_DELETE_FORCE);
+ fail_if_err (err);
+
+ gpgme_key_unref (key);
+ gpgme_release (ctx);
+}
+
static void
flush_data (gpgme_data_t dh)
{
{
const char *signer_fpr = "A0FF4590BB6122EDEF6E3C542D727CC768697734"; /* Alpha Test */
const char *signer_keyid = signer_fpr + strlen(signer_fpr) - 16;
- const char *key_fpr = "D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2"; /* Bravo Test */
(void)argc;
(void)argv;
init_gpgme (GPGME_PROTOCOL_OpenPGP);
- sign_key (key_fpr, signer_fpr);
- verify_key_signature (key_fpr, signer_keyid);
+ import_key (test_key);
+ sign_key (test_key_fpr, signer_fpr);
+ verify_key_signature (test_key_fpr, signer_keyid);
+ delete_key (test_key_fpr);
return 0;
}
exit (1);
}
+ gpgme_key_unref (key);
+ gpgme_release (ctx);
return 0;
}
key->chain_id);
exit (1);
}
- if (key->owner_trust != GPGME_VALIDITY_UNKNOWN)
+ if (key->owner_trust != GPGME_VALIDITY_ULTIMATE)
{
fprintf (stderr, "Key has unexpected owner trust: %i\n",
key->owner_trust);
fprintf (stderr, "First user ID unexpectedly invalid\n");
exit (1);
}
- if (key->uids && key->uids->validity != GPGME_VALIDITY_UNKNOWN)
+ if (key->uids && key->uids->validity != GPGME_VALIDITY_ULTIMATE)
{
fprintf (stderr, "First user ID has unexpectedly validity: %i\n",
key->uids->validity);
exit (1);
}
if (key->uids && key->uids->next
- && key->uids->next->validity != GPGME_VALIDITY_UNKNOWN)
+ && key->uids->next->validity != GPGME_VALIDITY_ULTIMATE)
{
fprintf (stderr, "Second user ID has unexpectedly validity: %i\n",
key->uids->next->validity);
exit (1);
}
if (key->uids && key->uids->next && key->uids->next->next
- && key->uids->next->next->validity != GPGME_VALIDITY_UNKNOWN)
+ && key->uids->next->next->validity != GPGME_VALIDITY_ULTIMATE)
{
fprintf (stderr, "Third user ID has unexpectedly validity: %i\n",
key->uids->next->next->validity);
key->chain_id);
exit (1);
}
- if (key->owner_trust != GPGME_VALIDITY_UNKNOWN)
+ if (key->owner_trust != GPGME_VALIDITY_ULTIMATE)
{
fprintf (stderr, "Key has unexpected owner trust: %i\n",
key->owner_trust);
fprintf (stderr, "First user ID unexpectedly invalid\n");
exit (1);
}
- if (key->uids && key->uids->validity != GPGME_VALIDITY_UNKNOWN)
+ if (key->uids && key->uids->validity != GPGME_VALIDITY_ULTIMATE)
{
fprintf (stderr, "First user ID has unexpectedly validity: %i\n",
key->uids->validity);
exit (1);
}
if (key->uids && key->uids->next
- && key->uids->next->validity != GPGME_VALIDITY_UNKNOWN)
+ && key->uids->next->validity != GPGME_VALIDITY_ULTIMATE)
{
fprintf (stderr, "Second user ID has unexpectedly validity: %i\n",
key->uids->next->validity);
exit (1);
}
if (key->uids && key->uids->next && key->uids->next->next
- && key->uids->next->next->validity != GPGME_VALIDITY_UNKNOWN)
+ && key->uids->next->next->validity != GPGME_VALIDITY_ULTIMATE)
{
fprintf (stderr, "Third user ID has unexpectedly validity: %i\n",
key->uids->next->next->validity);
const char *name;
const char *comment;
const char *email;
+ gpgme_validity_t validity;
} uid[3];
int n_subkeys;
+ gpgme_validity_t owner_trust;
void (*misc_check)(struct key_info_s *keyinfo, gpgme_key_t key);
};
struct key_info_s keys[] =
{
{ "A0FF4590BB6122EDEF6E3C542D727CC768697734", "6AE6D7EE46A871F8",
- { { "Alfa Test", "demo key", "alfa@example.net" },
- { "Alpha Test", "demo key", "alpha@example.net" },
- { "Alice", "demo key", NULL } }, 1 },
+ { { "Alfa Test", "demo key", "alfa@example.net",
+ GPGME_VALIDITY_ULTIMATE },
+ { "Alpha Test", "demo key", "alpha@example.net",
+ GPGME_VALIDITY_ULTIMATE },
+ { "Alice", "demo key", NULL, GPGME_VALIDITY_ULTIMATE } }, 1,
+ GPGME_VALIDITY_ULTIMATE },
{ "D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2", "5381EA4EE29BA37F",
{ { "Bob", "demo key", NULL },
{ "Bravo Test", "demo key", "bravo@example.net" } }, 1 },
{ { "Victor Test", "demo key", "victor@example.org" } }, 1 },
{ "E8D6C90B683B0982BD557A99DEF0F7B8EC67DBDE", "D7FBB421FD6E27F6",
{ { "Whisky Test", "demo key", "whisky@example.net" } }, 3,
- check_whisky },
+ GPGME_VALIDITY_UNKNOWN, check_whisky },
{ "04C1DF62EFA0EBB00519B06A8979A6C5567FB34A", "5CC6F87F41E408BE",
{ { "XRay Test", "demo key", "xray@example.net" } }, 1 },
{ "ED9B316F78644A58D042655A9EEF34CD4B11B25F", "5ADFD255F7B080AD",
key->chain_id);
exit (1);
}
- if (key->owner_trust != GPGME_VALIDITY_UNKNOWN)
+ if (key->owner_trust != keys[i].owner_trust)
{
- fprintf (stderr, "Key has unexpected owner trust: %i\n",
- key->owner_trust);
+ fprintf (stderr, "Key `%s' has unexpected owner trust: %i\n",
+ keys[i].uid[0].name, key->owner_trust);
exit (1);
}
fprintf (stderr, "First user ID unexpectedly invalid\n");
exit (1);
}
- if (key->uids && key->uids->validity != GPGME_VALIDITY_UNKNOWN)
+ if (key->uids && key->uids->validity != keys[i].uid[0].validity)
{
- fprintf (stderr, "First user ID has unexpectedly validity: %i\n",
- key->uids->validity);
+ fprintf (stderr, "First user ID `%s' has unexpectedly validity: %i\n",
+ key->uids->name, key->uids->validity);
exit (1);
}
if (key->uids && key->uids->signatures)
exit (1);
}
if (key->uids && key->uids->next
- && key->uids->next->validity != GPGME_VALIDITY_UNKNOWN)
+ && key->uids->next->validity != keys[i].uid[1].validity)
{
fprintf (stderr, "Second user ID has unexpectedly validity: %i\n",
key->uids->next->validity);
exit (1);
}
if (key->uids && key->uids->next && key->uids->next->next
- && key->uids->next->next->validity != GPGME_VALIDITY_UNKNOWN)
+ && key->uids->next->next->validity != keys[i].uid[2].validity)
{
fprintf (stderr, "Third user ID has unexpectedly validity: %i\n",
key->uids->next->next->validity);
#include <gpgme.h>
+#ifndef PGM
+#define PGM "unknown program; define PGM before including t-support.h"
+#endif
+
#ifndef DIM
#define DIM(v) (sizeof(v)/sizeof((v)[0]))
#endif
fwrite (buf, ret, 1, stdout);
if (ret < 0)
fail_if_err (gpgme_err_code_from_errno (errno));
+#undef BUF_SIZE
+}
+
+
+void
+check_data (gpgme_data_t dh, const char *expected)
+{
+#define BUF_SIZE 512
+ char buf[BUF_SIZE + 1];
+ int expectedlen;
+ int ret;
+
+ if (!expected)
+ {
+ fprintf (stderr, "%s:%i: Expected data must not be NULL.\n",
+ PGM, __LINE__);
+ exit (1);
+ }
+ expectedlen = strlen (expected);
+ if (expectedlen > BUF_SIZE)
+ {
+ fprintf (stderr, "%s:%i: Size of expected data (%d) is greater than "
+ "BUF_SIZE (%d).\n", PGM, __LINE__, expectedlen, BUF_SIZE);
+ exit (1);
+ }
+
+ ret = gpgme_data_seek (dh, 0, SEEK_SET);
+ if (ret)
+ fail_if_err (gpgme_err_code_from_errno (errno));
+ if ((ret = gpgme_data_read (dh, buf, BUF_SIZE)) < 0)
+ fail_if_err (gpgme_err_code_from_errno (errno));
+ buf[ret] = 0;
+ if (ret != expectedlen || strncmp (buf, expected, expectedlen))
+ {
+ fprintf (stderr, "%s:%i: Got unexpected data\n", PGM, __LINE__);
+ fprintf (stderr, "Expected data:\n---\n%s---\n", expected);
+ fprintf (stderr, "Actual data:\n---\n%s---\n", buf);
+ exit (1);
+ }
+#undef BUF_SIZE
}
"=6+AK\n"
"-----END PGP MESSAGE-----\n";
+/* A clear-signed message followed by a public key block. */
+static const char clearsigned_plus_key_block[] =
+"-----BEGIN PGP SIGNED MESSAGE-----\n"
+"Hash: SHA256\n"
+"\n"
+"bar\n"
+"-----BEGIN PGP SIGNATURE-----\n"
+"\n"
+"iQEzBAEBCAAdFiEE0MFuEqOl54V/b8HTD1vkKiPJHOMFAmTBMWMACgkQD1vkKiPJ\n"
+"HONzdQf/aty0AjMuKRbI7s9oN2fTMzKglnopBBsJH/ozravsHt3NzW6qeI+JN8Ga\n"
+"yMgwu7991di2q3+dHzLylL/uLxomh3TQnQTsak3kfzVJt8fKgY3lpFZamgpGQlme\n"
+"r0xioe5ylaIipItt06XIeZMnwrS+dfDhAW1G6x98nSOCN+SlqmrPpVrf2+J3hLXq\n"
+"4oRZExYD3WIQAOl5a6LBJ7nKxal7Y+ZzLNKo1Fdv0BSeaClVXTeUFCivZiw0zcEI\n"
+"eguDK8fk7kx3MDuwQxV3+juWaMDCNNVV4QBIMZjXusv2i7vHkfTWrPy+m+CmkIJz\n"
+"MEHj/W7d30v2HqNYtrwOSmMhv1+wOg==\n"
+"=vlPl\n"
+"-----END PGP SIGNATURE-----\n"
+"-----BEGIN PGP PUBLIC KEY BLOCK-----\n"
+"\n"
+"mDMEYg5XKRYJKwYBBAHaRw8BAQdAoiviwSeMJbcbE8t9mHgrSqgT5F4LQyLzUckU\n"
+"E6Sx5aiIgwQgFgoAKxYhBIHOfS+ZLzoe/uBZMa7qmxcSWxd7BQJiQaR2DR0BbGlu\n"
+"ZTEKbGluZTIACgkQruqbFxJbF3uT1wD/UzkNkMwK/kDHxT4xxwY6OeRZdeZauGtv\n"
+"vKnvcyM16V0A/0IEIlQmSKyp/OEFZy45VBunJZJkReRMS9pA0Y+ouBgKtB9KYW5l\n"
+"IERvZSA8amFuZS5kb2VAZXhhbXBsZS5uZXQ+iJoEExYKAEICGwMFCQAosgcFCwkI\n"
+"BwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAFiEEgc59L5kvOh7+4FkxruqbFxJbF3sF\n"
+"AmLyVRUACgkQruqbFxJbF3s/cgEAqwbErDdIhKudkFrk8wY6VkNBDf4jf2SGyDz1\n"
+"BL9pJt0A/0IkhlpHU6rtqylJuuCFpLmKbFlXdXdrCoEwisFrY8QJtAZibGFibGGI\n"
+"nAQTFgoARAIbAwUJACiyBwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgBYhBIHO\n"
+"fS+ZLzoe/uBZMa7qmxcSWxd7BQJi8lUWAhkBAAoJEK7qmxcSWxd7H+UBAP/y1phn\n"
+"ojnKvF72jm7uaLN+mTVKjt71nxPi8TvBASC1AP0bt5vAiAqlCOYACvm2mg8pw18f\n"
+"1YXXOBkcbTLUimkyD7g4BGIOVykSCisGAQQBl1UBBQEBB0DkecMMBdYTabaTqAbV\n"
+"GlWplsf68h+uv8N78t0bEjVmGAMBCAeIfgQYFgoAJhYhBIHOfS+ZLzoe/uBZMa7q\n"
+"mxcSWxd7BQJiDlcpAhsMBQkAKLIHAAoJEK7qmxcSWxd7GgsBAMvJUPcHIs4dHlqS\n"
+"o2P7NfJvkFpqFUeGaP8upALUiijRAQDz13cloc0StTGn5uWPZCGQkzn8MzX+yiPZ\n"
+"mxnjHfafCg==\n"
+"=+jHe\n"
+"-----END PGP PUBLIC KEY BLOCK-----\n";
+
static void
check_result (gpgme_verify_result_t result, int no_of_sigs, int skip_sigs,
unsigned int summary, const char *fpr,
- gpgme_error_t status, int notation)
+ gpgme_error_t status, int notation, int validity)
{
gpgme_signature_t sig;
int n;
PGM, __LINE__, skip_sigs);
exit (1);
}
- if (sig->validity != GPGME_VALIDITY_UNKNOWN)
+ if (sig->validity != validity)
{
- fprintf (stderr, "%s:%i:sig-%d: Unexpected validity: %i\n",
- PGM, __LINE__, skip_sigs, sig->validity);
+ fprintf (stderr, "%s:%i:sig-%d: Unexpected validity: "
+ "want=%i have=%i\n",
+ PGM, __LINE__, skip_sigs, validity, sig->validity);
exit (1);
}
if (gpgme_err_code (sig->validity_reason) != GPG_ERR_NO_ERROR)
err = gpgme_op_verify (ctx, sig, text, NULL);
fail_if_err (err);
result = gpgme_op_verify_result (ctx);
- check_result (result, 1, 0, 0, "A0FF4590BB6122EDEF6E3C542D727CC768697734",
- GPG_ERR_NO_ERROR, 1);
+ check_result (result, 1, 0, GPGME_SIGSUM_VALID|GPGME_SIGSUM_GREEN,
+ "A0FF4590BB6122EDEF6E3C542D727CC768697734",
+ GPG_ERR_NO_ERROR, 1, GPGME_VALIDITY_FULL);
/* Checking a manipulated message. */
gpgme_data_release (text);
fail_if_err (err);
result = gpgme_op_verify_result (ctx);
check_result (result, 1, 0, GPGME_SIGSUM_RED, "2D727CC768697734",
- GPG_ERR_BAD_SIGNATURE, 0);
+ GPG_ERR_BAD_SIGNATURE, 0, GPGME_VALIDITY_UNKNOWN);
- /* Checking a valid message. Bu that one has a second signature
+ /* Checking a valid message. But that one has a second signature
* made by an unknown key. */
gpgme_data_release (text);
gpgme_data_release (sig);
err = gpgme_op_verify (ctx, sig, text, NULL);
fail_if_err (err);
result = gpgme_op_verify_result (ctx);
- check_result (result, 2, 0, 0,
+ check_result (result, 2, 0, GPGME_SIGSUM_VALID|GPGME_SIGSUM_GREEN,
"A0FF4590BB6122EDEF6E3C542D727CC768697734",
- GPG_ERR_NO_ERROR, 1);
+ GPG_ERR_NO_ERROR, 1, GPGME_VALIDITY_FULL);
check_result (result, 2, 1, GPGME_SIGSUM_KEY_MISSING,
"36EC2A70C6426EB0FCE5BB4DF91C98F049D4204C",
- GPG_ERR_NO_PUBKEY, 0);
+ GPG_ERR_NO_PUBKEY, 0, GPGME_VALIDITY_UNKNOWN);
/* Checking a normal signature. */
err = gpgme_op_verify (ctx, sig, NULL, text);
fail_if_err (err);
result = gpgme_op_verify_result (ctx);
- check_result (result, 1, 0, 0, "A0FF4590BB6122EDEF6E3C542D727CC768697734",
- GPG_ERR_NO_ERROR, 0);
+ check_result (result, 1, 0, GPGME_SIGSUM_VALID|GPGME_SIGSUM_GREEN,
+ "A0FF4590BB6122EDEF6E3C542D727CC768697734",
+ GPG_ERR_NO_ERROR, 0, GPGME_VALIDITY_FULL);
/* Checking an invalid message. */
exit (1);
}
+ gpgme_data_release (sig);
+ gpgme_data_release (text);
+
+ /* Checking clear-signed message followed by public key block. */
+ err = gpgme_data_new_from_mem (&sig, clearsigned_plus_key_block,
+ strlen (clearsigned_plus_key_block), 0);
+ fail_if_err (err);
+ err = gpgme_data_new (&text);
+ fail_if_err (err);
+ err = gpgme_op_verify (ctx, sig, NULL, text);
+ fail_if_err (err);
+ result = gpgme_op_verify_result (ctx);
+ check_result (result, 1, 0, GPGME_SIGSUM_KEY_MISSING,
+ "D0C16E12A3A5E7857F6FC1D30F5BE42A23C91CE3",
+ GPG_ERR_NO_PUBKEY, 0, GPGME_VALIDITY_UNKNOWN);
+ check_data (text, "bar\n");
gpgme_data_release (sig);
gpgme_data_release (text);
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
cms-keylist$(EXEEXT) cms-decrypt$(EXEEXT)
subdir = tests/gpgsm
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
am__tty_colors_dummy = \
mgn= red= grn= lgn= blu= brg= std=; \
am__color_tests=no
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
echo "$${col}$$dashes$${std}"; \
test "$$failed" -eq 0; \
else :; fi
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
--import $(top_srcdir)/tests/gpg/pubdemo.asc
-$(TESTS_ENVIRONMENT) $(GPG) --batch --no-permission-warning \
--import $(top_srcdir)/tests/gpg/secdemo.asc
+ -$(TESTS_ENVIRONMENT) gpgconf --kill all
echo x > ./pubring-stamp
gpg.conf:
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
noinst_PROGRAMS = $(am__EXEEXT_1)
subdir = tests/json
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
am__tty_colors_dummy = \
mgn= red= grn= lgn= blu= brg= std=; \
am__color_tests=no
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
echo "$${col}$$dashes$${std}"; \
test "$$failed" -eq 0; \
else :; fi
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
--import $(top_srcdir)/tests/gpg/pubdemo.asc
-$(TESTS_ENVIRONMENT) $(GPG) --batch --no-permission-warning \
--import $(top_srcdir)/tests/gpg/secdemo.asc
+ -$(TESTS_ENVIRONMENT) gpgconf --kill all
echo x > ./pubring-stamp
gpg.conf:
if (!check_gpg_version ("2.1.18"))
{
- /* Lets not break too much or have to test all combinations */
+ /* Let us not break too much or have to test all combinations */
printf ("Testsuite skipped. Minimum GnuPG version (2.1.18) "
"not found.\n");
exit(0);
-# Makefile.in generated by automake 1.16.3 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2020 Free Software Foundation, Inc.
+# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
noinst_PROGRAMS = $(am__EXEEXT_1) t-command$(EXEEXT)
subdir = tests/opassuan
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
+ $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \
$(top_srcdir)/m4/ax_gcc_func_attribute.m4 \
$(top_srcdir)/m4/ax_pkg_swig.m4 \
$(top_srcdir)/m4/ax_python_devel.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt.m4 \
- $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/m4/python.m4 $(top_srcdir)/m4/qt5.m4 \
+ $(top_srcdir)/m4/qt6.m4 $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
am__tty_colors_dummy = \
mgn= red= grn= lgn= blu= brg= std=; \
am__color_tests=no
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CSCOPE = @CSCOPE@
+CTAGS = @CTAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLED_LANGUAGES = @ENABLED_LANGUAGES@
+ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@
GPGME_CONFIG_HOST = @GPGME_CONFIG_HOST@
GPGME_CONFIG_LIBS = @GPGME_CONFIG_LIBS@
GPGME_CPP_CFLAGS = @GPGME_CPP_CFLAGS@
-GPGME_QTTEST_CFLAGS = @GPGME_QTTEST_CFLAGS@
-GPGME_QTTEST_LIBS = @GPGME_QTTEST_LIBS@
-GPGME_QT_CFLAGS = @GPGME_QT_CFLAGS@
-GPGME_QT_LIBS = @GPGME_QT_LIBS@
+GPGME_QT5TEST_CFLAGS = @GPGME_QT5TEST_CFLAGS@
+GPGME_QT5TEST_LIBS = @GPGME_QT5TEST_LIBS@
+GPGME_QT5_CFLAGS = @GPGME_QT5_CFLAGS@
+GPGME_QT5_LIBS = @GPGME_QT5_LIBS@
+GPGME_QT6TEST_CFLAGS = @GPGME_QT6TEST_CFLAGS@
+GPGME_QT6TEST_LIBS = @GPGME_QT6TEST_LIBS@
+GPGME_QT6_CFLAGS = @GPGME_QT6_CFLAGS@
+GPGME_QT6_LIBS = @GPGME_QT6_LIBS@
GPGRT_CONFIG = @GPGRT_CONFIG@
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
GRAPHVIZ = @GRAPHVIZ@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
+HAVE_CXX17 = @HAVE_CXX17@
HAVE_DOT = @HAVE_DOT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
echo "$${col}$$dashes$${std}"; \
test "$$failed" -eq 0; \
else :; fi
-
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
" --unwrap remove only the encryption layer\n"
" --large-buffers use large I/O buffer\n"
" --sensitive mark data objects as sensitive\n"
+ " --archive extract files from an encrypted archive\n"
+ " --directory DIR extract the files into the directory DIR\n"
" --diagnostics print diagnostics\n"
+ " --direct-file-io pass FILE instead of stream with content of FILE to backend\n"
, stderr);
exit (ex);
}
int export_session_key = 0;
const char *override_session_key = NULL;
const char *request_origin = NULL;
+ const char *directory = NULL;
int no_symkey_cache = 0;
int ignore_mdc_error = 0;
int raw_output = 0;
int large_buffers = 0;
int sensitive = 0;
int diagnostics = 0;
+ int direct_file_io = 0;
if (argc)
{ argc--; argv++; }
raw_output = 1;
argc--; argv++;
}
+ else if (!strcmp (*argv, "--archive"))
+ {
+ flags |= GPGME_DECRYPT_ARCHIVE;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--directory"))
+ {
+ argc--; argv++;
+ if (!argc)
+ show_usage (1);
+ directory = *argv;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--direct-file-io"))
+ {
+ direct_file_io = 1;
+ argc--; argv++;
+ }
else if (!strncmp (*argv, "--", 2))
show_usage (1);
if (argc < 1 || argc > 2)
show_usage (1);
- fp_in = fopen (argv[0], "rb");
- if (!fp_in)
+ if (!direct_file_io)
{
- err = gpgme_error_from_syserror ();
- fprintf (stderr, PGM ": can't open `%s': %s\n",
- argv[0], gpgme_strerror (err));
- exit (1);
+ fp_in = fopen (argv[0], "rb");
+ if (!fp_in)
+ {
+ err = gpgme_error_from_syserror ();
+ fprintf (stderr, PGM ": can't open `%s': %s\n",
+ argv[0], gpgme_strerror (err));
+ exit (1);
+ }
}
init_gpgme (protocol);
}
}
- err = gpgme_data_new_from_stream (&in, fp_in);
+ if (direct_file_io)
+ err = gpgme_data_new (&in);
+ else
+ err = gpgme_data_new_from_stream (&in, fp_in);
if (err)
{
fprintf (stderr, PGM ": error allocating data object: %s\n",
gpgme_strerror (err));
exit (1);
}
+ if (direct_file_io)
+ {
+ err = gpgme_data_set_file_name (in, argv[0]);
+ if (err)
+ {
+ fprintf (stderr, PGM ": error setting file name (in): %s\n",
+ gpgme_strerror (err));
+ exit (1);
+ }
+ }
err = gpgme_data_new (&out);
if (err)
gpgme_strerror (err));
exit (1);
}
+ if (directory && (flags & GPGME_DECRYPT_ARCHIVE))
+ {
+ err = gpgme_data_set_file_name (out, directory);
+ if (err)
+ {
+ fprintf (stderr, PGM ": error setting file name (out): %s\n",
+ gpgme_strerror (err));
+ exit (1);
+ }
+ }
if (large_buffers)
{
err = gpgme_data_set_flag (out, "io-buffer-size", "1000000");
static int verbose;
+static int cancel_after_progress;
static char *
static void
progress_cb (void *opaque, const char *what, int type, int current, int total)
{
- (void)opaque;
+ static int count;
+ gpgme_ctx_t ctx = opaque;
+ gpg_error_t err;
+
(void)type;
if (total)
else
fprintf (stderr, "progress for '%s' %d\n", nonnull(what), current);
fflush (stderr);
+ count++;
+ if (cancel_after_progress && count > cancel_after_progress)
+ {
+ err = gpgme_cancel_async (ctx);
+ if (err)
+ fprintf (stderr, "gpgme_cancel failed: %s <%s>\n",
+ gpg_strerror (err), gpg_strsource (err));
+ else
+ {
+ fprintf (stderr, "operation canceled\n");
+ cancel_after_progress = 0;
+ }
+ }
}
static void
-print_result (gpgme_encrypt_result_t result)
+print_encrypt_result (gpgme_encrypt_result_t result)
{
gpgme_invalid_key_t invkey;
+ printf ("\nEncryption results\n");
for (invkey = result->invalid_recipients; invkey; invkey = invkey->next)
printf ("Encryption key `%s' not used: %s <%s>\n",
nonnull (invkey->fpr),
}
+static void
+print_sign_result (gpgme_sign_result_t result)
+{
+ gpgme_invalid_key_t invkey;
+ gpgme_new_signature_t sig;
+
+ printf ("\nSigning results\n");
+ for (invkey = result->invalid_signers; invkey; invkey = invkey->next)
+ printf ("Signing key `%s' not used: %s <%s>\n",
+ nonnull (invkey->fpr),
+ gpg_strerror (invkey->reason), gpg_strsource (invkey->reason));
+
+ for (sig = result->signatures; sig; sig = sig->next)
+ {
+ printf ("Key fingerprint: %s\n", nonnull (sig->fpr));
+ printf ("Signature type : %d\n", sig->type);
+ printf ("Public key algo: %d\n", sig->pubkey_algo);
+ printf ("Hash algo .....: %d\n", sig->hash_algo);
+ printf ("Creation time .: %ld\n", sig->timestamp);
+ printf ("Sig class .....: 0x%u\n", sig->sig_class);
+ }
+}
+
+
static int
show_usage (int ex)
fputs ("usage: " PGM " [options] FILE\n\n"
"Options:\n"
" --verbose run in verbose mode\n"
+ " --sign sign data before encryption\n"
" --status print status lines from the backend\n"
" --progress print progress info\n"
" --openpgp use the OpenPGP protocol (default)\n"
" --key NAME encrypt to key NAME\n"
" --keystring NAMES encrypt to ';' delimited NAMES\n"
" --throw-keyids use this option\n"
+ " --always-trust use this option\n"
" --no-symkey-cache disable the use of that cache\n"
" --wrap assume input is valid OpenPGP message\n"
" --symmetric encrypt symmetric (OpenPGP only)\n"
+ " --archive encrypt given file or directory into an archive\n"
+ " --directory DIR switch to directory DIR before encrypting into an archive\n"
+ " --output FILE write output to FILE instead of stdout\n"
+ " --diagnostics print diagnostics\n"
+ " --cancel N cancel after N progress lines\n"
, stderr);
exit (ex);
}
gpgme_ctx_t ctx;
gpgme_protocol_t protocol = GPGME_PROTOCOL_OpenPGP;
gpgme_data_t in, out;
- gpgme_encrypt_result_t result;
+ gpgme_encrypt_result_t encrypt_result;
+ gpgme_sign_result_t sign_result;
int print_status = 0;
int print_progress = 0;
int use_loopback = 0;
gpgme_key_t keys[10+1];
int keycount = 0;
char *keystring = NULL;
+ const char *directory = NULL;
+ const char *output = NULL;
int i;
- gpgme_encrypt_flags_t flags = GPGME_ENCRYPT_ALWAYS_TRUST;
+ gpgme_encrypt_flags_t flags = 0;
gpgme_off_t offset;
int no_symkey_cache = 0;
+ int diagnostics = 0;
+ int sign = 0;
if (argc)
{ argc--; argv++; }
verbose = 1;
argc--; argv++;
}
+ else if (!strcmp (*argv, "--sign"))
+ {
+ sign = 1;
+ argc--; argv++;
+ }
else if (!strcmp (*argv, "--status"))
{
print_status = 1;
flags |= GPGME_ENCRYPT_THROW_KEYIDS;
argc--; argv++;
}
+ else if (!strcmp (*argv, "--always-trust"))
+ {
+ flags |= GPGME_ENCRYPT_ALWAYS_TRUST;
+ argc--; argv++;
+ }
else if (!strcmp (*argv, "--wrap"))
{
flags |= GPGME_ENCRYPT_WRAP;
no_symkey_cache = 1;
argc--; argv++;
}
+ else if (!strcmp (*argv, "--archive"))
+ {
+ flags |= GPGME_ENCRYPT_ARCHIVE;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--directory"))
+ {
+ argc--; argv++;
+ if (!argc)
+ show_usage (1);
+ directory = *argv;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--output"))
+ {
+ argc--; argv++;
+ if (!argc)
+ show_usage (1);
+ output = *argv;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--diagnostics"))
+ {
+ diagnostics = 1;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--cancel"))
+ {
+ argc--; argv++;
+ if (!argc)
+ show_usage (1);
+ cancel_after_progress = atoi (*argv);
+ argc--; argv++;
+ }
else if (!strncmp (*argv, "--", 2))
show_usage (1);
gpgme_set_status_cb (ctx, status_cb, NULL);
gpgme_set_ctx_flag (ctx, "full-status", "1");
}
- if (print_progress)
- gpgme_set_progress_cb (ctx, progress_cb, NULL);
+ if (print_progress || cancel_after_progress)
+ gpgme_set_progress_cb (ctx, progress_cb, ctx);
if (use_loopback)
{
gpgme_set_pinentry_mode (ctx, GPGME_PINENTRY_MODE_LOOPBACK);
}
keys[i] = NULL;
- err = gpgme_data_new_from_file (&in, *argv, 1);
- if (err)
+ if (flags & GPGME_ENCRYPT_ARCHIVE)
{
- fprintf (stderr, PGM ": error reading `%s': %s\n",
- *argv, gpg_strerror (err));
- exit (1);
- }
- offset = gpgme_data_seek (in, 0, SEEK_END);
- if (offset == (gpgme_off_t)(-1))
- {
- err = gpg_error_from_syserror ();
- fprintf (stderr, PGM ": error seeking `%s': %s\n",
- *argv, gpg_strerror (err));
- exit (1);
+ const char *path = *argv;
+ err = gpgme_data_new_from_mem (&in, path, strlen (path), 0);
+ fail_if_err (err);
+ if (directory)
+ {
+ err = gpgme_data_set_file_name (in, directory);
+ fail_if_err (err);
+ }
}
- if (gpgme_data_seek (in, 0, SEEK_SET) == (gpgme_off_t)(-1))
+ else
{
- err = gpg_error_from_syserror ();
- fprintf (stderr, PGM ": error seeking `%s': %s\n",
- *argv, gpg_strerror (err));
- exit (1);
- }
- {
- char numbuf[50];
- char *p;
-
- p = numbuf + sizeof numbuf;
- *--p = 0;
- do
- {
- *--p = '0' + (offset % 10);
- offset /= 10;
- }
- while (offset);
- err = gpgme_data_set_flag (in, "size-hint", p);
- if (err)
+ err = gpgme_data_new_from_file (&in, *argv, 1);
+ if (err)
+ {
+ fprintf (stderr, PGM ": error reading `%s': %s\n",
+ *argv, gpg_strerror (err));
+ exit (1);
+ }
+ offset = gpgme_data_seek (in, 0, SEEK_END);
+ if (offset == (gpgme_off_t)(-1))
+ {
+ err = gpg_error_from_syserror ();
+ fprintf (stderr, PGM ": error seeking `%s': %s\n",
+ *argv, gpg_strerror (err));
+ exit (1);
+ }
+ if (gpgme_data_seek (in, 0, SEEK_SET) == (gpgme_off_t)(-1))
+ {
+ err = gpg_error_from_syserror ();
+ fprintf (stderr, PGM ": error seeking `%s': %s\n",
+ *argv, gpg_strerror (err));
+ exit (1);
+ }
{
- fprintf (stderr, PGM ": error setting size-hint for `%s': %s\n",
- *argv, gpg_strerror (err));
- exit (1);
+ char numbuf[50];
+ char *p;
+
+ p = numbuf + sizeof numbuf;
+ *--p = 0;
+ do
+ {
+ *--p = '0' + (offset % 10);
+ offset /= 10;
+ }
+ while (offset);
+ err = gpgme_data_set_flag (in, "size-hint", p);
+ if (err)
+ {
+ fprintf (stderr, PGM ": error setting size-hint for `%s': %s\n",
+ *argv, gpg_strerror (err));
+ exit (1);
+ }
}
- }
+ }
err = gpgme_data_new (&out);
fail_if_err (err);
+ if (output)
+ {
+ err = gpgme_data_set_file_name (out, output);
+ fail_if_err (err);
+ }
+
+ if (sign)
+ err = gpgme_op_encrypt_sign_ext (ctx, keycount ? keys : NULL, keystring,
+ flags, in, out);
+ else
+ err = gpgme_op_encrypt_ext (ctx, keycount ? keys : NULL, keystring,
+ flags, in, out);
+
+ if (diagnostics)
+ {
+ gpgme_data_t diag;
+ gpgme_error_t diag_err;
- err = gpgme_op_encrypt_ext (ctx, keycount ? keys : NULL, keystring,
- flags, in, out);
- result = gpgme_op_encrypt_result (ctx);
- if (result)
- print_result (result);
+ gpgme_data_new (&diag);
+ diag_err = gpgme_op_getauditlog (ctx, diag, GPGME_AUDITLOG_DIAG);
+ if (diag_err)
+ {
+ fprintf (stderr, PGM ": getting diagnostics failed: %s\n",
+ gpgme_strerror (diag_err));
+ }
+ else
+ {
+ fputs ("Begin Diagnostics:\n", stdout);
+ print_data (diag);
+ fputs ("End Diagnostics.\n", stdout);
+ }
+ gpgme_data_release (diag);
+ }
+
+ sign_result = gpgme_op_sign_result (ctx);
+ if (sign_result)
+ print_sign_result (sign_result);
+ encrypt_result = gpgme_op_encrypt_result (ctx);
+ if (encrypt_result)
+ print_encrypt_result (encrypt_result);
if (err)
{
fprintf (stderr, PGM ": encrypting failed: %s\n", gpg_strerror (err));
exit (1);
}
- fputs ("Begin Output:\n", stdout);
- print_data (out);
- fputs ("End Output.\n", stdout);
+ if (!output)
+ {
+ fputs ("Begin Output:\n", stdout);
+ print_data (out);
+ fputs ("End Output.\n", stdout);
+ }
gpgme_data_release (out);
gpgme_data_release (in);
" --verbose run in verbose mode\n"
" --openpgp use the OpenPGP protocol (default)\n"
" --cms use the CMS protocol\n"
+ " --offline use offline mode\n"
" --key-origin use the specified key origin\n"
" --url import from given URLs\n"
" -0 URLs are delimited by a nul\n"
gpgme_protocol_t protocol = GPGME_PROTOCOL_OpenPGP;
char *import_filter = NULL;
char *key_origin = NULL;
+ int offline = 0;
if (argc)
{ argc--; argv++; }
key_origin = strdup (*argv);
argc--; argv++;
}
+ else if (!strcmp (*argv, "--offline"))
+ {
+ offline = 1;
+ argc--; argv++;
+ }
else if (!strncmp (*argv, "--", 2))
show_usage (1);
fail_if_err (err);
gpgme_set_protocol (ctx, protocol);
+ gpgme_set_offline (ctx, offline);
+
if (import_filter)
{
err = gpgme_set_ctx_flag (ctx, "import-filter", import_filter);
" --tofu use GPGME_KEYLIST_MODE_TOFU\n"
" --sig-notations use GPGME_KEYLIST_MODE_SIG_NOTATIONS\n"
" --ephemeral use GPGME_KEYLIST_MODE_EPHEMERAL\n"
+ " --v5fpr use GPGME_KEYLIST_MODE_V5FPR\n"
" --validate use GPGME_KEYLIST_MODE_VALIDATE\n"
" --import import all keys\n"
" --offline use offline mode\n"
+ " --no-trust-check disable automatic trust database check\n"
" --from-file list all keys in the given file\n"
" --from-wkd list key from a web key directory\n"
" --require-gnupg required at least the given GnuPG version\n"
gpgme_protocol_t protocol = GPGME_PROTOCOL_OpenPGP;
int only_secret = 0;
int offline = 0;
+ int no_trust_check = 0;
int from_file = 0;
int from_wkd = 0;
gpgme_data_t data = NULL;
mode |= GPGME_KEYLIST_MODE_WITH_SECRET;
argc--; argv++;
}
+ else if (!strcmp (*argv, "--v5fpr"))
+ {
+ mode |= GPGME_KEYLIST_MODE_WITH_V5FPR;
+ argc--; argv++;
+ }
else if (!strcmp (*argv, "--import"))
{
import = 1;
offline = 1;
argc--; argv++;
}
+ else if (!strcmp (*argv, "--no-trust-check"))
+ {
+ no_trust_check = 1;
+ argc--; argv++;
+ }
else if (!strcmp (*argv, "--from-file"))
{
from_file = 1;
gpgme_set_offline (ctx, offline);
+ if (no_trust_check)
+ {
+ err = gpgme_set_ctx_flag (ctx, "no-auto-check-trustdb", "1");
+ fail_if_err (err);
+ }
+
if (trust_model)
{
err = gpgme_set_ctx_flag (ctx, "trust-model", trust_model);
int nsigs;
printf ("keyid : %s\n", key->subkeys?nonnull (key->subkeys->keyid):"?");
- printf ("caps : %s%s%s%s\n",
+ printf ("can_cap : %s%s%s%s\n",
key->can_encrypt? "e":"",
key->can_sign? "s":"",
key->can_certify? "c":"",
key->can_authenticate? "a":"");
+ printf ("has_cap : %s%s%s%s\n",
+ key->has_encrypt? "e":"",
+ key->has_sign? "s":"",
+ key->has_certify? "c":"",
+ key->has_authenticate? "a":"");
printf ("flags :%s%s%s%s%s%s%s%s\n",
key->secret? " secret":"",
key->revoked? " revoked":"",
for (nsub=0; subkey; subkey = subkey->next, nsub++)
{
printf ("fpr %2d: %s\n", nsub, nonnull (subkey->fpr));
+ if (subkey->v5fpr)
+ printf ("v5fpr %2d: %s\n", nsub, nonnull (subkey->v5fpr));
if (subkey->keygrip)
printf ("grip %2d: %s\n", nsub, subkey->keygrip);
if (subkey->curve)
printf ("curve %2d: %s\n", nsub, subkey->curve);
- printf ("caps %2d: %s%s%s%s\n",
+ printf ("caps %2d: %s%s%s%s%s%s\n",
nsub,
subkey->can_encrypt? "e":"",
subkey->can_sign? "s":"",
subkey->can_certify? "c":"",
- subkey->can_authenticate? "a":"");
- printf ("flags %2d:%s%s%s%s%s%s%s%s\n",
+ subkey->can_authenticate? "a":"",
+ subkey->can_renc? "r":"",
+ subkey->can_timestamp? "t":"");
+ printf ("flags %2d:%s%s%s%s%s%s%s%s%s\n",
nsub,
subkey->secret? " secret":"",
subkey->revoked? " revoked":"",
subkey->expired? " expired":"",
subkey->disabled? " disabled":"",
subkey->invalid? " invalid":"",
+ subkey->is_group_owned? " group":"",
subkey->is_qualified? " qualified":"",
subkey->is_de_vs? " de-vs":"",
subkey->is_cardkey? " cardkey":"");
" --sender MBOX use MBOX as sender address\n"
" --include-key-block use this option with gpg\n"
" --clear create a clear text signature\n"
+ " --archive create a signed archive with the given file or directory\n"
+ " --directory DIR switch to directory DIR before creating the archive\n"
+ " --output FILE write output to FILE instead of stdout\n"
+ " --diagnostics print diagnostics\n"
, stderr);
exit (ex);
}
gpgme_error_t err;
gpgme_ctx_t ctx;
const char *key_string = NULL;
+ const char *directory = NULL;
+ const char *output = NULL;
gpgme_protocol_t protocol = GPGME_PROTOCOL_OpenPGP;
gpgme_sig_mode_t sigmode = GPGME_SIG_MODE_NORMAL;
gpgme_data_t in, out;
int print_status = 0;
int use_loopback = 0;
int include_key_block = 0;
+ int diagnostics = 0;
const char *sender = NULL;
const char *s;
sigmode = GPGME_SIG_MODE_CLEAR;
argc--; argv++;
}
+ else if (!strcmp (*argv, "--archive"))
+ {
+ sigmode = GPGME_SIG_MODE_ARCHIVE;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--directory"))
+ {
+ argc--; argv++;
+ if (!argc)
+ show_usage (1);
+ directory = *argv;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--output"))
+ {
+ argc--; argv++;
+ if (!argc)
+ show_usage (1);
+ output = *argv;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--diagnostics"))
+ {
+ diagnostics = 1;
+ argc--; argv++;
+ }
else if (!strncmp (*argv, "--", 2))
show_usage (1);
}
}
- err = gpgme_data_new_from_file (&in, *argv, 1);
- if (err)
+ if (sigmode == GPGME_SIG_MODE_ARCHIVE)
{
- fprintf (stderr, PGM ": error reading `%s': %s\n",
- *argv, gpg_strerror (err));
- exit (1);
+ const char *path = *argv;
+ err = gpgme_data_new_from_mem (&in, path, strlen (path), 0);
+ fail_if_err (err);
+ if (directory)
+ {
+ err = gpgme_data_set_file_name (in, directory);
+ fail_if_err (err);
+ }
+ }
+ else
+ {
+ err = gpgme_data_new_from_file (&in, *argv, 1);
+ if (err)
+ {
+ fprintf (stderr, PGM ": error reading `%s': %s\n",
+ *argv, gpg_strerror (err));
+ exit (1);
+ }
}
err = gpgme_data_new (&out);
fail_if_err (err);
+ if (output)
+ {
+ err = gpgme_data_set_file_name (out, output);
+ fail_if_err (err);
+ }
err = gpgme_op_sign (ctx, in, out, sigmode);
result = gpgme_op_sign_result (ctx);
+
+ if (diagnostics)
+ {
+ gpgme_data_t diag;
+ gpgme_error_t diag_err;
+
+ gpgme_data_new (&diag);
+ diag_err = gpgme_op_getauditlog (ctx, diag, GPGME_AUDITLOG_DIAG);
+ if (diag_err)
+ {
+ fprintf (stderr, PGM ": getting diagnostics failed: %s\n",
+ gpgme_strerror (diag_err));
+ }
+ else
+ {
+ fputs ("Begin Diagnostics:\n", stdout);
+ print_data (diag);
+ fputs ("End Diagnostics.\n", stdout);
+ }
+ gpgme_data_release (diag);
+ }
+
if (result)
print_result (result, sigmode);
if (err)
if ((s = gpgme_get_ctx_flag (ctx, "redraw")) && *s)
fputs ("Screen redraw suggested\n", stdout);
- fputs ("Begin Output:\n", stdout);
- print_data (out);
- fputs ("End Output.\n", stdout);
+ if (!output)
+ {
+ fputs ("Begin Output:\n", stdout);
+ print_data (out);
+ fputs ("End Output.\n", stdout);
+ }
gpgme_data_release (out);
gpgme_data_release (in);
" --status print status lines from the backend\n"
" --openpgp use the OpenPGP protocol (default)\n"
" --cms use the CMS protocol\n"
+ " --binary assume binary signature\n"
" --sender MBOX use MBOX as sender address\n"
" --repeat N repeat the operation N times\n"
" --auto-key-retrieve\n"
" --auto-key-import\n"
+ " --archive extract files from a signed archive FILE\n"
+ " --directory DIR extract the files into the directory DIR\n"
+ " --diagnostics print diagnostics\n"
+ " --direct-file-io pass file names instead of streams with content of files to backend\n"
, stderr);
exit (ex);
}
int last_argc = -1;
const char *s;
gpgme_protocol_t protocol = GPGME_PROTOCOL_OpenPGP;
+ gpgme_verify_flags_t flags = 0;
int print_status = 0;
const char *sender = NULL;
+ const char *directory = NULL;
int auto_key_retrieve = 0;
int auto_key_import = 0;
+ gpgme_data_encoding_t encoding = GPGME_DATA_ENCODING_NONE;
+ int diagnostics = 0;
+ int direct_file_io = 0;
int repeats = 1;
int i;
protocol = GPGME_PROTOCOL_CMS;
argc--; argv++;
}
+ else if (!strcmp (*argv, "--binary"))
+ {
+ encoding = GPGME_DATA_ENCODING_BINARY;
+ argc--; argv++;
+ }
else if (!strcmp (*argv, "--sender"))
{
argc--; argv++;
auto_key_import = 1;
argc--; argv++;
}
+ else if (!strcmp (*argv, "--archive"))
+ {
+ flags |= GPGME_VERIFY_ARCHIVE;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--directory"))
+ {
+ argc--; argv++;
+ if (!argc)
+ show_usage (1);
+ directory = *argv;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--diagnostics"))
+ {
+ diagnostics = 1;
+ argc--; argv++;
+ }
+ else if (!strcmp (*argv, "--direct-file-io"))
+ {
+ direct_file_io = 1;
+ argc--; argv++;
+ }
else if (!strncmp (*argv, "--", 2))
show_usage (1);
}
- if (argc < 1 || argc > 2)
+ if (argc < 1 || argc > 2 || (argc > 1 && (flags & GPGME_VERIFY_ARCHIVE)))
show_usage (1);
init_gpgme (protocol);
gpgme_data_t sig = NULL;
FILE *fp_msg = NULL;
gpgme_data_t msg = NULL;
+ gpgme_data_t out = NULL;
gpgme_verify_result_t result;
if (repeats > 1)
printf ("Repeat: %i\n", i);
}
- fp_sig = fopen (argv[0], "rb");
- if (!fp_sig)
- {
- err = gpgme_error_from_syserror ();
- fprintf (stderr, PGM ": can't open `%s': %s\n",
- argv[0], gpgme_strerror (err));
- exit (1);
- }
- if (argc > 1)
+ if (!direct_file_io)
{
- fp_msg = fopen (argv[1], "rb");
- if (!fp_msg)
+ fp_sig = fopen (argv[0], "rb");
+ if (!fp_sig)
{
err = gpgme_error_from_syserror ();
fprintf (stderr, PGM ": can't open `%s': %s\n",
- argv[1], gpgme_strerror (err));
+ argv[0], gpgme_strerror (err));
exit (1);
}
+ if (argc > 1)
+ {
+ fp_msg = fopen (argv[1], "rb");
+ if (!fp_msg)
+ {
+ err = gpgme_error_from_syserror ();
+ fprintf (stderr, PGM ": can't open `%s': %s\n",
+ argv[1], gpgme_strerror (err));
+ exit (1);
+ }
+ }
}
err = gpgme_new (&ctx);
fail_if_err (err);
}
- err = gpgme_data_new_from_stream (&sig, fp_sig);
+ if (direct_file_io)
+ err = gpgme_data_new (&sig);
+ else
+ err = gpgme_data_new_from_stream (&sig, fp_sig);
if (err)
{
fprintf (stderr, PGM ": error allocating data object: %s\n",
gpgme_strerror (err));
exit (1);
}
- if (fp_msg)
+ gpgme_data_set_encoding (sig, encoding);
+ if (direct_file_io)
+ {
+ err = gpgme_data_set_file_name (sig, argv[0]);
+ if (err)
+ {
+ fprintf (stderr, PGM ": error setting file name (sig): %s\n",
+ gpgme_strerror (err));
+ exit (1);
+ }
+ }
+ if (argc > 1)
+ {
+ if (direct_file_io)
+ err = gpgme_data_new (&msg);
+ else
+ err = gpgme_data_new_from_stream (&msg, fp_msg);
+ if (err)
+ {
+ fprintf (stderr, PGM ": error allocating data object: %s\n",
+ gpgme_strerror (err));
+ exit (1);
+ }
+ if (direct_file_io)
+ {
+ err = gpgme_data_set_file_name (msg, argv[1]);
+ if (err)
+ {
+ fprintf (stderr, PGM ": error setting file name (msg): %s\n",
+ gpgme_strerror (err));
+ exit (1);
+ }
+ }
+ }
+
+ if (directory && (flags & GPGME_VERIFY_ARCHIVE))
{
- err = gpgme_data_new_from_stream (&msg, fp_msg);
+ err = gpgme_data_new (&out);
if (err)
{
fprintf (stderr, PGM ": error allocating data object: %s\n",
gpgme_strerror (err));
exit (1);
}
+ err = gpgme_data_set_file_name (out, directory);
+ if (err)
+ {
+ fprintf (stderr, PGM ": error setting file name (out): %s\n",
+ gpgme_strerror (err));
+ exit (1);
+ }
}
- err = gpgme_op_verify (ctx, sig, msg, NULL);
+ err = gpgme_op_verify_ext (ctx, flags, sig, msg, out);
result = gpgme_op_verify_result (ctx);
+
+ if (diagnostics)
+ {
+ gpgme_data_t diag;
+ gpgme_error_t diag_err;
+
+ gpgme_data_new (&diag);
+ diag_err = gpgme_op_getauditlog (ctx, diag, GPGME_AUDITLOG_DIAG);
+ if (diag_err)
+ {
+ fprintf (stderr, PGM ": getting diagnostics failed: %s\n",
+ gpgme_strerror (diag_err));
+ }
+ else
+ {
+ fputs ("Begin Diagnostics:\n", stdout);
+ print_data (diag);
+ fputs ("End Diagnostics.\n", stdout);
+ }
+ gpgme_data_release (diag);
+ }
+
if (result)
print_result (result);
if (err)
exit (1);
}
+ gpgme_data_release (out);
gpgme_data_release (msg);
gpgme_data_release (sig);
"dirmngr-name",
"pinentry-name",
"gpg-wks-client-name",
+ "gpgtar-name",
NULL };
const char *s;
int i;