forked from mirrors/pacman
Compare commits
32 Commits
allan/pkgd
...
morganamil
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5e52dc0906 | ||
|
|
015cdb21bd | ||
|
|
05f283b5ad | ||
|
|
34611a6643 | ||
|
|
76b140c72a | ||
|
|
5f43ac85f6 | ||
|
|
0dfe5c96ae | ||
|
|
36d70a93e2 | ||
|
|
717e5e9157 | ||
|
|
e7d7433b4b | ||
|
|
e210634982 | ||
|
|
6968f77026 | ||
|
|
06db927a1a | ||
|
|
909f2e86c3 | ||
|
|
5bd0b98b42 | ||
|
|
c1d4a6198c | ||
|
|
f5af66f130 | ||
|
|
5473c9fd3f | ||
|
|
e58d799c47 | ||
|
|
366b527757 | ||
|
|
e83e53f3f9 | ||
|
|
2348dcab22 | ||
|
|
f9d8beef45 | ||
|
|
85ab0307d7 | ||
|
|
ffde12cebd | ||
|
|
37dae721d3 | ||
|
|
aa3a1bc3b5 | ||
|
|
298755c905 | ||
|
|
ee933acf84 | ||
|
|
ca3c873d48 | ||
|
|
2fc2ab6cf0 | ||
|
|
843bf21e79 |
@@ -16,6 +16,10 @@ default:
|
|||||||
python
|
python
|
||||||
fakeroot fakechroot
|
fakeroot fakechroot
|
||||||
meson
|
meson
|
||||||
|
artifacts:
|
||||||
|
when: always
|
||||||
|
paths:
|
||||||
|
- build/meson-logs/meson-log.txt
|
||||||
|
|
||||||
arch:
|
arch:
|
||||||
extends: .arch-test
|
extends: .arch-test
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ depends=('glibc')
|
|||||||
makedepends=('ed')
|
makedepends=('ed')
|
||||||
optdepends=('ed: for "patch -e" functionality')
|
optdepends=('ed: for "patch -e" functionality')
|
||||||
source=("ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz"{,.sig})
|
source=("ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz"{,.sig})
|
||||||
md5sums=('e9ae5393426d3ad783a300a338c09b72'
|
sha256sums=('9124ba46db0abd873d0995c2ca880e81252676bb6c03e0a37dfc5f608a9b0ceb'
|
||||||
'SKIP')
|
'SKIP')
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
cd "$srcdir/$pkgname-$pkgver"
|
cd "$srcdir/$pkgname-$pkgver"
|
||||||
|
|||||||
@@ -464,6 +464,9 @@ Currently makepkg supports the Bazaar, Git, Subversion, Fossil and Mercurial
|
|||||||
version control systems. For other version control systems, manual cloning of
|
version control systems. For other version control systems, manual cloning of
|
||||||
upstream repositories must be done in the `prepare()` function.
|
upstream repositories must be done in the `prepare()` function.
|
||||||
|
|
||||||
|
Some <<VCS,VCS Sources>> like Git support pinning the checkout by a checksum of
|
||||||
|
its content using deterministic export functionality like ``git archive''.
|
||||||
|
|
||||||
The source URL is divided into four components:
|
The source URL is divided into four components:
|
||||||
|
|
||||||
*directory*::
|
*directory*::
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ Example PKGBUILD
|
|||||||
license=('PerlArtistic' 'GPL')
|
license=('PerlArtistic' 'GPL')
|
||||||
depends=('perl')
|
depends=('perl')
|
||||||
source=("http://search.cpan.org/CPAN/authors/id/S/SH/SHERZODR/Config-Simple-${pkgver}.tar.gz")
|
source=("http://search.cpan.org/CPAN/authors/id/S/SH/SHERZODR/Config-Simple-${pkgver}.tar.gz")
|
||||||
md5sums=('f014aec54f0a1e2e880d317180fce502')
|
sha256sums=('dd9995706f0f9384a15ccffe116c3b6e22f42ba2e58d8f24ed03c4a0e386edb4')
|
||||||
_distname="Config-Simple"
|
_distname="Config-Simple"
|
||||||
|
|
||||||
# template start; name=perl-module; version=1.0;
|
# template start; name=perl-module; version=1.0;
|
||||||
|
|||||||
@@ -146,6 +146,9 @@ Options
|
|||||||
*-C, \--cleanbuild*::
|
*-C, \--cleanbuild*::
|
||||||
Remove the $srcdir before building the package.
|
Remove the $srcdir before building the package.
|
||||||
|
|
||||||
|
*-D* <dir>, *\--dir* <dir> ::
|
||||||
|
Change to directory <dir> before reading the PKGBUILD or doing anything else.
|
||||||
|
|
||||||
*\--allsource*::
|
*\--allsource*::
|
||||||
Do not actually build the package, but build a source-only tarball that
|
Do not actually build the package, but build a source-only tarball that
|
||||||
includes all sources, including those that are normally downloaded via
|
includes all sources, including those that are normally downloaded via
|
||||||
|
|||||||
@@ -237,10 +237,12 @@ Transaction Options (apply to '-S', '-R' and '-U')
|
|||||||
Specify a printf-like format to control the output of the '\--print'
|
Specify a printf-like format to control the output of the '\--print'
|
||||||
operation. The possible attributes are: "%a" for arch, "%b" for
|
operation. The possible attributes are: "%a" for arch, "%b" for
|
||||||
builddate, "%d" for description, "%e" for pkgbase, "%f" for filename,
|
builddate, "%d" for description, "%e" for pkgbase, "%f" for filename,
|
||||||
"%g" for base64 encoded PGP signature, "%h" for sha256sum, "%n" for
|
"%g" for base64 encoded PGP signature, "%h" for sha256sum, "%m" for
|
||||||
pkgname, "%p" for packager, "%v" for pkgver, "%l" for location, "%r"
|
md5sum, "%n" for pkgname, "%p" for packager, "%v" for pkgver, "%l" for
|
||||||
for repository, "%s" for size, "%C" for checkdepends, "%D" for depends
|
location, "%r" for repository, "%s" for size, "%C" for checkdepends,
|
||||||
and "%M" for makedepends.
|
"%D" for depends, "%G" for groups, "%H" for conflicts, "%L" for
|
||||||
|
licenses, "%M" for makedepends, "%O" for optional depends, "%P" for
|
||||||
|
provides and "%R" for replaces.
|
||||||
Implies '\--print'.
|
Implies '\--print'.
|
||||||
|
|
||||||
|
|
||||||
@@ -454,11 +456,11 @@ Additional targets can also be specified manually, so that '-Su foo' will do a
|
|||||||
system upgrade and install/upgrade the "foo" package in the same operation.
|
system upgrade and install/upgrade the "foo" package in the same operation.
|
||||||
|
|
||||||
*-y, \--refresh*::
|
*-y, \--refresh*::
|
||||||
Download a fresh copy of the master package database from the server(s)
|
Download a fresh copy of the master package databases '(repo.db)' from the
|
||||||
defined in linkman:pacman.conf[5]. This should typically be used each time
|
server(s) defined in linkman:pacman.conf[5]. This should typically be used
|
||||||
you use '\--sysupgrade' or '-u'. Passing two '\--refresh' or '-y' flags
|
each time you use '\--sysupgrade' or '-u'. Passing two '\--refresh' or '-y'
|
||||||
will force a refresh of all package databases, even if they appear to be
|
flags will force a refresh of all package databases, even if they appear to
|
||||||
up-to-date.
|
be up-to-date.
|
||||||
|
|
||||||
|
|
||||||
Database Options (apply to '-D')[[QO]]
|
Database Options (apply to '-D')[[QO]]
|
||||||
@@ -487,8 +489,8 @@ Database Options (apply to '-D')[[QO]]
|
|||||||
File Options (apply to '-F')[[FO]]
|
File Options (apply to '-F')[[FO]]
|
||||||
----------------------------------
|
----------------------------------
|
||||||
*-y, --refresh*::
|
*-y, --refresh*::
|
||||||
Download fresh package databases from the server. Use twice to force a
|
Download fresh package file databases '(repo.files)' from the server.
|
||||||
refresh even if databases are up to date.
|
Use twice to force a refresh even if databases are up to date.
|
||||||
|
|
||||||
*-l, \--list*::
|
*-l, \--list*::
|
||||||
List the files owned by the queried package.
|
List the files owned by the queried package.
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u'
|
|||||||
|
|
||||||
#-- The package required by makepkg to download VCS sources
|
#-- The package required by makepkg to download VCS sources
|
||||||
# Format: 'protocol::package'
|
# Format: 'protocol::package'
|
||||||
VCSCLIENTS=('bzr::bzr'
|
VCSCLIENTS=('bzr::breezy'
|
||||||
'fossil::fossil'
|
'fossil::fossil'
|
||||||
'git::git'
|
'git::git'
|
||||||
'hg::mercurial'
|
'hg::mercurial'
|
||||||
|
|||||||
@@ -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,
|
static int commit_single_pkg(alpm_handle_t *handle, alpm_pkg_t *newpkg,
|
||||||
size_t pkg_current, size_t pkg_count)
|
size_t pkg_current, size_t pkg_count)
|
||||||
{
|
{
|
||||||
int i, ret = 0, errors = 0;
|
int ret = 0, errors = 0;
|
||||||
int is_upgrade = 0;
|
int is_upgrade = 0;
|
||||||
alpm_pkg_t *oldpkg = NULL;
|
alpm_pkg_t *oldpkg = NULL;
|
||||||
alpm_db_t *db = handle->db_local;
|
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 */
|
/* call PROGRESS once with 0 percent, as we sort-of skip that here */
|
||||||
PROGRESS(handle, progress, newpkg->name, 0, pkg_count, pkg_current);
|
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;
|
int percent;
|
||||||
|
|
||||||
if(newpkg->size != 0) {
|
if(newpkg->size != 0) {
|
||||||
|
|||||||
@@ -100,6 +100,11 @@ int SYMEXPORT alpm_release(alpm_handle_t *myhandle)
|
|||||||
|
|
||||||
CHECK_HANDLE(myhandle, return -1);
|
CHECK_HANDLE(myhandle, return -1);
|
||||||
|
|
||||||
|
/* free transaction memory */
|
||||||
|
if(myhandle->trans && alpm_trans_release(myhandle) == -1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/* close local database */
|
/* close local database */
|
||||||
db = myhandle->db_local;
|
db = myhandle->db_local;
|
||||||
if(db) {
|
if(db) {
|
||||||
|
|||||||
@@ -600,16 +600,10 @@ typedef struct _alpm_depmissing_t {
|
|||||||
|
|
||||||
/** A conflict that has occurred between two packages. */
|
/** A conflict that has occurred between two packages. */
|
||||||
typedef struct _alpm_conflict_t {
|
typedef struct _alpm_conflict_t {
|
||||||
/** Hash of the first package name
|
/** The first package */
|
||||||
* (used internally to speed up conflict checks) */
|
alpm_pkg_t *package1;
|
||||||
unsigned long package1_hash;
|
/** The second package */
|
||||||
/** Hash of the second package name
|
alpm_pkg_t *package2;
|
||||||
* (used internally to speed up conflict checks) */
|
|
||||||
unsigned long package2_hash;
|
|
||||||
/** Name of the first package */
|
|
||||||
char *package1;
|
|
||||||
/** Name of the second package */
|
|
||||||
char *package2;
|
|
||||||
/** The conflict */
|
/** The conflict */
|
||||||
alpm_depend_t *reason;
|
alpm_depend_t *reason;
|
||||||
} alpm_conflict_t;
|
} alpm_conflict_t;
|
||||||
|
|||||||
@@ -50,10 +50,8 @@ static alpm_conflict_t *conflict_new(alpm_pkg_t *pkg1, alpm_pkg_t *pkg2,
|
|||||||
|
|
||||||
CALLOC(conflict, 1, sizeof(alpm_conflict_t), return NULL);
|
CALLOC(conflict, 1, sizeof(alpm_conflict_t), return NULL);
|
||||||
|
|
||||||
conflict->package1_hash = pkg1->name_hash;
|
ASSERT(_alpm_pkg_dup(pkg1, &conflict->package1) == 0, goto error);
|
||||||
conflict->package2_hash = pkg2->name_hash;
|
ASSERT(_alpm_pkg_dup(pkg2, &conflict->package2) == 0, goto error);
|
||||||
STRDUP(conflict->package1, pkg1->name, goto error);
|
|
||||||
STRDUP(conflict->package2, pkg2->name, goto error);
|
|
||||||
conflict->reason = reason;
|
conflict->reason = reason;
|
||||||
|
|
||||||
return conflict;
|
return conflict;
|
||||||
@@ -66,8 +64,9 @@ error:
|
|||||||
void SYMEXPORT alpm_conflict_free(alpm_conflict_t *conflict)
|
void SYMEXPORT alpm_conflict_free(alpm_conflict_t *conflict)
|
||||||
{
|
{
|
||||||
ASSERT(conflict != NULL, return);
|
ASSERT(conflict != NULL, return);
|
||||||
FREE(conflict->package2);
|
_alpm_pkg_free(conflict->package1);
|
||||||
FREE(conflict->package1);
|
_alpm_pkg_free(conflict->package2);
|
||||||
|
|
||||||
FREE(conflict);
|
FREE(conflict);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,10 +78,8 @@ alpm_conflict_t *_alpm_conflict_dup(const alpm_conflict_t *conflict)
|
|||||||
alpm_conflict_t *newconflict;
|
alpm_conflict_t *newconflict;
|
||||||
CALLOC(newconflict, 1, sizeof(alpm_conflict_t), return NULL);
|
CALLOC(newconflict, 1, sizeof(alpm_conflict_t), return NULL);
|
||||||
|
|
||||||
newconflict->package1_hash = conflict->package1_hash;
|
ASSERT(_alpm_pkg_dup(conflict->package1, &newconflict->package1) == 0, goto error);
|
||||||
newconflict->package2_hash = conflict->package2_hash;
|
ASSERT(_alpm_pkg_dup(conflict->package2, &newconflict->package2) == 0, goto error);
|
||||||
STRDUP(newconflict->package1, conflict->package1, goto error);
|
|
||||||
STRDUP(newconflict->package2, conflict->package2, goto error);
|
|
||||||
newconflict->reason = conflict->reason;
|
newconflict->reason = conflict->reason;
|
||||||
|
|
||||||
return newconflict;
|
return newconflict;
|
||||||
@@ -105,10 +102,10 @@ static int conflict_isin(alpm_conflict_t *needle, alpm_list_t *haystack)
|
|||||||
alpm_list_t *i;
|
alpm_list_t *i;
|
||||||
for(i = haystack; i; i = i->next) {
|
for(i = haystack; i; i = i->next) {
|
||||||
alpm_conflict_t *conflict = i->data;
|
alpm_conflict_t *conflict = i->data;
|
||||||
if(needle->package1_hash == conflict->package1_hash
|
if(needle->package1->name_hash == conflict->package1->name_hash
|
||||||
&& needle->package2_hash == conflict->package2_hash
|
&& needle->package2->name_hash == conflict->package2->name_hash
|
||||||
&& strcmp(needle->package1, conflict->package1) == 0
|
&& strcmp(needle->package1->name, conflict->package1->name) == 0
|
||||||
&& strcmp(needle->package2, conflict->package2) == 0) {
|
&& strcmp(needle->package2->name, conflict->package2->name) == 0) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -517,21 +517,23 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
|
|
||||||
for(i = deps; i; i = i->next) {
|
for(i = deps; i; i = i->next) {
|
||||||
alpm_conflict_t *conflict = i->data;
|
alpm_conflict_t *conflict = i->data;
|
||||||
|
const char *name1 = conflict->package1->name;
|
||||||
|
const char *name2 = conflict->package2->name;
|
||||||
alpm_pkg_t *rsync, *sync, *sync1, *sync2;
|
alpm_pkg_t *rsync, *sync, *sync1, *sync2;
|
||||||
|
|
||||||
/* have we already removed one of the conflicting targets? */
|
/* have we already removed one of the conflicting targets? */
|
||||||
sync1 = alpm_pkg_find(trans->add, conflict->package1);
|
sync1 = alpm_pkg_find(trans->add, name1);
|
||||||
sync2 = alpm_pkg_find(trans->add, conflict->package2);
|
sync2 = alpm_pkg_find(trans->add, name2);
|
||||||
if(!sync1 || !sync2) {
|
if(!sync1 || !sync2) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "conflicting packages in the sync list: '%s' <-> '%s'\n",
|
_alpm_log(handle, ALPM_LOG_DEBUG, "conflicting packages in the sync list: '%s' <-> '%s'\n",
|
||||||
conflict->package1, conflict->package2);
|
name1, name2);
|
||||||
|
|
||||||
/* if sync1 provides sync2, we remove sync2 from the targets, and vice versa */
|
/* if sync1 provides sync2, we remove sync2 from the targets, and vice versa */
|
||||||
alpm_depend_t *dep1 = alpm_dep_from_string(conflict->package1);
|
alpm_depend_t *dep1 = alpm_dep_from_string(name1);
|
||||||
alpm_depend_t *dep2 = alpm_dep_from_string(conflict->package2);
|
alpm_depend_t *dep2 = alpm_dep_from_string(name2);
|
||||||
if(_alpm_depcmp(sync1, dep2)) {
|
if(_alpm_depcmp(sync1, dep2)) {
|
||||||
rsync = sync2;
|
rsync = sync2;
|
||||||
sync = sync1;
|
sync = sync1;
|
||||||
@@ -559,8 +561,8 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
|
|
||||||
/* Prints warning */
|
/* Prints warning */
|
||||||
_alpm_log(handle, ALPM_LOG_WARNING,
|
_alpm_log(handle, ALPM_LOG_WARNING,
|
||||||
_("removing '%s' from target list because it conflicts with '%s'\n"),
|
_("removing '%s-%s' from target list because it conflicts with '%s-%s'\n"),
|
||||||
rsync->name, sync->name);
|
rsync->name, rsync->version, sync->name, sync->version);
|
||||||
trans->add = alpm_list_remove(trans->add, rsync, _alpm_pkg_cmp, NULL);
|
trans->add = alpm_list_remove(trans->add, rsync, _alpm_pkg_cmp, NULL);
|
||||||
/* rsync is not a transaction target anymore */
|
/* rsync is not a transaction target anymore */
|
||||||
trans->unresolvable = alpm_list_add(trans->unresolvable, rsync);
|
trans->unresolvable = alpm_list_add(trans->unresolvable, rsync);
|
||||||
@@ -581,16 +583,18 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
.conflict = i->data
|
.conflict = i->data
|
||||||
};
|
};
|
||||||
alpm_conflict_t *conflict = i->data;
|
alpm_conflict_t *conflict = i->data;
|
||||||
|
const char *name1 = conflict->package1->name;
|
||||||
|
const char *name2 = conflict->package2->name;
|
||||||
int found = 0;
|
int found = 0;
|
||||||
|
|
||||||
/* if conflict->package2 (the local package) is not elected for removal,
|
/* if name2 (the local package) is not elected for removal,
|
||||||
we ask the user */
|
we ask the user */
|
||||||
if(alpm_pkg_find(trans->remove, conflict->package2)) {
|
if(alpm_pkg_find(trans->remove, name2)) {
|
||||||
found = 1;
|
found = 1;
|
||||||
}
|
}
|
||||||
for(j = trans->add; j && !found; j = j->next) {
|
for(j = trans->add; j && !found; j = j->next) {
|
||||||
alpm_pkg_t *spkg = j->data;
|
alpm_pkg_t *spkg = j->data;
|
||||||
if(alpm_pkg_find(spkg->removes, conflict->package2)) {
|
if(alpm_pkg_find(spkg->removes, name2)) {
|
||||||
found = 1;
|
found = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -598,15 +602,15 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "package '%s' conflicts with '%s'\n",
|
_alpm_log(handle, ALPM_LOG_DEBUG, "package '%s-%s' conflicts with '%s-%s'\n",
|
||||||
conflict->package1, conflict->package2);
|
name1, conflict->package1->version, name2,conflict->package2->version);
|
||||||
|
|
||||||
QUESTION(handle, &question);
|
QUESTION(handle, &question);
|
||||||
if(question.remove) {
|
if(question.remove) {
|
||||||
/* append to the removes list */
|
/* append to the removes list */
|
||||||
alpm_pkg_t *sync = alpm_pkg_find(trans->add, conflict->package1);
|
alpm_pkg_t *sync = alpm_pkg_find(trans->add, name1);
|
||||||
alpm_pkg_t *local = _alpm_db_get_pkgfromcache(handle->db_local, conflict->package2);
|
alpm_pkg_t *local = _alpm_db_get_pkgfromcache(handle->db_local, name2);
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "electing '%s' for removal\n", conflict->package2);
|
_alpm_log(handle, ALPM_LOG_DEBUG, "electing '%s' for removal\n", name2);
|
||||||
sync->removes = alpm_list_add(sync->removes, local);
|
sync->removes = alpm_list_add(sync->removes, local);
|
||||||
} else { /* abort */
|
} else { /* abort */
|
||||||
_alpm_log(handle, ALPM_LOG_ERROR, _("unresolvable package conflicts detected\n"));
|
_alpm_log(handle, ALPM_LOG_ERROR, _("unresolvable package conflicts detected\n"));
|
||||||
|
|||||||
17
meson.build
17
meson.build
@@ -182,7 +182,22 @@ foreach type : [
|
|||||||
endif
|
endif
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
if conf.has('HAVE_STRUCT_STATVFS_F_FLAG')
|
|
||||||
|
if conf.has('HAVE_GETMNTINFO')
|
||||||
|
if cc.compiles('''
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/statvfs.h>
|
||||||
|
|
||||||
|
void func() {
|
||||||
|
struct statvfs *buf;
|
||||||
|
getmntinfo(&buf, 0);
|
||||||
|
}
|
||||||
|
''')
|
||||||
|
conf.set('FSSTATSTYPE', 'struct statvfs')
|
||||||
|
else
|
||||||
|
conf.set('FSSTATSTYPE', 'struct statfs')
|
||||||
|
endif
|
||||||
|
elif conf.has('HAVE_STRUCT_STATVFS_F_FLAG')
|
||||||
conf.set('FSSTATSTYPE', 'struct statvfs')
|
conf.set('FSSTATSTYPE', 'struct statvfs')
|
||||||
elif conf.has('HAVE_STRUCT_STATFS_F_FLAGS')
|
elif conf.has('HAVE_STRUCT_STATFS_F_FLAGS')
|
||||||
conf.set('FSSTATSTYPE', 'struct statfs')
|
conf.set('FSSTATSTYPE', 'struct statfs')
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ changelog=
|
|||||||
source=("$pkgbase-$pkgver.tar.gz"
|
source=("$pkgbase-$pkgver.tar.gz"
|
||||||
"$pkgname-$pkgver.patch")
|
"$pkgname-$pkgver.patch")
|
||||||
noextract=()
|
noextract=()
|
||||||
md5sums=()
|
sha256sums=()
|
||||||
validpgpkeys=()
|
validpgpkeys=()
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ options=()
|
|||||||
install=
|
install=
|
||||||
source=('FOLDER::VCS+URL#FRAGMENT')
|
source=('FOLDER::VCS+URL#FRAGMENT')
|
||||||
noextract=()
|
noextract=()
|
||||||
md5sums=('SKIP')
|
sha256sums=('SKIP')
|
||||||
|
|
||||||
# Please refer to the 'USING VCS SOURCES' section of the PKGBUILD man page for
|
# Please refer to the 'USING VCS SOURCES' section of the PKGBUILD man page for
|
||||||
# a description of each element in the source array.
|
# a description of each element in the source array.
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ changelog=
|
|||||||
source=("$pkgname-$pkgver.tar.gz"
|
source=("$pkgname-$pkgver.tar.gz"
|
||||||
"$pkgname-$pkgver.patch")
|
"$pkgname-$pkgver.patch")
|
||||||
noextract=()
|
noextract=()
|
||||||
md5sums=()
|
sha256sums=()
|
||||||
validpgpkeys=()
|
validpgpkeys=()
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
|
|||||||
@@ -54,7 +54,17 @@ generate_one_checksum() {
|
|||||||
|
|
||||||
case $proto in
|
case $proto in
|
||||||
bzr|git|hg|svn)
|
bzr|git|hg|svn)
|
||||||
sum="SKIP"
|
if declare -f "calc_checksum_$proto" > /dev/null; then
|
||||||
|
if ! sum=$("calc_checksum_$proto" "$netfile" "$integ"); then
|
||||||
|
local name
|
||||||
|
name=$(get_filename "$netfile")
|
||||||
|
error "$(gettext "Failure while calculating %s %s checksum")" "${name}" "${proto}"
|
||||||
|
plainerr "$(gettext "Aborting...")"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
sum="SKIP"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if [[ ${netfile%%::*} != *.@(sig?(n)|asc) ]]; then
|
if [[ ${netfile%%::*} != *.@(sig?(n)|asc) ]]; then
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
|||||||
source "$LIBRARY/util/message.sh"
|
source "$LIBRARY/util/message.sh"
|
||||||
source "$LIBRARY/util/pkgbuild.sh"
|
source "$LIBRARY/util/pkgbuild.sh"
|
||||||
source "$LIBRARY/util/schema.sh"
|
source "$LIBRARY/util/schema.sh"
|
||||||
|
source "$LIBRARY/source.sh"
|
||||||
|
|
||||||
check_checksums() {
|
check_checksums() {
|
||||||
local integ a
|
local integ a
|
||||||
@@ -68,9 +69,9 @@ check_checksums() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
verify_integrity_one() {
|
verify_integrity_one() {
|
||||||
local source_name=$1 integ=$2 expectedsum=$3
|
local source_name=$1 integ=$2 expectedsum=$3 file proto realsum
|
||||||
|
|
||||||
local file="$(get_filename "$source_name")"
|
file="$(get_filename "$source_name")"
|
||||||
printf ' %s ... ' "$file" >&2
|
printf ' %s ... ' "$file" >&2
|
||||||
|
|
||||||
if [[ $expectedsum = 'SKIP' ]]; then
|
if [[ $expectedsum = 'SKIP' ]]; then
|
||||||
@@ -78,20 +79,18 @@ verify_integrity_one() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! file="$(get_filepath "$file")"; then
|
proto="$(get_protocol "$source_name")"
|
||||||
printf '%s\n' "$(gettext "NOT FOUND")" >&2
|
if declare -f "calc_checksum_${proto}" > /dev/null; then
|
||||||
return 1
|
realsum=$("calc_checksum_${proto}" "$source_name" "$integ") || return 1
|
||||||
|
else
|
||||||
|
realsum=$(calc_checksum_file "$source_name" "$integ") || return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local realsum="$("${integ}sum" "$file")"
|
if [[ ${expectedsum,,} != "$realsum" ]]; then
|
||||||
realsum="${realsum%% *}"
|
|
||||||
if [[ ${expectedsum,,} = "$realsum" ]]; then
|
|
||||||
printf '%s\n' "$(gettext "Passed")" >&2
|
|
||||||
else
|
|
||||||
printf '%s\n' "$(gettext "FAILED")" >&2
|
printf '%s\n' "$(gettext "FAILED")" >&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
printf '%s\n' "$(gettext "Passed")" >&2
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ source "$LIBRARY/util/pkgbuild.sh"
|
|||||||
source "$LIBRARY/util/schema.sh"
|
source "$LIBRARY/util/schema.sh"
|
||||||
|
|
||||||
lint_pkgbuild_functions+=('lint_variable')
|
lint_pkgbuild_functions+=('lint_variable')
|
||||||
|
lint_pkgbuild_functions+=('lint_array')
|
||||||
|
|
||||||
lint_variable() {
|
lint_variable() {
|
||||||
local i a pkg out bad ret=0
|
local i a pkg out bad ret=0
|
||||||
@@ -95,3 +95,21 @@ lint_variable() {
|
|||||||
|
|
||||||
return $ret
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lint_array() {
|
||||||
|
local i var ret=0
|
||||||
|
|
||||||
|
for i in ${pkgbuild_schema_arrays[@]}; do
|
||||||
|
local l=()
|
||||||
|
get_pkgbuild_all_split_attributes $i l
|
||||||
|
|
||||||
|
for var in "${l[@]}"; do
|
||||||
|
if [[ -z $var ]]; then
|
||||||
|
error "$(gettext "%s does not allow empty values.")" "$i"
|
||||||
|
ret=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
|||||||
@@ -109,3 +109,29 @@ extract_bzr() {
|
|||||||
|
|
||||||
popd &>/dev/null
|
popd &>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
calc_checksum_bzr() {
|
||||||
|
local netfile=$1 integ=$2 ret=0 shellopts dir url fragment fragval sum
|
||||||
|
|
||||||
|
# this function requires pipefail - save current status to restore later
|
||||||
|
shellopts=$(shopt -p -o pipefail)
|
||||||
|
shopt -s -o pipefail
|
||||||
|
|
||||||
|
dir=$(get_filepath "$netfile")
|
||||||
|
url=$(get_url "$netfile")
|
||||||
|
fragment=$(get_uri_fragment "$url")
|
||||||
|
|
||||||
|
case ${fragment%%=*} in
|
||||||
|
revision)
|
||||||
|
fragval=${fragment##*=}
|
||||||
|
sum=$(bzr export --directory "$dir" --format tar --revision "$fragval" - | "${integ}sum" 2>&1) || ret=1
|
||||||
|
sum="${sum%% *}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
sum="SKIP"
|
||||||
|
esac
|
||||||
|
|
||||||
|
eval "$shellopts"
|
||||||
|
printf '%s' "$sum"
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
|||||||
@@ -151,3 +151,18 @@ extract_file() {
|
|||||||
chown -R 0:0 "$srcdir"
|
chown -R 0:0 "$srcdir"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
calc_checksum_file() {
|
||||||
|
local netfile=$1 integ=$2 ret=0 file sum
|
||||||
|
|
||||||
|
if ! file="$(get_filepath "$netfile")"; then
|
||||||
|
printf '%s\n' "$(gettext "NOT FOUND")" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sum="$("${integ}sum" "$file")" || ret=1
|
||||||
|
sum="${sum%% *}"
|
||||||
|
|
||||||
|
printf '%s' "$sum"
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ download_git() {
|
|||||||
|
|
||||||
if [[ ! -d "$dir" ]] || dir_is_empty "$dir" ; then
|
if [[ ! -d "$dir" ]] || dir_is_empty "$dir" ; then
|
||||||
msg2 "$(gettext "Cloning %s %s repo...")" "${repo}" "git"
|
msg2 "$(gettext "Cloning %s %s repo...")" "${repo}" "git"
|
||||||
if ! git clone ${GITFLAGS:---mirror} "$url" "$dir"; then
|
if ! git clone --origin=origin ${GITFLAGS:---mirror} "$url" "$dir"; then
|
||||||
error "$(gettext "Failure while downloading %s %s repo")" "${repo}" "git"
|
error "$(gettext "Failure while downloading %s %s repo")" "${repo}" "git"
|
||||||
plainerr "$(gettext "Aborting...")"
|
plainerr "$(gettext "Aborting...")"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -91,7 +91,7 @@ extract_git() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
cd_safe "$srcdir"
|
cd_safe "$srcdir"
|
||||||
elif ! git clone -s "$dir" "${dir##*/}"; then
|
elif ! git clone --origin=origin -s "$dir" "${dir##*/}"; then
|
||||||
error "$(gettext "Failure while creating working copy of %s %s repo")" "${repo}" "git"
|
error "$(gettext "Failure while creating working copy of %s %s repo")" "${repo}" "git"
|
||||||
plainerr "$(gettext "Aborting...")"
|
plainerr "$(gettext "Aborting...")"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -134,3 +134,30 @@ extract_git() {
|
|||||||
|
|
||||||
popd &>/dev/null
|
popd &>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
calc_checksum_git() {
|
||||||
|
local netfile=$1 integ=$2 ret=0 shellopts dir url fragment sum
|
||||||
|
|
||||||
|
# this function requires pipefail - save current status to restore later
|
||||||
|
shellopts=$(shopt -p -o pipefail)
|
||||||
|
shopt -s -o pipefail
|
||||||
|
|
||||||
|
dir=$(get_filepath "$netfile")
|
||||||
|
url=$(get_url "$netfile")
|
||||||
|
fragment=$(get_uri_fragment "$url")
|
||||||
|
|
||||||
|
case ${fragment%%=*} in
|
||||||
|
tag|commit)
|
||||||
|
fragval=${fragment##*=}
|
||||||
|
sum=$(git -c core.abbrev=no -C "$dir" archive --format tar "$fragval" | "${integ}sum" 2>&1) || ret=1
|
||||||
|
sum="${sum%% *}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
sum="SKIP"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
eval "$shellopts"
|
||||||
|
printf '%s' "$sum"
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
|||||||
@@ -111,3 +111,30 @@ extract_hg() {
|
|||||||
|
|
||||||
popd &>/dev/null
|
popd &>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
calc_checksum_hg() {
|
||||||
|
local netfile=$1 integ=$2 ret=0 shellopts dir url fragment fragval sum
|
||||||
|
|
||||||
|
# this function requires pipefail - save current status to restore later
|
||||||
|
shellopts=$(shopt -p -o pipefail)
|
||||||
|
shopt -s -o pipefail
|
||||||
|
|
||||||
|
dir=$(get_filepath "$netfile")
|
||||||
|
url=$(get_url "$netfile")
|
||||||
|
fragment=$(get_uri_fragment "$url")
|
||||||
|
|
||||||
|
case ${fragment%%=*} in
|
||||||
|
tag|revision)
|
||||||
|
fragval=${fragment##*=}
|
||||||
|
sum=$(hg --repository "$dir" archive --type tar --rev "$fragval" - | "${integ}sum" 2>&1) || ret=1
|
||||||
|
sum="${sum%% *}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
sum="SKIP"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
eval "$shellopts"
|
||||||
|
printf '%s' "$sum"
|
||||||
|
return $ret
|
||||||
|
}
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ tidy_strip() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
local binary strip_flags
|
local binary strip_flags
|
||||||
find . -type f -perm -u+w -print0 2>/dev/null | while IFS= read -rd '' binary ; do
|
find . -type f -perm -u+w -print0 2>/dev/null | LC_ALL=C sort -z | while IFS= read -rd '' binary ; do
|
||||||
local STRIPLTO=0
|
local STRIPLTO=0
|
||||||
case "$(LC_ALL=C readelf -h "$binary" 2>/dev/null)" in
|
case "$(LC_ALL=C readelf -h "$binary" 2>/dev/null)" in
|
||||||
*Type:*'DYN (Shared object file)'*) # Libraries (.so) or Relocatable binaries
|
*Type:*'DYN (Shared object file)'*) # Libraries (.so) or Relocatable binaries
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ unset GREP_OPTIONS
|
|||||||
declare -r makepkg_version='@PACKAGE_VERSION@'
|
declare -r makepkg_version='@PACKAGE_VERSION@'
|
||||||
declare -r confdir='@sysconfdir@'
|
declare -r confdir='@sysconfdir@'
|
||||||
declare -r BUILDSCRIPT='@BUILDSCRIPT@'
|
declare -r BUILDSCRIPT='@BUILDSCRIPT@'
|
||||||
declare -r startdir="$(pwd -P)"
|
|
||||||
|
|
||||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
||||||
|
|
||||||
@@ -51,6 +50,7 @@ LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
|||||||
ASDEPS=0
|
ASDEPS=0
|
||||||
BUILDFUNC=0
|
BUILDFUNC=0
|
||||||
BUILDPKG=1
|
BUILDPKG=1
|
||||||
|
CHDIR=''
|
||||||
CHECKFUNC=0
|
CHECKFUNC=0
|
||||||
CLEANBUILD=0
|
CLEANBUILD=0
|
||||||
CLEANUP=0
|
CLEANUP=0
|
||||||
@@ -939,8 +939,8 @@ fi
|
|||||||
ARGLIST=("$@")
|
ARGLIST=("$@")
|
||||||
|
|
||||||
# Parse Command Line Options.
|
# Parse Command Line Options.
|
||||||
OPT_SHORT="AcCdefFghiLmop:rRsSV"
|
OPT_SHORT="AcCdD:efFghiLmop:rRsSV"
|
||||||
OPT_LONG=('allsource' 'check' 'clean' 'cleanbuild' 'config:' 'force' 'geninteg'
|
OPT_LONG=('allsource' 'check' 'clean' 'cleanbuild' 'config:' 'dir:' 'force' 'geninteg'
|
||||||
'help' 'holdver' 'ignorearch' 'install' 'key:' 'log' 'noarchive' 'nobuild'
|
'help' 'holdver' 'ignorearch' 'install' 'key:' 'log' 'noarchive' 'nobuild'
|
||||||
'nocolor' 'nocheck' 'nodeps' 'noextract' 'noprepare' 'nosign' 'packagelist'
|
'nocolor' 'nocheck' 'nodeps' 'noextract' 'noprepare' 'nosign' 'packagelist'
|
||||||
'printsrcinfo' 'repackage' 'rmdeps' 'sign' 'skipchecksums' 'skipinteg'
|
'printsrcinfo' 'repackage' 'rmdeps' 'sign' 'skipchecksums' 'skipinteg'
|
||||||
@@ -971,6 +971,7 @@ while true; do
|
|||||||
--check) RUN_CHECK='y' ;;
|
--check) RUN_CHECK='y' ;;
|
||||||
--config) shift; MAKEPKG_CONF=$1 ;;
|
--config) shift; MAKEPKG_CONF=$1 ;;
|
||||||
-d|--nodeps) NODEPS=1 ;;
|
-d|--nodeps) NODEPS=1 ;;
|
||||||
|
-D|--dir) shift; CHDIR=$1 ;;
|
||||||
-e|--noextract) NOEXTRACT=1 ;;
|
-e|--noextract) NOEXTRACT=1 ;;
|
||||||
-f|--force) FORCE=1 ;;
|
-f|--force) FORCE=1 ;;
|
||||||
-F) INFAKEROOT=1 ;;
|
-F) INFAKEROOT=1 ;;
|
||||||
@@ -1017,6 +1018,12 @@ while [[ $1 ]]; do
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [[ -n $CHDIR ]]; then
|
||||||
|
cd_safe "$CHDIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
declare -r startdir="$(pwd -P)"
|
||||||
|
|
||||||
# setup signal traps
|
# setup signal traps
|
||||||
trap 'clean_up' 0
|
trap 'clean_up' 0
|
||||||
for signal in TERM HUP QUIT; do
|
for signal in TERM HUP QUIT; do
|
||||||
@@ -1158,7 +1165,7 @@ if (( GENINTEG )); then
|
|||||||
mkdir -p "$srcdir"
|
mkdir -p "$srcdir"
|
||||||
chmod a-s "$srcdir"
|
chmod a-s "$srcdir"
|
||||||
cd_safe "$srcdir"
|
cd_safe "$srcdir"
|
||||||
download_sources novcs allarch >&2
|
download_sources allarch >&2
|
||||||
generate_checksums
|
generate_checksums
|
||||||
exit $E_OK
|
exit $E_OK
|
||||||
fi
|
fi
|
||||||
@@ -1262,7 +1269,7 @@ if (( SOURCEONLY )); then
|
|||||||
download_sources allarch
|
download_sources allarch
|
||||||
elif ( (( ! SKIPCHECKSUMS )) || \
|
elif ( (( ! SKIPCHECKSUMS )) || \
|
||||||
( (( ! SKIPPGPCHECK )) && source_has_signatures ) ); then
|
( (( ! SKIPPGPCHECK )) && source_has_signatures ) ); then
|
||||||
download_sources allarch novcs
|
download_sources allarch
|
||||||
fi
|
fi
|
||||||
check_source_integrity all
|
check_source_integrity all
|
||||||
cd_safe "$startdir"
|
cd_safe "$startdir"
|
||||||
|
|||||||
@@ -84,6 +84,8 @@ usage() {
|
|||||||
'%s')")\n" "@sysconfdir@/pacman.conf"
|
'%s')")\n" "@sysconfdir@/pacman.conf"
|
||||||
printf -- "$(gettext " --gpgdir <dir> Set an alternate directory for GnuPG (instead\n\
|
printf -- "$(gettext " --gpgdir <dir> Set an alternate directory for GnuPG (instead\n\
|
||||||
of '%s')")\n" "@sysconfdir@/pacman.d/gnupg"
|
of '%s')")\n" "@sysconfdir@/pacman.d/gnupg"
|
||||||
|
printf -- "$(gettext " --populate-from <dir> Set an alternate directory for --populate (instead\n\
|
||||||
|
of '%s')")\n" "@keyringdir@"
|
||||||
printf -- "$(gettext " --keyserver <server-url> Specify a keyserver to use if necessary")\n"
|
printf -- "$(gettext " --keyserver <server-url> Specify a keyserver to use if necessary")\n"
|
||||||
echo
|
echo
|
||||||
printf -- "$(gettext " -h, --help Show this help message and exit")\n"
|
printf -- "$(gettext " -h, --help Show this help message and exit")\n"
|
||||||
@@ -283,7 +285,6 @@ check_keyring() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
populate_keyring() {
|
populate_keyring() {
|
||||||
local KEYRING_IMPORT_DIR='@keyringdir@'
|
|
||||||
|
|
||||||
local keyring KEYRINGIDS=("$@")
|
local keyring KEYRINGIDS=("$@")
|
||||||
local ret=0
|
local ret=0
|
||||||
@@ -625,7 +626,7 @@ fi
|
|||||||
OPT_SHORT="adefhlruvV"
|
OPT_SHORT="adefhlruvV"
|
||||||
OPT_LONG=('add' 'config:' 'delete' 'edit-key' 'export' 'finger' 'gpgdir:'
|
OPT_LONG=('add' 'config:' 'delete' 'edit-key' 'export' 'finger' 'gpgdir:'
|
||||||
'help' 'import' 'import-trustdb' 'init' 'keyserver:' 'list-keys' 'list-sigs'
|
'help' 'import' 'import-trustdb' 'init' 'keyserver:' 'list-keys' 'list-sigs'
|
||||||
'lsign-key' 'nocolor' 'populate' 'recv-keys' 'refresh-keys' 'updatedb'
|
'lsign-key' 'nocolor' 'populate' 'populate-from:' 'recv-keys' 'refresh-keys' 'updatedb'
|
||||||
'verbose' 'verify' 'version')
|
'verbose' 'verify' 'version')
|
||||||
if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
|
if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
|
||||||
exit 1 # E_INVALID_OPTION
|
exit 1 # E_INVALID_OPTION
|
||||||
@@ -647,6 +648,7 @@ while (( $# )); do
|
|||||||
-e|--export) EXPORT=1 ;;
|
-e|--export) EXPORT=1 ;;
|
||||||
-f|--finger) FINGER=1 ;;
|
-f|--finger) FINGER=1 ;;
|
||||||
--gpgdir) shift; PACMAN_KEYRING_DIR=$1 ;;
|
--gpgdir) shift; PACMAN_KEYRING_DIR=$1 ;;
|
||||||
|
--populate-from) shift; KEYRING_IMPORT_DIR=$1 ;;
|
||||||
--import) IMPORT=1 UPDATEDB=1 ;;
|
--import) IMPORT=1 UPDATEDB=1 ;;
|
||||||
--import-trustdb) IMPORT_TRUSTDB=1 UPDATEDB=1 ;;
|
--import-trustdb) IMPORT_TRUSTDB=1 UPDATEDB=1 ;;
|
||||||
--init) INIT=1 ;;
|
--init) INIT=1 ;;
|
||||||
@@ -693,6 +695,8 @@ if [[ ! -r "${CONFIG}" ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
KEYRING_IMPORT_DIR=${KEYRING_IMPORT_DIR:-"@keyringdir@"}
|
||||||
|
|
||||||
# if PACMAN_KEYRING_DIR isn't assigned, try to get it from the config
|
# if PACMAN_KEYRING_DIR isn't assigned, try to get it from the config
|
||||||
# file, falling back on a hard default
|
# file, falling back on a hard default
|
||||||
PACMAN_KEYRING_DIR=${PACMAN_KEYRING_DIR:-$(pacman-conf --config="$CONFIG" gpgdir)}
|
PACMAN_KEYRING_DIR=${PACMAN_KEYRING_DIR:-$(pacman-conf --config="$CONFIG" gpgdir)}
|
||||||
|
|||||||
@@ -584,9 +584,9 @@ if [[ $cmd != "repo-add" && $cmd != "repo-remove" ]]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/repo-tools.XXXXXXXXXX") || (\
|
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/repo-tools.XXXXXXXXXX") || {
|
||||||
error "$(gettext "Cannot create temp directory for database building.")"; \
|
error "$(gettext "Cannot create temp directory for database building.")";
|
||||||
exit 1)
|
exit 1; }
|
||||||
|
|
||||||
for repo in "db" "files"; do
|
for repo in "db" "files"; do
|
||||||
mkdir "$tmpdir/$repo"
|
mkdir "$tmpdir/$repo"
|
||||||
|
|||||||
@@ -423,6 +423,8 @@ void cb_event(void *ctx, alpm_event_t *event)
|
|||||||
void cb_question(void *ctx, alpm_question_t *question)
|
void cb_question(void *ctx, alpm_question_t *question)
|
||||||
{
|
{
|
||||||
(void)ctx;
|
(void)ctx;
|
||||||
|
const colstr_t *colstr = &config->colstr;
|
||||||
|
|
||||||
if(config->print) {
|
if(config->print) {
|
||||||
switch(question->type) {
|
switch(question->type) {
|
||||||
case ALPM_QUESTION_INSTALL_IGNOREPKG:
|
case ALPM_QUESTION_INSTALL_IGNOREPKG:
|
||||||
@@ -460,18 +462,30 @@ void cb_question(void *ctx, alpm_question_t *question)
|
|||||||
{
|
{
|
||||||
alpm_question_conflict_t *q = &question->conflict;
|
alpm_question_conflict_t *q = &question->conflict;
|
||||||
/* print conflict only if it contains new information */
|
/* print conflict only if it contains new information */
|
||||||
if(strcmp(q->conflict->package1, q->conflict->reason->name) == 0
|
if(strcmp(alpm_pkg_get_name(q->conflict->package1), q->conflict->reason->name) == 0
|
||||||
|| strcmp(q->conflict->package2, q->conflict->reason->name) == 0) {
|
|| strcmp(alpm_pkg_get_name(q->conflict->package2), q->conflict->reason->name) == 0) {
|
||||||
q->remove = noyes(_("%s and %s are in conflict. Remove %s?"),
|
q->remove = noyes(_("%s-%s%s%s and %s-%s%s%s are in conflict. Remove %s?"),
|
||||||
q->conflict->package1,
|
alpm_pkg_get_name(q->conflict->package1),
|
||||||
q->conflict->package2,
|
colstr->faint,
|
||||||
q->conflict->package2);
|
alpm_pkg_get_version(q->conflict->package1),
|
||||||
|
colstr->nocolor,
|
||||||
|
alpm_pkg_get_name(q->conflict->package2),
|
||||||
|
colstr->faint,
|
||||||
|
alpm_pkg_get_version(q->conflict->package2),
|
||||||
|
colstr->nocolor,
|
||||||
|
alpm_pkg_get_name(q->conflict->package2));
|
||||||
} else {
|
} else {
|
||||||
q->remove = noyes(_("%s and %s are in conflict (%s). Remove %s?"),
|
q->remove = noyes(_("%s-%s%s%s and %s-%s%s%s are in conflict (%s). Remove %s?"),
|
||||||
q->conflict->package1,
|
alpm_pkg_get_name(q->conflict->package1),
|
||||||
q->conflict->package2,
|
colstr->faint,
|
||||||
|
alpm_pkg_get_version(q->conflict->package1),
|
||||||
|
colstr->nocolor,
|
||||||
|
alpm_pkg_get_name(q->conflict->package2),
|
||||||
|
colstr->faint,
|
||||||
|
alpm_pkg_get_version(q->conflict->package2),
|
||||||
|
colstr->nocolor,
|
||||||
q->conflict->reason->name,
|
q->conflict->reason->name,
|
||||||
q->conflict->package2);
|
alpm_pkg_get_name(q->conflict->package2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -217,22 +217,6 @@ static int check_file_cksum(const char *pkgname, const char *filepath,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int check_file_md5sum(const char *pkgname, const char *filepath,
|
|
||||||
struct archive_entry *entry, int backup)
|
|
||||||
{
|
|
||||||
int errors = 0;
|
|
||||||
#if ARCHIVE_VERSION_NUMBER >= 3005000
|
|
||||||
char *cksum_calc = alpm_compute_md5sum(filepath);
|
|
||||||
char *cksum_mtree = hex_representation(archive_entry_digest(entry,
|
|
||||||
ARCHIVE_ENTRY_DIGEST_MD5), 16);
|
|
||||||
errors = check_file_cksum(pkgname, filepath, backup, "MD5", cksum_calc,
|
|
||||||
cksum_mtree);
|
|
||||||
free(cksum_mtree);
|
|
||||||
free(cksum_calc);
|
|
||||||
#endif
|
|
||||||
return (errors != 0 ? 1 : 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int check_file_sha256sum(const char *pkgname, const char *filepath,
|
static int check_file_sha256sum(const char *pkgname, const char *filepath,
|
||||||
struct archive_entry *entry, int backup)
|
struct archive_entry *entry, int backup)
|
||||||
{
|
{
|
||||||
@@ -428,7 +412,6 @@ int check_pkg_full(alpm_pkg_t *pkg)
|
|||||||
|
|
||||||
if(type == AE_IFREG) {
|
if(type == AE_IFREG) {
|
||||||
file_errors += check_file_size(pkgname, filepath, &st, entry, backup);
|
file_errors += check_file_size(pkgname, filepath, &st, entry, backup);
|
||||||
file_errors += check_file_md5sum(pkgname, filepath, entry, backup);
|
|
||||||
file_errors += check_file_sha256sum(pkgname, filepath, entry, backup);
|
file_errors += check_file_sha256sum(pkgname, filepath, entry, backup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1136,15 +1136,22 @@ int setdefaults(config_t *c)
|
|||||||
#define SETDEFAULT(opt, val) if(!opt) { opt = val; if(!opt) { return -1; } }
|
#define SETDEFAULT(opt, val) if(!opt) { opt = val; if(!opt) { return -1; } }
|
||||||
|
|
||||||
if(c->rootdir) {
|
if(c->rootdir) {
|
||||||
|
char* rootdir = strdup(c->rootdir);
|
||||||
|
int rootdir_len = strlen(rootdir);
|
||||||
|
/* This removes trailing slashes from the root directory */
|
||||||
|
if(rootdir[rootdir_len-1] == '/'){
|
||||||
|
rootdir[rootdir_len-1] = '\0';
|
||||||
|
}
|
||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
if(!c->dbpath) {
|
if(!c->dbpath) {
|
||||||
snprintf(path, PATH_MAX, "%s/%s", c->rootdir, &DBPATH[1]);
|
snprintf(path, PATH_MAX, "%s/%s", rootdir, &DBPATH[1]);
|
||||||
SETDEFAULT(c->dbpath, strdup(path));
|
SETDEFAULT(c->dbpath, strdup(path));
|
||||||
}
|
}
|
||||||
if(!c->logfile) {
|
if(!c->logfile) {
|
||||||
snprintf(path, PATH_MAX, "%s/%s", c->rootdir, &LOGFILE[1]);
|
snprintf(path, PATH_MAX, "%s/%s", rootdir, &LOGFILE[1]);
|
||||||
SETDEFAULT(c->logfile, strdup(path));
|
SETDEFAULT(c->logfile, strdup(path));
|
||||||
}
|
}
|
||||||
|
free(rootdir);
|
||||||
} else {
|
} else {
|
||||||
SETDEFAULT(c->rootdir, strdup(ROOTDIR));
|
SETDEFAULT(c->rootdir, strdup(ROOTDIR));
|
||||||
SETDEFAULT(c->dbpath, strdup(DBPATH));
|
SETDEFAULT(c->dbpath, strdup(DBPATH));
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ static int check_db_local_package_conflicts(alpm_list_t *pkglist)
|
|||||||
for(i = data; i; i = i->next) {
|
for(i = data; i; i = i->next) {
|
||||||
alpm_conflict_t *conflict = i->data;
|
alpm_conflict_t *conflict = i->data;
|
||||||
pm_printf(ALPM_LOG_ERROR, "'%s' conflicts with '%s'\n",
|
pm_printf(ALPM_LOG_ERROR, "'%s' conflicts with '%s'\n",
|
||||||
conflict->package1, conflict->package2);
|
alpm_pkg_get_name(conflict->package1), alpm_pkg_get_name(conflict->package2));
|
||||||
ret++;
|
ret++;
|
||||||
}
|
}
|
||||||
alpm_list_free_inner(data, (alpm_list_fn_free)alpm_conflict_free);
|
alpm_list_free_inner(data, (alpm_list_fn_free)alpm_conflict_free);
|
||||||
|
|||||||
@@ -778,12 +778,19 @@ int sync_prepare_execute(void)
|
|||||||
alpm_conflict_t *conflict = i->data;
|
alpm_conflict_t *conflict = i->data;
|
||||||
/* only print reason if it contains new information */
|
/* only print reason if it contains new information */
|
||||||
if(conflict->reason->mod == ALPM_DEP_MOD_ANY) {
|
if(conflict->reason->mod == ALPM_DEP_MOD_ANY) {
|
||||||
colon_printf(_("%s and %s are in conflict\n"),
|
colon_printf(_("%s-%s and %s-%s are in conflict\n"),
|
||||||
conflict->package1, conflict->package2);
|
alpm_pkg_get_name(conflict->package1),
|
||||||
|
alpm_pkg_get_version(conflict->package1),
|
||||||
|
alpm_pkg_get_name(conflict->package2),
|
||||||
|
alpm_pkg_get_version(conflict->package2));
|
||||||
} else {
|
} else {
|
||||||
char *reason = alpm_dep_compute_string(conflict->reason);
|
char *reason = alpm_dep_compute_string(conflict->reason);
|
||||||
colon_printf(_("%s and %s are in conflict (%s)\n"),
|
colon_printf(_("%s-%s and %s-%s are in conflict (%s)\n"),
|
||||||
conflict->package1, conflict->package2, reason);
|
alpm_pkg_get_name(conflict->package1),
|
||||||
|
alpm_pkg_get_version(conflict->package1),
|
||||||
|
alpm_pkg_get_name(conflict->package2),
|
||||||
|
alpm_pkg_get_version(conflict->package2),
|
||||||
|
reason);
|
||||||
free(reason);
|
free(reason);
|
||||||
}
|
}
|
||||||
alpm_conflict_free(conflict);
|
alpm_conflict_free(conflict);
|
||||||
|
|||||||
@@ -61,13 +61,24 @@ enum {
|
|||||||
CELL_FREE = (1 << 3)
|
CELL_FREE = (1 << 3)
|
||||||
};
|
};
|
||||||
|
|
||||||
#define VAL_FROM_FORMAT_STR(temp, format, func) \
|
#define PRINT_FORMAT_STRING(temp, format, func) \
|
||||||
if(strstr(temp, format)) { \
|
if(strstr(temp, format)) { \
|
||||||
string = strreplace(temp, format, func(pkg)); \
|
string = strreplace(temp, format, func(pkg)); \
|
||||||
free(temp); \
|
free(temp); \
|
||||||
temp = string; \
|
temp = string; \
|
||||||
} \
|
} \
|
||||||
|
|
||||||
|
#define PRINT_FORMAT_LIST(temp, format, func, extract) \
|
||||||
|
if(strstr(temp, format)) { \
|
||||||
|
alpm_list_t *lst = func(pkg); \
|
||||||
|
char *cl = concat_list(lst, (formatfn)extract); \
|
||||||
|
string = strreplace(temp, format, cl); \
|
||||||
|
free(cl); \
|
||||||
|
free(temp); \
|
||||||
|
temp = string; \
|
||||||
|
} \
|
||||||
|
|
||||||
|
|
||||||
int trans_init(int flags, int check_valid)
|
int trans_init(int flags, int check_valid)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
@@ -405,26 +416,37 @@ char *strreplace(const char *str, const char *needle, const char *replace)
|
|||||||
return newstr;
|
return newstr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *concat_alpm_depends(alpm_list_t *lst)
|
typedef char *(*formatfn)(void*);
|
||||||
|
|
||||||
|
static char *concat_list(alpm_list_t *lst, formatfn fn)
|
||||||
{
|
{
|
||||||
char *depends = NULL;
|
char *output = NULL, *tmp = NULL;
|
||||||
char *tmp = NULL;
|
|
||||||
for(alpm_list_t *i = lst; i; i = alpm_list_next(i)) {
|
for(alpm_list_t *i = lst; i; i = alpm_list_next(i)) {
|
||||||
alpm_depend_t *dep = i->data;
|
char *str = fn ? fn(i->data) : i->data;
|
||||||
char *depstring = alpm_dep_compute_string(dep);
|
|
||||||
if(tmp) {
|
if(str == NULL) {
|
||||||
asprintf(&depends, "%s %s", tmp, depstring);
|
continue;
|
||||||
free(tmp);
|
}
|
||||||
} else {
|
|
||||||
asprintf(&depends, "%s", depstring);
|
if(tmp) {
|
||||||
|
asprintf(&output, "%s %s", tmp, str);
|
||||||
|
free(tmp);
|
||||||
|
} else {
|
||||||
|
asprintf(&output, "%s", str);
|
||||||
|
}
|
||||||
|
tmp = output;
|
||||||
|
|
||||||
|
if(fn) {
|
||||||
|
free(str);
|
||||||
}
|
}
|
||||||
tmp = depends;
|
|
||||||
free(depstring);
|
|
||||||
}
|
}
|
||||||
if(!depends) {
|
|
||||||
asprintf(&depends, "%s", "");
|
if(!output) {
|
||||||
|
asprintf(&output, "%s", "");
|
||||||
}
|
}
|
||||||
return depends;
|
|
||||||
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
static size_t string_length(const char *s)
|
static size_t string_length(const char *s)
|
||||||
@@ -1197,21 +1219,23 @@ void print_packages(const alpm_list_t *packages)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* %d : description */
|
/* %d : description */
|
||||||
VAL_FROM_FORMAT_STR(temp, "%d", alpm_pkg_get_desc)
|
PRINT_FORMAT_STRING(temp, "%d", alpm_pkg_get_desc)
|
||||||
/* %e : pkgbase */
|
/* %e : pkgbase */
|
||||||
VAL_FROM_FORMAT_STR(temp, "%e", alpm_pkg_get_base)
|
PRINT_FORMAT_STRING(temp, "%e", alpm_pkg_get_base)
|
||||||
/* %f : filename */
|
/* %f : filename */
|
||||||
VAL_FROM_FORMAT_STR(temp, "%f", alpm_pkg_get_filename)
|
PRINT_FORMAT_STRING(temp, "%f", alpm_pkg_get_filename)
|
||||||
/* %g : base64 encoded PGP signature */
|
/* %g : base64 encoded PGP signature */
|
||||||
VAL_FROM_FORMAT_STR(temp, "%g", alpm_pkg_get_base64_sig)
|
PRINT_FORMAT_STRING(temp, "%g", alpm_pkg_get_base64_sig)
|
||||||
/* %h : sha25sum */
|
/* %h : sha25sum */
|
||||||
VAL_FROM_FORMAT_STR(temp, "%h", alpm_pkg_get_sha256sum)
|
PRINT_FORMAT_STRING(temp, "%h", alpm_pkg_get_sha256sum)
|
||||||
/* %n : pkgname */
|
/* %n : pkgname */
|
||||||
VAL_FROM_FORMAT_STR(temp, "%n", alpm_pkg_get_name)
|
PRINT_FORMAT_STRING(temp, "%n", alpm_pkg_get_name)
|
||||||
/* %p : packager */
|
/* %p : packager */
|
||||||
VAL_FROM_FORMAT_STR(temp, "%p", alpm_pkg_get_packager)
|
PRINT_FORMAT_STRING(temp, "%p", alpm_pkg_get_packager)
|
||||||
/* %v : pkgver */
|
/* %v : pkgver */
|
||||||
VAL_FROM_FORMAT_STR(temp, "%v", alpm_pkg_get_version)
|
PRINT_FORMAT_STRING(temp, "%v", alpm_pkg_get_version)
|
||||||
|
/* %m : md5sum */
|
||||||
|
PRINT_FORMAT_STRING(temp, "%m", alpm_pkg_get_md5sum)
|
||||||
/* %l : location */
|
/* %l : location */
|
||||||
if(strstr(temp, "%l")) {
|
if(strstr(temp, "%l")) {
|
||||||
char *pkgloc = pkg_get_location(pkg);
|
char *pkgloc = pkg_get_location(pkg);
|
||||||
@@ -1240,34 +1264,26 @@ void print_packages(const alpm_list_t *packages)
|
|||||||
free(temp);
|
free(temp);
|
||||||
}
|
}
|
||||||
/* %u : url */
|
/* %u : url */
|
||||||
VAL_FROM_FORMAT_STR(temp, "%u", alpm_pkg_get_url)
|
PRINT_FORMAT_STRING(temp, "%u", alpm_pkg_get_url)
|
||||||
/* %C : checkdepends */
|
/* %C : checkdepends */
|
||||||
if(strstr(temp, "%C")) {
|
PRINT_FORMAT_LIST(temp, "%C", alpm_pkg_get_checkdepends, alpm_dep_compute_string)
|
||||||
alpm_list_t *lst = alpm_pkg_get_checkdepends(pkg);
|
|
||||||
char *depends = concat_alpm_depends(lst);
|
|
||||||
string = strreplace(temp, "%C", lst ? depends : "");
|
|
||||||
free(depends);
|
|
||||||
free(temp);
|
|
||||||
temp = string;
|
|
||||||
}
|
|
||||||
/* %D : depends */
|
/* %D : depends */
|
||||||
if(strstr(temp, "%D")) {
|
PRINT_FORMAT_LIST(temp, "%D", alpm_pkg_get_depends, alpm_dep_compute_string)
|
||||||
alpm_list_t *lst = alpm_pkg_get_depends(pkg);
|
/* %G : groups */
|
||||||
char *depends = concat_alpm_depends(lst);
|
PRINT_FORMAT_LIST(temp, "%G", alpm_pkg_get_groups, NULL)
|
||||||
string = strreplace(temp, "%D", depends);
|
/* %H : conflicts */
|
||||||
free(depends);
|
PRINT_FORMAT_LIST(temp, "%H", alpm_pkg_get_conflicts, alpm_dep_compute_string)
|
||||||
free(temp);
|
|
||||||
temp = string;
|
|
||||||
}
|
|
||||||
/* %M : makedepends */
|
/* %M : makedepends */
|
||||||
if(strstr(temp, "%M")) {
|
PRINT_FORMAT_LIST(temp, "%M", alpm_pkg_get_makedepends, alpm_dep_compute_string)
|
||||||
alpm_list_t *lst = alpm_pkg_get_makedepends(pkg);
|
/* %O : optdepends */
|
||||||
char *depends = concat_alpm_depends(lst);
|
PRINT_FORMAT_LIST(temp, "%O", alpm_pkg_get_optdepends, alpm_dep_compute_string)
|
||||||
string = strreplace(temp, "%M", depends);
|
/* %P : provides */
|
||||||
free(depends);
|
PRINT_FORMAT_LIST(temp, "%P", alpm_pkg_get_provides, alpm_dep_compute_string)
|
||||||
free(temp);
|
/* %R : replaces */
|
||||||
temp = string;
|
PRINT_FORMAT_LIST(temp, "%R", alpm_pkg_get_replaces, alpm_dep_compute_string)
|
||||||
}
|
/* %L : license */
|
||||||
|
PRINT_FORMAT_LIST(temp, "%L", alpm_pkg_get_licenses, NULL)
|
||||||
|
|
||||||
printf("%s\n", string);
|
printf("%s\n", string);
|
||||||
free(string);
|
free(string);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -240,18 +240,20 @@ class pmtest(object):
|
|||||||
|
|
||||||
cmd = []
|
cmd = []
|
||||||
if os.geteuid() != 0:
|
if os.geteuid() != 0:
|
||||||
fakeroot = util.which("fakeroot")
|
# fakechroot must be called before fakeroot due to potential
|
||||||
if not fakeroot:
|
# potential interactions when wrapping the same C functions
|
||||||
tap.diag("WARNING: fakeroot not found!")
|
|
||||||
else:
|
|
||||||
cmd.append("fakeroot")
|
|
||||||
|
|
||||||
fakechroot = util.which("fakechroot")
|
fakechroot = util.which("fakechroot")
|
||||||
if not fakechroot:
|
if not fakechroot:
|
||||||
tap.diag("WARNING: fakechroot not found!")
|
tap.diag("WARNING: fakechroot not found!")
|
||||||
else:
|
else:
|
||||||
cmd.append("fakechroot")
|
cmd.append("fakechroot")
|
||||||
|
|
||||||
|
fakeroot = util.which("fakeroot")
|
||||||
|
if not fakeroot:
|
||||||
|
tap.diag("WARNING: fakeroot not found!")
|
||||||
|
else:
|
||||||
|
cmd.append("fakeroot")
|
||||||
|
|
||||||
if pacman["gdb"]:
|
if pacman["gdb"]:
|
||||||
cmd.extend(["libtool", "execute", "gdb", "--args"])
|
cmd.extend(["libtool", "execute", "gdb", "--args"])
|
||||||
if pacman["valgrind"]:
|
if pacman["valgrind"]:
|
||||||
|
|||||||
Reference in New Issue
Block a user