summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Get estimated package count when populating databasesDan McGee2011-02-04
| | | | | | | | | | | | | This works for both local and sync databases in slightly different ways. For the local database, we can use the directory hard link count on the local/ folder. For sync databases, we use the archive size coupled with some computed average per-package sizes to determine an estimate. This is currently a dead assignment once calculated, but could be used to set the initial size of a hash table. Signed-off-by: Dan McGee <dan@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
* Add a hash table for holding packagesAllan McRae2011-02-04
| | | | Signed-off-by: Allan McRae <allan@archlinux.org>
* makepkg: initialize local arrays to emptyAllan McRae2011-02-02
| | | | | | | | Fixes bash-3.2 compatibility. Thanks-to: Dave Reisner <d@falconindy.com> Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
* makepkg: error on invalid optdependsAllan McRae2011-02-02
| | | | | | | Missed in commit a88cb03a. Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
* makepkg: make SRCPKGDEST default to $startdirCedric Staniewski2011-02-02
| | | | | | | | | The current behaviour, which is placing source packages in PKGDEST if SRCPKGDEST is not set, is inconsistent with {SRC,PKG}DEST handling and there is no real advantage in doing so. Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
* makepkg: Fix the check for references to srcdir/pkgdirNezmer2011-02-02
| | | | | | | | | | | | | | | | | At least in FreeBSD, find always returns 0 if it finds stuff (imagine that). It doesn't care about the exit status of whatever is passed to -exec. This patch makes the checks compatible with this behaviour. Using xargs and not using grep directly because packages with too many files would cause grep to complain about argument list being too long. This should also fix the false positive in packages with no files. Signed-off-by: Nezmer <git@nezmer.info> Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
* makepkg: fix indention to follow style guideCedric Staniewski2011-02-01
| | | | Signed-off-by: Dan McGee <dan@archlinux.org>
* Fix locale.h/setlocale inclusion with --disable-nlsDan McGee2011-02-01
| | | | | | | | | Noted in FS#22697. When I factored out _alpm_parsedate() into a common function, I didn't move the <locale.h> include properly, causing a build failure when NLS is disabled and this header isn't automatically included everywhere. Signed-off-by: Dan McGee <dan@archlinux.org>
* make -d less strict; add -dd optionFlorian Pritz2011-01-31
| | | | | | | | | | -d skips checking the version of a dependency. -dd skips the whole dependency check. Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com> Signed-off-by: Florian Pritz <bluewind@server-speed.net> Signed-off-by: Dan McGee <dan@archlinux.org>
* alpm/depcmp: new NODEPVERSION flagXavier Chantry2011-01-31
| | | | | | | | | | | | | | | | This flag allows to disable version checking in dependency resolving code. depcmp_tolerant respects the NODEPVERSION flag but we still keep the original strict depcmp. The idea is to reduce the impact of the NODEPVERSION flag by using it in fewer places. I replaced almost all depcmp calls by depcmp_tolerant in deps.c (except in the public find_satisfier used by deptest / pacman -T), but I kept depcmp in sync.c and conflict.c Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* add pactests for -SddXavier Chantry2011-01-31
| | | | | Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
* Allow both cleanmethod values to be specified at the same timeDan McGee2011-01-31
| | | | | | | | No reason to disallow this- it allows keeping even more packages around in the cache. Test cases included for this case and to ensure the default behavior is preserved. Signed-off-by: Dan McGee <dan@archlinux.org>
* Style cleanups in clean cache codeDan McGee2011-01-31
| | | | Signed-off-by: Dan McGee <dan@archlinux.org>
* Add three clean cache testsDan McGee2011-01-31
| | | | | | | | The first two are rather standard tests of our two available clean options, and the third is attempting to test a reported bug (and failing to make the given case fail). Signed-off-by: Dan McGee <dan@archlinux.org>
* pactest: allow checking for cache file existenceDan McGee2011-01-31
| | | | | | This will allow some tests to be added for cache cleaning. Signed-off-by: Dan McGee <dan@archlinux.org>
* libalpm: fix db_update documentationXavier Chantry2011-01-31
| | | | | | return codes were mixed up Signed-off-by: Dan McGee <dan@archlinux.org>
* Call count() once in callbackDan McGee2011-01-29
| | | | Signed-off-by: Dan McGee <dan@archlinux.org>
* alpm: drop old target interfacesXavier Chantry2011-01-29
| | | | | | | | | | It's likely that these interfaces will break sooner or later, now that pacman no longer uses them. So better force the two people who use them to migrate their code to the new add_pkg/remove_pkg interface, which is very easy anyway. Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* select_display: per-database outputXavier Chantry2011-01-29
| | | | | | | | | | | | | | | | This function is used both for provision and group selection. Now the database name will be displayed. $ pacman -S base-devel :: There are 11 members in group base-devel: :: Repository testing 1) make :: Repository core 2) autoconf 3) automake 4) bison 5) fakeroot 6) flex 7) gcc 8) libtool 9) m4 10) patch 11) pkg-config Which ones do you want to install? Enter a number (default=all): Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* pacman: improve select-questionXavier Chantry2011-01-29
| | | | | | | Make use of parseindex like in multiselect, and loop until we get a valid answer like in multiselect. Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* pacman/sync: implement interactive group selectionXavier Chantry2011-01-29
| | | | Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* alpm: deprecate old interfaceXavier Chantry2011-01-29
| | | | | | | | | | | | | | Old interface is marked as deprecated: int alpm_sync_target(char *target); int alpm_sync_dbtarget(char *db, char *target); int alpm_add_target(char *target); int alpm_remove_target(char *target); New recommended interface: int alpm_add_pkg(pmpkg_t *pkg); int alpm_remove_pkg(pmpkg_t *pkg); Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* pacman/remove: switch to new alpm_remove_pkg interfaceXavier Chantry2011-01-29
| | | | Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* pacman/upgrade: switch to new interfaceXavier Chantry2011-01-29
| | | | | | | | | | | | | | Note that there is a behavior change here : if the same package name appeared several times in the target list, the alpm_add_target interface chooses the new package, while alpm_add_pkg returns PKG_DUP. I don't see why we cannot unify the behavior of -S and -U, and just choose one behavior that applies to both. Otherwise, it's always possible to handle these different behaviors in the frontend, it just requires more work. Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* alpm: new alpm_remove_pkg interfaceXavier Chantry2011-01-29
| | | | | | | | | For consistency with alpm_add_pkg. The new recommended interface is alpm_add_pkg / alpm_remove_pkg, all others interfaces are deprecated. Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* pacman/sync: rewrite target handlingXavier Chantry2011-01-29
| | | | | | | | | | | | | | | | | | | | | | | | | This uses the new public functions to handle targets from the frontend, like it used to be : 1) alpm_find_dbs_satisfier to find (optionally versioned) package or provision 2) alpm_find_grp_pkgs to find members for a groups 3) alpm_add_pkg to finally add the pmpkg_t from 1 or 2 Of course, this adds more code to the frontend, but it completely deprecates sync_target and sync_dbtarget interfaces. This all-in-one interfaces felt wrong and left no control to the frontend. A good frontend should just use alpm_add_pkg, with pkg coming from alpm_db_get_pkg (for normal targets), alpm_find_dbs_satisfier (for versioned provisions) or alpm_find_grp_pkgs (for groups). This also opens the way to provide a better group handling in pacman without constraint from libalpm and callbacks. In ignore006, only the retcode changes, because no package was found to satisfy the target (the only possible package is ignored). Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* alpm: add alpm_find_grp_pkgsXavier Chantry2011-01-29
| | | | | | | | This group function is meant to help group handling from frontend : it scans all dbs, handling ignored packages and duplicate members (the first repo where a member is found has the priority). Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* alpm: new alpm_add_pkg interfaceXavier Chantry2011-01-29
| | | | | | | | | | | | | This new function is meant to deprecate all existing sync/add target functions : int alpm_sync_target(char *target); int alpm_sync_dbtarget(char *db, char *target); int alpm_add_target(char *target); Rather than dropping these 3 interfaces, it might be better to rewrite them using alpm_add_pkg for now. Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* alpm/dep: add alpm_find_dbs_satisfierXavier Chantry2011-01-29
| | | | | | | | | | | This is a public interface for resolvedep. It looks nicer to expose it this way rather than through sync_target. This function can also be helpful for external tools as it should give good results close to how pacman select a package for satisfying a given dep. Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* Add interactive provider selectionXavier Chantry2011-01-29
| | | | | | | | | | | | | | | | | | | | | | | | If there are multiple providers in one db, pacman used to just stop at the first one (both during dependency resolution or for pacman -S 'provision' which uses the same code). This adds a new conversation callback so that the user can choose which provider to install. By default (user press enter or --noconfirm), the first provider is still chosen, so for example the behavior of sync402 and 403 is preserved. But at least the user now has the possibility to make the right choice in a manual run. If one of the provider is already installed, it is picked for reinstall/upgrade, so that provision 002/003 pactest now pass. $ pacman -S community/smtp-server :: There are 3 providers available for smtp-server: 1) courier-mta 2) esmtp 3) exim Which one do you want to install? Enter a number (default=1): Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
* Merge branch 'maint'Dan McGee2011-01-29
|\
| * libalpm: Fix a missing "nicht" (not) in German translation.Thomas Bächler2011-01-28
| | | | | | | | Signed-off-by: Dan McGee <dan@archlinux.org>
| * Enable failure on server error for curl download commandDan McGee2011-01-28
| | | | | | | | | | | | | | | | This will make a 404 a silent failure that returns an error code rather than 0 as was previously done, screwing up the logic used by pacman/libalpm to allow moving onto the next server on a failed download. Fixes FS#22630. Signed-off-by: Dan McGee <dan@archlinux.org>
* | pactest: pass entire test to rule.check()Dan McGee2011-01-29
| | | | | | | | | | | | | | | | We were piecemeal passing fields from the test object in and it was getting out of hand, and future work would have added yet another argument. Instead, just pass the entire test object and entrust the rule to get what it needs. Signed-off-by: Dan McGee <dan@archlinux.org>
* | Remove need to explicitly register the local DBDan McGee2011-01-29
| | | | | | | | | | | | | | | | | | Perform the cheap struct and string setup of the local DB at handle initialization time to match the teardown we do when releasing the handle. If the local DB is not needed, all real initialization is done lazily after DB paths and other things have been configured anyway. Signed-off-by: Dan McGee <dan@archlinux.org>
* | Ignore known but unused package descfile fieldsDan McGee2011-01-28
| | | | | | | | | | | | | | | | We explicitly place 'pkgbase' (and used to place 'force') fields inside PKGINFO files, so ignore them silently instead of printing an error for them. Also make the error message for unknown keys actually contain the key. Signed-off-by: Dan McGee <dan@archlinux.org>
* | Fix libtool performance regression with many argumentsDan McGee2011-01-28
| | | | | | | | | | | | | | | | | | | | Reported and fixed upstream, patching our version for now until a future release fixes it: * http://lists.gnu.org/archive/html/bug-libtool/2011-01/msg00007.html * http://git.savannah.gnu.org/cgit/libtool.git/commit/?id=286e87b1030c353d9cfc89dbb72d59e0391cb693 Signed-off-by: Dan McGee <dan@archlinux.org>
* | Fix memory leak and error code in DB readingDan McGee2011-01-24
| | | | | | | | | | | | | | We were returning a package error code rather than a DB one, and we would leak the archive memory if the database file didn't exist. Signed-off-by: Dan McGee <dan@archlinux.org>
* | pkgsearch: handle non-matching lines gracefullyDan McGee2011-01-24
| | | | | | | | | | | | | | | | | | Before any non-matching line would trigger some perl warnings about undefined variables. If a line doesn't match, just show it to the user unprocessed; this is seen with warning and error messages pacman not so helpfully emits on stdout rather than stderr. Signed-off-by: Dan McGee <dan@archlinux.org>
* | Update contrib/ MakefileDan McGee2011-01-24
| | | | | | | | | | | | | | | | We didn't have the proper dependencies specified for our scripts after the move to *.in extensions, so a change to a file didn't trigger a rebuild. Also remove old stuff from .gitignore. Signed-off-by: Dan McGee <dan@archlinux.org>
* | Query fileowner performance improvementsDan McGee2011-01-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clean up some of the code by doing less string copying and printing. This is accomplished by either doing it after we know we need it, or taking advantage of the fact that some strings never change such as the root directory prefix. Also, fix an issue where a file at the root level (e.g. /foobar) could not be queried. End result is a much faster user experience when combined with the mbasename() changes. These timings are for looking up 113 files in /etc/, some of which are owned and some which are not. $ find /etc -maxdepth 1 -type f | xargs time pacman -Qo >/dev/null 6.10user 0.05system 0:06.17elapsed 99%CPU (0avgtext+0avgdata 131040maxresident)k 0inputs+0outputs (0major+9436minor)pagefaults 0swaps $ find /etc -maxdepth 1 -type f | xargs time ./src/pacman/.libs/lt-pacman -Qo >/dev/null 0.86user 0.04system 0:00.92elapsed 99%CPU (0avgtext+0avgdata 131120maxresident)k 0inputs+0outputs (0major+9436minor)pagefaults 0swaps I'll take a 600% increase in speed. Signed-off-by: Dan McGee <dan@archlinux.org>
* | Improve mbasename performanceDan McGee2011-01-22
| | | | | | | | | | | | | | Rather than roll our own, use strrchr() instead, which glibc may have a better implementation than the simple iteration method we were using. Signed-off-by: Dan McGee <dan@archlinux.org>
* | Merge branch 'backup-status'Dan McGee2011-01-22
|\ \
| * | Be smarter about failure to read backup file contentsDan McGee2011-01-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of always printing MISSING, we can switch on the errno value set by access() and print a more useful string. In this case, handle files we can't read by printing UNREADABLE, print MISSING on ENOENT, and print UNKNOWN for anything else. Fixes FS#22546. Signed-off-by: Dan McGee <dan@archlinux.org>
| * | Mark backup status strings as untranslatedDan McGee2011-01-22
| | | | | | | | | | | | | | | | | | | | | | | | And also change "Not Modified" -> "UNMODIFIED" for consistency. This makes it a lot easier to machine-parse this and not worry about locale differences. Signed-off-by: Dan McGee <dan@archlinux.org>
| * | Refactor backup file status check into separate functionDan McGee2011-01-22
| | | | | | | | | | | | | | | | | | This will make it a lot easier to use this stuff elsewhere. Signed-off-by: Dan McGee <dan@archlinux.org>
* | | Add a few new provides testsDan McGee2011-01-22
| | | | | | | | | | | | | | | | | | | | | | | | These deal with already-installed packages and how they should be the preferred provider in cases where provider selection now occurs. A few involve multiple sync repos. Signed-off-by: Dan McGee <dan@archlinux.org>
* | | pactest: sort repos by alpha order in config fileDan McGee2011-01-22
| | | | | | | | | | | | | | | | | | | | | | | | The order was non-deterministic before, and just happened to work for sync023.py as it was written. Ensure there is some sort of predictable ordering. Signed-off-by: Dan McGee <dan@archlinux.org>
* | | pactest: use new-style python classesDan McGee2011-01-22
|/ / | | | | | | Signed-off-by: Dan McGee <dan@archlinux.org>
* | pactest: revamp modified logicDan McGee2011-01-22
| | | | | | | | | | | | | | | | | | | | Remove all logic dealing with PKG_MODIFIED as this rule no longer exists. This removes a bunch of unnecessary stat and checksum logic that most of the time we were never even using. Also update the file modified checks to mark every file created using mkfile() with an older time so any modified checks will just work without hacks. Signed-off-by: Dan McGee <dan@archlinux.org>