mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-22 15:58:50 -05:00
* Remove -fno-strict-aliasing as it is now unnecessary to compile.
* Fix up add.c a bit better than it was in regards to FS #3492. * Optimized the sqrt call in dependency cycle checking to a single call. * Removal of an outdated comment.
This commit is contained in:
parent
e668b47142
commit
0bc06918e4
@ -1,8 +1,6 @@
|
|||||||
AUTOMAKE_OPTIONS = gnu
|
AUTOMAKE_OPTIONS = gnu
|
||||||
DEFINES = -pedantic -D_GNU_SOURCE
|
DEFINES = -pedantic -D_GNU_SOURCE
|
||||||
#libalpm isn't fully C99 safe with the strict aliasing rules
|
AM_CFLAGS = $(DEFINES)
|
||||||
# to be fixed in the future
|
|
||||||
AM_CFLAGS = $(DEFINES) -fno-strict-aliasing
|
|
||||||
SUBDIRS = po
|
SUBDIRS = po
|
||||||
|
|
||||||
localedir = $(datadir)/locale
|
localedir = $(datadir)/locale
|
||||||
|
@ -211,9 +211,12 @@ error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int name_cmp(const void *p1, const void *p2)
|
/* This is still messy. We have a lot of compare functions, and we should
|
||||||
|
* try to consolidate them as much as we can (between add and sync) */
|
||||||
|
static int pkg_cmp(const void *p1, const void *p2)
|
||||||
{
|
{
|
||||||
return(strcmp(((pmpkg_t *)p1)->name, (const char *)p2));
|
return(strcmp(((pmdepmissing_t *)p1)->target,
|
||||||
|
((pmdepmissing_t *)p2)->target));
|
||||||
}
|
}
|
||||||
|
|
||||||
int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
|
int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
|
||||||
@ -253,11 +256,26 @@ int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
|
|||||||
/* Attempt to resolve conflicts */
|
/* Attempt to resolve conflicts */
|
||||||
QUESTION(trans, PM_TRANS_CONV_CONFLICT_PKG, miss->target, miss->depend.name, NULL, &skip_this);
|
QUESTION(trans, PM_TRANS_CONV_CONFLICT_PKG, miss->target, miss->depend.name, NULL, &skip_this);
|
||||||
if(skip_this) {
|
if(skip_this) {
|
||||||
pmpkg_t **pkg = NULL;
|
pmdepmissing_t *pkg = NULL;
|
||||||
lp = alpm_list_remove(lp, (void *)miss->depend.name, name_cmp, (void **)pkg);
|
lp = alpm_list_remove(lp, (void *)miss, pkg_cmp, (void*)&pkg);
|
||||||
FREEPKG(*pkg);
|
/* TODO: We remove the conflict from the list but never actually remove
|
||||||
}
|
* the package. Need to do this to fix FS #3492. The sync code should
|
||||||
}
|
* provide an example of how to do this, as it handles replaces and
|
||||||
|
* removes. We run into problems because we do a file conflict check
|
||||||
|
* below and it fails there. A force flag will skip that part, but
|
||||||
|
* still not remove the original package designated here for removal.
|
||||||
|
* Better yet, dump all this shitty duplicate code and somehow combine
|
||||||
|
* it with the sync code. */
|
||||||
|
FREE(pkg);
|
||||||
|
if(lp == NULL) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Removal code should go here, as described above. Instead of simply
|
||||||
|
* removing items, perhaps throw them in another list to be removed, then
|
||||||
|
* proceed as sync.c would? I'm not sure because I'm not familiar enough
|
||||||
|
* with the codebase. */
|
||||||
if(lp != NULL) {
|
if(lp != NULL) {
|
||||||
if(data) {
|
if(data) {
|
||||||
*data = lp;
|
*data = lp;
|
||||||
|
@ -106,6 +106,7 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, int mode)
|
|||||||
int change = 1;
|
int change = 1;
|
||||||
int numscans = 0;
|
int numscans = 0;
|
||||||
int numtargs = 0;
|
int numtargs = 0;
|
||||||
|
int maxscans;
|
||||||
|
|
||||||
if(targets == NULL) {
|
if(targets == NULL) {
|
||||||
return(NULL);
|
return(NULL);
|
||||||
@ -116,15 +117,13 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, int mode)
|
|||||||
numtargs++;
|
numtargs++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maxscans = (int)sqrt(numtargs);
|
||||||
|
|
||||||
_alpm_log(PM_LOG_DEBUG, _("started sorting dependencies"));
|
_alpm_log(PM_LOG_DEBUG, _("started sorting dependencies"));
|
||||||
while(change) {
|
while(change) {
|
||||||
alpm_list_t *tmptargs = NULL;
|
alpm_list_t *tmptargs = NULL;
|
||||||
change = 0;
|
change = 0;
|
||||||
/* TODO only use of a math.h function in entire libalpm,
|
if(numscans > maxscans) {
|
||||||
* can we get rid of it? Former code line:
|
|
||||||
*if(numscans > numtargs) {
|
|
||||||
*/
|
|
||||||
if(numscans > sqrt(numtargs)) {
|
|
||||||
_alpm_log(PM_LOG_DEBUG, _("possible dependency cycle detected"));
|
_alpm_log(PM_LOG_DEBUG, _("possible dependency cycle detected"));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -321,9 +320,9 @@ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
|
|||||||
/* else if still not found... */
|
/* else if still not found... */
|
||||||
if(!found) {
|
if(!found) {
|
||||||
_alpm_log(PM_LOG_DEBUG, _("checkdeps: found %s as a dependency for %s"),
|
_alpm_log(PM_LOG_DEBUG, _("checkdeps: found %s as a dependency for %s"),
|
||||||
depend.name, tp->name);
|
depend.name, tp->name);
|
||||||
miss = _alpm_depmiss_new(tp->name, PM_DEP_TYPE_DEPEND, depend.mod,
|
miss = _alpm_depmiss_new(tp->name, PM_DEP_TYPE_DEPEND, depend.mod,
|
||||||
depend.name, depend.version);
|
depend.name, depend.version);
|
||||||
if(!_alpm_depmiss_isin(miss, baddeps)) {
|
if(!_alpm_depmiss_isin(miss, baddeps)) {
|
||||||
baddeps = alpm_list_add(baddeps, miss);
|
baddeps = alpm_list_add(baddeps, miss);
|
||||||
} else {
|
} else {
|
||||||
|
@ -359,8 +359,8 @@ int _alpm_logaction(unsigned short usesyslog, FILE *f, const char *str)
|
|||||||
|
|
||||||
/* Use ISO-8601 date format */
|
/* Use ISO-8601 date format */
|
||||||
fprintf(f, "[%04d-%02d-%02d %02d:%02d] %s\n",
|
fprintf(f, "[%04d-%02d-%02d %02d:%02d] %s\n",
|
||||||
tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
|
tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
|
||||||
tm->tm_hour, tm->tm_min, str);
|
tm->tm_hour, tm->tm_min, str);
|
||||||
|
|
||||||
fflush(f);
|
fflush(f);
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ for category in $*; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
ed=`date +"[%b %d %H:%M]"`
|
ed=$(date +"[%b %d %H:%M]")
|
||||||
|
|
||||||
echo "makeworld complete." >>$toplevel/build.log
|
echo "makeworld complete." >>$toplevel/build.log
|
||||||
echo " started: $sd" >>$toplevel/build.log
|
echo " started: $sd" >>$toplevel/build.log
|
||||||
|
@ -526,7 +526,6 @@ int pacman_sync(alpm_list_t *targets)
|
|||||||
found++;
|
found++;
|
||||||
MSG(NL, _(":: group %s:\n"), targ);
|
MSG(NL, _(":: group %s:\n"), targ);
|
||||||
/* remove dupe entries in case a package exists in multiple repos */
|
/* remove dupe entries in case a package exists in multiple repos */
|
||||||
/* (the dupe function takes a pmlist_t* and returns a list_t*) */
|
|
||||||
alpm_list_t *pkgs = alpm_list_remove_dupes(alpm_grp_get_packages(grp));
|
alpm_list_t *pkgs = alpm_list_remove_dupes(alpm_grp_get_packages(grp));
|
||||||
list_display(" ", pkgs);
|
list_display(" ", pkgs);
|
||||||
if(yesno(_(":: Install whole content? [Y/n] "))) {
|
if(yesno(_(":: Install whole content? [Y/n] "))) {
|
||||||
|
Loading…
Reference in New Issue
Block a user