forked from mirrors/pacman
		
	Compare commits
	
		
			62 Commits
		
	
	
		
			morganamil
			...
			morganamil
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					83838214b7 | ||
| 
						 | 
					4baeb8e40b | ||
| 
						 | 
					18b65ec909 | ||
| 
						 | 
					45ce932fd0 | ||
| 
						 | 
					da4b590bce | ||
| 
						 | 
					0649a66ee5 | ||
| 
						 | 
					6e6d3f18e3 | ||
| 
						 | 
					0a394144b2 | ||
| 
						 | 
					fde59b99e8 | ||
| 
						 | 
					edd57c8b96 | ||
| 
						 | 
					5c75a55c7d | ||
| 
						 | 
					56f1eeef4b | ||
| 
						 | 
					f8c2e59ec5 | ||
| 
						 | 
					16a064701a | ||
| 
						 | 
					86ec26b2d3 | ||
| 
						 | 
					3aa096a74f | ||
| 
						 | 
					bf76b5e89f | ||
| 
						 | 
					ce528a2654 | ||
| 
						 | 
					f996f30163 | ||
| 
						 | 
					2ba08e622b | ||
| 
						 | 
					4856fb53ac | ||
| 
						 | 
					a6b2524762 | ||
| 
						 | 
					2079f6866a | ||
| 
						 | 
					845dadf183 | ||
| 
						 | 
					dfee773364 | ||
| 
						 | 
					c64f898c48 | ||
| 
						 | 
					16a2a79728 | ||
| 
						 | 
					6711d10f96 | ||
| 
						 | 
					36fcff6e13 | ||
| 
						 | 
					3c28c30133 | ||
| 
						 | 
					4c93e63ddf | ||
| 
						 | 
					f69d9b4475 | ||
| 
						 | 
					42fa74e91a | ||
| 
						 | 
					929bad61c0 | ||
| 
						 | 
					00d2b1f902 | ||
| 
						 | 
					7a4fff3310 | ||
| 
						 | 
					8d38746586 | ||
| 
						 | 
					0df44c2e20 | ||
| 
						 | 
					dc91476555 | ||
| 
						 | 
					bad3e13eaa | ||
| 
						 | 
					45e94e2dae | ||
| 
						 | 
					3aa1975c1d | ||
| 
						 | 
					56626816b6 | ||
| 
						 | 
					0f512ae46e | ||
| 
						 | 
					d56e9ed083 | ||
| 
						 | 
					2d190d5a33 | ||
| 
						 | 
					2e23126e2a | ||
| 
						 | 
					18e49f2c97 | ||
| 
						 | 
					0108e2c64e | ||
| 
						 | 
					94d9c2affe | ||
| 
						 | 
					6e9ab43451 | ||
| 
						 | 
					9af4033cad | ||
| 
						 | 
					31ffbc94ca | ||
| 
						 | 
					e9b385a636 | ||
| 
						 | 
					917b67f5d1 | ||
| 
						 | 
					331b277eea | ||
| 
						 | 
					30f9a2e263 | ||
| 
						 | 
					aff12189d8 | ||
| 
						 | 
					332d2a1922 | ||
| 
						 | 
					f91fa546f6 | ||
| 
						 | 
					b4f11d5496 | ||
| 
						 | 
					015cdb21bd | 
@@ -3,4 +3,4 @@
 | 
			
		||||
# This script serves as a trampoline for running scripts which depend on
 | 
			
		||||
# libmakepkg with the libmakepkg within the build tree.
 | 
			
		||||
 | 
			
		||||
LIBRARY=@BUILDDIR@/libmakepkg exec @BASH@ -$- @REAL_PROGPATH@ "$@"
 | 
			
		||||
MAKEPKG_LIBRARY=@BUILDDIR@/libmakepkg exec @BASH@ -$- @REAL_PROGPATH@ "$@"
 | 
			
		||||
 
 | 
			
		||||
@@ -169,7 +169,6 @@ HTML_EXTRA_FILES       =
 | 
			
		||||
HTML_COLORSTYLE_HUE    = 220
 | 
			
		||||
HTML_COLORSTYLE_SAT    = 100
 | 
			
		||||
HTML_COLORSTYLE_GAMMA  = 80
 | 
			
		||||
HTML_TIMESTAMP         = YES
 | 
			
		||||
HTML_DYNAMIC_MENUS     = YES
 | 
			
		||||
HTML_DYNAMIC_SECTIONS  = NO
 | 
			
		||||
HTML_INDEX_NUM_ENTRIES = 100
 | 
			
		||||
@@ -239,7 +238,6 @@ USE_PDFLATEX           = NO
 | 
			
		||||
LATEX_BATCHMODE        = NO
 | 
			
		||||
LATEX_HIDE_INDICES     = NO
 | 
			
		||||
LATEX_BIB_STYLE        = plain
 | 
			
		||||
LATEX_TIMESTAMP        = NO
 | 
			
		||||
LATEX_EMOJI_DIRECTORY  =
 | 
			
		||||
#---------------------------------------------------------------------------
 | 
			
		||||
# Configuration options related to the RTF output
 | 
			
		||||
 
 | 
			
		||||
@@ -336,6 +336,13 @@ function.
 | 
			
		||||
	the optional functions listed below. The packaging stage is run using
 | 
			
		||||
	fakeroot to ensure correct file permissions in the resulting package.
 | 
			
		||||
	All other functions will be run as the user calling makepkg.
 | 
			
		||||
	This function is run inside `$srcdir`.
 | 
			
		||||
 | 
			
		||||
*verify() Function*::
 | 
			
		||||
	An optional `verify()` function can be specified to implement arbitrary
 | 
			
		||||
	source authentication. The function should return a non-zero exit code when
 | 
			
		||||
	verification fails. This function is run before sources are extracted.
 | 
			
		||||
	This function is run inside `$startdir`.
 | 
			
		||||
 | 
			
		||||
*prepare() Function*::
 | 
			
		||||
	An optional `prepare()` function can be specified in which operations to
 | 
			
		||||
@@ -343,16 +350,19 @@ function.
 | 
			
		||||
	function is run after the source extraction and before the `build()`
 | 
			
		||||
	function. The `prepare()` function is skipped when source extraction
 | 
			
		||||
	is skipped.
 | 
			
		||||
	This function is run inside `$srcdir`.
 | 
			
		||||
 | 
			
		||||
*build() Function*::
 | 
			
		||||
	The optional `build()` function is used to compile and/or adjust the source
 | 
			
		||||
	files in preparation to be installed by the `package()` function.
 | 
			
		||||
	This function is run inside `$srcdir`.
 | 
			
		||||
 | 
			
		||||
*check() Function*::
 | 
			
		||||
	An optional `check()` function can be specified in which a package's
 | 
			
		||||
	test-suite may be run. This function is run between the `build()` and
 | 
			
		||||
	`package()` functions. Be sure any exotic commands used are covered by the
 | 
			
		||||
	`checkdepends` array.
 | 
			
		||||
	This function is run inside `$srcdir`.
 | 
			
		||||
 | 
			
		||||
All of the above variables such as `$pkgname` and `$pkgver` are available for
 | 
			
		||||
use in the packaging functions. In addition, makepkg defines the following
 | 
			
		||||
@@ -362,7 +372,6 @@ variables:
 | 
			
		||||
	This contains the directory where makepkg extracts, or copies, all source
 | 
			
		||||
	files.
 | 
			
		||||
+
 | 
			
		||||
All of the packaging functions defined above are run starting inside `$srcdir`
 | 
			
		||||
 | 
			
		||||
*pkgdir*::
 | 
			
		||||
	This contains the directory where makepkg bundles the installed package.
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,6 @@ Current maintainers:
 | 
			
		||||
 | 
			
		||||
* Allan McRae <allan@archlinux.org>
 | 
			
		||||
* Andrew Gregory <andrew.gregory.8@gmail.com>
 | 
			
		||||
* Eli Schwartz <eschwartz@archlinux.org>
 | 
			
		||||
* Morgan Adamiec <morganamilo@archlinux.org>
 | 
			
		||||
 | 
			
		||||
Past major contributors:
 | 
			
		||||
@@ -30,6 +29,7 @@ Past major contributors:
 | 
			
		||||
* Xavier Chantry <shiningxc@gmail.com>
 | 
			
		||||
* Nagy Gabor <ngaba@bibl.u-szeged.hu>
 | 
			
		||||
* Dave Reisner <dreisner@archlinux.org>
 | 
			
		||||
* Eli Schwartz <eschwartz@archlinux.org>
 | 
			
		||||
 | 
			
		||||
For additional contributors, use `git shortlog -s` on the pacman.git
 | 
			
		||||
repository.
 | 
			
		||||
 
 | 
			
		||||
@@ -171,6 +171,9 @@ Options
 | 
			
		||||
*\--noprepare*::
 | 
			
		||||
	Do not run the prepare() function in the PKGBUILD.
 | 
			
		||||
 | 
			
		||||
*\--noverify*::
 | 
			
		||||
	Do not run the verify() function in the PKGBUILD.
 | 
			
		||||
 | 
			
		||||
*\--sign*::
 | 
			
		||||
	Sign the resulting package with gpg, overriding the setting in
 | 
			
		||||
	linkman:makepkg.conf[5].
 | 
			
		||||
@@ -230,6 +233,9 @@ before building.
 | 
			
		||||
 | 
			
		||||
Environment Variables
 | 
			
		||||
---------------------
 | 
			
		||||
**MAKEPKG_LIBRARY**="/path/to/directory"::
 | 
			
		||||
	Use an alternative libmakepkg path instead of the {libmakepkgdir} default.
 | 
			
		||||
 | 
			
		||||
**PACMAN**::
 | 
			
		||||
	The command that will be used to check for missing dependencies and to
 | 
			
		||||
	install and remove packages. Pacman's '-Qq', '-Rns', '-S', '-T', and '-U'
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@ asciidoc_opts = [
 | 
			
		||||
 '-a', 'sysconfdir=@0@'.format(SYSCONFDIR),
 | 
			
		||||
 '-a', 'datarootdir=@0@'.format(DATAROOTDIR),
 | 
			
		||||
 '-a', 'rootdir=@0@'.format(ROOTDIR),
 | 
			
		||||
 '-a', 'libmakepkgdir=@0@'.format(LIBMAKEPKGDIR),
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
html_targets = []
 | 
			
		||||
 
 | 
			
		||||
@@ -240,6 +240,12 @@ number.
 | 
			
		||||
	general configuration options. Wildcards in the specified paths will get
 | 
			
		||||
	expanded based on linkman:glob[7] rules.
 | 
			
		||||
 | 
			
		||||
*CacheServer =* url::
 | 
			
		||||
	A full URL to a location where the packages, and signatures (if
 | 
			
		||||
	available) for this repository can be found.  Cache servers will be tried
 | 
			
		||||
	before any non-cache servers, will not be removed from the server pool for
 | 
			
		||||
	404 download errors, and will not be used for database files.
 | 
			
		||||
 | 
			
		||||
*Server =* url::
 | 
			
		||||
	A full URL to a location where the database, packages, and signatures (if
 | 
			
		||||
	available) for this repository can be found.
 | 
			
		||||
 
 | 
			
		||||
@@ -262,7 +262,7 @@ static int extract_single_file(alpm_handle_t *handle, struct archive *archive,
 | 
			
		||||
					"filesystem: %o  package: %o\n"), filename, lsbuf.st_mode & mask,
 | 
			
		||||
					entrymode & mask);
 | 
			
		||||
			alpm_logaction(handle, ALPM_CALLER_PREFIX,
 | 
			
		||||
					"warning: directory permissions differ on %s\n"
 | 
			
		||||
					"warning: directory permissions differ on %s, "
 | 
			
		||||
					"filesystem: %o  package: %o\n", filename, lsbuf.st_mode & mask,
 | 
			
		||||
					entrymode & mask);
 | 
			
		||||
		}
 | 
			
		||||
@@ -277,7 +277,7 @@ static int extract_single_file(alpm_handle_t *handle, struct archive *archive,
 | 
			
		||||
					"filesystem: %u:%u  package: %u:%u\n"), filename,
 | 
			
		||||
					lsbuf.st_uid, lsbuf.st_gid, entryuid, entrygid);
 | 
			
		||||
			alpm_logaction(handle, ALPM_CALLER_PREFIX,
 | 
			
		||||
					"warning: directory ownership differs on %s\n"
 | 
			
		||||
					"warning: directory ownership differs on %s, "
 | 
			
		||||
					"filesystem: %u:%u  package: %u:%u\n", filename,
 | 
			
		||||
					lsbuf.st_uid, lsbuf.st_gid, entryuid, entrygid);
 | 
			
		||||
		}
 | 
			
		||||
@@ -415,7 +415,7 @@ static int extract_single_file(alpm_handle_t *handle, struct archive *archive,
 | 
			
		||||
static int commit_single_pkg(alpm_handle_t *handle, alpm_pkg_t *newpkg,
 | 
			
		||||
		size_t pkg_current, size_t pkg_count)
 | 
			
		||||
{
 | 
			
		||||
	int i, ret = 0, errors = 0;
 | 
			
		||||
	int ret = 0, errors = 0;
 | 
			
		||||
	int is_upgrade = 0;
 | 
			
		||||
	alpm_pkg_t *oldpkg = NULL;
 | 
			
		||||
	alpm_db_t *db = handle->db_local;
 | 
			
		||||
@@ -538,7 +538,7 @@ static int commit_single_pkg(alpm_handle_t *handle, alpm_pkg_t *newpkg,
 | 
			
		||||
		/* call PROGRESS once with 0 percent, as we sort-of skip that here */
 | 
			
		||||
		PROGRESS(handle, progress, newpkg->name, 0, pkg_count, pkg_current);
 | 
			
		||||
 | 
			
		||||
		for(i = 0; archive_read_next_header(archive, &entry) == ARCHIVE_OK; i++) {
 | 
			
		||||
		while(archive_read_next_header(archive, &entry) == ARCHIVE_OK) {
 | 
			
		||||
			int percent;
 | 
			
		||||
 | 
			
		||||
			if(newpkg->size != 0) {
 | 
			
		||||
 
 | 
			
		||||
@@ -93,34 +93,16 @@ cleanup:
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* check current state and free all resources including storage locks */
 | 
			
		||||
int SYMEXPORT alpm_release(alpm_handle_t *myhandle)
 | 
			
		||||
{
 | 
			
		||||
	int ret = 0;
 | 
			
		||||
	alpm_db_t *db;
 | 
			
		||||
 | 
			
		||||
	CHECK_HANDLE(myhandle, return -1);
 | 
			
		||||
 | 
			
		||||
	/* close local database */
 | 
			
		||||
	db = myhandle->db_local;
 | 
			
		||||
	if(db) {
 | 
			
		||||
		db->ops->unregister(db);
 | 
			
		||||
		myhandle->db_local = NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(alpm_unregister_all_syncdbs(myhandle) == -1) {
 | 
			
		||||
		ret = -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_LIBCURL
 | 
			
		||||
	curl_multi_cleanup(myhandle->curlm);
 | 
			
		||||
	curl_global_cleanup();
 | 
			
		||||
	FREELIST(myhandle->server_errors);
 | 
			
		||||
#endif
 | 
			
		||||
	ASSERT(myhandle->trans == NULL, RET_ERR(myhandle, ALPM_ERR_TRANS_NOT_NULL, -1));
 | 
			
		||||
 | 
			
		||||
	_alpm_handle_unlock(myhandle);
 | 
			
		||||
	_alpm_handle_free(myhandle);
 | 
			
		||||
 | 
			
		||||
	return ret;
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char SYMEXPORT *alpm_version(void)
 | 
			
		||||
 
 | 
			
		||||
@@ -488,7 +488,7 @@ typedef struct _alpm_siglist_t {
 | 
			
		||||
 * Check the PGP signature for the given package file.
 | 
			
		||||
 * @param pkg the package to check
 | 
			
		||||
 * @param siglist a pointer to storage for signature results
 | 
			
		||||
 * @return a int value : 0 (valid), 1 (invalid), -1 (an error occurred)
 | 
			
		||||
 * @return 0 if valid, -1 if an error occurred or signature is invalid
 | 
			
		||||
 */
 | 
			
		||||
int alpm_pkg_check_pgp_signature(alpm_pkg_t *pkg, alpm_siglist_t *siglist);
 | 
			
		||||
 | 
			
		||||
@@ -496,7 +496,7 @@ int alpm_pkg_check_pgp_signature(alpm_pkg_t *pkg, alpm_siglist_t *siglist);
 | 
			
		||||
 * Check the PGP signature for the given database.
 | 
			
		||||
 * @param db the database to check
 | 
			
		||||
 * @param siglist a pointer to storage for signature results
 | 
			
		||||
 * @return a int value : 0 (valid), 1 (invalid), -1 (an error occurred)
 | 
			
		||||
 * @return 0 if valid, -1 if an error occurred or signature is invalid
 | 
			
		||||
 */
 | 
			
		||||
int alpm_db_check_pgp_signature(alpm_db_t *db, alpm_siglist_t *siglist);
 | 
			
		||||
 | 
			
		||||
@@ -1149,7 +1149,9 @@ typedef enum _alpm_progress_t {
 | 
			
		||||
 * make take a while to complete.
 | 
			
		||||
 * @param ctx user-provided context
 | 
			
		||||
 * @param progress the kind of event that is progressing
 | 
			
		||||
 * @param pkg for package operations, the name of the package being operated on
 | 
			
		||||
 * @param pkg the name of the package being operated on. if the progress kind
 | 
			
		||||
 *            is a packae operation (add, upgrade, downgrade, reinstall, remove).
 | 
			
		||||
 *            otherwise this will be an empty string.
 | 
			
		||||
 * @param percent the percent completion of the action
 | 
			
		||||
 * @param howmany the total amount of items in the action
 | 
			
		||||
 * @param current the current amount of items completed
 | 
			
		||||
@@ -1343,6 +1345,34 @@ int alpm_db_add_server(alpm_db_t *db, const char *url);
 | 
			
		||||
 */
 | 
			
		||||
int alpm_db_remove_server(alpm_db_t *db, const char *url);
 | 
			
		||||
 | 
			
		||||
/** Get the list of cache servers assigned to this db.
 | 
			
		||||
 * @param db pointer to the database to get the servers from
 | 
			
		||||
 * @return a char* list of servers
 | 
			
		||||
 */
 | 
			
		||||
alpm_list_t *alpm_db_get_cache_servers(const alpm_db_t *db);
 | 
			
		||||
 | 
			
		||||
/** Sets the list of cache servers for the database to use.
 | 
			
		||||
 * @param db the database to set the servers. The list will be duped and
 | 
			
		||||
 * the original will still need to be freed by the caller.
 | 
			
		||||
 * @param servers a char* list of servers.
 | 
			
		||||
 */
 | 
			
		||||
int alpm_db_set_cache_servers(alpm_db_t *db, alpm_list_t *servers);
 | 
			
		||||
 | 
			
		||||
/** Add a download cache server to a database.
 | 
			
		||||
 * @param db database pointer
 | 
			
		||||
 * @param url url of the server
 | 
			
		||||
 * @return 0 on success, -1 on error (pm_errno is set accordingly)
 | 
			
		||||
 */
 | 
			
		||||
int alpm_db_add_cache_server(alpm_db_t *db, const char *url);
 | 
			
		||||
 | 
			
		||||
/** Remove a download cache server from a database.
 | 
			
		||||
 * @param db database pointer
 | 
			
		||||
 * @param url url of the server
 | 
			
		||||
 * @return 0 on success, 1 on server not present,
 | 
			
		||||
 * -1 on error (pm_errno is set accordingly)
 | 
			
		||||
 */
 | 
			
		||||
int alpm_db_remove_cache_server(alpm_db_t *db, const char *url);
 | 
			
		||||
 | 
			
		||||
/* End of server accessors */
 | 
			
		||||
/** @} */
 | 
			
		||||
 | 
			
		||||
@@ -2265,7 +2295,9 @@ typedef enum _alpm_pkgreason_t {
 | 
			
		||||
	/** Explicitly requested by the user. */
 | 
			
		||||
	ALPM_PKG_REASON_EXPLICIT = 0,
 | 
			
		||||
	/** Installed as a dependency for another package. */
 | 
			
		||||
	ALPM_PKG_REASON_DEPEND = 1
 | 
			
		||||
	ALPM_PKG_REASON_DEPEND = 1,
 | 
			
		||||
	/** Failed parsing of local database */
 | 
			
		||||
	ALPM_PKG_REASON_UNKNOWN = 2
 | 
			
		||||
} alpm_pkgreason_t;
 | 
			
		||||
 | 
			
		||||
/** Location a package object was loaded from. */
 | 
			
		||||
 
 | 
			
		||||
@@ -417,6 +417,7 @@ alpm_list_t SYMEXPORT *alpm_list_reverse(alpm_list_t *list)
 | 
			
		||||
	while(lp) {
 | 
			
		||||
		if(alpm_list_append(&newlist, lp->data) == NULL) {
 | 
			
		||||
			alpm_list_free(newlist);
 | 
			
		||||
			list->prev = backup;
 | 
			
		||||
			return NULL;
 | 
			
		||||
		}
 | 
			
		||||
		lp = lp->prev;
 | 
			
		||||
 
 | 
			
		||||
@@ -250,7 +250,6 @@ static int _cache_changelog_close(const alpm_pkg_t UNUSED *pkg, void *fp)
 | 
			
		||||
 */
 | 
			
		||||
static struct archive *_cache_mtree_open(alpm_pkg_t *pkg)
 | 
			
		||||
{
 | 
			
		||||
	int r;
 | 
			
		||||
	struct archive *mtree;
 | 
			
		||||
 | 
			
		||||
	alpm_db_t *db = alpm_pkg_get_db(pkg);
 | 
			
		||||
@@ -268,7 +267,7 @@ static struct archive *_cache_mtree_open(alpm_pkg_t *pkg)
 | 
			
		||||
	_alpm_archive_read_support_filter_all(mtree);
 | 
			
		||||
	archive_read_support_format_mtree(mtree);
 | 
			
		||||
 | 
			
		||||
	if((r = _alpm_archive_read_open_file(mtree, mtfile, ALPM_BUFFER_SIZE))) {
 | 
			
		||||
	if(_alpm_archive_read_open_file(mtree, mtfile, ALPM_BUFFER_SIZE)) {
 | 
			
		||||
		_alpm_log(pkg->handle, ALPM_LOG_ERROR, _("error while reading file %s: %s\n"),
 | 
			
		||||
					mtfile, archive_error_string(mtree));
 | 
			
		||||
		_alpm_archive_read_free(mtree);
 | 
			
		||||
@@ -631,6 +630,10 @@ static int local_db_populate(alpm_db_t *db)
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* treat local metadata errors as warning-only,
 | 
			
		||||
		 * they are already installed and otherwise they can't be operated on */
 | 
			
		||||
		_alpm_pkg_check_meta(pkg);
 | 
			
		||||
 | 
			
		||||
		/* add to the collection */
 | 
			
		||||
		_alpm_log(db->handle, ALPM_LOG_FUNCTION, "adding '%s' to package cache for db '%s'\n",
 | 
			
		||||
				pkg->name, db->treename);
 | 
			
		||||
@@ -651,6 +654,17 @@ static int local_db_populate(alpm_db_t *db)
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static alpm_pkgreason_t _read_pkgreason(alpm_handle_t *handle, const char *pkgname, const char *line) {
 | 
			
		||||
	if(strcmp(line, "0") == 0) {
 | 
			
		||||
		return ALPM_PKG_REASON_EXPLICIT;
 | 
			
		||||
	} else if(strcmp(line, "1") == 0) {
 | 
			
		||||
		return ALPM_PKG_REASON_DEPEND;
 | 
			
		||||
	} else {
 | 
			
		||||
		_alpm_log(handle, ALPM_LOG_ERROR, _("unknown install reason for package %s: %s\n"), pkgname, line);
 | 
			
		||||
		return ALPM_PKG_REASON_UNKNOWN;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Note: the return value must be freed by the caller */
 | 
			
		||||
char *_alpm_local_db_pkgpath(alpm_db_t *db, alpm_pkg_t *info,
 | 
			
		||||
		const char *filename)
 | 
			
		||||
@@ -773,7 +787,7 @@ static int local_db_read(alpm_pkg_t *info, int inforeq)
 | 
			
		||||
				READ_AND_STORE(info->packager);
 | 
			
		||||
			} else if(strcmp(line, "%REASON%") == 0) {
 | 
			
		||||
				READ_NEXT();
 | 
			
		||||
				info->reason = (alpm_pkgreason_t)atoi(line);
 | 
			
		||||
				info->reason = _read_pkgreason(db->handle, info->name, line);
 | 
			
		||||
			} else if(strcmp(line, "%VALIDATION%") == 0) {
 | 
			
		||||
				alpm_list_t *i, *v = NULL;
 | 
			
		||||
				READ_AND_STORE_ALL(v);
 | 
			
		||||
@@ -823,6 +837,12 @@ static int local_db_read(alpm_pkg_t *info, int inforeq)
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				FREELIST(lines);
 | 
			
		||||
			} else {
 | 
			
		||||
				_alpm_log(db->handle, ALPM_LOG_ERROR, _("%s: unknown key '%s' in sync database\n"), info->name, line);
 | 
			
		||||
				alpm_list_t *lines = NULL;
 | 
			
		||||
				READ_AND_STORE_ALL(lines);
 | 
			
		||||
				FREELIST(lines);
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		fclose(fp);
 | 
			
		||||
 
 | 
			
		||||
@@ -251,8 +251,10 @@ static int parse_descfile(alpm_handle_t *handle, struct archive *a, alpm_pkg_t *
 | 
			
		||||
					return -1;
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				const char *pkgname = newpkg->name ? newpkg->name : "error";
 | 
			
		||||
				_alpm_log(handle, ALPM_LOG_ERROR, _("%s: unknown key '%s' in package description\n"), pkgname, key);
 | 
			
		||||
				_alpm_log(handle, ALPM_LOG_DEBUG, "%s: unknown key '%s' in description file line %d\n",
 | 
			
		||||
									newpkg->name ? newpkg->name : "error", key, linenum);
 | 
			
		||||
									pkgname, key, linenum);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@@ -652,8 +654,6 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
 | 
			
		||||
		goto pkg_invalid;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_alpm_archive_read_free(archive);
 | 
			
		||||
 | 
			
		||||
	/* internal fields for package struct */
 | 
			
		||||
	newpkg->origin = ALPM_PKG_FROM_FILE;
 | 
			
		||||
	STRDUP(newpkg->origin_data.file, pkgfile, goto error);
 | 
			
		||||
@@ -675,6 +675,11 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
 | 
			
		||||
		newpkg->infolevel |= INFRQ_FILES;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(_alpm_pkg_check_meta(newpkg) != 0) {
 | 
			
		||||
		goto pkg_invalid;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_alpm_archive_read_free(archive);
 | 
			
		||||
	close(fd);
 | 
			
		||||
	return newpkg;
 | 
			
		||||
 | 
			
		||||
@@ -683,9 +688,7 @@ pkg_invalid:
 | 
			
		||||
error:
 | 
			
		||||
	_alpm_pkg_free(newpkg);
 | 
			
		||||
	_alpm_archive_read_free(archive);
 | 
			
		||||
	if(fd >= 0) {
 | 
			
		||||
		close(fd);
 | 
			
		||||
	}
 | 
			
		||||
	close(fd);
 | 
			
		||||
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -344,6 +344,11 @@ static alpm_pkg_t *load_pkg_for_entry(alpm_db_t *db, const char *entryname,
 | 
			
		||||
		pkg->ops = get_sync_pkg_ops();
 | 
			
		||||
		pkg->handle = db->handle;
 | 
			
		||||
 | 
			
		||||
		if(_alpm_pkg_check_meta(pkg) != 0) {
 | 
			
		||||
			_alpm_pkg_free(pkg);
 | 
			
		||||
			RET_ERR(db->handle, ALPM_ERR_PKG_INVALID, NULL);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* add to the collection */
 | 
			
		||||
		_alpm_log(db->handle, ALPM_LOG_FUNCTION, "adding '%s' to package cache for db '%s'\n",
 | 
			
		||||
				pkg->name, db->treename);
 | 
			
		||||
@@ -452,6 +457,14 @@ static int sync_db_populate(alpm_db_t *db)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	/* the db file was successfully read, but contained errors */
 | 
			
		||||
	if(ret == -1) {
 | 
			
		||||
		db->status &= ~DB_STATUS_VALID;
 | 
			
		||||
		db->status |= DB_STATUS_INVALID;
 | 
			
		||||
		_alpm_db_free_pkgcache(db);
 | 
			
		||||
		GOTO_ERR(db->handle, ALPM_ERR_DB_INVALID, cleanup);
 | 
			
		||||
	}
 | 
			
		||||
	/* reading the db file failed */
 | 
			
		||||
	if(archive_ret != ARCHIVE_EOF) {
 | 
			
		||||
		_alpm_log(db->handle, ALPM_LOG_ERROR, _("could not read db '%s' (%s)\n"),
 | 
			
		||||
				db->treename, archive_error_string(archive));
 | 
			
		||||
@@ -678,6 +691,11 @@ static int sync_db_read(alpm_db_t *db, struct archive *archive,
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				FREELIST(lines);
 | 
			
		||||
			} else {
 | 
			
		||||
				_alpm_log(db->handle, ALPM_LOG_ERROR, _("%s: unknown key '%s' in local database\n"), pkg->name, line);
 | 
			
		||||
				alpm_list_t *lines = NULL;
 | 
			
		||||
				READ_AND_STORE_ALL(lines);
 | 
			
		||||
				FREELIST(lines);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if(ret != ARCHIVE_EOF) {
 | 
			
		||||
 
 | 
			
		||||
@@ -131,6 +131,26 @@ int SYMEXPORT alpm_db_unregister(alpm_db_t *db)
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
alpm_list_t SYMEXPORT *alpm_db_get_cache_servers(const alpm_db_t *db)
 | 
			
		||||
{
 | 
			
		||||
	ASSERT(db != NULL, return NULL);
 | 
			
		||||
	return db->cache_servers;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SYMEXPORT alpm_db_set_cache_servers(alpm_db_t *db, alpm_list_t *cache_servers)
 | 
			
		||||
{
 | 
			
		||||
	alpm_list_t *i;
 | 
			
		||||
	ASSERT(db != NULL, return -1);
 | 
			
		||||
	FREELIST(db->cache_servers);
 | 
			
		||||
	for(i = cache_servers; i; i = i->next) {
 | 
			
		||||
		char *url = i->data;
 | 
			
		||||
		if(alpm_db_add_cache_server(db, url) != 0) {
 | 
			
		||||
			return -1;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
alpm_list_t SYMEXPORT *alpm_db_get_servers(const alpm_db_t *db)
 | 
			
		||||
{
 | 
			
		||||
	ASSERT(db != NULL, return NULL);
 | 
			
		||||
@@ -164,6 +184,25 @@ static char *sanitize_url(const char *url)
 | 
			
		||||
	return newurl;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SYMEXPORT alpm_db_add_cache_server(alpm_db_t *db, const char *url)
 | 
			
		||||
{
 | 
			
		||||
	char *newurl;
 | 
			
		||||
 | 
			
		||||
	/* Sanity checks */
 | 
			
		||||
	ASSERT(db != NULL, return -1);
 | 
			
		||||
	db->handle->pm_errno = ALPM_ERR_OK;
 | 
			
		||||
	ASSERT(url != NULL && strlen(url) != 0, RET_ERR(db->handle, ALPM_ERR_WRONG_ARGS, -1));
 | 
			
		||||
 | 
			
		||||
	newurl = sanitize_url(url);
 | 
			
		||||
	ASSERT(newurl != NULL, RET_ERR(db->handle, ALPM_ERR_MEMORY, -1));
 | 
			
		||||
 | 
			
		||||
	db->cache_servers = alpm_list_add(db->cache_servers, newurl);
 | 
			
		||||
	_alpm_log(db->handle, ALPM_LOG_DEBUG, "adding new cache server URL to database '%s': %s\n",
 | 
			
		||||
			db->treename, newurl);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SYMEXPORT alpm_db_add_server(alpm_db_t *db, const char *url)
 | 
			
		||||
{
 | 
			
		||||
	char *newurl;
 | 
			
		||||
@@ -174,9 +213,8 @@ int SYMEXPORT alpm_db_add_server(alpm_db_t *db, const char *url)
 | 
			
		||||
	ASSERT(url != NULL && strlen(url) != 0, RET_ERR(db->handle, ALPM_ERR_WRONG_ARGS, -1));
 | 
			
		||||
 | 
			
		||||
	newurl = sanitize_url(url);
 | 
			
		||||
	if(!newurl) {
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
	ASSERT(newurl != NULL, RET_ERR(db->handle, ALPM_ERR_MEMORY, -1));
 | 
			
		||||
 | 
			
		||||
	db->servers = alpm_list_add(db->servers, newurl);
 | 
			
		||||
	_alpm_log(db->handle, ALPM_LOG_DEBUG, "adding new server URL to database '%s': %s\n",
 | 
			
		||||
			db->treename, newurl);
 | 
			
		||||
@@ -184,6 +222,32 @@ int SYMEXPORT alpm_db_add_server(alpm_db_t *db, const char *url)
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SYMEXPORT alpm_db_remove_cache_server(alpm_db_t *db, const char *url)
 | 
			
		||||
{
 | 
			
		||||
	char *newurl, *vdata = NULL;
 | 
			
		||||
	int ret = 1;
 | 
			
		||||
 | 
			
		||||
	/* Sanity checks */
 | 
			
		||||
	ASSERT(db != NULL, return -1);
 | 
			
		||||
	db->handle->pm_errno = ALPM_ERR_OK;
 | 
			
		||||
	ASSERT(url != NULL && strlen(url) != 0, RET_ERR(db->handle, ALPM_ERR_WRONG_ARGS, -1));
 | 
			
		||||
 | 
			
		||||
	newurl = sanitize_url(url);
 | 
			
		||||
	ASSERT(newurl != NULL, RET_ERR(db->handle, ALPM_ERR_MEMORY, -1));
 | 
			
		||||
 | 
			
		||||
	db->cache_servers = alpm_list_remove_str(db->cache_servers, newurl, &vdata);
 | 
			
		||||
 | 
			
		||||
	if(vdata) {
 | 
			
		||||
		_alpm_log(db->handle, ALPM_LOG_DEBUG, "removed cache server URL from database '%s': %s\n",
 | 
			
		||||
				db->treename, newurl);
 | 
			
		||||
		free(vdata);
 | 
			
		||||
		ret = 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	free(newurl);
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int SYMEXPORT alpm_db_remove_server(alpm_db_t *db, const char *url)
 | 
			
		||||
{
 | 
			
		||||
	char *newurl, *vdata = NULL;
 | 
			
		||||
@@ -195,9 +259,7 @@ int SYMEXPORT alpm_db_remove_server(alpm_db_t *db, const char *url)
 | 
			
		||||
	ASSERT(url != NULL && strlen(url) != 0, RET_ERR(db->handle, ALPM_ERR_WRONG_ARGS, -1));
 | 
			
		||||
 | 
			
		||||
	newurl = sanitize_url(url);
 | 
			
		||||
	if(!newurl) {
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
	ASSERT(newurl != NULL, RET_ERR(db->handle, ALPM_ERR_MEMORY, -1));
 | 
			
		||||
 | 
			
		||||
	db->servers = alpm_list_remove_str(db->servers, newurl, &vdata);
 | 
			
		||||
 | 
			
		||||
@@ -328,6 +390,7 @@ void _alpm_db_free(alpm_db_t *db)
 | 
			
		||||
	/* cleanup pkgcache */
 | 
			
		||||
	_alpm_db_free_pkgcache(db);
 | 
			
		||||
	/* cleanup server list */
 | 
			
		||||
	FREELIST(db->cache_servers);
 | 
			
		||||
	FREELIST(db->servers);
 | 
			
		||||
	FREE(db->_path);
 | 
			
		||||
	FREE(db->treename);
 | 
			
		||||
@@ -500,18 +563,17 @@ static void free_groupcache(alpm_db_t *db)
 | 
			
		||||
 | 
			
		||||
void _alpm_db_free_pkgcache(alpm_db_t *db)
 | 
			
		||||
{
 | 
			
		||||
	if(db == NULL || !(db->status & DB_STATUS_PKGCACHE)) {
 | 
			
		||||
	if(db == NULL || db->pkgcache == NULL) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_alpm_log(db->handle, ALPM_LOG_DEBUG,
 | 
			
		||||
			"freeing package cache for repository '%s'\n", db->treename);
 | 
			
		||||
 | 
			
		||||
	if(db->pkgcache) {
 | 
			
		||||
		alpm_list_free_inner(db->pkgcache->list,
 | 
			
		||||
				(alpm_list_fn_free)_alpm_pkg_free);
 | 
			
		||||
		_alpm_pkghash_free(db->pkgcache);
 | 
			
		||||
	}
 | 
			
		||||
	alpm_list_free_inner(db->pkgcache->list,
 | 
			
		||||
			(alpm_list_fn_free)_alpm_pkg_free);
 | 
			
		||||
	_alpm_pkghash_free(db->pkgcache);
 | 
			
		||||
	db->pkgcache = NULL;
 | 
			
		||||
	db->status &= ~DB_STATUS_PKGCACHE;
 | 
			
		||||
 | 
			
		||||
	free_groupcache(db);
 | 
			
		||||
 
 | 
			
		||||
@@ -69,6 +69,7 @@ struct _alpm_db_t {
 | 
			
		||||
	char *_path;
 | 
			
		||||
	alpm_pkghash_t *pkgcache;
 | 
			
		||||
	alpm_list_t *grpcache;
 | 
			
		||||
	alpm_list_t *cache_servers;
 | 
			
		||||
	alpm_list_t *servers;
 | 
			
		||||
	const struct db_operations *ops;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -556,7 +556,7 @@ static void _alpm_select_depends(alpm_list_t **from, alpm_list_t **to,
 | 
			
		||||
	for(i = *from; i; i = next) {
 | 
			
		||||
		alpm_pkg_t *deppkg = i->data;
 | 
			
		||||
		next = i->next;
 | 
			
		||||
		if((explicit || alpm_pkg_get_reason(deppkg) != ALPM_PKG_REASON_EXPLICIT)
 | 
			
		||||
		if((explicit || alpm_pkg_get_reason(deppkg) == ALPM_PKG_REASON_DEPEND)
 | 
			
		||||
				&& _alpm_pkg_depends_on(pkg, deppkg)) {
 | 
			
		||||
			*to = alpm_list_add(*to, deppkg);
 | 
			
		||||
			*from = alpm_list_remove_item(*from, i);
 | 
			
		||||
 
 | 
			
		||||
@@ -111,6 +111,10 @@ static alpm_list_t *mount_point_list(alpm_handle_t *handle)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	while((mnt = getmntent(fp))) {
 | 
			
		||||
		if(mnt->mnt_dir == NULL) {
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		CALLOC(mp, 1, sizeof(alpm_mountpoint_t), RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
 | 
			
		||||
		STRDUP(mp->mount_dir, mnt->mnt_dir, free(mp); RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
 | 
			
		||||
		mp->mount_dir_len = strlen(mp->mount_dir);
 | 
			
		||||
@@ -134,6 +138,10 @@ static alpm_list_t *mount_point_list(alpm_handle_t *handle)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	while((ret = getmntent(fp, &mnt)) == 0) {
 | 
			
		||||
		if(mnt->mnt_mountp == NULL) {
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		CALLOC(mp, 1, sizeof(alpm_mountpoint_t), RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
 | 
			
		||||
		STRDUP(mp->mount_dir, mnt->mnt_mountp,  free(mp); RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
 | 
			
		||||
		mp->mount_dir_len = strlen(mp->mount_dir);
 | 
			
		||||
@@ -161,6 +169,10 @@ static alpm_list_t *mount_point_list(alpm_handle_t *handle)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for(; entries-- > 0; fsp++) {
 | 
			
		||||
		if(fsp->f_mntonname == NULL) {
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		CALLOC(mp, 1, sizeof(alpm_mountpoint_t), RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
 | 
			
		||||
		STRDUP(mp->mount_dir, fsp->f_mntonname, free(mp); RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
 | 
			
		||||
		mp->mount_dir_len = strlen(mp->mount_dir);
 | 
			
		||||
 
 | 
			
		||||
@@ -60,11 +60,11 @@ static int curl_gethost(const char *url, char *buffer, size_t buf_len);
 | 
			
		||||
 | 
			
		||||
/* number of "soft" errors required to blacklist a server, set to 0 to disable
 | 
			
		||||
 * server blacklisting */
 | 
			
		||||
const unsigned int server_error_limit = 3;
 | 
			
		||||
const int server_error_limit = 3;
 | 
			
		||||
 | 
			
		||||
struct server_error_count {
 | 
			
		||||
	char server[HOSTNAME_SIZE];
 | 
			
		||||
	unsigned int errors;
 | 
			
		||||
	int errors;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static struct server_error_count *find_server_errors(alpm_handle_t *handle, const char *server)
 | 
			
		||||
@@ -94,22 +94,34 @@ static struct server_error_count *find_server_errors(alpm_handle_t *handle, cons
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* skip for hard errors or too many soft errors */
 | 
			
		||||
static int should_skip_server(alpm_handle_t *handle, const char *server)
 | 
			
		||||
{
 | 
			
		||||
	struct server_error_count *h;
 | 
			
		||||
	if(server_error_limit && (h = find_server_errors(handle, server)) ) {
 | 
			
		||||
		return h->errors >= server_error_limit;
 | 
			
		||||
		return h->errors < 0 || h->errors >= server_error_limit;
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void server_increment_error(alpm_handle_t *handle, const char *server, int count)
 | 
			
		||||
/* only skip for hard errors */
 | 
			
		||||
static int should_skip_cache_server(alpm_handle_t *handle, const char *server)
 | 
			
		||||
{
 | 
			
		||||
	struct server_error_count *h;
 | 
			
		||||
	if(server_error_limit && (h = find_server_errors(handle, server)) ) {
 | 
			
		||||
		return h->errors < 0;
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* block normal servers after too many errors */
 | 
			
		||||
static void server_soft_error(alpm_handle_t *handle, const char *server)
 | 
			
		||||
{
 | 
			
		||||
	struct server_error_count *h;
 | 
			
		||||
	if(server_error_limit
 | 
			
		||||
			&& (h = find_server_errors(handle, server))
 | 
			
		||||
			&& !should_skip_server(handle, server) ) {
 | 
			
		||||
		h->errors += count;
 | 
			
		||||
		h->errors++;
 | 
			
		||||
 | 
			
		||||
		if(should_skip_server(handle, server)) {
 | 
			
		||||
			_alpm_log(handle, ALPM_LOG_WARNING,
 | 
			
		||||
@@ -119,14 +131,46 @@ static void server_increment_error(alpm_handle_t *handle, const char *server, in
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void server_soft_error(alpm_handle_t *handle, const char *server)
 | 
			
		||||
{
 | 
			
		||||
	server_increment_error(handle, server, 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* immediate block for both servers and cache servers */
 | 
			
		||||
static void server_hard_error(alpm_handle_t *handle, const char *server)
 | 
			
		||||
{
 | 
			
		||||
	server_increment_error(handle, server, server_error_limit);
 | 
			
		||||
	struct server_error_count *h;
 | 
			
		||||
	if(server_error_limit && (h = find_server_errors(handle, server))) {
 | 
			
		||||
		if(h->errors != -1) {
 | 
			
		||||
			/* always set even if already skipped for soft errors
 | 
			
		||||
			 * to disable cache servers too */
 | 
			
		||||
			h->errors = -1;
 | 
			
		||||
 | 
			
		||||
			_alpm_log(handle, ALPM_LOG_WARNING,
 | 
			
		||||
					_("fatal error from %s, skipping for the remainder of this transaction\n"),
 | 
			
		||||
					h->server);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *payload_next_server(struct dload_payload *payload)
 | 
			
		||||
{
 | 
			
		||||
	while(payload->cache_servers
 | 
			
		||||
			&& should_skip_cache_server(payload->handle, payload->cache_servers->data)) {
 | 
			
		||||
		payload->cache_servers = payload->cache_servers->next;
 | 
			
		||||
	}
 | 
			
		||||
	if(payload->cache_servers) {
 | 
			
		||||
		const char *server = payload->cache_servers->data;
 | 
			
		||||
		payload->cache_servers = payload->cache_servers->next;
 | 
			
		||||
		payload->request_errors_ok = 1;
 | 
			
		||||
		return server;
 | 
			
		||||
	}
 | 
			
		||||
	while(payload->servers
 | 
			
		||||
			&& should_skip_server(payload->handle, payload->servers->data)) {
 | 
			
		||||
		payload->servers = payload->servers->next;
 | 
			
		||||
	}
 | 
			
		||||
	if(payload->servers) {
 | 
			
		||||
		const char *server = payload->servers->data;
 | 
			
		||||
		payload->servers = payload->servers->next;
 | 
			
		||||
		payload->request_errors_ok = payload->errors_ok;
 | 
			
		||||
		return server;
 | 
			
		||||
	}
 | 
			
		||||
	return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *get_filename(const char *url)
 | 
			
		||||
@@ -408,21 +452,16 @@ static FILE *create_tempfile(struct dload_payload *payload, const char *localpat
 | 
			
		||||
/* Return 0 if retry was successful, -1 otherwise */
 | 
			
		||||
static int curl_retry_next_server(CURLM *curlm, CURL *curl, struct dload_payload *payload)
 | 
			
		||||
{
 | 
			
		||||
	const char *server;
 | 
			
		||||
	const char *server = NULL;
 | 
			
		||||
	size_t len;
 | 
			
		||||
	struct stat st;
 | 
			
		||||
	alpm_handle_t *handle = payload->handle;
 | 
			
		||||
 | 
			
		||||
	while(payload->servers && should_skip_server(handle, payload->servers->data)) {
 | 
			
		||||
		payload->servers = payload->servers->next;
 | 
			
		||||
	}
 | 
			
		||||
	if(!payload->servers) {
 | 
			
		||||
	if((server = payload_next_server(payload)) == NULL) {
 | 
			
		||||
		_alpm_log(payload->handle, ALPM_LOG_DEBUG,
 | 
			
		||||
				"%s: no more servers to retry\n", payload->remote_name);
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
	server = payload->servers->data;
 | 
			
		||||
	payload->servers = payload->servers->next;
 | 
			
		||||
 | 
			
		||||
	/* regenerate a new fileurl */
 | 
			
		||||
	FREE(payload->fileurl);
 | 
			
		||||
@@ -433,7 +472,6 @@ static int curl_retry_next_server(CURLM *curlm, CURL *curl, struct dload_payload
 | 
			
		||||
			"%s: retrying from %s\n",
 | 
			
		||||
			payload->remote_name, payload->fileurl);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	fflush(payload->localf);
 | 
			
		||||
 | 
			
		||||
	if(payload->allow_resume && stat(payload->tempfile_name, &st) == 0) {
 | 
			
		||||
@@ -503,7 +541,7 @@ static int curl_check_finished_download(alpm_handle_t *handle, CURLM *curlm, CUR
 | 
			
		||||
			_alpm_log(handle, ALPM_LOG_DEBUG, "%s: response code %ld\n",
 | 
			
		||||
					payload->remote_name, payload->respcode);
 | 
			
		||||
			if(payload->respcode >= 400) {
 | 
			
		||||
				if(!payload->errors_ok) {
 | 
			
		||||
				if(!payload->request_errors_ok) {
 | 
			
		||||
					handle->pm_errno = ALPM_ERR_RETRIEVE;
 | 
			
		||||
					/* non-translated message is same as libcurl */
 | 
			
		||||
					snprintf(payload->error_buffer, sizeof(payload->error_buffer),
 | 
			
		||||
@@ -535,7 +573,6 @@ static int curl_check_finished_download(alpm_handle_t *handle, CURLM *curlm, CUR
 | 
			
		||||
		case CURLE_ABORTED_BY_CALLBACK:
 | 
			
		||||
			/* handle the interrupt accordingly */
 | 
			
		||||
			if(dload_interrupted == ABORT_OVER_MAXFILESIZE) {
 | 
			
		||||
				curlerr = CURLE_FILESIZE_EXCEEDED;
 | 
			
		||||
				payload->unlink_on_fail = 1;
 | 
			
		||||
				handle->pm_errno = ALPM_ERR_LIBCURL;
 | 
			
		||||
				_alpm_log(handle, ALPM_LOG_ERROR,
 | 
			
		||||
@@ -558,7 +595,7 @@ static int curl_check_finished_download(alpm_handle_t *handle, CURLM *curlm, CUR
 | 
			
		||||
				goto cleanup;
 | 
			
		||||
			}
 | 
			
		||||
		default:
 | 
			
		||||
			if(!payload->errors_ok) {
 | 
			
		||||
			if(!payload->request_errors_ok) {
 | 
			
		||||
				handle->pm_errno = ALPM_ERR_LIBCURL;
 | 
			
		||||
				_alpm_log(handle, ALPM_LOG_ERROR,
 | 
			
		||||
						_("failed retrieving file '%s' from %s : %s\n"),
 | 
			
		||||
@@ -764,18 +801,13 @@ static int curl_add_payload(alpm_handle_t *handle, CURLM *curlm,
 | 
			
		||||
	if(payload->fileurl) {
 | 
			
		||||
		ASSERT(!payload->servers, GOTO_ERR(handle, ALPM_ERR_WRONG_ARGS, cleanup));
 | 
			
		||||
		ASSERT(!payload->filepath, GOTO_ERR(handle, ALPM_ERR_WRONG_ARGS, cleanup));
 | 
			
		||||
		payload->request_errors_ok = payload->errors_ok;
 | 
			
		||||
	} else {
 | 
			
		||||
		const char *server;
 | 
			
		||||
		while(payload->servers && should_skip_server(handle, payload->servers->data)) {
 | 
			
		||||
			payload->servers = payload->servers->next;
 | 
			
		||||
		}
 | 
			
		||||
		const char *server = payload_next_server(payload);
 | 
			
		||||
 | 
			
		||||
		ASSERT(payload->servers, GOTO_ERR(handle, ALPM_ERR_SERVER_NONE, cleanup));
 | 
			
		||||
		ASSERT(server, GOTO_ERR(handle, ALPM_ERR_SERVER_NONE, cleanup));
 | 
			
		||||
		ASSERT(payload->filepath, GOTO_ERR(handle, ALPM_ERR_WRONG_ARGS, cleanup));
 | 
			
		||||
 | 
			
		||||
		server = payload->servers->data;
 | 
			
		||||
		payload->servers = payload->servers->next;
 | 
			
		||||
 | 
			
		||||
		len = strlen(server) + strlen(payload->filepath) + 2;
 | 
			
		||||
		MALLOC(payload->fileurl, len, GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup));
 | 
			
		||||
		snprintf(payload->fileurl, len, "%s/%s", server, payload->filepath);
 | 
			
		||||
@@ -934,12 +966,30 @@ static int curl_download_internal(alpm_handle_t *handle,
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_alpm_log(handle, ALPM_LOG_DEBUG, "curl_download_internal return code is %d\n", err);
 | 
			
		||||
	return err ? -1 : updated ? 0 : 1;
 | 
			
		||||
	int ret = err ? -1 : updated ? 0 : 1;
 | 
			
		||||
	_alpm_log(handle, ALPM_LOG_DEBUG, "curl_download_internal return code is %d\n", ret);
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
static int payload_download_fetchcb(struct dload_payload *payload,
 | 
			
		||||
		const char *server, const char *localpath)
 | 
			
		||||
{
 | 
			
		||||
	int ret;
 | 
			
		||||
	char *fileurl;
 | 
			
		||||
	alpm_handle_t *handle = payload->handle;
 | 
			
		||||
 | 
			
		||||
	size_t len = strlen(server) + strlen(payload->filepath) + 2;
 | 
			
		||||
	MALLOC(fileurl, len, RET_ERR(handle, ALPM_ERR_MEMORY, -1));
 | 
			
		||||
	snprintf(fileurl, len, "%s/%s", server, payload->filepath);
 | 
			
		||||
 | 
			
		||||
	ret = handle->fetchcb(handle->fetchcb_ctx, fileurl, localpath, payload->force);
 | 
			
		||||
	free(fileurl);
 | 
			
		||||
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Returns -1 if an error happened for a required file
 | 
			
		||||
 * Returns 0 if a payload was actually downloaded
 | 
			
		||||
 * Returns 1 if no files were downloaded and all errors were non-fatal
 | 
			
		||||
@@ -965,16 +1015,11 @@ int _alpm_download(alpm_handle_t *handle,
 | 
			
		||||
			if(payload->fileurl) {
 | 
			
		||||
				ret = handle->fetchcb(handle->fetchcb_ctx, payload->fileurl, localpath, payload->force);
 | 
			
		||||
			} else {
 | 
			
		||||
				for(s = payload->cache_servers; s && ret == -1; s = s->next) {
 | 
			
		||||
					ret = payload_download_fetchcb(payload, s->data, localpath);
 | 
			
		||||
				}
 | 
			
		||||
				for(s = payload->servers; s && ret == -1; s = s->next) {
 | 
			
		||||
					const char *server = s->data;
 | 
			
		||||
					char *fileurl;
 | 
			
		||||
 | 
			
		||||
					size_t len = strlen(server) + strlen(payload->filepath) + 2;
 | 
			
		||||
					MALLOC(fileurl, len, RET_ERR(handle, ALPM_ERR_MEMORY, -1));
 | 
			
		||||
					snprintf(fileurl, len, "%s/%s", server, payload->filepath);
 | 
			
		||||
 | 
			
		||||
					ret = handle->fetchcb(handle->fetchcb_ctx, fileurl, localpath, payload->force);
 | 
			
		||||
					free(fileurl);
 | 
			
		||||
					ret = payload_download_fetchcb(payload, s->data, localpath);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -37,6 +37,7 @@ struct dload_payload {
 | 
			
		||||
	 */
 | 
			
		||||
	char *fileurl;
 | 
			
		||||
	char *filepath; /* download URL path */
 | 
			
		||||
	alpm_list_t *cache_servers;
 | 
			
		||||
	alpm_list_t *servers;
 | 
			
		||||
	long respcode;
 | 
			
		||||
	off_t initial_size;
 | 
			
		||||
@@ -55,6 +56,7 @@ struct dload_payload {
 | 
			
		||||
	char error_buffer[CURL_ERROR_SIZE];
 | 
			
		||||
	FILE *localf; /* temp download file */
 | 
			
		||||
	int signature; /* specifies if this payload is for a signature file */
 | 
			
		||||
	int request_errors_ok; /* per-request errors-ok */
 | 
			
		||||
#endif
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -48,12 +48,28 @@ alpm_handle_t *_alpm_handle_new(void)
 | 
			
		||||
	return handle;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* free all in-memory resources */
 | 
			
		||||
void _alpm_handle_free(alpm_handle_t *handle)
 | 
			
		||||
{
 | 
			
		||||
	alpm_list_t *i;
 | 
			
		||||
	alpm_db_t *db;
 | 
			
		||||
 | 
			
		||||
	if(handle == NULL) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* close local database */
 | 
			
		||||
	if((db = handle->db_local)) {
 | 
			
		||||
		db->ops->unregister(db);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* unregister all sync dbs */
 | 
			
		||||
	for(i = handle->dbs_sync; i; i = i->next) {
 | 
			
		||||
		db = i->data;
 | 
			
		||||
		db->ops->unregister(db);
 | 
			
		||||
	}
 | 
			
		||||
	alpm_list_free(handle->dbs_sync);
 | 
			
		||||
 | 
			
		||||
	/* close logfile */
 | 
			
		||||
	if(handle->logstream) {
 | 
			
		||||
		fclose(handle->logstream);
 | 
			
		||||
@@ -68,6 +84,12 @@ void _alpm_handle_free(alpm_handle_t *handle)
 | 
			
		||||
	FREELIST(handle->known_keys);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef HAVE_LIBCURL
 | 
			
		||||
	curl_multi_cleanup(handle->curlm);
 | 
			
		||||
	curl_global_cleanup();
 | 
			
		||||
	FREELIST(handle->server_errors);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	/* free memory */
 | 
			
		||||
	_alpm_trans_free(handle->trans);
 | 
			
		||||
	FREE(handle->root);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
prefix=@prefix@
 | 
			
		||||
exec_prefix=@exec_prefix@
 | 
			
		||||
libdir=@libdir@
 | 
			
		||||
includedir=@includedir@
 | 
			
		||||
 | 
			
		||||
Name: libalpm
 | 
			
		||||
Description: Arch Linux package management library
 | 
			
		||||
URL: http://archlinux.org/pacman/
 | 
			
		||||
Version: @LIB_VERSION@
 | 
			
		||||
Requires.private: libarchive @pc_crypto@ @pc_libcurl@ @pc_gpgme@
 | 
			
		||||
Cflags: -I${includedir} @LFS_CFLAGS@
 | 
			
		||||
Libs: -L${libdir} -lalpm
 | 
			
		||||
Libs.private: @LIBS@ @pc_gpgme_libs@ @LIBINTL@
 | 
			
		||||
@@ -21,6 +21,7 @@
 | 
			
		||||
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
@@ -844,3 +845,58 @@ int SYMEXPORT alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg)
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* check that package metadata meets our requirements */
 | 
			
		||||
int _alpm_pkg_check_meta(alpm_pkg_t *pkg)
 | 
			
		||||
{
 | 
			
		||||
	char *c;
 | 
			
		||||
	int error_found = 0;
 | 
			
		||||
 | 
			
		||||
#define EPKGMETA(error) do { \
 | 
			
		||||
	error_found = -1; \
 | 
			
		||||
	_alpm_log(pkg->handle, ALPM_LOG_ERROR, error, pkg->name, pkg->version); \
 | 
			
		||||
} while(0)
 | 
			
		||||
 | 
			
		||||
	/* sanity check */
 | 
			
		||||
	if(pkg->handle == NULL) {
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* immediate bail if package doesn't have name or version */
 | 
			
		||||
	if(pkg->name == NULL || pkg->name[0] == '\0'
 | 
			
		||||
			|| pkg->version == NULL || pkg->version[0] == '\0') {
 | 
			
		||||
		_alpm_log(pkg->handle, ALPM_LOG_ERROR,
 | 
			
		||||
				_("invalid package metadata (name or version missing)"));
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(pkg->name[0] == '-' || pkg->name[0] == '.') {
 | 
			
		||||
		EPKGMETA(_("invalid metadata for package %s-%s "
 | 
			
		||||
					"(package name cannot start with '.' or '-')\n"));
 | 
			
		||||
	}
 | 
			
		||||
	if(_alpm_fnmatch(pkg->name, "[![:alnum:]+_.@-]") == 0) {
 | 
			
		||||
		EPKGMETA(_("invalid metadata for package %s-%s "
 | 
			
		||||
					"(package name contains invalid characters)\n"));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* multiple '-' in pkgver can cause local db entries for different packages
 | 
			
		||||
	 * to overlap (e.g. foo-1=2-3 and foo=1-2-3 both give foo-1-2-3) */
 | 
			
		||||
	if((c = strchr(pkg->version, '-')) && (strchr(c + 1, '-'))) {
 | 
			
		||||
		EPKGMETA(_("invalid metadata for package %s-%s "
 | 
			
		||||
					"(package version contains invalid characters)\n"));
 | 
			
		||||
	}
 | 
			
		||||
	if(strchr(pkg->version, '/')) {
 | 
			
		||||
		EPKGMETA(_("invalid metadata for package %s-%s "
 | 
			
		||||
					"(package version contains invalid characters)\n"));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* local db entry is <pkgname>-<pkgver> */
 | 
			
		||||
	if(strlen(pkg->name) + strlen(pkg->version) + 1 > NAME_MAX) {
 | 
			
		||||
		EPKGMETA(_("invalid metadata for package %s-%s "
 | 
			
		||||
					"(package name and version too long)\n"));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#undef EPKGMETA
 | 
			
		||||
 | 
			
		||||
	return error_found;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -165,4 +165,6 @@ int _alpm_pkg_compare_versions(alpm_pkg_t *local_pkg, alpm_pkg_t *pkg);
 | 
			
		||||
alpm_pkg_xdata_t *_alpm_pkg_parse_xdata(const char *string);
 | 
			
		||||
void _alpm_pkg_xdata_free(alpm_pkg_xdata_t *pd);
 | 
			
		||||
 | 
			
		||||
int _alpm_pkg_check_meta(alpm_pkg_t *pkg);
 | 
			
		||||
 | 
			
		||||
#endif /* ALPM_PACKAGE_H */
 | 
			
		||||
 
 | 
			
		||||
@@ -420,7 +420,9 @@ static void shift_pacsave(alpm_handle_t *handle, const char *file)
 | 
			
		||||
 | 
			
		||||
cleanup:
 | 
			
		||||
	free(dirname);
 | 
			
		||||
	closedir(dir);
 | 
			
		||||
	if(dir != NULL) {
 | 
			
		||||
		closedir(dir);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1044,7 +1044,7 @@ int SYMEXPORT alpm_siglist_cleanup(alpm_siglist_t *siglist)
 | 
			
		||||
static size_t length_check(size_t length, size_t position, size_t a,
 | 
			
		||||
		alpm_handle_t *handle, const char *identifier)
 | 
			
		||||
{
 | 
			
		||||
	if( a == 0 || length - position <= a) {
 | 
			
		||||
	if( a == 0 || position > length || length - position <= a) {
 | 
			
		||||
		_alpm_log(handle, ALPM_LOG_ERROR,
 | 
			
		||||
				_("%s: signature format error\n"), identifier);
 | 
			
		||||
		return -1;
 | 
			
		||||
 
 | 
			
		||||
@@ -828,6 +828,7 @@ static int download_files(alpm_handle_t *handle)
 | 
			
		||||
				FREE(payload->remote_name); FREE(payload);
 | 
			
		||||
				GOTO_ERR(handle, ALPM_ERR_MEMORY, finish));
 | 
			
		||||
			payload->max_size = pkg->size;
 | 
			
		||||
			payload->cache_servers = pkg->origin_data.db->cache_servers;
 | 
			
		||||
			payload->servers = pkg->origin_data.db->servers;
 | 
			
		||||
			payload->handle = handle;
 | 
			
		||||
			payload->allow_resume = 1;
 | 
			
		||||
@@ -995,6 +996,13 @@ static int check_validity(alpm_handle_t *handle,
 | 
			
		||||
 | 
			
		||||
		current_bytes += v.pkg->size;
 | 
			
		||||
		v.path = _alpm_filecache_find(handle, v.pkg->filename);
 | 
			
		||||
 | 
			
		||||
		if(!v.path) {
 | 
			
		||||
			_alpm_log(handle, ALPM_LOG_ERROR,
 | 
			
		||||
					_("%s: could not find package in cache\n"), v.pkg->name);
 | 
			
		||||
			RET_ERR(handle, ALPM_ERR_PKG_NOT_FOUND, -1);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		v.siglevel = alpm_db_get_siglevel(alpm_pkg_get_db(v.pkg));
 | 
			
		||||
 | 
			
		||||
		if(_alpm_pkg_validate_internal(handle, v.path, v.pkg,
 | 
			
		||||
@@ -1086,6 +1094,12 @@ static int load_packages(alpm_handle_t *handle, alpm_list_t **data,
 | 
			
		||||
		current_bytes += spkg->size;
 | 
			
		||||
		filepath = _alpm_filecache_find(handle, spkg->filename);
 | 
			
		||||
 | 
			
		||||
		if(!filepath) {
 | 
			
		||||
			_alpm_log(handle, ALPM_LOG_ERROR,
 | 
			
		||||
					_("%s: could not find package in cache\n"), spkg->name);
 | 
			
		||||
			RET_ERR(handle, ALPM_ERR_PKG_NOT_FOUND, -1);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* load the package file and replace pkgcache entry with it in the target list */
 | 
			
		||||
		/* TODO: alpm_pkg_get_db() will not work on this target anymore */
 | 
			
		||||
		_alpm_log(handle, ALPM_LOG_DEBUG,
 | 
			
		||||
 
 | 
			
		||||
@@ -31,6 +31,7 @@
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <sys/wait.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
#include <fnmatch.h>
 | 
			
		||||
#include <poll.h>
 | 
			
		||||
#include <signal.h>
 | 
			
		||||
@@ -654,7 +655,9 @@ int _alpm_run_chroot(alpm_handle_t *handle, const char *cmd, char *const argv[],
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* use fprintf instead of _alpm_log to send output through the parent */
 | 
			
		||||
		if(chroot(handle->root) != 0) {
 | 
			
		||||
		/* don't chroot() to "/": this allows running with less caps when the
 | 
			
		||||
		 * caller puts us in the right root */
 | 
			
		||||
		if(strcmp(handle->root, "/") != 0 && chroot(handle->root) != 0) {
 | 
			
		||||
			fprintf(stderr, _("could not change the root directory (%s)\n"), strerror(errno));
 | 
			
		||||
			exit(1);
 | 
			
		||||
		}
 | 
			
		||||
@@ -672,6 +675,7 @@ int _alpm_run_chroot(alpm_handle_t *handle, const char *cmd, char *const argv[],
 | 
			
		||||
		unsetenv("BASH_ENV");
 | 
			
		||||
		umask(0022);
 | 
			
		||||
		_alpm_reset_signals();
 | 
			
		||||
		_alpm_handle_free(handle);
 | 
			
		||||
		execv(cmd, argv);
 | 
			
		||||
		/* execv only returns if there was an error */
 | 
			
		||||
		fprintf(stderr, _("call to execv failed (%s)\n"), strerror(errno));
 | 
			
		||||
@@ -842,10 +846,17 @@ char *_alpm_filecache_find(alpm_handle_t *handle, const char *filename)
 | 
			
		||||
	for(i = handle->cachedirs; i; i = i->next) {
 | 
			
		||||
		snprintf(path, PATH_MAX, "%s%s", (char *)i->data,
 | 
			
		||||
				filename);
 | 
			
		||||
		if(stat(path, &buf) == 0 && S_ISREG(buf.st_mode)) {
 | 
			
		||||
			retpath = strdup(path);
 | 
			
		||||
			_alpm_log(handle, ALPM_LOG_DEBUG, "found cached pkg: %s\n", retpath);
 | 
			
		||||
			return retpath;
 | 
			
		||||
		if(stat(path, &buf) == 0) {
 | 
			
		||||
			if(S_ISREG(buf.st_mode)) {
 | 
			
		||||
				retpath = strdup(path);
 | 
			
		||||
				_alpm_log(handle, ALPM_LOG_DEBUG, "found cached pkg: %s\n", retpath);
 | 
			
		||||
				return retpath;
 | 
			
		||||
			} else {
 | 
			
		||||
				_alpm_log(handle, ALPM_LOG_WARNING,
 | 
			
		||||
						"cached pkg '%s' is not a regular file: mode=%i\n", path, buf.st_mode);
 | 
			
		||||
			}
 | 
			
		||||
		} else if(errno != ENOENT) {
 | 
			
		||||
			_alpm_log(handle, ALPM_LOG_WARNING, "could not open '%s'\n: %s", path, strerror(errno));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	/* package wasn't found in any cachedir */
 | 
			
		||||
@@ -1352,6 +1363,11 @@ int _alpm_access(alpm_handle_t *handle, const char *dir, const char *file, int a
 | 
			
		||||
	size_t len = 0;
 | 
			
		||||
	int ret = 0;
 | 
			
		||||
 | 
			
		||||
	int flag = 0;
 | 
			
		||||
#ifdef AT_SYMLINK_NOFOLLOW
 | 
			
		||||
	flag |= AT_SYMLINK_NOFOLLOW;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	if(dir) {
 | 
			
		||||
		char *check_path;
 | 
			
		||||
 | 
			
		||||
@@ -1359,11 +1375,11 @@ int _alpm_access(alpm_handle_t *handle, const char *dir, const char *file, int a
 | 
			
		||||
		CALLOC(check_path, len, sizeof(char), RET_ERR(handle, ALPM_ERR_MEMORY, -1));
 | 
			
		||||
		snprintf(check_path, len, "%s%s", dir, file);
 | 
			
		||||
 | 
			
		||||
		ret = access(check_path, amode);
 | 
			
		||||
		ret = faccessat(AT_FDCWD, check_path, amode, flag);
 | 
			
		||||
		free(check_path);
 | 
			
		||||
	} else {
 | 
			
		||||
		dir = "";
 | 
			
		||||
		ret = access(file, amode);
 | 
			
		||||
		ret = faccessat(AT_FDCWD, file, amode, flag);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if(ret != 0) {
 | 
			
		||||
 
 | 
			
		||||
@@ -233,6 +233,7 @@ if get_option('debug')
 | 
			
		||||
    '-Wuninitialized',
 | 
			
		||||
    '-Wunused-but-set-parameter',
 | 
			
		||||
    '-Wunused-parameter',
 | 
			
		||||
    '-Wunused-result',
 | 
			
		||||
    '-Wwrite-strings',
 | 
			
		||||
  ]
 | 
			
		||||
  add_project_arguments(cc.get_supported_arguments(extra_cflags), language : 'c')
 | 
			
		||||
@@ -359,7 +360,9 @@ pkgconfig.generate(
 | 
			
		||||
  name : 'libalpm',
 | 
			
		||||
  description : 'Arch Linux package management library',
 | 
			
		||||
  version : libalpm_version,
 | 
			
		||||
  url : 'http://archlinux.org/pacman/')
 | 
			
		||||
  url : 'http://archlinux.org/pacman/',
 | 
			
		||||
  extra_cflags: [ '-D_FILE_OFFSET_BITS=64' ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
pacman_bin = executable(
 | 
			
		||||
  'pacman',
 | 
			
		||||
 
 | 
			
		||||
@@ -553,7 +553,7 @@ _pacman_conf_directive() {
 | 
			
		||||
 | 
			
		||||
_pacman_conf_commands=(
 | 
			
		||||
	{-l,--repo-list}'[List configured repositories]:*: :->repo_list'
 | 
			
		||||
	{-h,--help}'[Output systax and command line options]:*: :->complete'
 | 
			
		||||
	{-h,--help}'[Output syntax and command line options]:*: :->complete'
 | 
			
		||||
	{-V,--version}'[Display version and exit]:*: :->complete'
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -564,7 +564,7 @@ _pacman_conf_options=(
 | 
			
		||||
 | 
			
		||||
_pacman_conf_options_common=(
 | 
			
		||||
	'*'{-c,--config=}'[Specify an alternate configuration file]: :_files'
 | 
			
		||||
	'*'{-R,--rootdir=}'[Specify an alternate insallation root]: :_files'
 | 
			
		||||
	'*'{-R,--rootdir=}'[Specify an alternate installation root]: :_files'
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
_pacman_conf() {
 | 
			
		||||
 
 | 
			
		||||
@@ -21,11 +21,11 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_AUTODEP_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_AUTODEP_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
declare -a autodep_functions
 | 
			
		||||
 | 
			
		||||
for lib in "$LIBRARY/autodep/"*.sh; do
 | 
			
		||||
for lib in "$MAKEPKG_LIBRARY/autodep/"*.sh; do
 | 
			
		||||
	source "$lib"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_AUTODEP_LIBRARY_DEPENDS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_AUTODEP_LIBRARY_DEPENDS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
autodep_functions+=('library_depends')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_AUTODEP_LIBRARY_PROVIDES_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_AUTODEP_LIBRARY_PROVIDES_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
autodep_functions+=('library_provides')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,12 +22,12 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_BUILDENV_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_BUILDENV_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
declare -a buildenv_functions build_options
 | 
			
		||||
buildenv_vars=('CPPFLAGS' 'CFLAGS' 'CXXFLAGS' 'LDFLAGS' 'MAKEFLAGS' 'CHOST')
 | 
			
		||||
 | 
			
		||||
for lib in "$LIBRARY/buildenv/"*.sh; do
 | 
			
		||||
for lib in "$MAKEPKG_LIBRARY/buildenv/"*.sh; do
 | 
			
		||||
	source "$lib"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_BUILDENV_BUILDFLAGS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_BUILDENV_BUILDFLAGS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
 | 
			
		||||
build_options+=('buildflags')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,9 +23,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_BUILDENV_COMPILER_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_BUILDENV_COMPILER_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
 | 
			
		||||
build_options+=('ccache' 'distcc')
 | 
			
		||||
buildenv_functions+=('buildenv_ccache' 'buildenv_distcc')
 | 
			
		||||
 
 | 
			
		||||
@@ -22,17 +22,18 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_BUILDENV_DEBUGFLAGS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_BUILDENV_DEBUGFLAGS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/util.sh"
 | 
			
		||||
 | 
			
		||||
buildenv_functions+=('buildenv_debugflags')
 | 
			
		||||
 | 
			
		||||
buildenv_debugflags() {
 | 
			
		||||
	if check_option "debug" "y" && ! check_option "buildflags" "n"; then
 | 
			
		||||
		DEBUG_CFLAGS+=" -ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
 | 
			
		||||
		DEBUG_CXXFLAGS+=" -ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
 | 
			
		||||
		CFLAGS+=" $DEBUG_CFLAGS"
 | 
			
		||||
		CXXFLAGS+=" $DEBUG_CXXFLAGS"
 | 
			
		||||
		append_once DEBUG_CFLAGS "-ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
 | 
			
		||||
		append_once DEBUG_CXXFLAGS "-ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
 | 
			
		||||
		append_once CFLAGS "$DEBUG_CFLAGS"
 | 
			
		||||
		append_once CXXFLAGS "$DEBUG_CXXFLAGS"
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -22,17 +22,18 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_BUILDENV_LTO_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_BUILDENV_LTO_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/util.sh"
 | 
			
		||||
 | 
			
		||||
build_options+=('lto')
 | 
			
		||||
buildenv_functions+=('buildenv_lto')
 | 
			
		||||
 | 
			
		||||
buildenv_lto() {
 | 
			
		||||
	if check_option "lto" "y" && ! check_option "buildflags" "n"; then
 | 
			
		||||
		CFLAGS+=" ${LTOFLAGS:--flto}"
 | 
			
		||||
		CXXFLAGS+=" ${LTOFLAGS:--flto}"
 | 
			
		||||
		LDFLAGS+=" ${LTOFLAGS:--flto}"
 | 
			
		||||
		append_once CFLAGS "${LTOFLAGS:--flto}"
 | 
			
		||||
		append_once CXXFLAGS "${LTOFLAGS:--flto}"
 | 
			
		||||
		append_once LDFLAGS "${LTOFLAGS:--flto}"
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_BUILDENV_MAKEFLAGS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_BUILDENV_MAKEFLAGS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
 | 
			
		||||
build_options+=('makeflags')
 | 
			
		||||
buildenv_functions+=('buildenv_makeflags')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,16 +21,17 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_BUILDENV_RUST_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_BUILDENV_RUST_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/util.sh"
 | 
			
		||||
 | 
			
		||||
buildenv_var+=('RUSTFLAGS' 'DEBUG_RUSTFLAGS')
 | 
			
		||||
buildenv_vars+=('RUSTFLAGS' 'DEBUG_RUSTFLAGS')
 | 
			
		||||
buildenv_functions+=('buildenv_rust')
 | 
			
		||||
 | 
			
		||||
buildenv_rust() {
 | 
			
		||||
	if check_option "debug" "y" && ! check_option "buildflags" "n"; then
 | 
			
		||||
		DEBUG_RUSTFLAGS+=" --remap-path-prefix=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
 | 
			
		||||
		RUSTFLAGS+=" $DEBUG_RUSTFLAGS"
 | 
			
		||||
		append_once DEBUG_RUSTFLAGS "--remap-path-prefix=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
 | 
			
		||||
		append_once RUSTFLAGS "$DEBUG_RUSTFLAGS"
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
@@ -21,11 +21,11 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
declare -a executable_functions
 | 
			
		||||
 | 
			
		||||
for lib in "$LIBRARY/executable/"*.sh; do
 | 
			
		||||
for lib in "$MAKEPKG_LIBRARY/executable/"*.sh; do
 | 
			
		||||
	source "$lib"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_CCACHE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_CCACHE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
 | 
			
		||||
executable_functions+=('executable_ccache')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_CHECKSUM_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_CHECKSUM_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
executable_functions+=('executable_checksum')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_DEBUGEDIT_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_DEBUGEDIT_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
 | 
			
		||||
executable_functions+=('executable_debugedit')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_DISTCC_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_DISTCC_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
 | 
			
		||||
executable_functions+=('executable_distcc')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_FAKEROOT_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_FAKEROOT_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
executable_functions+=('executable_fakeroot')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_GPG_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_GPG_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
 | 
			
		||||
executable_functions+=('executable_gpg')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_GZIP_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_GZIP_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
 | 
			
		||||
executable_functions+=('executable_gzip')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_PACMAN_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_PACMAN_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
executable_functions+=('executable_pacman')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_STRIP_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_STRIP_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/option.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/option.sh"
 | 
			
		||||
 | 
			
		||||
executable_functions+=('executable_strip')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_SUDO_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_SUDO_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
executable_functions+=('executable_sudo')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_EXECUTABLE_VCS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_EXECUTABLE_VCS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/error.sh"
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/error.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
executable_functions+=('executable_vcs')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,11 +21,11 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_INTEGRITY_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_INTEGRITY_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
for lib in "$LIBRARY/integrity/"*.sh; do
 | 
			
		||||
for lib in "$MAKEPKG_LIBRARY/integrity/"*.sh; do
 | 
			
		||||
	source "$lib"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
@@ -42,4 +42,7 @@ check_source_integrity() {
 | 
			
		||||
		check_checksums "$@"
 | 
			
		||||
		check_pgpsigs "$@"
 | 
			
		||||
	fi
 | 
			
		||||
	if (( VERIFYFUNC )); then
 | 
			
		||||
		run_verify
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,11 +21,11 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_INTEGRITY_GENERATE_CHECKSUM_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_INTEGRITY_GENERATE_CHECKSUM_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$LIBRARY/util/schema.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/schema.sh"
 | 
			
		||||
 | 
			
		||||
generate_one_checksum() {
 | 
			
		||||
	local integ=$1 arch=$2 sources numsrc indentsz idx
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_INTEGRITY_GENERATE_SIGNATURE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_INTEGRITY_GENERATE_SIGNATURE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
create_signature() {
 | 
			
		||||
	local ret=0
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_INTEGRITY_VERIFY_CHECKSUM_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_INTEGRITY_CHECKSUM_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$LIBRARY/util/schema.sh"
 | 
			
		||||
source "$LIBRARY/source.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/schema.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/source.sh"
 | 
			
		||||
 | 
			
		||||
check_checksums() {
 | 
			
		||||
	local integ a
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,16 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_INTEGRITY_VERIFY_SIGNATURE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_INTEGRITY_VERIFY_SIGNATURE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
# Filter the contents of a GnuPG statusfile to only contain understood terms to narrow the file's scope and circumvent
 | 
			
		||||
# the use of terms (e.g. NOTATION_DATA) that may contain unescaped binary data
 | 
			
		||||
filter_gnupg_statusfile() {
 | 
			
		||||
	grep -E "(.*SIG| TRUST_.*)"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_pgpsigs() {
 | 
			
		||||
	(( SKIPPGPCHECK )) && return 0
 | 
			
		||||
@@ -35,6 +41,7 @@ check_pgpsigs() {
 | 
			
		||||
	local netfile proto pubkey success status fingerprint trusted
 | 
			
		||||
	local warnings=0
 | 
			
		||||
	local errors=0
 | 
			
		||||
	local statusfile_raw="$(mktemp)"
 | 
			
		||||
	local statusfile=$(mktemp)
 | 
			
		||||
	local all_sources
 | 
			
		||||
 | 
			
		||||
@@ -103,7 +110,7 @@ check_pgpsigs() {
 | 
			
		||||
		printf '\n' >&2
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
	rm -f "$statusfile"
 | 
			
		||||
	rm -f "$statusfile" "$statusfile_raw"
 | 
			
		||||
 | 
			
		||||
	if (( errors )); then
 | 
			
		||||
		error "$(gettext "One or more PGP signatures could not be verified!")"
 | 
			
		||||
@@ -157,7 +164,20 @@ verify_file_signature() {
 | 
			
		||||
		"")  decompress="cat" ;;
 | 
			
		||||
	esac
 | 
			
		||||
 | 
			
		||||
	$decompress < "$sourcefile" | gpg --quiet --batch --status-file "$statusfile" --verify "$file" - 2> /dev/null
 | 
			
		||||
	# verify the signature and write metadata to a status file
 | 
			
		||||
	if ! $decompress < "$sourcefile" | gpg --quiet --batch --status-file "$statusfile_raw" --verify "$file" - 2> /dev/null; then
 | 
			
		||||
		printf '%s\n' "$(gettext "%s is unable to verify the signature.")" "gpg" >&2
 | 
			
		||||
		errors=1
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	# create a statusfile that contains only understood terms
 | 
			
		||||
	if ! filter_gnupg_statusfile > "$statusfile" < "$statusfile_raw"; then
 | 
			
		||||
		printf '%s\n' "$(gettext "unable to extract signature metadata.")" >&2
 | 
			
		||||
		errors=1
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -189,18 +209,33 @@ verify_git_signature() {
 | 
			
		||||
 | 
			
		||||
	printf "    %s git repo ... " "${dir##*/}" >&2
 | 
			
		||||
 | 
			
		||||
	git -C "$dir" verify-$fragtype --raw "$fragval" > "$statusfile" 2>&1
 | 
			
		||||
	if ! grep -qs NEWSIG "$statusfile"; then
 | 
			
		||||
		printf '%s\n' "$(gettext "SIGNATURE NOT FOUND")" >&2
 | 
			
		||||
	# verify the signature and write metadata to a status file
 | 
			
		||||
	if ! git -C "$dir" verify-$fragtype --raw "$fragval" > "$statusfile_raw" 2>&1; then
 | 
			
		||||
		printf '%s\n' "$(gettext "%s is unable to verify the signature.")" "git" >&2
 | 
			
		||||
		errors=1
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	# create a statusfile that contains only understood terms
 | 
			
		||||
	if ! filter_gnupg_statusfile > "$statusfile" < "$statusfile_raw"; then
 | 
			
		||||
		printf '%s\n' "$(gettext "unable to extract signature metadata.")" >&2
 | 
			
		||||
		errors=1
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
parse_gpg_statusfile() {
 | 
			
		||||
	local type arg1 arg6 arg10
 | 
			
		||||
 | 
			
		||||
	# ensure the NEWSIG keyword is part of the metadata
 | 
			
		||||
	if ! grep -qs NEWSIG "$statusfile"; then
 | 
			
		||||
		printf '%s\n' "$(gettext "SIGNATURE NOT FOUND")" >&2
 | 
			
		||||
		errors=1
 | 
			
		||||
		return 1
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	while read -r _ type arg1 _ _ _ _ arg6 _ _ _ arg10 _; do
 | 
			
		||||
		case "$type" in
 | 
			
		||||
			GOODSIG)
 | 
			
		||||
 
 | 
			
		||||
@@ -21,15 +21,15 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_CONFIG_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_CONFIG_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'/usr/share/makepkg'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'/usr/share/makepkg'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/util.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/util.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
declare -a lint_config_functions
 | 
			
		||||
 | 
			
		||||
for lib in "$LIBRARY/lint_config/"*.sh; do
 | 
			
		||||
for lib in "$MAKEPKG_LIBRARY/lint_config/"*.sh; do
 | 
			
		||||
	source "$lib"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_CONFIG_EXT_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_CONFIG_EXT_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
lint_config_functions+=('lint_ext')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_CONFIG_PATHS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_CONFIG_PATHS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
lint_config_functions+=('lint_paths')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n $LIBMAKEPKG_LINT_CONFIG_SOURCE_DATE_EPOCH_SH ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_CONFIG_SOURCE_DATE_EPOCH_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
lint_config_functions+=('lint_source_date_epoch')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_CONFIG_VARIABLE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_CONFIG_VARIABLE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
lint_config_functions+=('lint_config_variables')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,15 +21,15 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PACKAGE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PACKAGE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/util.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/util.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
declare -a lint_package_functions
 | 
			
		||||
 | 
			
		||||
for lib in "$LIBRARY/lint_package/"*.sh; do
 | 
			
		||||
for lib in "$MAKEPKG_LIBRARY/lint_package/"*.sh; do
 | 
			
		||||
	source "$lib"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PACKAGE_BUILD_REFERENCES_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PACKAGE_BUILD_REFERENCES_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
lint_package_functions+=('warn_build_references')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PACKAGE_DOTFILES_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PACKAGE_DOTFILES_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
lint_package_functions+=('check_dotfiles')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PACKAGE_FILE_NAMES_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PACKAGE_FILE_NAMES_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
lint_package_functions+=('lint_file_names')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PACKAGE_MISSING_BACKUP_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PACKAGE_MISSING_BACKUP_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_package_functions+=('warn_missing_backup')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,14 +21,14 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
declare -a lint_pkgbuild_functions
 | 
			
		||||
 | 
			
		||||
for lib in "$LIBRARY/lint_pkgbuild/"*.sh; do
 | 
			
		||||
for lib in "$MAKEPKG_LIBRARY/lint_pkgbuild/"*.sh; do
 | 
			
		||||
	source "$lib"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_ARCH_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_ARCH_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_arch')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_ARCH_SPECIFIC_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_ARCH_SPECIFIC_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$LIBRARY/util/schema.sh"
 | 
			
		||||
source "$LIBRARY/util/util.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/schema.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/util.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_arch_specific')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_BACKUP_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_BACKUP_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_backup')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,11 +21,11 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_CHANGELOG_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_CHANGELOG_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/util.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/util.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_changelog')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_CHECKDEPENDS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_CHECKDEPENDS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_checkdepends')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_CONFLICTS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_CONFLICTS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_conflicts')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_DEPENDS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_DEPENDS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_depends')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_EPOCH_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_EPOCH_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_epoch')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,11 +21,11 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_FULLPKGVER_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_FULLPKGVER_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/epoch.sh"
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/pkgrel.sh"
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/pkgver.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/epoch.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/pkgrel.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/pkgver.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
check_fullpkgver() {
 | 
			
		||||
 
 | 
			
		||||
@@ -21,11 +21,11 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_INSTALL_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_INSTALL_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/util.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/util.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_install')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_MAKEDEPENDS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_MAKEDEPENDS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_makedepends')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_OPTDEPENDS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_OPTDEPENDS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_optdepends')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_OPTIONS_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_OPTIONS_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_options')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_PACKAGE_FUNCTION_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_PACKAGE_FUNCTION_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_package_function')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_PACKAGE_FUNCTION_VARIABLE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_PACKAGE_FUNCTION_VARIABLE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$LIBRARY/util/schema.sh"
 | 
			
		||||
source "$LIBRARY/util/util.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/schema.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/util.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_package_function_variable')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_PKGBASE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_PKGBASE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_pkgbase')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,10 +21,10 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_PKGLIST_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_PKGLIST_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/util.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/util.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_pkglist')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_PKGNAME_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_PKGNAME_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_pkgname')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_PKGREL_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_PKGREL_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_pkgrel')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_PKGVER_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_PKGVER_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_pkgver')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,12 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_PROVIDES_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_PROVIDES_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/fullpkgver.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/lint_pkgbuild/pkgname.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_provides')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_SOURCE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_SOURCE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_source')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_UTIL_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_UTIL_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
check_files_exist() {
 | 
			
		||||
 
 | 
			
		||||
@@ -21,11 +21,11 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_LINT_PKGBUILD_VARIABLE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_LINT_PKGBUILD_VARIABLE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$LIBRARY/util/schema.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/schema.sh"
 | 
			
		||||
 | 
			
		||||
lint_pkgbuild_functions+=('lint_variable')
 | 
			
		||||
lint_pkgbuild_functions+=('lint_array')
 | 
			
		||||
 
 | 
			
		||||
@@ -21,9 +21,9 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_REPRODUCIBLE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_REPRODUCIBLE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
for lib in "$LIBRARY/reproducible/"*.sh; do
 | 
			
		||||
for lib in "$MAKEPKG_LIBRARY/reproducible/"*.sh; do
 | 
			
		||||
	source "$lib"
 | 
			
		||||
done
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@
 | 
			
		||||
LIBMAKEPKG_REPRODUCIBLE_PYTHON_SH=1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# disable hash randomization when creating .pyc files
 | 
			
		||||
 
 | 
			
		||||
@@ -21,14 +21,14 @@
 | 
			
		||||
[[ -n "$LIBMAKEPKG_SOURCE_SH" ]] && return
 | 
			
		||||
LIBMAKEPKG_SOURCE_SH=1
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$LIBRARY/util/source.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/source.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
for lib in "$LIBRARY/source/"*.sh; do
 | 
			
		||||
for lib in "$MAKEPKG_LIBRARY/source/"*.sh; do
 | 
			
		||||
	source "$lib"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -22,10 +22,10 @@
 | 
			
		||||
LIBMAKEPKG_SOURCE_BZR_SH=1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
download_bzr() {
 | 
			
		||||
 
 | 
			
		||||
@@ -22,10 +22,10 @@
 | 
			
		||||
LIBMAKEPKG_SOURCE_FILE_SH=1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
download_file() {
 | 
			
		||||
 
 | 
			
		||||
@@ -22,10 +22,10 @@
 | 
			
		||||
LIBMAKEPKG_SOURCE_FOSSIL_SH=1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
download_fossil() {
 | 
			
		||||
	# abort early if parent says not to fetch
 | 
			
		||||
 
 | 
			
		||||
@@ -22,10 +22,10 @@
 | 
			
		||||
LIBMAKEPKG_SOURCE_GIT_SH=1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
download_git() {
 | 
			
		||||
@@ -56,7 +56,8 @@ download_git() {
 | 
			
		||||
	elif (( ! HOLDVER )); then
 | 
			
		||||
		cd_safe "$dir"
 | 
			
		||||
		# Make sure we are fetching the right repo
 | 
			
		||||
		if [[ "$url" != "$(git config --get remote.origin.url)" ]] ; then
 | 
			
		||||
		local remote_url="$(git config --get remote.origin.url)"
 | 
			
		||||
		if [[ "${url%%.git}" != "${remote_url%%.git}" ]] ; then
 | 
			
		||||
			error "$(gettext "%s is not a clone of %s")" "$dir" "$url"
 | 
			
		||||
			plainerr "$(gettext "Aborting...")"
 | 
			
		||||
			exit 1
 | 
			
		||||
 
 | 
			
		||||
@@ -22,10 +22,10 @@
 | 
			
		||||
LIBMAKEPKG_SOURCE_HG_SH=1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
 | 
			
		||||
 | 
			
		||||
source "$LIBRARY/util/message.sh"
 | 
			
		||||
source "$LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/message.sh"
 | 
			
		||||
source "$MAKEPKG_LIBRARY/util/pkgbuild.sh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
download_hg() {
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user