1
0
forked from mirrors/pacman

Compare commits

...

131 Commits

Author SHA1 Message Date
Dan McGee
0cfb412220 Check in changes for 3.0.5 release (mostly backports)
* Update the mirrorlist
* Fix FS7338- the previous repo-add fix didn't quite do the job, but it
  should be fixed now.
* Small updates to translations files
* Add -mtune=generic to default CFLAGS (req'd by GCC 4.2)
2007-06-18 00:15:36 +00:00
Aaron Griffin
5786c6e4a3 Fix libarchive permission extraction
Hackish fix to ensure libarchive extracts files and dirs with the right
permissions.  For some reason extracting /tmp on install wasn't handled properly
by librachive, so an explicit chmod will fix this.

Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
2007-05-18 03:26:24 +00:00
Dan McGee
6a0059ddd5 Ensure MAKEFLAGS and DISTCC_HOSTS are exported if required 2007-05-16 17:14:19 +00:00
Dan McGee
2c74e0ad8a * Updated German translation
Pierre Schmitz <pierre@archlinux.de>
2007-05-13 04:40:13 +00:00
Dan McGee
a01b2ad8e6 Corrections to Spanish translation 2007-05-13 04:29:05 +00:00
Aaron Griffin
8be3f1f62f Version bumped to 3.0.4 2007-05-08 08:13:13 +00:00
Aaron Griffin
48c840fb76 minor: Remove trailing slashes from Server urls to prevent double slashes in
paths
2007-05-08 08:11:59 +00:00
Dan McGee
337046ab75 A ton of updates of all of the translation files. Thanks to the
authors of those.
2007-05-08 03:41:30 +00:00
Dan McGee
53bc96106d repo-add: fix typo, conflicts instead of conflict 2007-05-06 22:56:08 +00:00
Dan McGee
afec5e46a4 Bumps for pacman 3.0.3 2007-04-28 08:26:37 +00:00
Dan McGee
4a6d963ae1 repo-add: Fixed bug of missing desc entries if package is in a group
Fixes bug #7005 as reported and patched by
Marcus Habernehl <bmh1980de@yahoo.de>
2007-04-25 15:00:49 +00:00
Dan McGee
a7e80fba9e Updated French translation from Nam <37i11@altern.org>. 2007-04-25 04:38:54 +00:00
Dan McGee
c60c1b5ccc * Updated German translation
Pierre Schmitz <pierre@archlinux.de>
2007-04-23 08:14:33 +00:00
Dan McGee
75b20014c1 Updates in prep for 3.0.2 release 2007-04-23 07:03:13 +00:00
Dan McGee
3e42d00c99 Add two pactests 2007-04-23 06:41:00 +00:00
Dan McGee
318d2b511b * Updated Italian translation
Giovanni Scafora <linuxmania@gmail.com>
2007-04-23 06:15:06 +00:00
Dan McGee
4f2ecfdee3 rankmirrors: download first 50KB of DB to get more reliable numbers
Scott Horowitz <stonecrest@gmail.com>
2007-04-23 04:09:00 +00:00
Aaron Griffin
5299115020 * Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
Using the wrong variable in sortbydeps
2007-04-23 04:01:37 +00:00
Aaron Griffin
c6a335501c New archlinuxppc.org mirror added to mirrorlist 2007-04-23 03:53:19 +00:00
Aaron Griffin
38e3b7c4fa * Chantry Xavier <xav@chantry.homelinux.org>
Let IgnorePkg take precedence over the FORCE package flag
2007-04-23 03:46:54 +00:00
Dan McGee
8af5c8d421 Added Spanish Translation.
Juan Pablo González T. <lord_jotape@yahoo.com.ar>
2007-04-23 02:56:11 +00:00
Aaron Griffin
1a42b23187 * Alexander Baldeck <alexander@archlinux.org>
Bugfix for FS#6944
2007-04-18 05:50:00 +00:00
Dan McGee
eb448f222a makepkg: unset one more language variable 2007-04-17 03:56:52 +00:00
Dan McGee
756ec7e69f Updated German translation
Matthias Gorissen <siquame@web.de>
2007-04-17 03:32:20 +00:00
Dan McGee
38ff2153c6 Adding Polish language translation, thanks!
From: Mateusz Jędrasik <m.jedrasik@gmail.com>
2007-04-17 02:35:59 +00:00
Aaron Griffin
e0f5d4efbe * Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
Make sure ldconfig runs on upgrade
* Added 3 pactests to verify (by output only) that ldconfig is run
2007-04-17 02:31:04 +00:00
Dan McGee
ec83c93ea4 Bugfixes in prep for a 3.0.2 release
Fix #6905- makepkg dependency checking error
Fix #6915- add SUU mirror to mirrorlist.in
2007-04-17 01:49:06 +00:00
Dan McGee
562887ba5c Fix FS #6872- CFLAGS were not being exported 2007-04-11 16:41:29 +00:00
Dan McGee
14d74623b0 Added easynews mirror 2007-04-09 20:13:31 +00:00
Dan McGee
d4f78116e0 Fix running of pre_remove and Post_remove
pkgname was undefined previously when this was called, fixed.
Patch from Roman Kyrylych <roman.kyrylych@gmail.com>.
2007-04-05 16:37:23 +00:00
Aaron Griffin
ef578e77c8 * Updated 2007-04-04 05:07:43 +00:00
Aaron Griffin
cfbec7464f * Version number bump 2007-04-04 05:03:52 +00:00
Aaron Griffin
10ba636987 * Fix FS#6798 - there is no reason to fail on a duplicate removal target
Added a pactest case for this ("-R foo foo foo foo foo" should do what is
  expected)
2007-04-04 04:43:24 +00:00
Aaron Griffin
1cd7567ff8 This change does two things:
* Prefer case-insensitive config settings.  In the future case-insensitivity
  may be enforced.
* Provides a fix for the tr_TR locale by checking the case-insensitive version
  first.  This is more elegant than setting the 'C' locale for tr_TR.

Also added a 'RootDir' config option to match CacheDir and DBPath
2007-04-04 03:59:36 +00:00
Aaron Griffin
8153e3851e Forgot the @@REPO@@ part of the russian mirror. 2007-04-04 03:00:24 +00:00
Aaron Griffin
c87745646c Added new Russian mirror 2007-04-04 02:19:37 +00:00
Aaron Griffin
ec689b5978 * Tom Killian <tom@archlinux.org>
Properly align checksums on makepkg -g
2007-04-04 02:03:44 +00:00
Dan McGee
d2c6bcdbbd * Updated Italian translation
Giovanni Scafora <linuxmania@gmail.com>
2007-04-01 17:05:16 +00:00
Dan McGee
60a588261c * Updated Hungarian translation
Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
2007-03-30 19:55:05 +00:00
Dan McGee
3382a1416f * Updated Russian translation
Владимир Байраковский <4rayven@gmail.com>
2007-03-30 18:06:04 +00:00
Aaron Griffin
19cec12f73 commit 1d35c4dcc6
Author: Aaron Griffin <aaronmgriffin@gmail.com>
Date:   Thu Mar 29 22:44:10 2007 -0500

    Report an error on setmntent failure

    Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
2007-03-30 04:46:17 +00:00
Aaron Griffin
a0f8f03056 commit 970d2e942e
Author: Aaron Griffin <aaronmgriffin@gmail.com>
Date:   Thu Mar 29 21:30:40 2007 -0500

    repo-add leaves .PKGINFO in the current directory

    * Misuse of 'tar xf', which should be 'tar tf'

    Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
2007-03-30 03:33:19 +00:00
Aaron Griffin
1e859c647f From: Andrew Fyfe <andrew@neptune-one.net>
Date: Thu, 29 Mar 2007 11:11:36 +0100
Subject: [PATCH 1/1] Fix bug where makepkg can't extract .tar.Z archives.

For some reason 'tar -xf' doesn't work with .tar.Z, you need to use
'tar -xzf' to extract the archive.

Signed-off-by: Andrew Fyfe <andrew@neptune-one.net>
Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
2007-03-30 03:24:09 +00:00
Dan McGee
ab8c825364 Fix --ignore behavior on sysupgrade
* --ignore was being ignored (haha) on sysupgrade when a package was listed
  as being a force upgrade. This adds a prompt to the user in this case asking
  what to do.

Signed-off-by: Dan McGee <dan@archlinux.org>
2007-03-28 04:32:00 +00:00
Dan McGee
a2a781f416 * Remove outdated ProxyServer option from pacman.conf.5. 2007-03-27 15:51:18 +00:00
Dan McGee
d47b8cdf48 * Fix NEWS typo. Oops.
* Updated Russian translation.
  Владимир Байраковский <4rayven@gmail.com> and Shild <sxp@bk.ru>
* Removed a string from gettext that didn't need it.
2007-03-26 22:47:56 +00:00
Dan McGee
58fe79eef6 * Fix bug where 'makepkg -L' doesn't stop on build failure.
Andrew Fyfe <andrew@neptune-one.net>
* Add testing to etc/pacman.d/.cvsignore
* Fix scriptlet001.py test to work during 'make check'.
2007-03-25 17:37:42 +00:00
Dan McGee
a07b490344 Andrew Fyfe <andrew@neptune-one.net>
* Fix FS #6688- builddeps not working in makepkg.
2007-03-24 17:11:18 +00:00
Aaron Griffin
f8d0601b8d * Added a mirror list for [testing] (it appears most mirrors mirror testing)
* Commented ftp.archlinux.org in the official mirror list
* ran a make dist, which updated some translation files
2007-03-24 04:18:17 +00:00
Dan McGee
d38b273f91 * Removed three dead mirrors (Dale Blount <dale@archlinux.org>). 2007-03-23 17:48:05 +00:00
Dan McGee
5702b943e8 * Updated German translation
Pierre Schmitz <pierre@archlinux.de>
2007-03-23 17:42:14 +00:00
Dan McGee
9cf9606459 Fixed alpm_log call- too many parameters passed. (bardo on #archlinux-pacman) 2007-03-22 18:33:27 +00:00
Dan McGee
19faa24cf3 Clarify some English messages as suggested by Nagy Gabor. I even did the hard
work of fixing these in the translation files, and I removed a few fuzzys
while doing so. If any more patches for translations come, try to do it
against these files.
2007-03-22 18:19:49 +00:00
Dan McGee
4a75cb7e52 * Updated Brazilian Portuguese translation
Douglas Soares de Andrade <dsandrade@gmail.com>
2007-03-22 17:20:39 +00:00
Dan McGee
df59a18460 Roman Kyrylych <roman.kyrylych@gmail.com>
* Updates to news file.
2007-03-22 15:18:26 +00:00
Dan McGee
b882353d48 Lots of translation updates before we release.
* Ran msgmerge on all po files from new pot files, but did not check in the
  updated pot files as that just causes problems.
* Updated Italian translation
  Giovanni Scafora <linuxmania@gmail.com>
* Updated Russian translation, added libalpm partial translation
  Владимир Байраковский <4rayven@gmail.com>
* Updated Hungarian translation
  Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
* Updated French translation
  solsTiCe d'Hiver <solstice.dhiver@laposte.net>

Thanks again guys!
2007-03-22 14:51:00 +00:00
Aaron Griffin
bdfe232b8a Quick pactest changes:
* Minor change to utils.py(grep) to make it cleaner
* Added scriptlet check to verify scriptlet events happen
2007-03-22 08:30:18 +00:00
Aaron Griffin
118671eff4 I was mistaken, newpkg->data IS useful here, as the scriptlet isn't in the FS at
this point
2007-03-22 08:28:09 +00:00
Aaron Griffin
d8ec08f578 * Correct install scriptlet usage (reuse of handle->root when not needed)
* Skip running scriptlet when chroot fails - to prevent issues in the host
  filesystem
2007-03-22 08:22:48 +00:00
Aaron Griffin
3aa0c85716 * -Qo now properly resolves paths when finding an owner
NOTE that we do NOT want symlinked *files* resolved, only paths (i.e.
  /usr/lib/perl5/site_perl/*)
2007-03-22 07:32:54 +00:00
Dan McGee
d763017233 * Fix conflict checking to ignore symlinks that were in previous version of
package. Regression from 2.9.8.
2007-03-22 06:25:26 +00:00
Aaron Griffin
5a37682525 * Quick fixup for the translations due to a typo fix committed earlier. 2007-03-22 01:00:29 +00:00
Aaron Griffin
06d7e3d7c3 Giovanni Scafora <linuxmania@gmail.com>
* Fix typo in pacman.c
2007-03-22 00:20:05 +00:00
Dan McGee
3a4030837e * Updated Italian translation
Giovanni Scafora <linuxmania@gmail.com>
* Added pactest test for -Se operation
  James Rosten <seinfeld90@gmail.com>
2007-03-21 22:15:50 +00:00
Jürgen Hötzel
75d6149711 * dont use XferCommand if retrieving local files, fixes wget error:
file:////....: Unsupported scheme.
2007-03-21 21:08:08 +00:00
Dan McGee
79ecbd82bd * Typo fix. 2007-03-21 03:38:43 +00:00
Dan McGee
40855b48fe * pacman.c: Add CacheDir to -v --verbose output. 2007-03-21 03:29:11 +00:00
Aaron Griffin
941c23025c * Fix asking the user to upgrade when using -Sp
* More significant error messages when -Qo fails
* Potential fix for reported error that pacman indicates corrupt packages
  when space is full on the cache dir
2007-03-21 03:08:19 +00:00
Dan McGee
8ded2051d2 * TODO.dan updates.
Alessio 'mOLOk' Bolognino <themolok.ml@gmail.com>
* Make makeworld compatable with makepkg lacking -w option.
2007-03-20 19:16:17 +00:00
Dan McGee
b6018c436d * NEWS: add quick line about backup files.
* pacman.8: add documentation for -Se option.
2007-03-20 05:47:11 +00:00
Aaron Griffin
9b08a5aa97 * Fix pacman -Se which installs depends only, as it was broken
(Is this useful to anyone?)
2007-03-20 02:36:21 +00:00
Dan McGee
0fa7d47a4d * makepkg: a few more changes to get dependencies working correctly. If a
user does not install all required dependencies, makepkg will now bail.
2007-03-20 02:13:44 +00:00
Dan McGee
b882f463df * makepkg: Fix behavior of -Ssr: deps were not being correctly removed before. 2007-03-20 01:34:16 +00:00
Dan McGee
62d0a00511 * makepkg: fix installation of dependencies with version comparitors. 2007-03-19 22:48:54 +00:00
Dan McGee
eef6154620 * TODO list updates. 2007-03-19 04:54:58 +00:00
Aaron Griffin
22206d5bea Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
* correct _alpm_rmrf usage with regard to symlinks and directories
2007-03-19 04:49:28 +00:00
Aaron Griffin
bd55cf548c James Rosten <seinfeld90@gmail.com>
* Two new pactest test cases
* Fix some "required by" / "requires" output by unifying all "dependency types"
  to a single value (PM_DEP_TYPE_DEPEND)
2007-03-19 04:23:45 +00:00
Dan McGee
cf6f184243 * Updated Italian translation
Giovanni Scafora <linuxmania@gmail.com>
* Many minor issues mentioned by Scott Horowitz <stonecrest@gmail.com>.
  - extra 'done' text in --noprogressbar output
  - missing flags in the pacman.8 manpage
  - unclear text in --noconfirm help description
2007-03-19 02:45:00 +00:00
Dan McGee
bf1885b1e0 * Adding new Turkish mirror as posted on the forums.
* Updated Italian translation
  Giovanni Scafora <linuxmania@gmail.com>
2007-03-19 01:28:31 +00:00
Dan McGee
a755dacea2 James Rosten <seinfeld90@gmail.com>
* Add missing help line for --sync --list.
2007-03-18 23:21:57 +00:00
Dan McGee
bd7b7e5f0c * Added quoting on several makepkg paths that were lacking it. 2007-03-18 23:09:50 +00:00
Aaron Griffin
ff76c8c552 * makepkg.conf.in: Added /usr/share/gtk-doc back into default DOC_DIRS 2007-03-15 00:07:27 +00:00
Dan McGee
4bfd0cb6cc * Missing a 'msg' in makepkg- pointed out by wain on Flyspray. Thanks! 2007-03-14 23:25:03 +00:00
Dan McGee
1205e544d3 * Updated Hungarian translation
Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
2007-03-14 23:17:11 +00:00
Dan McGee
fa4a6eec4d * Updated Russian translation
Владимир Байраковский <4rayven@gmail.com>
2007-03-14 15:02:53 +00:00
Dan McGee
0d38e4f977 * Fixed up broken translation 2007-03-14 14:14:37 +00:00
Dan McGee
fb938770c3 * Small updates to my TODO file.
* Updated fr.po courtesy of solsTiCe d'Hiver <solstice.dhiver@laposte.net>.
2007-03-13 21:05:01 +00:00
Dan McGee
6e05ad1d24 * Resizing terminal while progress bars were displayed caused some weird
issues, this should fix it. Progress bars now go from displaying, to showing
  percent only, to not displaying at all. Changed unsigned -> signed to
  prevent wraparound errors in integer comparison.
2007-03-13 16:15:38 +00:00
Aaron Griffin
2020e0ec73 * Sebastian Sareyko
Fix repo-add filename addition (use basename)
2007-03-13 15:01:15 +00:00
Aaron Griffin
74e8b28fc3 * Missed a path when requiring that all paths end with / - this caused -U not to
work (it was downloading files as .package-name) at all.
2007-03-12 23:26:47 +00:00
Dan McGee
9e3a185345 * Noted a misspelling for later (after we are not in string freeze). 2007-03-12 15:49:31 +00:00
Dan McGee
38784a7eb5 * Fix wrong filesize being recorded to local DB. Reported by Andreas Radke. 2007-03-12 15:41:33 +00:00
Aaron Griffin
5f15a80274 * Fixed an error with 'cascade' removal due to creation of a new pmpkg_t struct
(and thus not copying pertinent data w.r.t. reading package files)
2007-03-12 05:55:14 +00:00
Dan McGee
0203fabe54 * Fix an issue where the same dependency was recorded multiple times in the
'required by' field.
2007-03-12 04:47:58 +00:00
Dan McGee
ba1806f5ac * Removed ${CFLAGS} from Makefile.am(s) as it was causing all CFLAGS to be
duplicated.
* Updated the util Makefile.am to link with the proper libalpm.la.
* Fixed bitmasking issues in be_files.c and db.h.
* Rankmirrors updates from James Rosten (with some cleaning up of my own).
  KeyboardInterrupts are now handled gracefully.
2007-03-12 03:02:57 +00:00
Dan McGee
9ba23c8248 * Fixed -Qil regression, now both flags are honored. (FS #1355) 2007-03-12 01:25:40 +00:00
Dan McGee
39478292af * Updates to Hungarian translation from Nagy, mostly cleanup stuff. 2007-03-12 00:43:53 +00:00
Dan McGee
0a1b2544cb * Updated Hungarian translation, thanks!
(Because we are in a string freeze, I did not add "to the transaction" to
  the original string but kept it in your translation)
  Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
2007-03-11 21:32:59 +00:00
Dan McGee
7f7da2b5fc * Fix group comparison issue and associated compilation warnings by using
the alpm strcmp operation which takes void* references.
* We had this great visibility patch, but never actually took advantage of
  it. Added the right compile flag to make it work and added some more
  SYMEXPORTs where necessary to have a successful compile.
2007-03-11 21:10:02 +00:00
Dan McGee
f94506396f * Added Russian language translation. Thanks!
Вам Зачем <4rayven@gmail.com>
* Updated manpage to document --cachedir and --dbpath options.
2007-03-11 20:53:50 +00:00
Dan McGee
2f4c1fe647 * Updated Italian translation
Giovanni Scafora <linuxmania@gmail.com>
* long -> float conversion for package size output (which still may be the
  wrong size, this needs to be looked at)
2007-03-10 20:36:20 +00:00
Jürgen Hötzel
187eb7492d fixed string comparison callback (patch from Nagy Gabor) 2007-03-09 23:26:33 +00:00
Aaron Griffin
6f870968ed * Two fixes when running under a new root (-r|--root)
- Check EACCES in can_remove_file, to verify - we're only checking for a
      read-only FS here... if write permissions fail, we can still remove it
    - Switched the message when creating DB directories from an error to a debug
      message
* Fix the dep tests once and for all (it wasn't working for provides=()
  packages)
2007-03-09 05:33:06 +00:00
Dan McGee
68876e4eb0 * Another slight update, getting rid of -rf flags and clarifying a message. 2007-03-09 05:11:47 +00:00
Dan McGee
0a1ca73183 * Added confirmation step to makepkg -C operation to ensure user is deleting
exactly what they think they are.
2007-03-09 04:35:04 +00:00
Dan McGee
28aca444a2 * Updated Italian translation
Giovanni Scafora <linuxmania@gmail.com>
* Changed default SRCDEST in makepkg.conf. Two reasons:
  1) consistency with PKGDEST in /home/packages
  2) building packages as root is NOT recommended, so no reason to ever
     encourage this use by caching source in a dir with root permissions
  Yes, we may all do this differently and build our packages in other
  directories. But that is why they are variables and can be set anyway.
2007-03-08 06:55:22 +00:00
Dan McGee
3461786b19 * Mark a function as static that is only used in deptest.c. 2007-03-07 21:47:52 +00:00
Aaron Griffin
abcb5494bc * Updated -V output to include the 2007 copyright date. 2007-03-07 20:29:28 +00:00
Dan McGee
dddf759004 * Slight updates to NEWS file. 2007-03-07 17:23:15 +00:00
Dan McGee
4268eda3a6 * Updated pot files for hopefully the last time before release.
* po files update themselves when a pot file update occurs, so you see that
  here as well.
* Added a few more small notes to translation-help.
2007-03-07 16:57:22 +00:00
Dan McGee
fd312c35eb * Updated German translation
Pierre Schmitz <pierre@archlinux.de>
* Added en_GB translation, thanks! Keep it 'synchronised'! Sorry, awful joke.
  Jeff Bailes <thepizzaking@gmail.com>
2007-03-07 16:36:42 +00:00
Aaron Griffin
166ffc4f9e * Bug fix for makepkg dependency testing. This requires that we
expose alpm_splitdep and alpm_depcmp as public symbols
* Removed a duplicate strtrim for question responses
2007-03-07 07:45:30 +00:00
Dan McGee
1a9e6015c7 * Updated Brazilian Portuguese translation
Douglas Soares de Andrade <dsandrade@gmail.com>
2007-03-07 06:57:44 +00:00
Dan McGee
7e19b3238a * Added a readme file to the contrib/ directory. 2007-03-07 00:07:57 +00:00
Dan McGee
9418333166 * Updated Italian translation
Giovanni Scafora <linuxmania@gmail.com>
2007-03-06 22:12:51 +00:00
Dan McGee
631a71f11a * Oops, that last commit had some debug stuff in it. Removed it and added
--help and --version command line flags to contrib/pacsearch.
2007-03-06 22:08:12 +00:00
Dan McGee
48181e9a84 * -Qs was returning an error if no package found, which is not the same behavior as -Ss. 2007-03-06 22:06:28 +00:00
Dan McGee
e6d6ee2c5a * Slight updates of Hungarian translation
Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
2007-03-06 21:40:28 +00:00
Dan McGee
aaa356999a * Sorry tranlators, another string update. .pacorig was displayed twice in
the output of this message (simple fix- remove .pacorig from your
  translated message).
2007-03-06 19:38:04 +00:00
Dan McGee
45855badc1 * Fix FS #6534- unclear IgnorePkg message. Sorry translators, had to update
a string! You messages may or may not have changed much.
2007-03-06 15:00:26 +00:00
Dan McGee
e1704bfdd6 * Updated Italian translation
Giovanni Scafora <linuxmania@gmail.com>
2007-03-06 14:35:10 +00:00
Dan McGee
a50105bede * Remove sha1 checksums for now from the INTEGRITY_CHECK array. 2007-03-06 06:42:09 +00:00
Dan McGee
294eff6021 Trying to fix up this autotools stuff a bit more.
* Greatly simplify and de-obfuscate the autogen and autoclean code.
* Add a bunch of the autotools required files to the repository. This
  will give us consistency (a novel idea) across all builds, and allow
  for much more recent versions of config.guess and config.sub to be used.
2007-03-06 06:38:20 +00:00
Aaron Griffin
90b75a0435 * Fix the double package name URL when using XferCommand
* Fixed valgrind yelling about the sprintfs in md5/sha1 routines
2007-03-06 04:22:03 +00:00
Dan McGee
5baba84397 * Added missing header include guards in md5.h and sha1.h.
* Some header cleanup on the pacman side of things - we had alpm.h instead
  alpm_list.h in a few headers.
* removed an extra slash in path-building snprintf in server.c.
2007-03-06 01:21:41 +00:00
Dan McGee
869e81e1cf This commit looks much more monumental than it is. Almost all just #include
reordering and adding ones that were forgotten (noticed when trying to
compile after reordering).

* Updated the HACKING file to include information on #include usage.
* print -> vprint in "making dir" function in pactest.
2007-03-05 22:13:33 +00:00
Dan McGee
facb99098d * Failure to #include config.h cost us here, we lost all NLS in alpm.c. 2007-03-05 19:21:33 +00:00
Aaron Griffin
94b5e39407 Added this test to check the XferCommand functionality 2007-03-05 18:06:45 +00:00
Aaron Griffin
2caadb33bf * Fixed an issue with globbing the --test argument
* Added a custom 'mkdir' function which makes parents and doesn't fail on
  existence
* Added output for 'SKIP' messages (it did not indicate WHY it was skipped)
* Added the ability to generate DB packages in the sync dir (not the cache dir)
  for testing downloading.  (self.cachepkgs = False)
* Added pmtest.path for the full path to the package file
2007-03-05 18:06:12 +00:00
Dan McGee
714a414e72 * Removed a mirrorlist that codemac says is quite outdated. 2007-03-05 04:38:57 +00:00
Dan McGee
4770ac784e * rankmirrors updates from Scott Horowitz <stonecrest@gmail.com>.
Formatted output is now the default. Added a TODO for later as well.
2007-03-05 02:32:14 +00:00
133 changed files with 35946 additions and 6403 deletions

34
HACKING
View File

@@ -1,8 +1,8 @@
Contributing to pacman
======================
Please read 'submitting-patches' and 'translation-help' in the same directory as
this file.
Please read 'submitting-patches' and 'translation-help' in the same directory
as this file.
Coding style
------------
@@ -62,4 +62,34 @@ Coding style
NOT
sizeof(*mylist);
Other Concerns
--------------
Currently our #include usage is in messy shape, but this is no reason to
continue down this messy path. When adding an include to a file, follow this
general pattern, including blank lines:
#include "config.h"
#include <standardheader.h>
#include <another.h>
#include <...>
Follow this with some more headers, depending on whether the file is in libalpm
or pacman proper. For libalpm:
/* libalpm */
#include "yourfile.h"
#include "alpm_list.h"
#include "anythingelse.h"
For pacman:
#include <alpm.h>
#include <alpm_list.h>
/* pacman */
#include "yourfile.h"
#include "anythingelse.h"
vim: set ts=2 sw=2 et:

234
INSTALL Normal file
View File

@@ -0,0 +1,234 @@
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
2006 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You need `configure.ac' if
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
documentation.
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that the
`configure' script does not know about. Run `./configure --help' for
details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
Installation Names
==================
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
There may be some features `configure' cannot figure out automatically,
but needs to determine by the type of machine the package will run on.
Usually, assuming the package is built to be run on the _same_
architectures, `configure' can figure that out, but if it prints a
message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share, you
can create a site shell script called `config.site' that gives default
values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf bug. Until the bug is fixed you can use this workaround:
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
`configure' recognizes the following options to control how it operates.
`--help'
`-h'
Print a summary of the options to `configure', and exit.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

View File

@@ -7,6 +7,8 @@ SUBDIRS = lib/libalpm src/util src/pacman scripts doc etc pactest contrib
EXTRA_DIST = HACKING
check-local: src/pacman
python $(top_srcdir)/pactest/pactest.py --test $(top_srcdir)/pactest/tests/*.py -p $(top_builddir)/src/pacman/pacman
python $(top_srcdir)/pactest/pactest.py --debug=1 \
--test $(top_srcdir)/pactest/tests/*.py \
-p $(top_builddir)/src/pacman/pacman
rm -rf $(top_builddir)/root

63
NEWS
View File

@@ -1,38 +1,71 @@
VERSION DESCRIPTION
-----------------------------------------------------------------------------
3.0.5 - Add -mtune=generic to default CFLAGS in makepkg.conf
- Small updates to translations
- repo-add: fix conflicts issue for real this time
- Fix issue with libarchive incorrectly setting permissions
3.0.4 - Updated translations
- repo-add: fix issue where conflicts were not put in database
3.0.3 - Updated translations
- repo-add: fixed a desc file clobbering issue
3.0.2 - fix a bug where pre/post_remove scriptlets were not ran
- ensure ldconfig is ran in all operations
- added a few new translations, updated existing ones
- updated mirror lists
- makepkg: ensure CFLAGS are exported to build function
3.0.1 - fix a locale issue with tr_TR upper/lower-case conversion
- allow removal when listing the same package multiple times
- fix a repo-add bug that left a .PKGINFO file in the current
directory
- proper error messages when we cannot read mtab for freespace
3.0.0 - first release based on libalpm backend
- added internationalization (gettext) support
- prompt to delete corrupted packages
- **TODO** documentation - multiple man pages updated
- added internationalization (gettext) support:
- de, fr, hu, it, pt_BR, en_GB, ru_RU translations
- switch to usage of libdownload and libarchive
- improved proxy support using libdownload
- documentation - man pages updated, new conf manpages added
- repository mirror list updates
- added support for package changelogs
- logging of all install scriptlet messages to pacman.log
- repository mirror list updates
- orphans search (-Qe) now shows true orphans
- new -Qu option - show all packages that can be upgraded
- new -Se option - install only dependencies
- dependency sorting on install and removal
- new uncompressed size field, shown on sync upgrade
- check for free space before installing packages
- prompt to delete corrupted packages
- improved backup handling - backup array proactive on upgrade
- removed NoUpgrade lines from default pacman.conf
- new uncompressed size field, shown on sync upgrade
- improved progress and progressbar output
- reduced unnecessary calling of ldconfig
- selective loading of database to speed up certain operations
- switch to usage of libdownload and libarchive
- improved proxy support as a result of switch to libdownload
- debugging output improved with --debug flag
- added 'rankmirrors' - script to show best available mirrors
- added 'repo-add' - the backbone script for building repos
- added pactest testing suite
- abs - supports cvsup/csup, expanded configuration
- abs - supports fetching of testing repository
- makepkg fixes:
- pacman-optimize - now supports DBs on separate filesystem
- makepkg and abs now support conf files in home directory
- makepkg changes:
- arch field is required
- added -arch suffix to generated package filenames
- new configuration file options format
- changed default configuration
- support alternate integrity checks
- extract files using filetype, not extension
- added noextract array
- new options array format
- new option to log build process
- new repackage option - repackage pkg/ w/o building
- new --repackage option - repackage pkg/ without building
- user-selectable paths for doc stripping
- configurable source cache location
- dependencies now removed on a build success or failure
- pacman-optimize - support DB's on separate filesystem
- abs changes:
- supports both cvsup and csup
- expanded configuration
- added support for testing repository
- new helper scripts:
- rankmirrors - shows best available mirrors
- repo-add - adds a package to a repo database file
- repo-remove - removes a package from a repo database file
- added pactest testing suite
- MANY fixes and small improvements everywhere
2.9.8 - Changed behaviour with original=X,current=Y,new=Z scenario
- keep old in place, install new as .pacnew
- Search package provides when finding matching targets with -S

View File

@@ -11,14 +11,6 @@ Port the libdownload (libfetch) manpage from BSD style to Linux style, or at
very least change references to BSD.
Pacman 3.0:
-----------
ideas mentioned here- http://bbs.archlinux.org/viewtopic.php?id=29450- add a
.install message about mirrors, maybe comment whole file, encourage rankmirrors
usage
Pacman 3.1:
-----------
@@ -32,6 +24,9 @@ keep, etc. Good python script in the forums that we should try to emulate.
Downgrade feature - allow users to see cached packages and downgrade to
(previous or any?) available options.
Installed size and download size in -Si/Qi output should scale with package
size- KB to MB to GB. We should also get consistancy of K/KB, M/MB, etc.
Extreme similarity between some of the sync and add code...we have to be able
to abstract more away from sync actions and add actions to just 'actions'
(example: sync,c, add.c, and deptest.c all contain a switch on PM_DEP_MOD_*).
@@ -81,7 +76,8 @@ Localize the date display done in --info output. Also, fix other localized
issues- use non-printf when necessary, make sure all two line printed messages
(especially usage instructions) are printed using one print statement. We
may need to use some wchar_t output on the progress bar as char/byte counts
differ here.
differ here. Sizes of packages (e.g. 10,400.23 MB) should all be localized with
correct seperators.
Rewrite makepkg to use terminal-safe coloring/bolding. tput utility should
allow us to do this. Make universal message functions for systemwide use,

6397
acinclude.m4 Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -2,53 +2,33 @@
[ -f Makefile ] && make distclean
rm -rf autom4te.cache
rm -rf Makefile
rm -rf Makefile.in
rm -rf {Makefile.in,Makefile}
rm -rf {config.h.in,config.h}
rm -rf config.status
rm -rf configure
rm -rf config.*
rm -rf stamp*
rm -rf depcomp
rm -rf install-sh
rm -rf missing
rm -rf src/pacman/Makefile
rm -rf src/pacman/Makefile.in
rm -rf src/util/Makefile
rm -rf src/util/Makefile.in
rm -rf lib/libftp/Makefile
rm -rf lib/libftp/Makefile.in
rm -rf lib/libalpm/Makefile.in
rm -rf lib/libalpm/Makefile
rm -rf aclocal.m4
rm -rf ltmain.sh
rm -rf doc/Makefile
rm -rf doc/Makefile.in
rm -rf doc/hu/Makefile
rm -rf doc/hu/Makefile.in
rm -rf doc/html/*.html
rm -rf doc/man3/*.3
rm -rf compile
rm -rf libtool
rm -rf mkinstalldirs
rm -rf config.rpath
rm -rf scripts/.deps/
rm -rf scripts/Makefile.in
rm -rf etc/Makefile.in
rm -rf etc/Makefile
rm -rf etc/pacman.d/Makefile.in
rm -rf etc/pacman.d/Makefile
rm -rf etc/abs/Makefile.in
rm -rf etc/abs/Makefile
rm -rf pactest/Makefile.in
rm -rf pactest/Makefile
rm -rf src/pacman/po/Makefile
rm -rf src/pacman/po/Makefile.in
rm -rf lib/libalpm/{Makefile.in,Makefile}
rm -rf src/util/{Makefile.in,Makefile}
rm -rf src/pacman/{Makefile.in,Makefile}
rm -rf scripts/{Makefile.in,Makefile}
rm -rf etc/{Makefile.in,Makefile}
rm -rf etc/pacman.d/{Makefile.in,Makefile}
rm -rf etc/abs/{Makefile.in,Makefile}
rm -rf pactest/{Makefile.in,Makefile}
rm -rf doc/{Makefile.in,Makefile}
rm -rf doc/html/*.html
rm -rf doc/man3/*.3
rm -rf src/pacman/po/{Makefile.in,Makefile}
rm -rf src/pacman/po/POTFILES
rm -rf src/pacman/po/stamp-po
rm -rf src/pacman/po/*.gmo
rm -rf lib/libalpm/po/Makefile
rm -rf lib/libalpm/po/Makefile.in
rm -rf lib/libalpm/po/{Makefile.in,Makefile}
rm -rf lib/libalpm/po/POTFILES
rm -rf lib/libalpm/po/stamp-po
rm -rf lib/libalpm/po/*.gmo

View File

@@ -1,51 +1,6 @@
#!/bin/sh -e
#!/bin/sh -xu
if [ "$1" == "--gettext-only" ]; then
sh autoclean.sh
for i in lib/libalpm/po src/pacman/po
do
cd $i
mv Makevars Makevars.tmp
package=`pwd|sed 's|.*/\(.*\)/.*|\1|'`
intltool-update --pot --gettext-package=$package
for j in *.po
do
if msgmerge $j $package.pot -o $j.new; then
mv -f $j.new $j
echo -n "$i/$j: "
msgfmt -c --statistics -o $j.gmo $j
rm -f $j.gmo
else
echo "msgmerge for $j failed!"
rm -f $j.new
fi
done
mv Makevars.tmp Makevars
cd - >/dev/null
done
cd doc
po4a -k 0 po4a.cfg
cd po
for i in *po
do
if msgmerge $i $package.pot -o $i.new; then
mv -f $i.new $i
echo -n "man/$i: "
msgfmt -c --statistics -o $i.gmo $i
rm -f $i.gmo
else
echo "msgmerge for $i failed!"
rm -f $i.new
fi
done
exit 0
fi
cp -f $(dirname $(which automake))/../share/automake-*/mkinstalldirs ./
cp -f $(dirname $(which automake))/../share/gettext/config.rpath ./
libtoolize -f -c
aclocal --force
autoheader -f
autoconf -f
automake -a -c --gnu --foreign
aclocal
autoheader
automake --foreign
autoconf

1516
config.guess vendored Executable file

File diff suppressed because it is too large Load Diff

614
config.rpath Executable file
View File

@@ -0,0 +1,614 @@
#! /bin/sh
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
# Copyright 1996-2006 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
# This file is free software; the Free Software Foundation gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# The first argument passed to this file is the canonical host specification,
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
# should be set by the caller.
#
# The set of defined variables is at the end of this script.
# Known limitations:
# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
# than 256 bytes, otherwise the compiler driver will dump core. The only
# known workaround is to choose shorter directory names for the build
# directory and/or the installation directory.
# All known linkers require a `.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
shrext=.so
host="$1"
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
# Code taken from libtool.m4's _LT_CC_BASENAME.
for cc_temp in $CC""; do
case $cc_temp in
compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
\-*) ;;
*) break;;
esac
done
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
wl=
if test "$GCC" = yes; then
wl='-Wl,'
else
case "$host_os" in
aix*)
wl='-Wl,'
;;
darwin*)
case $cc_basename in
xlc*)
wl='-Wl,'
;;
esac
;;
mingw* | pw32* | os2*)
;;
hpux9* | hpux10* | hpux11*)
wl='-Wl,'
;;
irix5* | irix6* | nonstopux*)
wl='-Wl,'
;;
newsos6)
;;
linux*)
case $cc_basename in
icc* | ecc*)
wl='-Wl,'
;;
pgcc | pgf77 | pgf90)
wl='-Wl,'
;;
ccc*)
wl='-Wl,'
;;
como)
wl='-lopt='
;;
*)
case `$CC -V 2>&1 | sed 5q` in
*Sun\ C*)
wl='-Wl,'
;;
esac
;;
esac
;;
osf3* | osf4* | osf5*)
wl='-Wl,'
;;
sco3.2v5*)
;;
solaris*)
wl='-Wl,'
;;
sunos4*)
wl='-Qoption ld '
;;
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
wl='-Wl,'
;;
sysv4*MP*)
;;
unicos*)
wl='-Wl,'
;;
uts4*)
;;
esac
fi
# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
hardcode_libdir_flag_spec=
hardcode_libdir_separator=
hardcode_direct=no
hardcode_minus_L=no
case "$host_os" in
cygwin* | mingw* | pw32*)
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
if test "$GCC" != yes; then
with_gnu_ld=no
fi
;;
interix*)
# we just hope/assume this is gcc and not c89 (= MSVC++)
with_gnu_ld=yes
;;
openbsd*)
with_gnu_ld=no
;;
esac
ld_shlibs=yes
if test "$with_gnu_ld" = yes; then
# Set some defaults for GNU ld with shared library support. These
# are reset later if shared libraries are not supported. Putting them
# here allows them to be overridden if necessary.
# Unlike libtool, we use -rpath here, not --rpath, since the documented
# option of GNU ld is called -rpath, not --rpath.
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
case "$host_os" in
aix3* | aix4* | aix5*)
# On AIX/PPC, the GNU linker is very broken
if test "$host_cpu" != ia64; then
ld_shlibs=no
fi
;;
amigaos*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
# that the semantics of dynamic libraries on AmigaOS, at least up
# to version 4, is to share data among multiple programs linked
# with the same dynamic library. Since this doesn't match the
# behavior of shared libraries on other platforms, we cannot use
# them.
ld_shlibs=no
;;
beos*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
cygwin* | mingw* | pw32*)
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
hardcode_libdir_flag_spec='-L$libdir'
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
interix3*)
hardcode_direct=no
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
;;
linux*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
netbsd*)
;;
solaris*)
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
ld_shlibs=no
elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
case `$LD -v 2>&1` in
*\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
ld_shlibs=no
;;
*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
else
ld_shlibs=no
fi
;;
esac
;;
sunos4*)
hardcode_direct=yes
;;
*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
esac
if test "$ld_shlibs" = no; then
hardcode_libdir_flag_spec=
fi
else
case "$host_os" in
aix3*)
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
hardcode_minus_L=yes
if test "$GCC" = yes; then
# Neither direct hardcoding nor static linking is supported with a
# broken collect2.
hardcode_direct=unsupported
fi
;;
aix4* | aix5*)
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
aix_use_runtimelinking=no
else
aix_use_runtimelinking=no
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking.
case $host_os in aix4.[23]|aix4.[23].*|aix5*)
for ld_flag in $LDFLAGS; do
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aix_use_runtimelinking=yes
break
fi
done
;;
esac
fi
hardcode_direct=yes
hardcode_libdir_separator=':'
if test "$GCC" = yes; then
case $host_os in aix4.[012]|aix4.[012].*)
collect2name=`${CC} -print-prog-name=collect2`
if test -f "$collect2name" && \
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
hardcode_direct=yes
else
# We have old collect2
hardcode_direct=unsupported
hardcode_minus_L=yes
hardcode_libdir_flag_spec='-L$libdir'
hardcode_libdir_separator=
fi
;;
esac
fi
# Begin _LT_AC_SYS_LIBPATH_AIX.
echo 'int main () { return 0; }' > conftest.c
${CC} ${LDFLAGS} conftest.c -o conftest
aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
if test -z "$aix_libpath"; then
aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
fi
if test -z "$aix_libpath"; then
aix_libpath="/usr/lib:/lib"
fi
rm -f conftest.c conftest
# End _LT_AC_SYS_LIBPATH_AIX.
if test "$aix_use_runtimelinking" = yes; then
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
else
if test "$host_cpu" = ia64; then
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
else
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
fi
fi
;;
amigaos*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
# see comment about different semantics on the GNU ld section
ld_shlibs=no
;;
bsdi[45]*)
;;
cygwin* | mingw* | pw32*)
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
hardcode_libdir_flag_spec=' '
libext=lib
;;
darwin* | rhapsody*)
hardcode_direct=no
if test "$GCC" = yes ; then
:
else
case $cc_basename in
xlc*)
;;
*)
ld_shlibs=no
;;
esac
fi
;;
dgux*)
hardcode_libdir_flag_spec='-L$libdir'
;;
freebsd1*)
ld_shlibs=no
;;
freebsd2.2*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
freebsd2*)
hardcode_direct=yes
hardcode_minus_L=yes
;;
freebsd* | kfreebsd*-gnu | dragonfly*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
hpux9*)
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
;;
hpux10*)
if test "$with_gnu_ld" = no; then
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
fi
;;
hpux11*)
if test "$with_gnu_ld" = no; then
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_libdir_separator=:
case $host_cpu in
hppa*64*|ia64*)
hardcode_direct=no
;;
*)
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
;;
esac
fi
;;
irix5* | irix6* | nonstopux*)
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
netbsd*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
newsos6)
hardcode_direct=yes
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
openbsd*)
hardcode_direct=yes
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
else
case "$host_os" in
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
hardcode_libdir_flag_spec='-R$libdir'
;;
*)
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
;;
esac
fi
;;
os2*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
;;
osf3*)
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
osf4* | osf5*)
if test "$GCC" = yes; then
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
# Both cc and cxx compiler support -rpath directly
hardcode_libdir_flag_spec='-rpath $libdir'
fi
hardcode_libdir_separator=:
;;
solaris*)
hardcode_libdir_flag_spec='-R$libdir'
;;
sunos4*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_direct=yes
hardcode_minus_L=yes
;;
sysv4)
case $host_vendor in
sni)
hardcode_direct=yes # is this really true???
;;
siemens)
hardcode_direct=no
;;
motorola)
hardcode_direct=no #Motorola manual says yes, but my tests say they lie
;;
esac
;;
sysv4.3*)
;;
sysv4*MP*)
if test -d /usr/nec; then
ld_shlibs=yes
fi
;;
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
;;
sysv5* | sco3.2v5* | sco5v6*)
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
hardcode_libdir_separator=':'
;;
uts4*)
hardcode_libdir_flag_spec='-L$libdir'
;;
*)
ld_shlibs=no
;;
esac
fi
# Check dynamic linker characteristics
# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
libname_spec='lib$name'
case "$host_os" in
aix3*)
;;
aix4* | aix5*)
;;
amigaos*)
;;
beos*)
;;
bsdi[45]*)
;;
cygwin* | mingw* | pw32*)
shrext=.dll
;;
darwin* | rhapsody*)
shrext=.dylib
;;
dgux*)
;;
freebsd1*)
;;
kfreebsd*-gnu)
;;
freebsd* | dragonfly*)
;;
gnu*)
;;
hpux9* | hpux10* | hpux11*)
case $host_cpu in
ia64*)
shrext=.so
;;
hppa*64*)
shrext=.sl
;;
*)
shrext=.sl
;;
esac
;;
interix3*)
;;
irix5* | irix6* | nonstopux*)
case "$host_os" in
irix5* | nonstopux*)
libsuff= shlibsuff=
;;
*)
case $LD in
*-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
*-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
*-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
*) libsuff= shlibsuff= ;;
esac
;;
esac
;;
linux*oldld* | linux*aout* | linux*coff*)
;;
linux*)
;;
knetbsd*-gnu)
;;
netbsd*)
;;
newsos6)
;;
nto-qnx*)
;;
openbsd*)
;;
os2*)
libname_spec='$name'
shrext=.dll
;;
osf3* | osf4* | osf5*)
;;
solaris*)
;;
sunos4*)
;;
sysv4 | sysv4.3*)
;;
sysv4*MP*)
;;
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
;;
uts4*)
;;
esac
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
# How to pass a linker flag through the compiler.
wl="$escaped_wl"
# Static library suffix (normally "a").
libext="$libext"
# Shared library suffix (normally "so").
shlibext="$shlibext"
# Flag to hardcode \$libdir into a binary during linking.
# This must work even if \$libdir does not exist.
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
# Whether we need a single -rpath flag with a separated argument.
hardcode_libdir_separator="$hardcode_libdir_separator"
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
# resulting binary.
hardcode_direct="$hardcode_direct"
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
# resulting binary.
hardcode_minus_L="$hardcode_minus_L"
EOF

1622
config.sub vendored Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@ CFLAGS=""
AC_PREREQ(2.59)
dnl Update it right before the release since $pkgver_foo are all _post_ release snapshots
AC_INIT([Pacman package manager], 3.0.0, [pacman-dev@archlinux.org], [pacman])
AC_INIT([Pacman package manager], 3.0.5, [pacman-dev@archlinux.org], [pacman])
AC_LANG([C])
AC_CONFIG_HEADERS(config.h)
AC_CANONICAL_HOST

View File

@@ -3,5 +3,6 @@ EXTRA_DIST = \
pacsearch \
pacdiff \
re-pacman \
zsh_completion
zsh_completion \
README

16
contrib/README Normal file
View File

@@ -0,0 +1,16 @@
Here is a brief description of the files included in this directory:
bash_completion - a bash completion script for pacman, install in
/etc/bash_completion.d/ for use (but rename to something descriptive!).
zsh_completion - a zsh completion script, install (with a rename) to
/usr/share/zsh/site-functions/.
pacsearch - a colorized search combining both -Ss and -Qs output. Installed
packages are easily identified with a *** and local-only packages are also
listed.
pacdiff - a simple pacnew/pacorig/pacsave updater for /etc/.
re-pacman - regenerate a pacman package based on installed files and the pacman
database entries. Useful for reuse, or possible config file extension.

View File

@@ -20,6 +20,7 @@
#TODO: colors flag on commandline
readonly progname="pacsearch"
readonly version="1.0"
readonly CLR1='\\\e[0;34m'
readonly CLR2='\\\e[0;32m'
@@ -31,12 +32,24 @@ readonly CLR7='\\\e[1;36m'
readonly INST='\\\e[1;31m'
readonly BASE='\\\e[0m'
if [ -z "$1" ]; then
if [ "$1" = "--help" -o "$1" = "-h" ]; then
echo "Usage: $progname <pattern>"
echo "Ex: $progname ^gnome"
exit 0
fi
if [ "$1" = "--version" -o "$1" = "-v" ]; then
echo "$progname version $version"
echo "Copyright (C) 2006-2007 Dan McGee"
exit 0
fi
if [ -z "$1" -o "${1:0:1}" = "-" ]; then
echo "Usage: $progname <pattern>"
echo "Ex: $progname ^gnome"
exit 1
fi
# Make two temp files and send output of commands to these files
querydump=$(mktemp)
pacman -Qs $1 > $querydump

584
depcomp Executable file
View File

@@ -0,0 +1,584 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2006-10-15.18
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
# Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> $depfile
echo >> $depfile
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> $depfile
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
tmpdepfile="$stripped.u"
if test "$libtool" = yes; then
"$@" -Wc,-M
else
"$@" -M
fi
stat=$?
if test -f "$tmpdepfile"; then :
else
stripped=`echo "$stripped" | sed 's,^.*/,,'`
tmpdepfile="$stripped.u"
fi
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
if test -f "$tmpdepfile"; then
outname="$stripped.o"
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
# Add `dependent.h:' lines.
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no
for arg in "$@"; do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix="`echo $object | sed 's/^.*\././'`"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
for arg
do
case "$arg" in
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View File

@@ -68,6 +68,15 @@ general syntax is shown.
.SH OPTIONS
.TP
.B \--ask \fInumber\fP
Pre-specify answers to questions. It is doubtful whether this option even
works, so I would not recommend using it. TODO: document this more, as I have
no idea how it works or when you would use it, or if we should just dump it.
.TP
.B \-b, --dbpath \fIpath\fP
Specify an alternative database location (default is "/var/lib/pacman/"). This
should not be used unless you know what you are doing.
.TP
.B \-d, --nodeps
Skips all dependency checks. Normally, pacman will always check a package's
dependency fields to ensure that all dependencies are installed and there are
@@ -80,16 +89,21 @@ option will cause all those files to be overwritten. This option should be
used with care, ideally not at all.
.TP
.B \-r, --root \fIpath\fP
Specify an alternative installation root (default is "/"). However, this should
\fInot\fP be used as a way to install software into /usr/local instead of /usr,
for example. This option should be used if you want to install a package on a
temporary mounted partition, which is "owned" by another system. By using this
option you not only specify where the software should be installed, but you
also specify which package database to use.
Specify an alternative installation root (default is "/"). This should
\fInot\fP be used as a way to install software into /usr/local instead of /usr.
This option is used if you want to install a package on a temporary mounted
partition which is "owned" by another system. By using this option you not only
specify where the software should be installed, but you also specify which
package database and cache location to use.
.TP
.B \-v, --verbose
Output more status messages, such as the Root and DBPath.
.TP
.B \--cachedir \fIdir\fP
Specify an alternative package cache location (default is
"/var/cache/pacman/pkg/"). This should not be used unless you know what you are
doing.
.TP
.B \--config \fIfilepath\fP
Specify an alternate configuration file.
.TP
@@ -100,9 +114,17 @@ unless you want to run pacman from a script.
.B \--noprogressbar
Do not show a progress bar when downloading files. This can be useful for
scripts that call pacman and capture the output.
.TP
.B \--noscriptlet
If an install scriptlet exists, do not execute it. Do not use this unless you
know what you are doing.
.SH QUERY OPTIONS
.TP
.B \-c, --changelog
View the ChangeLog of a package. Not every package will provide one but it
will be shown if available.
.TP
.B \-e, --orphans
List all packages that were pulled in by a previously installed package but no
longer required by any installed package.
@@ -166,6 +188,10 @@ downloads packages, it saves them in \fI/var/cache/pacman/pkg\fP. Use one
\fB--clean\fP switch to remove \fIold\fP packages; use two to remove \fIall\fP
packages from the cache.
.TP
.B \-e, --dependsonly
Install all dependencies of a package, but not the specified package itself.
This is pretty useless and we're not sure why it even exists.
.TP
.B \-g, --groups
Display all the members for each package group specified. If no group names
are provided, all groups will be listed; pass the flag twice to view all

View File

@@ -54,9 +54,6 @@ Instructs \fBpacman\fP to ignore any upgrades for this package when performing a
Include another config file. This file can include repositories or general
configuration options.
.TP
.B ProxyServer = <\fIhost\fP|\fIip\fP>[:\fIport\fP]
If set, \fBpacman\fP will use this proxy server for all ftp/http transfers.
.TP
.B XferCommand = \fI/path/to/command %u\fP
If set, an external program will be used to download all remote files. All
instances of \fB%u\fP will be replaced with the download URL. If present,

View File

@@ -21,8 +21,8 @@ CHOST="@CHOST@"
#-- Exclusive: will only run on @CARCHFLAGS@
# -mtune builds exclusively for an architecture
# -mcpu optimizes for an architecture, but builds for the whole processor family
CFLAGS="-@ARCHSWITCH@=@CARCHFLAGS@ -O2 -pipe"
CXXFLAGS="-@ARCHSWITCH@=@CARCHFLAGS@ -O2 -pipe"
CFLAGS="-@ARCHSWITCH@=@CARCHFLAGS@ -mtune=generic -O2 -pipe"
CXXFLAGS="-@ARCHSWITCH@=@CARCHFLAGS@ -mtune=generic -O2 -pipe"
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
@@ -58,18 +58,20 @@ BUILDENV=(fakeroot !distcc color !ccache)
OPTIONS=(strip !docs libtool emptydirs)
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
INTEGRITY_CHECK=(md5 sha1)
INTEGRITY_CHECK=(md5)
#-- Info and doc directories to remove (if option set correctly above)
DOC_DIRS=(usr/{,share/}{info,doc} opt/gnome/{,share/}{info,doc,gtk-doc})
DOC_DIRS=(usr/{,share/}{info,doc,gtk-doc} opt/gnome/{,share/}{info,doc,gtk-doc})
#########################################################################
# PACKAGE OUTPUT
#########################################################################
#
# Default: put built package and cached source in build directory
#
#-- Destination: specify a fixed directory where all packages will be placed
#PKGDEST=/home/packages
#-- Source cache: specify a fixed directory where source files will be cached
#SRCDEST=/var/cache/pacman/src
#SRCDEST=/home/sources
#-- Packager: name/email of the person or organization building packages
#PACKAGER="John Doe <john@doe.com>"

View File

@@ -20,7 +20,7 @@ HoldPkg = pacman glibc
# have identical names, regardless of version number
#
#[testing]
#Server = ftp://ftp.archlinux.org/testing/os/@CARCH@
#Include = /etc/pacman.d/testing
[current]
# Add your preferred servers here, they will be used first

View File

@@ -6,3 +6,4 @@ extra
mirrorlist
release
unstable
testing

View File

@@ -1,5 +1,5 @@
pkgsysconfdir = ${sysconfdir}/pacman.d
dist_pkgsysconf_DATA = community current extra release unstable
dist_pkgsysconf_DATA = community current extra release testing unstable
$(dist_pkgsysconf_DATA): mirrorlist
sed "s|@@REPO@@|$@|g" <$< >$@

View File

@@ -5,10 +5,15 @@
# United States
Server = ftp://ftp.archlinux.org/@@REPO@@/os/@CARCH@
Server = ftp://ftp.nethat.com/pub/linux/archlinux/@@REPO@@/os/@CARCH@
Server = ftp://locke.suu.edu/linux/dist/archlinux/@@REPO@@/os/@CARCH@
Server = ftp://ftp-linux.cc.gatech.edu/pub/linux/distributions/archlinux/@@REPO@@/os/@CARCH@
Server = ftp://mirror.cs.vt.edu/pub/ArchLinux/@@REPO@@/os/@CARCH@
Server = http://mirrors.easynews.com/linux/archlinux/@@REPO@@/os/@CARCH@
Server = ftp://ftp.ibiblio.org/pub/linux/distributions/archlinux/@@REPO@@/os/@CARCH@
Server = http://www2.cddc.vt.edu/linux/distributions/archlinux/@@REPO@@/os/@CARCH@
# South America
# - Brazil
Server = http://archlinux.c3sl.ufpr.br/@@REPO@@/os/@CARCH@
# Europe
# - Austria
@@ -29,6 +34,7 @@ Server = ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/archlinux/@@REPO@@/os/@C
# - Germany
Server = ftp://ftp.tu-chemnitz.de/pub/linux/sunsite.unc-mirror/distributions/archlinux/@@REPO@@/os/@CARCH@
Server = ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/@@REPO@@/os/@CARCH@
Server = ftp://ftp.archlinuxppc.org/i686/@@REPO@@/os/@CARCH@
# - Great Britain
Server = http://ftp.parrswood.manchester.sch.uk/Mirrors/ftp.archlinux.org/@@REPO@@/os/@CARCH@
# - Greece
@@ -53,19 +59,22 @@ Server = ftp://cesium.di.uminho.pt/pub/archlinux/@@REPO@@/os/@CARCH@
Server = ftp://darkstar.ist.utl.pt/pub/archlinux/@@REPO@@/os/@CARCH@
# - Romania
Server = ftp://ftp.iasi.roedu.net/mirrors/archlinux.org/@@REPO@@/os/@CARCH@
# - Russia
Server = http://archlinux.freeside.ru/@@REPO@@/os/@CARCH@
# - Sweden
Server = ftp://ftp.ds.hj.se/pub/os/linux/archlinux/@@REPO@@/os/@CARCH@
Server = ftp://ftp.gigabit.nu/@@REPO@@/os/@CARCH@
# - Switzerland
Server = ftp://archlinux.puzzle.ch/@@REPO@@/os/@CARCH@
# - Turkey
Server = ftp://ftp.linux.org.tr/pub/archlinux/@@REPO@@/os/@CARCH@
# - Ukraine
Server = ftp://ftp.linux.kiev.ua/pub/Linux/ArchLinux/@@REPO@@/os/@CARCH@
# Asia
# - Israel
Server = http://mirror.isoc.org.il/pub/archlinux/@@REPO@@/os/@CARCH@
# Australia
Server = ftp://mirror.pacific.net.au/linux/archlinux/@@REPO@@/os/@CARCH@
# Asia
# - China
Server = http://mirror.vxmatrix.net/ArchLinux/@@REPO@@/os/@CARCH@
Server = http://dxmirror.vxmatrix.net/ArchLinux/@@REPO@@/os/@CARCH@
Server = http://cncmirror.vxmatrix.net/ArchLinux/@@REPO@@/os/@CARCH@

507
install-sh Executable file
View File

@@ -0,0 +1,507 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2006-10-14.15
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
posix_glob=
posix_mkdir=
# Desired mode of installed file.
mode=0755
chmodcmd=$chmodprog
chowncmd=
chgrpcmd=
stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=
dst=
dir_arg=
dstarg=
no_target_directory=
usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
-c (ignored)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
--help display this help and exit.
--version display version info and exit.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) shift
continue;;
-d) dir_arg=true
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
shift
shift
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-s) stripcmd=$stripprog
shift
continue;;
-t) dstarg=$2
shift
shift
continue;;
-T) no_target_directory=true
shift
continue;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
done
if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dstarg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dstarg"
shift # fnord
fi
shift # arg
dstarg=$arg
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
trap '(exit $?); exit' 1 2 13 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names starting with `-'.
case $src in
-*) src=./$src ;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dstarg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dstarg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst ;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dstarg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writeable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix=/ ;;
-*) prefix=./ ;;
*) prefix= ;;
esac
case $posix_glob in
'')
if (set -f) 2>/dev/null; then
posix_glob=true
else
posix_glob=false
fi ;;
esac
oIFS=$IFS
IFS=/
$posix_glob && set -f
set fnord $dstdir
shift
$posix_glob && set +f
IFS=$oIFS
prefixes=
for d
do
test -z "$d" && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# Now rename the file to the real destination.
{ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
|| {
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
if test -f "$dst"; then
$doit $rmcmd -f "$dst" 2>/dev/null \
|| { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
&& { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
|| {
echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
else
:
fi
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
} || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View File

@@ -8,7 +8,7 @@ include_HEADERS = alpm_list.h alpm.h
localedir = $(datadir)/locale
DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
AM_CFLAGS = -pedantic -D_GNU_SOURCE $(CFLAGS)
AM_CFLAGS = -fvisibility=hidden -pedantic -D_GNU_SOURCE
EXTRA_DIST = Doxyfile

View File

@@ -31,6 +31,7 @@
#endif
#include "config.h"
#include <stdlib.h>
#include <errno.h>
#include <time.h>
@@ -38,7 +39,9 @@
#include <string.h>
#include <limits.h>
#include <libintl.h>
/* pacman */
/* libalpm */
#include "add.h"
#include "alpm_list.h"
#include "trans.h"
#include "util.h"
@@ -54,11 +57,10 @@
#include "provide.h"
#include "conflict.h"
#include "deps.h"
#include "add.h"
#include "remove.h"
#include "handle.h"
int SYMHIDDEN _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
int _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
{
pmpkg_t *info = NULL;
pmpkg_t *dummy;
@@ -127,7 +129,7 @@ int SYMHIDDEN _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
i->data = newpkg;
} else {
_alpm_log(PM_LOG_WARNING, _("newer version %s-%s is in the target list -- skipping"),
pkg->name, pkg->version, pkgver);
pkg->name, pkg->version);
}
return(0);
}
@@ -316,6 +318,7 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
pkg_count = alpm_list_count(trans->targets);
for(targ = trans->packages; targ; targ = targ->next) {
char scriptlet[PATH_MAX+1];
int targ_count = 0, is_upgrade = 0, use_md5 = 0;
double percent = 0.0;
pmpkg_t *newpkg = (pmpkg_t *)targ->data;
@@ -326,6 +329,9 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
break;
}
snprintf(scriptlet, PATH_MAX, "%s%s-%s/install", db->path,
alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
/* check if we have a valid sha1sum, if not, use MD5 */
if(strlen(newpkg->sha1sum) == 0) {
use_md5 = 1;
@@ -619,7 +625,7 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
errors++;
} else {
archive_entry_set_pathname(entry, filename);
_alpm_log(PM_LOG_WARNING, _("%s saved as %s.pacorig"), filename, newpath);
_alpm_log(PM_LOG_WARNING, _("%s saved as %s"), filename, newpath);
alpm_logaction(_("warning: %s saved as %s"), filename, newpath);
}
}
@@ -698,6 +704,8 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
_alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)"), filename, strerror(errno));
alpm_logaction(_("error: could not extract %s (%s)"), filename, strerror(errno));
errors++;
} else {
chmod(filename, archive_entry_mode(entry));
}
/* calculate an hash if this is in newpkg's backup */
@@ -815,15 +823,12 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
/* run the post-install script if it exists */
if(alpm_pkg_has_scriptlet(newpkg) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
char pm_install[PATH_MAX];
snprintf(pm_install, PATH_MAX, "%s%s%s-%s/install", handle->root, db->path,
alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
if(is_upgrade) {
_alpm_runscriptlet(handle->root, pm_install, "post_upgrade",
_alpm_runscriptlet(handle->root, scriptlet, "post_upgrade",
alpm_pkg_get_version(newpkg), oldpkg ? alpm_pkg_get_version(oldpkg) : NULL,
trans);
} else {
_alpm_runscriptlet(handle->root, pm_install, "post_install",
_alpm_runscriptlet(handle->root, scriptlet, "post_install",
alpm_pkg_get_version(newpkg), NULL, trans);
}
}
@@ -834,7 +839,7 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
}
/* run ldconfig if it exists */
if((trans->type != PM_TRANS_TYPE_UPGRADE) && (handle->trans->state != STATE_INTERRUPTED)) {
if(handle->trans->state != STATE_INTERRUPTED) {
_alpm_log(PM_LOG_DEBUG, _("running \"ldconfig -r %s\""), handle->root);
_alpm_ldconfig(handle->root);
}

View File

@@ -22,6 +22,8 @@
* USA.
*/
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
@@ -36,13 +38,15 @@
#include <limits.h> /* PATH_MAX */
#include <stdarg.h>
#include <libintl.h>
/* pacman */
/* libalpm */
#include "alpm.h"
#include "alpm_list.h"
#include "log.h"
#include "error.h"
#include "versioncmp.h"
#include "md5.h"
#include "sha1.h"
#include "alpm_list.h"
#include "package.h"
#include "group.h"
#include "util.h"
@@ -57,7 +61,6 @@
#include "handle.h"
#include "provide.h"
#include "server.h"
#include "alpm.h"
#define min(X, Y) ((X) < (Y) ? (X) : (Y))
@@ -631,7 +634,7 @@ alpm_list_t SYMEXPORT *alpm_db_search(pmdb_t *db, alpm_list_t* needles)
* @param progress progress callback function pointer
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_trans_init(pmtranstype_t type, unsigned int flags,
int SYMEXPORT alpm_trans_init(pmtranstype_t type, pmtransflag_t flags,
alpm_trans_cb_event event, alpm_trans_cb_conv conv,
alpm_trans_cb_progress progress)
{
@@ -881,6 +884,7 @@ int SYMEXPORT alpm_parse_config(char *file, alpm_cb_db_register callback, const
char *ptr = NULL;
char *key = NULL;
int linenum = 0;
char origkey[256];
char section[256] = "";
pmdb_t *db = NULL;
@@ -935,21 +939,22 @@ int SYMEXPORT alpm_parse_config(char *file, alpm_cb_db_register callback, const
RET_ERR(PM_ERR_CONF_BAD_SYNTAX, -1);
}
_alpm_strtrim(key);
strncpy(origkey, key, min(255, strlen(key)));
key = _alpm_strtoupper(key);
if(!strlen(section) && strcmp(key, "INCLUDE")) {
RET_ERR(PM_ERR_CONF_DIRECTIVE_OUTSIDE_SECTION, -1);
}
if(ptr == NULL) {
if(!strcmp(key, "NOPASSIVEFTP")) {
if(strcmp(origkey, "NoPassiveFTP") == 0 || strcmp(key, "NOPASSIVEFTP") == 0) {
alpm_option_set_nopassiveftp(1);
_alpm_log(PM_LOG_DEBUG, _("config: nopassiveftp"));
} else if(!strcmp(key, "USESYSLOG")) {
} else if(strcmp(origkey, "UseSyslog") == 0 || strcmp(key, "USESYSLOG") == 0) {
alpm_option_set_usesyslog(1);
_alpm_log(PM_LOG_DEBUG, _("config: usesyslog"));
} else if(!strcmp(key, "ILOVECANDY")) {
} else if(strcmp(origkey, "ILoveCandy") == 0 || strcmp(key, "ILOVECANDY") == 0) {
alpm_option_set_chomp(1);
_alpm_log(PM_LOG_DEBUG, _("config: chomp"));
} else if(!strcmp(key, "USECOLOR")) {
} else if(strcmp(origkey, "UseColor") == 0 || strcmp(key, "USECOLOR") == 0) {
alpm_option_set_usecolor(1);
_alpm_log(PM_LOG_DEBUG, _("config: usecolor"));
} else {
@@ -957,13 +962,13 @@ int SYMEXPORT alpm_parse_config(char *file, alpm_cb_db_register callback, const
}
} else {
_alpm_strtrim(ptr);
if(!strcmp(key, "INCLUDE")) {
if(strcmp(origkey, "Include") == 0 || strcmp(key, "INCLUDE") == 0) {
char conf[PATH_MAX];
strncpy(conf, ptr, PATH_MAX);
_alpm_log(PM_LOG_DEBUG, _("config: including %s"), conf);
alpm_parse_config(conf, callback, section);
} else if(!strcmp(section, "options")) {
if(!strcmp(key, "NOUPGRADE")) {
} else if(strcmp(section, "options") == 0) {
if(strcmp(origkey, "NoUpgrade") == 0 || strcmp(key, "NOUPGRADE") == 0) {
char *p = ptr;
char *q;
@@ -976,7 +981,7 @@ int SYMEXPORT alpm_parse_config(char *file, alpm_cb_db_register callback, const
}
alpm_option_add_noupgrade(p);
_alpm_log(PM_LOG_DEBUG, _("config: noupgrade: %s"), p);
} else if(!strcmp(key, "NOEXTRACT")) {
} else if(strcmp(origkey, "NoExtract") == 0 || strcmp(key, "NOEXTRACT") == 0) {
char *p = ptr;
char *q;
@@ -989,7 +994,7 @@ int SYMEXPORT alpm_parse_config(char *file, alpm_cb_db_register callback, const
}
alpm_option_add_noextract(p);
_alpm_log(PM_LOG_DEBUG, _("config: noextract: %s"), p);
} else if(!strcmp(key, "IGNOREPKG")) {
} else if(strcmp(origkey, "IgnorePkg") == 0 || strcmp(key, "IGNOREPKG") == 0) {
char *p = ptr;
char *q;
@@ -1002,7 +1007,7 @@ int SYMEXPORT alpm_parse_config(char *file, alpm_cb_db_register callback, const
}
alpm_option_add_ignorepkg(p);
_alpm_log(PM_LOG_DEBUG, _("config: ignorepkg: %s"), p);
} else if(!strcmp(key, "HOLDPKG")) {
} else if(strcmp(origkey, "HoldPkg") == 0 || strcmp(key, "HOLDPKG") == 0) {
char *p = ptr;
char *q;
@@ -1015,27 +1020,34 @@ int SYMEXPORT alpm_parse_config(char *file, alpm_cb_db_register callback, const
}
alpm_option_add_holdpkg(p);
_alpm_log(PM_LOG_DEBUG, _("config: holdpkg: %s"), p);
} else if(!strcmp(key, "DBPATH")) {
} else if(strcmp(origkey, "DBPath") == 0 || strcmp(key, "DBPATH") == 0) {
/* shave off the leading slash, if there is one */
if(*ptr == '/') {
ptr++;
}
alpm_option_set_dbpath(ptr);
_alpm_log(PM_LOG_DEBUG, _("config: dbpath: %s"), ptr);
} else if(!strcmp(key, "CACHEDIR")) {
} else if(strcmp(origkey, "CacheDir") == 0 || strcmp(key, "CACHEDIR") == 0) {
/* shave off the leading slash, if there is one */
if(*ptr == '/') {
ptr++;
}
alpm_option_set_cachedir(ptr);
_alpm_log(PM_LOG_DEBUG, _("config: cachedir: %s"), ptr);
} else if (!strcmp(key, "LOGFILE")) {
} else if(strcmp(origkey, "RootDir") == 0 || strcmp(key, "ROOTDIR") == 0) {
/* shave off the leading slash, if there is one */
if(*ptr == '/') {
ptr++;
}
alpm_option_set_root(ptr);
_alpm_log(PM_LOG_DEBUG, _("config: rootdir: %s"), ptr);
} else if (strcmp(origkey, "LogFile") == 0 || strcmp(key, "LOGFILE") == 0) {
alpm_option_set_logfile(ptr);
_alpm_log(PM_LOG_DEBUG, _("config: logfile: %s"), ptr);
} else if (!strcmp(key, "XFERCOMMAND")) {
} else if (strcmp(origkey, "XferCommand") == 0 || strcmp(key, "XFERCOMMAND") == 0) {
alpm_option_set_xfercommand(ptr);
_alpm_log(PM_LOG_DEBUG, _("config: xfercommand: %s"), ptr);
} else if (!strcmp(key, "UPGRADEDELAY")) {
} else if (strcmp(origkey, "UpgradeDelay") == 0 || strcmp(key, "UPGRADEDELAY") == 0) {
/* The config value is in days, we use seconds */
time_t ud = atol(ptr) * 60 * 60 *24;
alpm_option_set_upgradedelay(ud);
@@ -1044,7 +1056,7 @@ int SYMEXPORT alpm_parse_config(char *file, alpm_cb_db_register callback, const
RET_ERR(PM_ERR_CONF_BAD_SYNTAX, -1);
}
} else {
if(!strcmp(key, "SERVER")) {
if(strcmp(origkey, "Server") == 0 || strcmp(key, "SERVER") == 0) {
/* add to the list */
if(alpm_db_setserver(db, ptr) != 0) {
/* pm_errno is set by alpm_db_setserver */
@@ -1068,7 +1080,7 @@ int SYMEXPORT alpm_parse_config(char *file, alpm_cb_db_register callback, const
/* This function is mostly the same as sync.c find_replacements and sysupgrade
* functions, and we should be able to combine them - this is an interim
* solution made for -Qu operation */
alpm_list_t *alpm_get_upgrades()
alpm_list_t SYMEXPORT *alpm_get_upgrades()
{
alpm_list_t *syncpkgs = NULL;
alpm_list_t *i, *j, *k, *m;

View File

@@ -349,7 +349,7 @@ pmtranstype_t alpm_trans_get_type();
unsigned int alpm_trans_get_flags();
alpm_list_t * alpm_trans_get_targets();
alpm_list_t * alpm_trans_get_pkgs();
int alpm_trans_init(pmtranstype_t type, unsigned int flags,
int alpm_trans_init(pmtranstype_t type, pmtransflag_t flags,
alpm_trans_cb_event cb_event, alpm_trans_cb_conv conv,
alpm_trans_cb_progress cb_progress);
int alpm_trans_sysupgrade(void);
@@ -371,10 +371,12 @@ typedef enum _pmdepmod_t {
typedef enum _pmdeptype_t {
PM_DEP_TYPE_DEPEND = 1,
PM_DEP_TYPE_REQUIRED,
PM_DEP_TYPE_CONFLICT
} pmdeptype_t;
pmdepend_t *alpm_splitdep(const char *depstring);
int alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep);
const char *alpm_dep_get_target(pmdepmissing_t *miss);
pmdeptype_t alpm_dep_get_type(pmdepmissing_t *miss);
pmdepmod_t alpm_dep_get_mod(pmdepmissing_t *miss);

View File

@@ -20,11 +20,12 @@
*/
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <assert.h>
/* libalpm */
#include "alpm_list.h"
#include "util.h"
@@ -426,7 +427,7 @@ int SYMEXPORT alpm_list_count(const alpm_list_t *list)
* @param haystack the list to search
* @return 1 if `needle` is found, 0 otherwise
*/
int alpm_list_find(alpm_list_t *haystack, const void *needle)
int SYMEXPORT alpm_list_find(alpm_list_t *haystack, const void *needle)
{
alpm_list_t *lp = haystack;
while(lp) {
@@ -445,7 +446,7 @@ int alpm_list_find(alpm_list_t *haystack, const void *needle)
* @param haystack the list to search
* @return 1 if `needle` is found, 0 otherwise
*/
int alpm_list_find_str(alpm_list_t *haystack, const char *needle)
int SYMEXPORT alpm_list_find_str(alpm_list_t *haystack, const char *needle)
{
alpm_list_t *lp = haystack;
while(lp) {

View File

@@ -23,11 +23,14 @@
*/
#include "config.h"
#include <stdlib.h>
#include <string.h>
/* pacman */
#include "log.h"
/* libalpm */
#include "backup.h"
#include "alpm_list.h"
#include "log.h"
#include "util.h"
/* Look for a filename in a pmpkg_t.backup list. If we find it,

View File

@@ -21,6 +21,7 @@
*/
#include "config.h"
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
@@ -36,10 +37,12 @@
#ifdef CYGWIN
#include <limits.h> /* PATH_MAX */
#endif
/* pacman */
/* libalpm */
#include "db.h"
#include "alpm_list.h"
#include "log.h"
#include "util.h"
#include "db.h"
#include "alpm.h"
#include "error.h"
#include "handle.h"
@@ -180,7 +183,7 @@ pmpkg_t *_alpm_db_scan(pmdb_t *db, const char *target)
return(NULL);
}
if(_alpm_pkg_splitname(ent->d_name, pkg->name, pkg->version, 0) == -1) {
_alpm_log(PM_LOG_ERROR, _("invalid name for dabatase entry '%s'"), ent->d_name);
_alpm_log(PM_LOG_ERROR, _("invalid name for database entry '%s'"), ent->d_name);
return(NULL);
}
@@ -224,7 +227,12 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
return(-1);
}
if(info->infolevel & inforeq) {
/* bitmask logic here:
* infolevel: 00001111
* inforeq: 00010100
* & result: 00000100
* == to inforeq? nope, we need to load more info. */
if((info->infolevel & inforeq) == inforeq) {
/* already loaded this info, do nothing */
return(0);
}
@@ -560,8 +568,9 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
"%s\n\n", info->packager);
}
if(info->size) {
/* only write installed size, csize is irrelevant once installed */
fprintf(fp, "%%SIZE%%\n"
"%lu\n\n", info->size);
"%lu\n\n", info->isize);
}
if(info->reason) {
fprintf(fp, "%%REASON%%\n"

View File

@@ -20,6 +20,7 @@
*/
#include "config.h"
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
@@ -27,16 +28,17 @@
#include <string.h>
#include <sys/stat.h>
#include <libintl.h>
/* pacman */
/* libalpm */
#include "cache.h"
#include "alpm_list.h"
#include "log.h"
#include "alpm.h"
#include "alpm_list.h"
#include "util.h"
#include "error.h"
#include "package.h"
#include "group.h"
#include "db.h"
#include "cache.h"
/* Returns a new package cache from db.
* It frees the cache if it already exists.
@@ -211,8 +213,8 @@ int _alpm_db_load_grpcache(pmdb_t *db)
grp->packages = alpm_list_add_sorted(grp->packages,
/* gross signature forces us to
* discard const */
(void *)alpm_pkg_get_name(pkg),
_alpm_grp_cmp);
(void*)alpm_pkg_get_name(pkg),
_alpm_str_cmp);
db->grpcache = alpm_list_add_sorted(db->grpcache, grp, _alpm_grp_cmp);
} else {
alpm_list_t *j;
@@ -223,7 +225,9 @@ int _alpm_db_load_grpcache(pmdb_t *db)
if(strcmp(grp->name, i->data) == 0) {
const char *pkgname = alpm_pkg_get_name(pkg);
if(!alpm_list_find_str(grp->packages, pkgname)) {
grp->packages = alpm_list_add_sorted(grp->packages, (void *)pkgname, _alpm_grp_cmp);
grp->packages = alpm_list_add_sorted(grp->packages,
(void*)pkgname,
_alpm_str_cmp);
}
}
}

View File

@@ -23,28 +23,29 @@
* USA.
*/
#if defined(__APPLE__) || defined(__OpenBSD__)
#include <sys/syslimits.h>
#endif
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <limits.h>
#if defined(__APPLE__) || defined(__OpenBSD__)
#include <sys/syslimits.h>
#endif
#include <sys/stat.h>
#include <libintl.h>
/* pacman */
#include "handle.h"
/* libalpm */
#include "conflict.h"
#include "alpm_list.h"
#include "handle.h"
#include "trans.h"
#include "util.h"
#include "error.h"
#include "log.h"
#include "cache.h"
#include "deps.h"
#include "conflict.h"
/** See if potential conflict 'name' matches package 'pkg'.
@@ -365,14 +366,14 @@ static alpm_list_t *add_fileconflict(alpm_list_t *conflicts,
return(conflicts);
}
/* Find file conflicts that may occur during the transaction with two checks:
* 1: check every target against every target
* 2: check every target against the filesystem */
alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root)
{
alpm_list_t *i, *j, *k;
alpm_list_t *conflicts = NULL;
alpm_list_t *tmpfiles = NULL;
alpm_list_t *i, *conflicts = NULL;
alpm_list_t *targets = trans->packages;
int numtargs = alpm_list_count(targets);
double percent;
ALPM_LOG_FUNC;
@@ -381,17 +382,16 @@ alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root)
}
for(i = targets; i; i = i->next) {
alpm_list_t *j, *k, *tmpfiles = NULL;
pmpkg_t *p1, *p2, *dbpkg;
char *filestr = NULL;
char path[PATH_MAX+1];
struct stat buf;
p1 = i->data;
if(!p1) {
continue;
}
percent = (double)(alpm_list_count(targets) - alpm_list_count(i) + 1)
double percent = (double)(alpm_list_count(targets) - alpm_list_count(i) + 1)
/ alpm_list_count(targets);
PROGRESS(trans, PM_TRANS_PROGRESS_CONFLICTS_START, "", (percent * 100),
numtargs, (numtargs - alpm_list_count(i) +1));
@@ -406,7 +406,6 @@ alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root)
tmpfiles = chk_fileconflicts(alpm_pkg_get_files(p1), alpm_pkg_get_files(p2));
if(tmpfiles) {
char path[PATH_MAX];
for(k = tmpfiles; k; k = k->next) {
snprintf(path, PATH_MAX, "%s%s", root, (char *)k->data);
conflicts = add_fileconflict(conflicts, PM_CONFLICT_TYPE_TARGET, path,
@@ -417,6 +416,10 @@ alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root)
}
}
/* declarations for second check */
struct stat buf;
char *filestr = NULL;
/* CHECK 2: check every target against the filesystem */
_alpm_log(PM_LOG_DEBUG, "searching for filesystem conflicts: %s", p1->name);
dbpkg = _alpm_db_get_pkgfromcache(db, p1->name);
@@ -442,6 +445,26 @@ alpm_list_t *_alpm_db_find_conflicts(pmdb_t *db, pmtrans_t *trans, char *root)
if(lstat(path, &buf) == 0 && !S_ISDIR(buf.st_mode)) {
_alpm_log(PM_LOG_DEBUG, "checking possible conflict: %s", path);
/* Make sure the possible conflict is not a symlink that points to a
* path in the old package. This is kind of dirty with inode usage */
if(dbpkg) {
struct stat buf2;
char str[PATH_MAX+1];
unsigned ok = 0;
for(k = dbpkg->files; k; k = k->next) {
snprintf(str, PATH_MAX, "%s%s", root, (char*)k->data);
lstat(str, &buf2);
if(buf.st_ino == buf2.st_ino) {
ok = 1;
_alpm_log(PM_LOG_DEBUG, "conflict was a symlink: %s", path);
break;
}
}
if(ok == 1) {
continue;
}
}
/* Look at all the targets to see if file has changed hands */
int resolved_conflict = 0; /* have we acted on this conflict? */
for(k = targets; k; k = k->next) {

View File

@@ -21,8 +21,9 @@
#ifndef _ALPM_CONFLICT_H
#define _ALPM_CONFLICT_H
#include "db.h"
#include "alpm.h"
#include "db.h"
#include "package.h"
#define CONFLICT_FILE_LEN 512

View File

@@ -23,30 +23,32 @@
* USA.
*/
#if defined(__APPLE__) || defined(__OpenBSD__)
#include <sys/syslimits.h>
#include <sys/stat.h>
#endif
#include "config.h"
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/stat.h>
#if defined(__APPLE__) || defined(__OpenBSD__)
#include <sys/syslimits.h>
#include <sys/stat.h>
#endif
#include <dirent.h>
#include <libintl.h>
#include <regex.h>
#ifdef CYGWIN
#include <limits.h> /* PATH_MAX */
#endif
/* pacman */
/* libalpm */
#include "db.h"
#include "alpm_list.h"
#include "log.h"
#include "util.h"
#include "error.h"
#include "server.h"
#include "db.h"
#include "handle.h"
#include "cache.h"
#include "alpm.h"
@@ -181,7 +183,7 @@ pmdb_t *_alpm_db_register(const char *treename, alpm_cb_db_register callback)
/* make sure the database directory exists */
snprintf(path, PATH_MAX, "%s%s/%s", handle->root, handle->dbpath, treename);
if(stat(path, &buf) != 0 || !S_ISDIR(buf.st_mode)) {
_alpm_log(PM_LOG_ERROR, _("database directory '%s' does not exist, try creating it"), path);
_alpm_log(PM_LOG_DEBUG, _("database directory '%s' does not exist, creating it"), path);
if(_alpm_makepath(path) != 0) {
RET_ERR(PM_ERR_SYSTEM, NULL);
}

View File

@@ -33,7 +33,8 @@ typedef enum _pmdbinfrq_t {
INFRQ_DEPENDS = 0x04,
INFRQ_FILES = 0x08,
INFRQ_SCRIPTLET = 0x10,
INFRQ_ALL = 0xFF
/* ALL should be sum of all above */
INFRQ_ALL = 0x1F
} pmdbinfrq_t;
/* Database */

View File

@@ -21,6 +21,8 @@
* USA.
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -29,16 +31,17 @@
#endif
#include <libintl.h>
#include <math.h>
/* pacman */
/* libalpm */
#include "deps.h"
#include "alpm_list.h"
#include "util.h"
#include "log.h"
#include "error.h"
#include "alpm_list.h"
#include "package.h"
#include "db.h"
#include "cache.h"
#include "provide.h"
#include "deps.h"
#include "versioncmp.h"
#include "handle.h"
@@ -139,7 +142,7 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode)
pmpkg_t *p = i->data;
_alpm_log(PM_LOG_DEBUG, " sorting %s", alpm_pkg_get_name(p));
for(j = alpm_pkg_get_depends(p); j; j = j->next) {
pmdepend_t *depend = _alpm_splitdep(j->data);
pmdepend_t *depend = alpm_splitdep(j->data);
pmpkg_t *q = NULL;
if(depend == NULL) {
continue;
@@ -160,7 +163,7 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode)
for(l = alpm_pkg_get_provides(q); l; l = l->next) {
const char *provname = l->data;
if(!strcmp(depend->name, provname)) {
if(!_alpm_pkg_find(provname, tmptargs)) {
if(!_alpm_pkg_find(qname, tmptargs)) {
change = 1;
tmptargs = alpm_list_add(tmptargs, q);
}
@@ -241,20 +244,20 @@ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
}
for(k = alpm_pkg_get_depends(p); k; k = k->next) {
/* don't break any existing dependencies (possible provides) */
pmdepend_t *depend = _alpm_splitdep(k->data);
pmdepend_t *depend = alpm_splitdep(k->data);
if(depend == NULL) {
continue;
}
/* if oldpkg satisfied this dep, and newpkg doesn't */
if(_alpm_depcmp(oldpkg, depend) && !_alpm_depcmp(newpkg, depend)) {
if(alpm_depcmp(oldpkg, depend) && !alpm_depcmp(newpkg, depend)) {
/* we've found a dep that was removed... see if any other package
* still contains/provides the dep */
int satisfied = 0;
for(l = packages; l; l = l->next) {
pmpkg_t *pkg = l->data;
if(_alpm_depcmp(pkg, depend)) {
if(alpm_depcmp(pkg, depend)) {
_alpm_log(PM_LOG_DEBUG, _("checkdeps: dependency '%s' has moved from '%s' to '%s'"),
depend->name, alpm_pkg_get_name(oldpkg), alpm_pkg_get_name(pkg));
satisfied = 1;
@@ -273,7 +276,7 @@ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
continue;
}
if(_alpm_depcmp(pkg, depend)) {
if(alpm_depcmp(pkg, depend)) {
_alpm_log(PM_LOG_DEBUG, _("checkdeps: dependency '%s' satisfied by installed package '%s'"),
depend->name, alpm_pkg_get_name(pkg));
satisfied = 1;
@@ -285,7 +288,7 @@ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
if(!satisfied) {
_alpm_log(PM_LOG_DEBUG, _("checkdeps: updated '%s' won't satisfy a dependency of '%s'"),
alpm_pkg_get_name(oldpkg), alpm_pkg_get_name(p));
miss = _alpm_depmiss_new(p->name, PM_DEP_TYPE_REQUIRED, depend->mod,
miss = _alpm_depmiss_new(p->name, PM_DEP_TYPE_DEPEND, depend->mod,
depend->name, depend->version);
if(!_alpm_depmiss_isin(miss, baddeps)) {
baddeps = alpm_list_add(baddeps, miss);
@@ -310,7 +313,7 @@ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
for(j = alpm_pkg_get_depends(tp); j; j = j->next) {
/* split into name/version pairs */
pmdepend_t *depend = _alpm_splitdep((char*)j->data);
pmdepend_t *depend = alpm_splitdep((char*)j->data);
if(depend == NULL) {
continue;
}
@@ -319,7 +322,7 @@ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
/* check database for literal packages */
for(k = _alpm_db_get_pkgcache(db); k && !found; k = k->next) {
pmpkg_t *p = (pmpkg_t *)k->data;
found = _alpm_depcmp(p, depend);
found = alpm_depcmp(p, depend);
}
/* check database for provides matches */
if(!found) {
@@ -342,14 +345,14 @@ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
continue;
}
found = _alpm_depcmp(p, depend);
found = alpm_depcmp(p, depend);
}
FREELISTPTR(k);
}
/* check other targets */
for(k = packages; k && !found; k = k->next) {
pmpkg_t *p = k->data;
found = _alpm_depcmp(p, depend);
found = alpm_depcmp(p, depend);
}
/* else if still not found... */
if(!found) {
@@ -405,7 +408,7 @@ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
if(!found) {
_alpm_log(PM_LOG_DEBUG, _("checkdeps: found %s as required by %s"),
reqname, alpm_pkg_get_name(tp));
miss = _alpm_depmiss_new(alpm_pkg_get_name(tp), PM_DEP_TYPE_REQUIRED,
miss = _alpm_depmiss_new(alpm_pkg_get_name(tp), PM_DEP_TYPE_DEPEND,
PM_DEP_MOD_ANY, j->data, NULL);
if(!_alpm_depmiss_isin(miss, baddeps)) {
baddeps = alpm_list_add(baddeps, miss);
@@ -421,7 +424,7 @@ alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
return(baddeps);
}
pmdepend_t *_alpm_splitdep(const char *depstring)
pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring)
{
pmdepend_t *depend;
char *ptr = NULL;
@@ -514,7 +517,7 @@ alpm_list_t *_alpm_removedeps(pmdb_t *db, alpm_list_t *targs)
for(i = targs; i; i = i->next) {
pmpkg_t *pkg = i->data;
for(j = alpm_pkg_get_depends(pkg); j; j = j->next) {
pmdepend_t *depend = _alpm_splitdep(j->data);
pmdepend_t *depend = alpm_splitdep(j->data);
pmpkg_t *deppkg;
if(depend == NULL) {
continue;
@@ -532,7 +535,7 @@ alpm_list_t *_alpm_removedeps(pmdb_t *db, alpm_list_t *targs)
for(k = provides; k; k = k->next) {
pmpkg_t *provpkg = k->data;
if(can_remove_package(db, provpkg, newtargs)) {
pmpkg_t *pkg = _alpm_pkg_new(alpm_pkg_get_name(provpkg), alpm_pkg_get_version(provpkg));
pmpkg_t *pkg = _alpm_pkg_dup(provpkg);
_alpm_log(PM_LOG_DEBUG, _("adding '%s' to the targets"), alpm_pkg_get_name(pkg));
@@ -543,7 +546,7 @@ alpm_list_t *_alpm_removedeps(pmdb_t *db, alpm_list_t *targs)
}
FREELISTPTR(provides);
} else if(can_remove_package(db, deppkg, newtargs)) {
pmpkg_t *pkg = _alpm_pkg_new(deppkg->name, deppkg->version);
pmpkg_t *pkg = _alpm_pkg_dup(deppkg);
_alpm_log(PM_LOG_DEBUG, _("adding '%s' to the targets"), alpm_pkg_get_name(pkg));

View File

@@ -49,7 +49,6 @@ int _alpm_depmiss_isin(pmdepmissing_t *needle, alpm_list_t *haystack);
alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode);
alpm_list_t *_alpm_checkdeps(pmtrans_t *trans, pmdb_t *db, pmtranstype_t op,
alpm_list_t *packages);
pmdepend_t *_alpm_splitdep(const char *depstring);
alpm_list_t *_alpm_removedeps(pmdb_t *db, alpm_list_t *targs);
int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *syncpkg,
alpm_list_t *list, alpm_list_t *trail, pmtrans_t *trans,

View File

@@ -22,10 +22,16 @@
* USA.
*/
#include "config.h"
#include <libintl.h>
/* libalpm */
#include "error.h"
#include "util.h"
#include "alpm.h"
/* TODO does this really need a file all on its own? */
char SYMEXPORT *alpm_strerror(int err)
{
switch(err) {

View File

@@ -20,16 +20,18 @@
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <libintl.h>
/* pacman */
/* libalpm */
#include "group.h"
#include "alpm_list.h"
#include "util.h"
#include "error.h"
#include "log.h"
#include "group.h"
#include "alpm_list.h"
#include "alpm.h"
pmgrp_t *_alpm_grp_new()

View File

@@ -22,6 +22,7 @@
*/
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -30,15 +31,16 @@
#include <syslog.h>
#include <libintl.h>
#include <time.h>
/* pacman */
/* libalpm */
#include "handle.h"
#include "alpm_list.h"
#include "util.h"
#include "log.h"
#include "alpm_list.h"
#include "error.h"
#include "trans.h"
#include "alpm.h"
#include "server.h"
#include "handle.h"
pmhandle_t *_alpm_handle_new()
{
@@ -121,7 +123,7 @@ int _alpm_handle_free(pmhandle_t *handle)
alpm_cb_log alpm_option_get_logcb() { return (handle ? handle->logcb : NULL); }
alpm_cb_download alpm_option_get_dlcb() { return (handle ? handle->dlcb : NULL); }
unsigned short alpm_option_get_logmask() { return handle->logmask; }
unsigned short SYMEXPORT alpm_option_get_logmask() { return handle->logmask; }
const char SYMEXPORT *alpm_option_get_root() { return handle->root; }
const char SYMEXPORT *alpm_option_get_dbpath() { return handle->dbpath; }
const char SYMEXPORT *alpm_option_get_cachedir() { return handle->cachedir; }
@@ -137,7 +139,7 @@ unsigned short alpm_option_get_nopassiveftp() { return handle->nopassiveftp; }
unsigned short SYMEXPORT alpm_option_get_chomp() { return handle->chomp; }
unsigned short alpm_option_get_usecolor() { return handle->use_color; }
pmdb_t *alpm_option_get_localdb() { return handle->db_local; }
pmdb_t SYMEXPORT *alpm_option_get_localdb() { return handle->db_local; }
alpm_list_t SYMEXPORT *alpm_option_get_syncdbs()
{
return handle->dbs_sync;
@@ -149,7 +151,7 @@ void SYMEXPORT alpm_option_set_dlcb(alpm_cb_download cb) { handle->dlcb = cb; }
void SYMEXPORT alpm_option_set_logmask(unsigned short mask) { handle->logmask = mask; }
void alpm_option_set_root(const char *root)
void SYMEXPORT alpm_option_set_root(const char *root)
{
if(handle->root) FREE(handle->root);
/* According to the man page, realpath is safe to use IFF the second arg is
@@ -194,7 +196,7 @@ void SYMEXPORT alpm_option_set_dbpath(const char *dbpath)
}
}
void alpm_option_set_cachedir(const char *cachedir)
void SYMEXPORT alpm_option_set_cachedir(const char *cachedir)
{
if(handle->cachedir) FREE(handle->cachedir);
if(cachedir) {

View File

@@ -21,9 +21,11 @@
#ifndef _ALPM_HANDLE_H
#define _ALPM_HANDLE_H
#include <stdio.h>
#include "alpm_list.h"
#include "db.h"
#include "log.h"
#include "alpm_list.h"
#include "alpm.h"
#include "trans.h"

View File

@@ -20,12 +20,14 @@
*/
#include "config.h"
#include <stdio.h>
#include <stdarg.h>
#include <time.h>
/* pacman */
#include "alpm.h"
/* libalpm */
#include "log.h"
#include "alpm.h"
void _alpm_log(pmloglevel_t flag, char *fmt, ...)
{

View File

@@ -24,6 +24,7 @@ documentation and/or software.
*/
#include <string.h>
#include "md5.h"
/* Constants for MD5Transform routine.

View File

@@ -20,8 +20,9 @@ software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.
These notices must be retained in any copies of any part of this
documentation and/or software.
*/
documentation and/or software. */
#ifndef _ALPM_MD5_H
#define _ALPM_MD5_H
/* POINTER defines a generic pointer type */
typedef unsigned char *POINTER;
@@ -47,4 +48,6 @@ void _alpm_MD5Final(unsigned char [16], MD5_CTX *);
char* _alpm_MDFile(char *);
void _alpm_MDPrint(unsigned char [16]);
#endif /* _ALPM_MD5_H */
/* vim: set ts=2 sw=2 noet: */

View File

@@ -19,10 +19,14 @@ documentation and/or software.
*/
#define MD MD5
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <libintl.h>
/* libalpm */
#include "alpm.h"
#include "log.h"
#include "util.h"
@@ -43,6 +47,7 @@ char* _alpm_MDFile(char *filename)
FILE *file;
MD_CTX context;
int len;
char hex[3];
unsigned char buffer[1024], digest[16];
ALPM_LOG_FUNC;
@@ -62,10 +67,11 @@ char* _alpm_MDFile(char *filename)
ret = calloc(33, sizeof(char));
for(i = 0; i < 16; i++) {
sprintf(ret+(i*2), "%02x", digest[i]);
snprintf(hex, 3, "%02x", digest[i]);
strncat(ret, hex, 2);
}
_alpm_log(PM_LOG_DEBUG, _("sha1(%s) = %s"), filename, ret);
_alpm_log(PM_LOG_DEBUG, _("md5(%s) = %s"), filename, ret);
return(ret);
}
return(NULL);

View File

@@ -23,6 +23,7 @@
*/
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
@@ -33,12 +34,13 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
/* pacman */
/* libalpm */
#include "package.h"
#include "alpm_list.h"
#include "log.h"
#include "util.h"
#include "error.h"
#include "alpm_list.h"
#include "db.h"
#include "cache.h"
#include "provide.h"
@@ -140,6 +142,14 @@ int alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg)
_alpm_db_read(pkg->data, pkg, INFRQ_DESC);
}
if(alpm_list_find_str(handle->ignorepkg, alpm_pkg_get_name(pkg))) {
/* package should be ignored (IgnorePkg) */
_alpm_log(PM_LOG_WARNING, _("%s-%s: ignoring package upgrade (%s)"),
alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg),
alpm_pkg_get_version(pkg));
return(0);
}
/* compare versions and see if we need to upgrade */
cmp = _alpm_versioncmp(alpm_pkg_get_version(pkg), alpm_pkg_get_version(local_pkg));
@@ -156,13 +166,7 @@ int alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg)
cmp = 0;
} else if(cmp > 0) {
/* we have an upgrade, make sure we should actually do it */
if(alpm_list_find_str(handle->ignorepkg, alpm_pkg_get_name(pkg))) {
/* package should be ignored (IgnorePkg) */
_alpm_log(PM_LOG_WARNING, _("%s-%s: ignoring package upgrade (%s)"),
alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg),
alpm_pkg_get_version(pkg));
cmp = 0;
} else if(_alpm_pkg_istoonew(pkg)) {
if(_alpm_pkg_istoonew(pkg)) {
/* package too new (UpgradeDelay) */
_alpm_log(PM_LOG_WARNING, _("%s-%s: delaying upgrade of package (%s)"),
alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg),
@@ -538,6 +542,7 @@ int _alpm_pkg_splitname(const char *target, char *name, char *version, int witha
void _alpm_pkg_update_requiredby(pmpkg_t *pkg)
{
alpm_list_t *i, *j, *k;
const char *pkgname = alpm_pkg_get_name(pkg);
pmdb_t *localdb = alpm_option_get_localdb();
for(i = _alpm_db_get_pkgcache(localdb); i; i = i->next) {
@@ -545,34 +550,42 @@ void _alpm_pkg_update_requiredby(pmpkg_t *pkg)
continue;
}
pmpkg_t *cachepkg = i->data;
const char *cachepkgname = alpm_pkg_get_name(cachepkg);
for(j = alpm_pkg_get_depends(cachepkg); j; j = j->next) {
pmdepend_t *dep;
if(!j->data) {
continue;
}
dep = _alpm_splitdep(j->data);
dep = alpm_splitdep(j->data);
if(dep == NULL) {
continue;
}
/* check the actual package itself */
if(strcmp(dep->name, alpm_pkg_get_name(pkg)) == 0) {
_alpm_log(PM_LOG_DEBUG, _("adding '%s' in requiredby field for '%s'"),
cachepkg->name, pkg->name);
if(strcmp(dep->name, pkgname) == 0) {
alpm_list_t *reqs = alpm_pkg_get_requiredby(pkg);
reqs = alpm_list_add(reqs, strdup(alpm_pkg_get_name(cachepkg)));
pkg->requiredby = reqs;
if(!alpm_list_find_str(reqs, cachepkgname)) {
_alpm_log(PM_LOG_DEBUG, _("adding '%s' in requiredby field for '%s'"),
cachepkgname, pkg->name);
reqs = alpm_list_add(reqs, strdup(cachepkgname));
pkg->requiredby = reqs;
}
}
/* check for provisions as well */
for(k = alpm_pkg_get_provides(pkg); k; k = k->next) {
const char *provname = k->data;
if(strcmp(dep->name, provname) == 0) {
_alpm_log(PM_LOG_DEBUG, _("adding '%s' in requiredby field for '%s' (provides: %s)"),
alpm_pkg_get_name(cachepkg), alpm_pkg_get_name(pkg), provname);
alpm_list_t *reqs = alpm_pkg_get_requiredby(pkg);
reqs = alpm_list_add(reqs, strdup(alpm_pkg_get_name(cachepkg)));
pkg->requiredby = reqs;
if(!alpm_list_find_str(reqs, cachepkgname)) {
_alpm_log(PM_LOG_DEBUG, _("adding '%s' in requiredby field for '%s' (provides: %s)"),
cachepkgname, pkgname, provname);
reqs = alpm_list_add(reqs, strdup(cachepkgname));
pkg->requiredby = reqs;
}
}
}
free(dep);

View File

@@ -1,6 +1,10 @@
# Set of available languages.
de
en_GB
es
fr
hu
it
pl_PL
pt_BR
ru_RU

File diff suppressed because it is too large Load Diff

1506
lib/libalpm/po/en_GB.po Normal file

File diff suppressed because it is too large Load Diff

1532
lib/libalpm/po/es.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1524
lib/libalpm/po/pl_PL.po Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1509
lib/libalpm/po/ru_RU.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -20,14 +20,16 @@
*/
#include "config.h"
#include <stdlib.h>
#include <string.h>
/* pacman */
#include "cache.h"
/* libalpm */
#include "provide.h"
#include "alpm_list.h"
#include "cache.h"
#include "db.h"
#include "log.h"
#include "provide.h"
/* return a alpm_list_t of packages in "db" that provide "package"
*/

View File

@@ -23,24 +23,26 @@
* USA.
*/
#if defined(__APPLE__) || defined(__OpenBSD__)
#include <sys/syslimits.h>
#endif
#if defined(__APPLE__) || defined(__OpenBSD__) || defined(__sun__)
#include <sys/stat.h>
#endif
#include "config.h"
#include <stdlib.h>
#include <errno.h>
#include <time.h>
#include <fcntl.h>
#include <string.h>
#include <limits.h>
#if defined(__APPLE__) || defined(__OpenBSD__)
#include <sys/syslimits.h>
#endif
#if defined(__APPLE__) || defined(__OpenBSD__) || defined(__sun__)
#include <sys/stat.h>
#endif
#include <unistd.h>
#include <errno.h>
#include <libintl.h>
/* pacman */
/* libalpm */
#include "remove.h"
#include "alpm_list.h"
#include "trans.h"
#include "util.h"
@@ -55,7 +57,6 @@
#include "cache.h"
#include "deps.h"
#include "provide.h"
#include "remove.h"
#include "handle.h"
#include "alpm.h"
@@ -168,9 +169,9 @@ static int can_remove_file(pmtrans_t *trans, const char *path)
/* If we fail write permissions due to a read-only filesystem, abort.
* Assume all other possible failures are covered somewhere else */
if(access(file, W_OK) == -1) {
if(access(file, F_OK) == 0) {
/* only return failure if the file ACTUALLY exists and we don't have
* permissions */
if(errno != EACCES && access(file, F_OK) == 0) {
/* only return failure if the file ACTUALLY exists and we can't write to
* it - ignore "chmod -w" simple permission failures */
_alpm_log(PM_LOG_ERROR, _("cannot remove file '%s': %s"),
file, strerror(errno));
return(0);
@@ -274,7 +275,7 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
for(targ = trans->packages; targ; targ = targ->next) {
int position = 0;
char pm_install[PATH_MAX];
char scriptlet[PATH_MAX];
alpm_list_t *files;
info = (pmpkg_t*)targ->data;
const char *pkgname = NULL;
@@ -285,6 +286,8 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
/* get the name now so we can use it after package is removed */
pkgname = alpm_pkg_get_name(info);
snprintf(scriptlet, PATH_MAX, "%s%s-%s/install", db->path,
pkgname, alpm_pkg_get_version(info));
if(trans->type != PM_TRANS_TYPE_UPGRADE) {
EVENT(trans, PM_TRANS_EVT_REMOVE_START, info, NULL);
@@ -293,9 +296,7 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
/* run the pre-remove scriptlet if it exists */
if(alpm_pkg_has_scriptlet(info) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
snprintf(pm_install, PATH_MAX, "%s/%s-%s/install", db->path,
pkgname, alpm_pkg_get_version(info));
_alpm_runscriptlet(handle->root, pm_install, "pre_remove",
_alpm_runscriptlet(handle->root, scriptlet, "pre_remove",
alpm_pkg_get_version(info), NULL, trans);
}
}
@@ -323,9 +324,7 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
if(trans->type != PM_TRANS_TYPE_UPGRADE) {
/* run the post-remove script if it exists */
if(alpm_pkg_has_scriptlet(info) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
snprintf(pm_install, PATH_MAX, "%s/%s-%s/install", db->path,
pkgname, alpm_pkg_get_version(info));
_alpm_runscriptlet(handle->root, pm_install, "post_remove",
_alpm_runscriptlet(handle->root, scriptlet, "post_remove",
alpm_pkg_get_version(info), NULL, trans);
}
}

View File

@@ -19,6 +19,8 @@
* USA.
*/
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
@@ -27,10 +29,12 @@
#include <sys/stat.h>
#include <unistd.h>
#include <time.h>
#include <errno.h>
#include <download.h>
/* pacman */
/* libalpm */
#include "server.h"
#include "alpm_list.h"
#include "error.h"
#include "log.h"
#include "alpm.h"
@@ -68,6 +72,10 @@ pmserver_t *_alpm_server_new(const char *url)
strcpy(u->pwd, "libalpm@guest");
}
/* remove trailing slashes, just to clean up the rest of the code */
for(int i = strlen(u->doc) - 1; u->doc[i] == '/'; --i)
u->doc[i] = '\0';
server->s_url = u;
return server;
@@ -122,6 +130,7 @@ static struct url *url_for_file(pmserver_t *server, const char *filename)
}
snprintf(doc, doclen, "%s/%s", server->s_url->doc, filename);
_alpm_log(PM_LOG_DEBUG, "file path: '%s'", doc);
ret = downloadMakeURL(server->s_url->scheme,
server->s_url->host,
server->s_url->port,
@@ -200,14 +209,14 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
}
_alpm_log(PM_LOG_DEBUG, _("using '%s' for download progress"), pkgname);
snprintf(realfile, PATH_MAX, "%s/%s", localpath, fn);
snprintf(output, PATH_MAX, "%s/%s.part", localpath, fn);
snprintf(realfile, PATH_MAX, "%s%s", localpath, fn);
snprintf(output, PATH_MAX, "%s%s.part", localpath, fn);
if(alpm_list_find_str(complete, fn)) {
continue;
}
if(!handle->xfercommand) {
if(!handle->xfercommand || !strcmp(fileurl->scheme, "file")) {
FILE *dlf, *localf = NULL;
struct url_stat ust;
struct stat st;
@@ -287,6 +296,9 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
localf = fopen(output, "w");
if(localf == NULL) { /* still null? */
_alpm_log(PM_LOG_ERROR, _("cannot write to file '%s'"), output);
if(dlf != NULL) {
fclose(dlf);
}
return -1;
}
}
@@ -297,8 +309,29 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
int nread = 0;
char buffer[PM_DLBUF_LEN];
while((nread = fread(buffer, 1, PM_DLBUF_LEN, dlf)) > 0) {
if(ferror(dlf)) {
_alpm_log(PM_LOG_ERROR, _("error downloading '%s': %s"),
fn, downloadLastErrString);
fclose(localf);
fclose(dlf);
return(-1);
}
int nwritten = 0;
while((nwritten += fwrite(buffer, 1, (nread - nwritten), localf)) < nread) ;
while(nwritten < nread) {
nwritten += fwrite(buffer, 1, (nread - nwritten), localf);
if(ferror(localf)) {
_alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s"),
realfile, strerror(errno));
fclose(localf);
fclose(dlf);
return(-1);
}
}
if(nwritten != nread) {
}
dltotal_bytes += nread;
if(handle->dlcb) handle->dlcb(pkgname, dltotal_bytes, ust.size);
@@ -316,8 +349,10 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
char parsedCmd[PATH_MAX] = "";
char url[PATH_MAX];
char cwd[PATH_MAX];
/* build the full download url */
snprintf(url, PATH_MAX, "%s://%s%s/%s", fileurl->scheme, fileurl->host, fileurl->doc, fn);
snprintf(url, PATH_MAX, "%s://%s%s", fileurl->scheme, fileurl->host, fileurl->doc);
/* replace all occurrences of %o with fn.part */
strncpy(origCmd, handle->xfercommand, sizeof(origCmd));
ptr1 = origCmd;
@@ -325,8 +360,7 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
usepart = 1;
ptr2[0] = '\0';
strcat(parsedCmd, ptr1);
strcat(parsedCmd, fn);
strcat(parsedCmd, ".part");
strcat(parsedCmd, output);
ptr1 = ptr2 + 2;
}
strcat(parsedCmd, ptr1);
@@ -360,10 +394,7 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
/* download was successful */
complete = alpm_list_add(complete, fn);
if(usepart) {
char fnpart[PATH_MAX];
/* rename "output.part" file to "output" file */
snprintf(fnpart, PATH_MAX, "%s.part", fn);
rename(fnpart, fn);
rename(output, realfile);
}
}
chdir(cwd);
@@ -406,7 +437,7 @@ char *_alpm_fetch_pkgurl(char *target)
alpm_list_t *servers = alpm_list_add(NULL, server);
alpm_list_t *files = alpm_list_add(NULL, filename);
if(_alpm_downloadfiles(servers, ".", files)) {
if(_alpm_downloadfiles(servers, "./", files)) {
_alpm_log(PM_LOG_WARNING, _("failed to download %s"), target);
return(NULL);
}

View File

@@ -22,20 +22,18 @@
Robert Klep <robert@ilse.nl> -- Expansion function fix
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "config.h"
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
#include <libintl.h>
/* libalpm */
#include "sha1.h"
#include "alpm.h"
#include "log.h"
#include "util.h"
#include "sha1.h"
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>
/*
Not-swap is a macro that does an endian swap on architectures that are
@@ -389,6 +387,7 @@ char* _alpm_SHAFile(char *filename) {
FILE *file;
struct sha_ctx context;
int len, i;
char hex[3];
unsigned char buffer[1024], digest[20];
char *ret;
@@ -407,7 +406,8 @@ char* _alpm_SHAFile(char *filename) {
ret = (char*)malloc(41);
ret[0] = '\0';
for(i = 0; i < 20; i++) {
sprintf(ret+(i*2), "%02x", digest[i]);
snprintf(hex, 3, "%02x", digest[i]);
strncat(ret, hex, 2);
}
_alpm_log(PM_LOG_DEBUG, _("sha1(%s) = %s"), filename, ret);
return(ret);

View File

@@ -15,6 +15,8 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _ALPM_SHA1_H
#define _ALPM_SHA1_H
#include <stdio.h>
#include <limits.h>
@@ -65,4 +67,6 @@ struct sha_ctx
/* Needed for pacman */
char *_alpm_SHAFile (char *);
#endif /* _ALPM_SHA1_H */
/* vim: set ts=2 sw=2 noet: */

View File

@@ -23,6 +23,7 @@
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
@@ -33,10 +34,12 @@
#endif
#include <dirent.h>
#include <libintl.h>
/* pacman */
/* libalpm */
#include "sync.h"
#include "alpm_list.h"
#include "log.h"
#include "error.h"
#include "alpm_list.h"
#include "package.h"
#include "db.h"
#include "cache.h"
@@ -45,7 +48,6 @@
#include "provide.h"
#include "trans.h"
#include "util.h"
#include "sync.h"
#include "versioncmp.h"
#include "handle.h"
#include "util.h"
@@ -214,14 +216,22 @@ int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_s
alpm_pkg_get_name(local), alpm_pkg_get_version(local),
alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
if(!_alpm_sync_find(trans->packages, alpm_pkg_get_name(spkg))) {
pmpkg_t *dummy = _alpm_pkg_new(alpm_pkg_get_name(local),
alpm_pkg_get_version(local));
if(dummy == NULL) {
/* If package is in the ignorepkg list, ask before we add it to
* the transaction */
if(alpm_list_find_str(handle->ignorepkg, alpm_pkg_get_name(local))) {
int resp = 0;
QUESTION(trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, local, NULL, NULL, &resp);
if(!resp) {
continue;
}
}
pmpkg_t *tmp = _alpm_pkg_dup(local);
if(tmp == NULL) {
goto error;
}
sync = _alpm_sync_new(PM_SYNC_TYPE_UPGRADE, spkg, dummy);
sync = _alpm_sync_new(PM_SYNC_TYPE_UPGRADE, spkg, tmp);
if(sync == NULL) {
FREEPKG(dummy);
FREEPKG(tmp);
goto error;
}
trans->packages = alpm_list_add(trans->packages, sync);
@@ -315,7 +325,7 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy
if(!resp) {
return(0);
}
} else {
} else if(!(trans->flags & PM_TRANS_FLAG_PRINTURIS)) {
QUESTION(trans, PM_TRANS_CONV_LOCAL_UPTODATE, local, NULL, NULL, &resp);
if(!resp) {
_alpm_log(PM_LOG_WARNING, _("%s-%s is up to date -- skipping"),
@@ -414,11 +424,17 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
} else {
/* remove the original targets from the list if requested */
if((trans->flags & PM_TRANS_FLAG_DEPENDSONLY)) {
void *vp;
pmpkg_t *p;
trans->packages = alpm_list_remove(trans->packages, spkg, _alpm_pkg_cmp, &vp);
p = vp;
FREEPKG(p);
void *vpkg;
pmsyncpkg_t *sync;
const char *pkgname;
pkgname = alpm_pkg_get_name(spkg);
_alpm_log(PM_LOG_DEBUG, "removing package %s-%s from the transaction targets",
pkgname, alpm_pkg_get_version(spkg));
sync = _alpm_sync_find(trans->packages, pkgname);
trans->packages = alpm_list_remove(trans->packages, sync, syncpkg_cmp, &vpkg);
FREESYNC(vpkg);
}
}
}

View File

@@ -23,16 +23,19 @@
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <libintl.h>
/* pacman */
/* libalpm */
#include "trans.h"
#include "alpm_list.h"
#include "error.h"
#include "package.h"
#include "util.h"
#include "log.h"
#include "alpm_list.h"
#include "handle.h"
#include "add.h"
#include "remove.h"
@@ -94,7 +97,7 @@ void _alpm_trans_free(void *data)
FREE(trans);
}
int _alpm_trans_init(pmtrans_t *trans, pmtranstype_t type, unsigned int flags,
int _alpm_trans_init(pmtrans_t *trans, pmtranstype_t type, pmtransflag_t flags,
alpm_trans_cb_event event, alpm_trans_cb_conv conv,
alpm_trans_cb_progress progress)
{
@@ -132,7 +135,8 @@ int _alpm_trans_addtarget(pmtrans_t *trans, char *target)
ASSERT(target != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
if(alpm_list_find_str(trans->targets, target)) {
RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
return(0);
//RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
}
switch(trans->type) {
@@ -251,6 +255,7 @@ int _alpm_trans_update_depends(pmtrans_t *trans, pmpkg_t *pkg)
{
alpm_list_t *i, *j;
alpm_list_t *depends = NULL;
const char *pkgname;
pmdb_t *localdb;
ALPM_LOG_FUNC;
@@ -259,17 +264,19 @@ int _alpm_trans_update_depends(pmtrans_t *trans, pmpkg_t *pkg)
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(pkg != NULL, RET_ERR(PM_ERR_PKG_INVALID, -1));
pkgname = alpm_pkg_get_name(pkg);
depends = alpm_pkg_get_depends(pkg);
if(depends) {
_alpm_log(PM_LOG_DEBUG, _("updating dependency packages 'requiredby' fields for %s-%s"),
pkg->name, pkg->version);
pkgname, pkg->version);
} else {
_alpm_log(PM_LOG_DEBUG, _("package has no dependencies, no other packages to update"));
}
localdb = alpm_option_get_localdb();
for(i = depends; i; i = i->next) {
pmdepend_t* dep = _alpm_splitdep(i->data);
pmdepend_t* dep = alpm_splitdep(i->data);
if(dep == NULL) {
continue;
}
@@ -299,16 +306,20 @@ int _alpm_trans_update_depends(pmtrans_t *trans, pmpkg_t *pkg)
found_provides = 1;
/* this is cheating... we call this function to populate the package */
alpm_pkg_get_requiredby(deppkg);
alpm_list_t *rqdby = alpm_pkg_get_requiredby(deppkg);
_alpm_log(PM_LOG_DEBUG, _("updating 'requiredby' field for package '%s'"), alpm_pkg_get_name(deppkg));
_alpm_log(PM_LOG_DEBUG, _("updating 'requiredby' field for package '%s'"),
alpm_pkg_get_name(deppkg));
if(trans->type == PM_TRANS_TYPE_REMOVE) {
void *data = NULL;
deppkg->requiredby = alpm_list_remove(deppkg->requiredby,
alpm_pkg_get_name(pkg), _alpm_str_cmp, &data);
rqdby = alpm_list_remove(rqdby, pkgname, _alpm_str_cmp, &data);
FREE(data);
deppkg->requiredby = rqdby;
} else {
deppkg->requiredby = alpm_list_add(deppkg->requiredby, strdup(alpm_pkg_get_name(pkg)));
if(!alpm_list_find_str(rqdby, pkgname)) {
rqdby = alpm_list_add(rqdby, strdup(pkgname));
deppkg->requiredby = rqdby;
}
}
if(_alpm_db_write(localdb, deppkg, INFRQ_DEPENDS)) {
@@ -325,16 +336,20 @@ int _alpm_trans_update_depends(pmtrans_t *trans, pmpkg_t *pkg)
}
/* this is cheating... we call this function to populate the package */
alpm_pkg_get_requiredby(deppkg);
alpm_list_t *rqdby = alpm_pkg_get_requiredby(deppkg);
_alpm_log(PM_LOG_DEBUG, _("updating 'requiredby' field for package '%s'"), deppkg->name);
_alpm_log(PM_LOG_DEBUG, _("updating 'requiredby' field for package '%s'"),
alpm_pkg_get_name(deppkg));
if(trans->type == PM_TRANS_TYPE_REMOVE) {
void *data = NULL;
deppkg->requiredby = alpm_list_remove(deppkg->requiredby,
alpm_pkg_get_name(pkg), _alpm_str_cmp, &data);
rqdby = alpm_list_remove(rqdby, pkgname, _alpm_str_cmp, &data);
FREE(data);
deppkg->requiredby = rqdby;
} else {
deppkg->requiredby = alpm_list_add(deppkg->requiredby, strdup(alpm_pkg_get_name(pkg)));
if(!alpm_list_find_str(rqdby, pkgname)) {
rqdby = alpm_list_add(rqdby, strdup(pkgname));
deppkg->requiredby = rqdby;
}
}
if(_alpm_db_write(localdb, deppkg, INFRQ_DEPENDS)) {

View File

@@ -39,7 +39,7 @@ typedef enum _pmtransstate_t {
/* Transaction */
struct __pmtrans_t {
pmtranstype_t type;
unsigned int flags;
pmtransflag_t flags;
pmtransstate_t state;
alpm_list_t *targets; /* list of (char *) */
alpm_list_t *packages; /* list of (pmpkg_t *) or (pmsyncpkg_t *) */
@@ -78,7 +78,7 @@ do { \
pmtrans_t *_alpm_trans_new(void);
void _alpm_trans_free(void *data);
int _alpm_trans_init(pmtrans_t *trans, pmtranstype_t type, unsigned int flags,
int _alpm_trans_init(pmtrans_t *trans, pmtranstype_t type, pmtransflag_t flags,
alpm_trans_cb_event event, alpm_trans_cb_conv conv,
alpm_trans_cb_progress progress);
int _alpm_trans_sysupgrade(pmtrans_t *trans);

View File

@@ -23,14 +23,8 @@
* USA.
*/
#if defined(__APPLE__) || defined(__OpenBSD__)
#include <sys/syslimits.h>
#endif
#if defined(__APPLE__) || defined(__OpenBSD__) || defined(__sun__)
#include <sys/stat.h>
#endif
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#ifdef __sun__
@@ -45,6 +39,12 @@
#include <time.h>
#include <syslog.h>
#include <sys/wait.h>
#if defined(__APPLE__) || defined(__OpenBSD__)
#include <sys/syslimits.h>
#endif
#if defined(__APPLE__) || defined(__OpenBSD__) || defined(__sun__)
#include <sys/stat.h>
#endif
#include <libintl.h>
#ifdef CYGWIN
#include <limits.h> /* PATH_MAX */
@@ -54,12 +54,12 @@
#include <mntent.h>
#endif
/* pacman */
/* libalpm */
#include "util.h"
#include "alpm_list.h"
#include "log.h"
#include "trans.h"
#include "sync.h"
#include "util.h"
#include "error.h"
#include "package.h"
#include "alpm.h"
@@ -310,21 +310,20 @@ int _alpm_rmrf(const char *path)
struct dirent *dp;
DIR *dirp;
char name[PATH_MAX];
struct stat st;
struct stat st;
if(stat(path, &st) == 0) {
if(S_ISREG(st.st_mode)) {
if(lstat(path, &st) == 0) {
if(!S_ISDIR(st.st_mode)) {
if(!unlink(path)) {
return(0);
} else {
if(errno == ENOENT) {
return(0);
} else {
/* not a directory */
return(1);
}
}
} else if(S_ISDIR(st.st_mode)) {
} else {
if((dirp = opendir(path)) == (DIR *)-1) {
return(1);
}
@@ -432,6 +431,7 @@ int _alpm_runscriptlet(const char *root, const char *installfn,
if(stat(installfn, &buf)) {
/* not found */
_alpm_log(PM_LOG_DEBUG, "scriptlet '%s' not found", installfn);
return(0);
}
@@ -470,6 +470,7 @@ int _alpm_runscriptlet(const char *root, const char *installfn,
/* just in case our cwd was removed in the upgrade operation */
if(chdir(root) != 0) {
_alpm_log(PM_LOG_ERROR, _("could not change directory to %s (%s)"), root, strerror(errno));
goto cleanup;
}
_alpm_log(PM_LOG_DEBUG, _("executing %s script..."), script);
@@ -559,11 +560,13 @@ cleanup:
static long long get_freespace()
{
struct mntent *mnt;
char *table = MOUNTED;
const char *table = MOUNTED;
FILE *fp;
long long ret=0;
if((fp = setmntent(table, "r")) == NULL) {
_alpm_log(PM_LOG_ERROR, _("cannot read disk space information from %s: %s"),
table, strerror(errno));
return(-1);
}

View File

@@ -22,17 +22,19 @@
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <libintl.h>
/* pacman */
/* libalpm */
#include "versioncmp.h"
#include "alpm_list.h"
#include "alpm.h"
#include "log.h"
#include "util.h"
#include "alpm_list.h"
#include "versioncmp.h"
#ifndef HAVE_STRVERSCMP
/* GNU's strverscmp() function, taken from glibc 2.3.2 sources
@@ -245,7 +247,7 @@ int _alpm_versioncmp(const char *a, const char *b)
return(*one ? 1 : -1);
}
int _alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
int SYMEXPORT alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
{
int equal = 0;

View File

@@ -20,16 +20,14 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
#ifndef _PM_RPMVERCMP_H
#define _PM_RPMVERCMP_H
#ifndef _ALPM_VERSIONCMP_H
#define _ALPM_VERSIONCMP_H
#include "deps.h"
#include "package.h"
int _alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep);
int _alpm_versioncmp(const char *a, const char *b);
#endif
#endif /* _ALPM_VERSIONCMP_H */
/* vim: set ts=2 sw=2 noet: */

6863
ltmain.sh Normal file

File diff suppressed because it is too large Load Diff

367
missing Executable file
View File

@@ -0,0 +1,367 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2006-05-10.23
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
if test $# -eq 0; then
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
fi
run=:
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
# In the cases where this matters, `missing' is being run in the
# srcdir already.
if test -f configure.ac; then
configure_ac=configure.ac
else
configure_ac=configure.in
fi
msg="missing on your system"
case $1 in
--run)
# Try to run requested program, and just exit if it succeeds.
run=
shift
"$@" && exit 0
# Exit code 63 means version mismatch. This often happens
# when the user try to use an ancient version of a tool on
# a file that requires a minimum version. In this case we
# we should proceed has if the program had been absent, or
# if --run hadn't been passed.
if test $? = 63; then
run=:
msg="probably too old"
fi
;;
-h|--h|--he|--hel|--help)
echo "\
$0 [OPTION]... PROGRAM [ARGUMENT]...
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
error status if there is no known handling for PROGRAM.
Options:
-h, --help display this help and exit
-v, --version output version information and exit
--run try to run the given command, and emulate it if it fails
Supported PROGRAM values:
aclocal touch file \`aclocal.m4'
autoconf touch file \`configure'
autoheader touch file \`config.h.in'
autom4te touch the output file, or create a stub one
automake touch all \`Makefile.in' files
bison create \`y.tab.[ch]', if possible, from existing .[ch]
flex create \`lex.yy.c', if possible, from existing .c
help2man touch the output file
lex create \`lex.yy.c', if possible, from existing .c
makeinfo touch the output file
tar try tar, gnutar, gtar, then tar without non-portable flags
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
Send bug reports to <bug-automake@gnu.org>."
exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
echo "missing $scriptversion (GNU Automake)"
exit $?
;;
-*)
echo 1>&2 "$0: Unknown \`$1' option"
echo 1>&2 "Try \`$0 --help' for more information"
exit 1
;;
esac
# Now exit if we have it, but it failed. Also exit now if we
# don't have it and --version was passed (most likely to detect
# the program).
case $1 in
lex|yacc)
# Not GNU programs, they don't have --version.
;;
tar)
if test -n "$run"; then
echo 1>&2 "ERROR: \`tar' requires --run"
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
exit 1
fi
;;
*)
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
# We have it, but it failed.
exit 1
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
# Could not run --version or --help. This is probably someone
# running `$TOOL --version' or `$TOOL --help' to check whether
# $TOOL exists and not knowing $TOOL uses missing.
exit 1
fi
;;
esac
# If it does not exist, or fails to run (possibly an outdated version),
# try to emulate it.
case $1 in
aclocal*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
to install the \`Automake' and \`Perl' packages. Grab them from
any GNU archive site."
touch aclocal.m4
;;
autoconf)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`${configure_ac}'. You might want to install the
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
archive site."
touch configure
;;
autoheader)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`acconfig.h' or \`${configure_ac}'. You might want
to install the \`Autoconf' and \`GNU m4' packages. Grab them
from any GNU archive site."
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
test -z "$files" && files="config.h"
touch_files=
for f in $files; do
case $f in
*:*) touch_files="$touch_files "`echo "$f" |
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
*) touch_files="$touch_files $f.in";;
esac
done
touch $touch_files
;;
automake*)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
You might want to install the \`Automake' and \`Perl' packages.
Grab them from any GNU archive site."
find . -type f -name Makefile.am -print |
sed 's/\.am$/.in/' |
while read f; do touch "$f"; done
;;
autom4te)
echo 1>&2 "\
WARNING: \`$1' is needed, but is $msg.
You might have modified some files without having the
proper tools for further handling them.
You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo "#! /bin/sh"
echo "# Created by GNU Automake missing as a replacement of"
echo "# $ $@"
echo "exit 0"
chmod +x $file
exit 1
fi
;;
bison|yacc)
echo 1>&2 "\
WARNING: \`$1' $msg. You should only need it if
you modified a \`.y' file. You may need the \`Bison' package
in order for those modifications to take effect. You can get
\`Bison' from any GNU archive site."
rm -f y.tab.c y.tab.h
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.y)
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.c
fi
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" y.tab.h
fi
;;
esac
fi
if test ! -f y.tab.h; then
echo >y.tab.h
fi
if test ! -f y.tab.c; then
echo 'main() { return 0; }' >y.tab.c
fi
;;
lex|flex)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.l' file. You may need the \`Flex' package
in order for those modifications to take effect. You can get
\`Flex' from any GNU archive site."
rm -f lex.yy.c
if test $# -ne 1; then
eval LASTARG="\${$#}"
case $LASTARG in
*.l)
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
if test -f "$SRCFILE"; then
cp "$SRCFILE" lex.yy.c
fi
;;
esac
fi
if test ! -f lex.yy.c; then
echo 'main() { return 0; }' >lex.yy.c
fi
;;
help2man)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a dependency of a manual page. You may need the
\`Help2man' package in order for those modifications to take
effect. You can get \`Help2man' from any GNU archive site."
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -f "$file"; then
touch $file
else
test -z "$file" || exec >$file
echo ".ab help2man is required to generate this page"
exit 1
fi
;;
makeinfo)
echo 1>&2 "\
WARNING: \`$1' is $msg. You should only need it if
you modified a \`.texi' or \`.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy \`make' (AIX,
DU, IRIX). You might want to install the \`Texinfo' package or
the \`GNU make' package. Grab either from any GNU archive site."
# The file to touch is that specified with -o ...
file=`echo "$*" | sed -n "$sed_output"`
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
if test -z "$file"; then
# ... or it is the one specified with @setfilename ...
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
file=`sed -n '
/^@setfilename/{
s/.* \([^ ]*\) *$/\1/
p
q
}' $infile`
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;
tar)
shift
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
# messages.
if (gnutar --version > /dev/null 2>&1); then
gnutar "$@" && exit 0
fi
if (gtar --version > /dev/null 2>&1); then
gtar "$@" && exit 0
fi
firstarg="$1"
if shift; then
case $firstarg in
*o*)
firstarg=`echo "$firstarg" | sed s/o//`
tar "$firstarg" "$@" && exit 0
;;
esac
case $firstarg in
*h*)
firstarg=`echo "$firstarg" | sed s/h//`
tar "$firstarg" "$@" && exit 0
;;
esac
fi
echo 1>&2 "\
WARNING: I can't seem to be able to run \`tar' with the given arguments.
You may want to install GNU tar or Free paxutils, or check the
command line arguments."
exit 1
;;
*)
echo 1>&2 "\
WARNING: \`$1' is needed, and is $msg.
You might have modified some files without having the
proper tools for further handling them. Check the \`README' file,
it often tells you about the needed prerequisites for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing \`$1' program."
exit 1
;;
esac
exit 0
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

161
mkinstalldirs Executable file
View File

@@ -0,0 +1,161 @@
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
scriptversion=2006-05-11.19
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
# Public domain.
#
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
IFS=" "" $nl"
errstatus=0
dirmode=
usage="\
Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
Create each directory DIR (with mode MODE, if specified), including all
leading file name components.
Report bugs to <bug-automake@gnu.org>."
# process command line arguments
while test $# -gt 0 ; do
case $1 in
-h | --help | --h*) # -h for help
echo "$usage"
exit $?
;;
-m) # -m PERM arg
shift
test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
dirmode=$1
shift
;;
--version)
echo "$0 $scriptversion"
exit $?
;;
--) # stop option processing
shift
break
;;
-*) # unknown option
echo "$usage" 1>&2
exit 1
;;
*) # first non-opt arg
break
;;
esac
done
for file
do
if test -d "$file"; then
shift
else
break
fi
done
case $# in
0) exit 0 ;;
esac
# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
# mkdir -p a/c at the same time, both will detect that a is missing,
# one will create a, then the other will try to create a and die with
# a "File exists" error. This is a problem when calling mkinstalldirs
# from a parallel make. We use --version in the probe to restrict
# ourselves to GNU mkdir, which is thread-safe.
case $dirmode in
'')
if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
echo "mkdir -p -- $*"
exec mkdir -p -- "$@"
else
# On NextStep and OpenStep, the `mkdir' command does not
# recognize any option. It will interpret all options as
# directories to create, and then abort because `.' already
# exists.
test -d ./-p && rmdir ./-p
test -d ./--version && rmdir ./--version
fi
;;
*)
if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
test ! -d ./--version; then
echo "mkdir -m $dirmode -p -- $*"
exec mkdir -m "$dirmode" -p -- "$@"
else
# Clean up after NextStep and OpenStep mkdir.
for d in ./-m ./-p ./--version "./$dirmode";
do
test -d $d && rmdir $d
done
fi
;;
esac
for file
do
case $file in
/*) pathcomp=/ ;;
*) pathcomp= ;;
esac
oIFS=$IFS
IFS=/
set fnord $file
shift
IFS=$oIFS
for d
do
test "x$d" = x && continue
pathcomp=$pathcomp$d
case $pathcomp in
-*) pathcomp=./$pathcomp ;;
esac
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp"
mkdir "$pathcomp" || lasterr=$?
if test ! -d "$pathcomp"; then
errstatus=$lasterr
else
if test ! -z "$dirmode"; then
echo "chmod $dirmode $pathcomp"
lasterr=
chmod "$dirmode" "$pathcomp" || lasterr=$?
if test ! -z "$lasterr"; then
errstatus=$lasterr
fi
fi
fi
fi
pathcomp=$pathcomp/
done
done
exit $errstatus
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View File

@@ -36,7 +36,8 @@ def globTests(option, opt_str, value, parser):
globlist = []
# maintain the idx so we can modify rargs
while not parser.rargs[idx].startswith('-'):
while idx < len(parser.rargs) and \
not parser.rargs[idx].startswith('-'):
globlist += glob.glob(parser.rargs[idx])
idx += 1

View File

@@ -219,8 +219,7 @@ class pmdb:
"""
path = os.path.join(self.dbdir, self.treename, pkg.fullname())
if not os.path.isdir(path):
os.makedirs(path);
mkdir(path)
# desc
# for local db entries: name, version, desc, groups, url, license,
@@ -332,7 +331,7 @@ class pmdb:
mkdescfile(pkg.fullname(), pkg)
# Generate database archive
os.makedirs(path, 0755)
mkdir(path)
archive = os.path.join(path, "%s%s" % (self.treename, PM_EXT_DB))
os.system("tar zcf %s *" % archive)

View File

@@ -33,6 +33,7 @@ class pmpkg:
"""
def __init__(self, name, version = "1.0-1"):
self.path = "" #the path of the generated package
# desc
self.name = name
self.version = version
@@ -116,7 +117,7 @@ class pmpkg:
A package archive is generated in the location 'path', based on the data
from the object.
"""
archive = os.path.join(path, self.filename())
self.path = os.path.join(path, self.filename())
curdir = os.getcwd()
tmpdir = tempfile.mkdtemp()
@@ -172,8 +173,11 @@ class pmpkg:
os.system("touch .FILELIST")
targets += " .FILELIST"
#safely create the dir
mkdir(os.path.dirname(self.path))
# Generate package archive
os.system("tar zcf %s %s" % (archive, targets))
os.system("tar zcf %s %s" % (self.path, targets))
os.chdir(curdir)
shutil.rmtree(tmpdir)

View File

@@ -57,6 +57,7 @@ class pmrule:
if not grep(os.path.join(root, LOGFILE), key):
success = 0
else:
print "PACMAN rule '%s' not found" % case
success = -1
elif kind == "PKG":
newpkg = localdb.db_read(key)
@@ -100,6 +101,7 @@ class pmrule:
if not found:
success = 0
else:
print "PKG rule '%s' not found" % case
success = -1
elif kind == "FILE":
filename = os.path.join(root, key)
@@ -122,8 +124,10 @@ class pmrule:
if not os.path.isfile("%s%s" % (filename, PM_PACSAVE)):
success = 0
else:
print "FILE rule '%s' not found" % case
success = -1
else:
print "Rule kind '%s' not found" % kind
success = -1
if self.false and success != -1:

View File

@@ -38,6 +38,7 @@ class pmtest:
self.name = name
self.testname = os.path.basename(name).replace('.py', '')
self.root = root
self.cachepkgs = True
def __str__(self):
return "name = %s\n" \
@@ -130,14 +131,15 @@ class pmtest:
vprint("\t%s" % os.path.join(TMPDIR, pkg.filename()))
pkg.makepkg(tmpdir)
for key, value in self.db.iteritems():
if key == "local":
continue
if key == "local": continue
for pkg in value.pkgs:
archive = pkg.filename()
vprint("\t%s" % os.path.join(PM_CACHEDIR, archive))
pkg.makepkg(cachedir)
pkg.md5sum = getmd5sum(os.path.join(cachedir, archive))
pkg.csize = os.stat(os.path.join(cachedir, archive))[stat.ST_SIZE]
vprint("\t%s" % os.path.join(PM_CACHEDIR, pkg.filename()))
if self.cachepkgs:
pkg.makepkg(cachedir)
else:
pkg.makepkg(os.path.join(syncdir, value.treename))
pkg.md5sum = getmd5sum(pkg.path)
pkg.csize = os.stat(pkg.path)[stat.ST_SIZE]
# Populating databases
vprint(" Populating databases")
@@ -151,8 +153,7 @@ class pmtest:
# Creating sync database archives
vprint(" Creating sync database archives")
for key, value in self.db.iteritems():
if key == "local":
continue
if key == "local": continue
archive = value.treename + PM_EXT_DB
vprint("\t" + os.path.join(SYNCREPO, archive))
value.gensync(os.path.join(syncdir, value.treename))

View File

@@ -0,0 +1,12 @@
# quick note here - chroot() is expected to fail. We're not checking the
# validity of the scripts, only that they fire (or try to)
self.description = "Make sure ldconfig runs on an add operation"
p = pmpkg("dummy")
self.addpkg(p)
# --debug is necessary to check PACMAN_OUTPUT
self.args = "--debug -A %s" % p.filename()
self.addrule("PACMAN_RETCODE=0")
self.addrule("PACMAN_OUTPUT=ldconfig")

View File

@@ -0,0 +1,16 @@
# quick note here - chroot() is expected to fail. We're not checking the
# validity of the scripts, only that they fire (or try to)
self.description = "Make sure ldconfig runs on an upgrade operation"
lp = pmpkg("dummy")
self.addpkg2db("local", lp)
p = pmpkg("dummy", "1.0-2")
self.addpkg(p)
# --debug is necessary to check PACMAN_OUTPUT
self.args = "--debug -U %s" % p.filename()
self.addrule("PACMAN_RETCODE=0")
self.addrule("PKG_VERSION=dummy|1.0-2")
self.addrule("PACMAN_OUTPUT=ldconfig")

View File

@@ -0,0 +1,14 @@
# quick note here - chroot() is expected to fail. We're not checking the
# validity of the scripts, only that they fire (or try to)
self.description = "Make sure ldconfig runs on a sync operation"
sp = pmpkg("dummy")
self.addpkg2db("sync", sp)
self.args = "-S %s" % sp.name
# --debug is necessary to check PACMAN_OUTPUT
self.args = "--debug -S %s" % sp.name
self.addrule("PACMAN_RETCODE=0")
self.addrule("PACMAN_OUTPUT=ldconfig")

View File

@@ -0,0 +1,10 @@
# If someone else can come up with a better name, please do so
self.description = "Remove a package listed 5 times"
p = pmpkg("foo")
self.addpkg2db("local", p)
self.args = "-R " + "foo "*5
self.addrule("PACMAN_RETCODE=0")
self.addrule("!PKG_EXISTS=foo")

View File

@@ -0,0 +1,16 @@
# quick note here - chroot() is expected to fail. We're not checking the
# validity of the scripts, only that they fire (or try to)
self.description = "Scriptlet test (pre/post install)"
p1 = pmpkg("dummy")
p1.files = ['etc/dummy.conf']
p1.install['pre_install'] = "ls /etc";
p1.install['post_install'] = "ls /etc";
self.addpkg(p1)
# --debug is necessary to check PACMAN_OUTPUT
self.args = "--debug -U %s" % p1.filename()
self.addrule("PACMAN_RETCODE=0")
self.addrule("PACMAN_OUTPUT=pre_install")
self.addrule("PACMAN_OUTPUT=post_install")

19
pactest/tests/sync1000.py Normal file
View File

@@ -0,0 +1,19 @@
# If someone else can come up with a better name, please do so
self.description = "stonecrest's problem"
sp = pmpkg("dummy", "1.1-1")
sp.requiredby = [ "pkg" ]
self.addpkg2db("sync", sp)
lp1 = pmpkg("dummy", "1.0-1")
lp1.requiredby = [ "pkg" ]
self.addpkg2db("local", lp1)
lp2 = pmpkg("pkg")
lp2.depends = [ "dummy=1.0" ]
self.addpkg2db("local", lp2)
self.args = "-Su"
self.addrule("!PACMAN_RETCODE=0")
self.addrule("!PKG_VERSION=dummy|1.1-1")

18
pactest/tests/sync1001.py Normal file
View File

@@ -0,0 +1,18 @@
self.description = "Test -Se (ensure specified package is not installed)"
sp1 = pmpkg("dummy")
sp1.depends = [ "dep1", "dep2" ]
self.addpkg2db("sync", sp1)
sp2 = pmpkg("dep1")
self.addpkg2db("sync", sp2)
sp3 = pmpkg("dep2")
self.addpkg2db("sync", sp3)
self.args = "-Se dummy"
self.addrule("PACMAN_RETCODE=0")
self.addrule("PKG_EXIST=dep1")
self.addrule("PKG_EXIST=dep2")
self.addrule("!PKG_EXIST=dummy")

15
pactest/tests/sync136.py Normal file
View File

@@ -0,0 +1,15 @@
self.description = "Sysupgrade with a sync package forcing a downgrade"
sp = pmpkg("dummy", "1.0-1")
sp.force = 1
self.addpkg2db("sync", sp)
lp = pmpkg("dummy", "1.0-2")
self.addpkg2db("local", lp)
self.args = "-Su"
self.addrule("PACMAN_RETCODE=0")
self.addrule("PKG_VERSION=dummy|1.0-1")

14
pactest/tests/sync137.py Normal file
View File

@@ -0,0 +1,14 @@
self.description = "Sysupgrade with a force and ignore on same package"
lp = pmpkg("dummy", "1.0-1")
self.addpkg2db("local", lp)
sp = pmpkg("dummy", "1.0-2")
sp.force = 1
self.addpkg2db("sync", sp)
self.args = "-Su --ignore %s" % lp.name
self.addrule("PACMAN_RETCODE=0")
self.addrule("PKG_VERSION=dummy|1.0-1")

View File

@@ -0,0 +1,17 @@
self.description = "Upgrade a package that's older version is required by another package."
lp1 = pmpkg("pkg1")
lp1.depends = [ "pkg2=1.0" ]
self.addpkg2db("local", lp1)
lp2 = pmpkg("pkg2", "1.0-1")
lp2.requiredby = [ "pkg1" ]
self.addpkg2db("local", lp2)
p = pmpkg("pkg2", "1.1-1")
self.addpkg(p)
self.args = "-U %s" % p.filename()
self.addrule("PACMAN_RETCODE=1")
self.addrule("!PKG_VERSION=pkg2|1.1")

View File

@@ -0,0 +1,20 @@
self.description = "Quick check for using XferCommand"
# this setting forces us to download packages
self.cachepkgs = False
#wget doesn't support file:// urls. curl does
self.option['xfercommand'] = ['/usr/bin/curl %u > %o']
numpkgs = 10
pkgnames = []
for i in xrange(numpkgs):
name = "pkg_%s" % i
pkgnames.append(name)
p = pmpkg(name)
p.files = ["usr/bin/foo-%s" % i]
self.addpkg2db("sync", p)
self.args = "-S %s" % ' '.join(pkgnames)
for name in pkgnames:
self.addrule("PKG_EXIST=%s" % name)

View File

@@ -236,17 +236,23 @@ def diffmtime(mt1, mt2):
#
def grep(filename, pattern):
found = 0
fd = file(filename, "r")
while 1 and not found:
line = fd.readline()
if not line:
break
lines = file(filename, 'r').readlines()
for line in lines:
if not line: break
if line.find(pattern) != -1:
found = 1
fd.close()
return found
return True
return False
def mkdir(dir):
if os.path.isdir(dir):
return
elif os.path.isfile(dir):
raise OSError("'%s' already exists and is not a directory" % dir)
else:
parent, thisdir = os.path.split(dir)
if parent: mkdir(parent) #recurse to make all parents
vprint("making dir %s" % thisdir)
if thisdir: os.mkdir(dir)
if __name__ == "__main__":
pass

View File

@@ -25,7 +25,7 @@
# USA.
#
myver='3.0.0'
myver='3.0.3'
startdir=$(pwd)
BUILDSCRIPT="PKGBUILD"
@@ -177,16 +177,12 @@ in_array() {
}
checkdeps() {
local missdep=""
local deplist=""
[ $# -gt 0 ] || return
pmout=$(pacman $PACMAN_OPTS -T $*)
ret=$?
if [ $ret -eq 1 ]; then #unresolved deps
#strip out the pacman prefix from "requires: xyz"
echo $pmout | sed 's|requires:||g'
echo $pmout
elif [ $ret -ne 0 ]; then
error "pacman returned a fatal error ($ret): $pmout"
exit 1
@@ -196,11 +192,18 @@ checkdeps() {
handledeps() {
local missingdeps=0
local deplist="$*"
local depstrip=""
local striplist=""
local haveperm=0
if [ \( "$EUID" = "0" -a "$INFAKEROOT" != "1" \) -o "$SUDO" = 1 ]; then
haveperm=1
fi
for dep in $deplist; do
depstrip=$(echo $dep | sed 's|=.*$||' | sed 's|>.*$||' | sed 's|<.*$||')
striplist="$striplist $depstrip"
done
if [ "$deplist" != "" -a $haveperm -eq 1 ]; then
if [ "$DEP_BIN" = "1" -a "$SUDO" = "1" ]; then
# install missing deps from binary packages (using pacman -S and sudo)
@@ -211,9 +214,9 @@ handledeps() {
FAKEROOTKEY2=$FAKEROOTKEY
unset FAKEROOTKEY
fi
sudo pacman $PACMAN_OPTS -S $deplist
sudo pacman $PACMAN_OPTS -S $striplist
if [ $? -eq 1 ]; then
error "Failed to install missing dependencies."
error "Pacman failed to install missing dependencies."
exit 1
fi
if [ "$INFAKEROOT" = "1" ]; then
@@ -223,9 +226,9 @@ handledeps() {
elif [ "$DEP_BIN" = "1" ]; then
# install missing deps from binary packages (using pacman -S)
msg "Installing missing dependencies..."
pacman $PACMAN_OPTS -S $deplist
pacman $PACMAN_OPTS -S $striplist
if [ $? -eq 1 ]; then
error "Failed to install missing dependencies."
error "Pacman failed to install missing dependencies."
exit 1
fi
elif [ "$DEP_SRC" = "1" ]; then
@@ -237,7 +240,7 @@ handledeps() {
fi
# TODO: handle version comparators (eg, glibc>=2.2.5)
msg "Building missing dependencies..."
for dep in $deplist; do
for dep in $striplist; do
candidates=$(find $SRCROOT -type d -name "$dep")
if [ "$candidates" = "" ]; then
error "Could not find \"$dep\" under $SRCROOT"
@@ -245,12 +248,12 @@ handledeps() {
fi
success=0
for pkgdir in $candidates; do
if [ -f $pkgdir/$BUILDSCRIPT ]; then
cd $pkgdir
if [ -f "$pkgdir/$BUILDSCRIPT" ]; then
cd "$pkgdir"
if [ "$RMDEPS" = "1" ]; then
makepkg -i -c -b -r -w $PKGDEST
PKGDEST="$PKGDEST" makepkg -i -c -b -r
else
makepkg -i -c -b -w $PKGDEST
PKGDEST="$PKGDEST" makepkg -i -c -b
fi
if [ $? -eq 0 ]; then
success=1
@@ -286,21 +289,27 @@ handledeps() {
}
resolvedeps() {
deplist=""
newdeplist=""
deplist=$(checkdeps $*)
if [ -n "${deplist}" ]; then
handledeps $deplist
if [ $? -eq 0 ]; then
# check deps again to make sure they were resolved
deplist=$(checkdeps ${depends[@]})
if [ -n "${deplist}" ]; then
error "Failed to install missing dependencies."
newdeplist=$(checkdeps $*)
if [ -n "${newdeplist}" ]; then
error "Failed to install all missing dependencies."
fi
else
newdeplist="$deplist"
fi
fi
if [ -n "${deplist}" ]; then
# if new dep list is not empty, print the list
if [ -n "${newdeplist}" ]; then
msg "Missing Dependencies:"
for dep in ${deplist}; do
for dep in ${newdeplist}; do
msg2 "${dep}"
done
return 1
@@ -311,20 +320,30 @@ resolvedeps() {
# fix flyspray bug #5923
removedeps() {
if [ "$RMDEPS" = "1" -a "$SUDO" = "1" -a \( ! -z "$deplist" -o ! -z "$makedeplist" \) ]; then
# runtimedeps and buildtimedeps are set when resolving deps
local deplist="$runtimedeps $buildtimedeps"
local depstrip=""
local striplist=""
for dep in $deplist; do
depstrip=$(echo $dep | sed 's|=.*$||' | sed 's|>.*$||' | sed 's|<.*$||')
striplist="$striplist $depstrip"
done
if [ "$RMDEPS" = "1" -a "$SUDO" = "1" -a -n "$deplist" ]; then
msg "Removing installed dependencies..."
if [ "$INFAKEROOT" = "1" ]; then
export FAKEROOTKEY2=$FAKEROOTKEY
unset FAKEROOTKEY
fi
sudo pacman $PACMAN_OPTS -Rs $makedeplist $deplist
sudo pacman $PACMAN_OPTS -Rs $striplist
if [ "$INFAKEROOT" = "1" ]; then
export FAKEROOTKEY=$FAKEROOTKEY2
unset FAKEROOTKEY2
fi
elif [ "$RMDEPS" = "1" -a "$EUID" = "0" -a "$INFAKEROOT" != "1" -a \( ! -z "$deplist" -o ! -z "$makedeplist" \) ]; then
elif [ "$RMDEPS" = "1" -a "$EUID" = "0" -a "$INFAKEROOT" != "1" -a -n "$deplist" ]; then
msg "Removing installed dependencies..."
pacman $PACMAN_OPTS -Rs $makedeplist $deplist
pacman $PACMAN_OPTS -Rs $striplist
fi
}
@@ -486,17 +505,30 @@ fi
if [ "$CLEANCACHE" = "1" ]; then
#fix flyspray feature request #5223
if [ -n "$SRCDEST" ]; then
msg "Cleaning up source files from the cache."
rm -rf "$SRCDEST"/*
if [ $? -ne 0 ]; then
error "Problem removing files; you may not have correct permissions in $SRCDEST"
exit 1
if [ -n "$SRCDEST" -a "$SRCDEST" != "$startdir" ]; then
msg "Cleaning up ALL files from $SRCDEST."
echo -n " Are you sure you wish to do this? [Y/n] "
read answer
answer=$(echo $answer | tr [:upper:] [:lower:])
if [ "$answer" = "yes" -o "$answer" = "y" ]; then
rm "$SRCDEST"/*
if [ $? -ne 0 ]; then
error "Problem removing files; you may not have correct permissions in $SRCDEST"
exit 1
else
# removal worked
msg "Source cache cleaned."
exit 0
fi
else
# answer = no
msg "No files have been removed."
exit 0
fi
else
# $SRCDEST is $startdir, two possibilities
error "Source destination must be defined in makepkg.conf."
plain "In addition, please run makepkg -C outside of your cache directory."
exit 1
fi
fi
@@ -528,11 +560,11 @@ if [ -z "$pkgrel" ]; then
error "pkgrel is not allowed to be empty."
exit 1
fi
if [ $(echo $pkgver | grep '-') ]; then
if [ $(echo "$pkgver" | grep '-') ]; then
error "pkgver is not allowed to contain hyphens."
exit 1
fi
if [ $(echo $pkgrel | grep '-') ]; then
if [ $(echo "$pkgrel" | grep '-') ]; then
error "pkgrel is not allowed to contain hyphens."
exit 1
fi
@@ -548,7 +580,7 @@ if [ "$install" -a ! -f "$install" ]; then
exit 1
fi
if [ -f $PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.${PKGEXT} \
if [ -f "$PKGDEST/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.${PKGEXT}" \
-a "$FORCE" = "0" -a "$GENINTEG" = "0" ]; then
if [ "$INSTALL" = "1" ]; then
warning "a package has already been built, installing existing package."
@@ -587,7 +619,6 @@ fi
msg "Making package: $pkgname $pkgver-$pkgrel ($(date))"
unset deplist makedeplist
# fix flyspray bug #5973
if [ "$NODEPS" = "1" -o "$GENINTEG" = "1" -o "$NOBUILD" = "1" -o "$REPKG" = "1" ]; then
if [ "$NODEPS" = "1" ]; then
@@ -596,16 +627,24 @@ if [ "$NODEPS" = "1" -o "$GENINTEG" = "1" -o "$NOBUILD" = "1" -o "$REPKG" = "1"
# skip printing a warning message for the others: geninteg, nobuild, repkg
elif [ $(type -p pacman) ]; then
deperr=0
# these two variables are needed later by removedeps
unset runtimedeps buildtimedeps
msg "Checking Runtime Dependencies..."
resolvedeps ${depends[@]}
if [ $? -ne 0 ]; then
ret=$?
# deplist is a global variable set by resolvedeps
runtimedeps="$deplist"
if [ "$ret" != "0" ]; then
deperr=1
fi
msg "Checking Buildtime Dependencies..."
resolvedeps ${makedepends[@]}
if [ $? -ne 0 ]; then
ret=$?
# deplist is a global variable set by resolvedeps
buildtimedeps="$deplist"
if [ "$ret" != "0" ]; then
deperr=1
fi
@@ -617,12 +656,12 @@ else
warning "pacman was not found in PATH. skipping dependency checks."
fi
cd $startdir
cd "$startdir"
# retrieve sources
msg "Retrieving Sources..."
mkdir -p src
cd $startdir/src
cd "$startdir/src"
for netfile in ${source[@]}; do
file=$(strip_url "$netfile")
if [ -f "../$file" ]; then
@@ -706,7 +745,11 @@ else
if [ $ct -eq 0 ]; then
echo -n "${integrity_name}s=("
else
echo -ne "\t "
indent=0
while [ $indent -lt $((${#integrity_name}+3)) ]; do
echo -n " "
indent=$(($indent+1))
done
fi
echo -n "'$sum'"
ct=$(($ct+1))
@@ -769,6 +812,8 @@ else
file_type=$(file -biz "$file")
unset cmd
case "$file_type" in
*application/x-tar*application/x-compress*)
cmd="tar -xzf $file" ;;
*application/x-tar*)
cmd="tar -xf $file" ;;
*application/x-zip*)
@@ -777,7 +822,7 @@ else
*application/x-cpio*)
cmd="bsdtar -x -f $file" ;;
*application/x-gzip*)
cmd="gunzip -f $file" ;;
cmd="gunzip -d -f $file" ;;
*application/x-bzip*)
cmd="bunzip2 -f $file" ;;
esac
@@ -797,7 +842,7 @@ else
if [ "$EUID" = "0" ]; then
# chown all source files to root.root
chown -R root.root $startdir/src
chown -R root.root "$startdir/src"
fi
fi
@@ -808,18 +853,19 @@ elif [ "$REPKG" = "1" ]; then
warning "Skipping build"
else
# check for existing pkg directory
if [ -d $startdir/pkg ]; then
if [ -d "$startdir/pkg" ]; then
msg "Removing existing pkg/ directory..."
rm -rf $startdir/pkg
rm -rf "$startdir/pkg"
fi
mkdir -p $startdir/pkg
mkdir -p "$startdir/pkg"
# use distcc if it is requested (check buildenv and PKGBUILD opts)
if [ "$(check_buildenv distcc)" = "y" -a "$(check_option distcc)" != "n" ]; then
[ -d /usr/lib/distcc/bin ] && export PATH=/usr/lib/distcc/bin:$PATH
export DISTCC_HOSTS
elif [ "$(check_option distcc)" = "n" ]; then
# if it is not wanted, clear the makeflags too
export MAKEFLAGS=""
MAKEFLAGS=""
fi
# use ccache if it is requested (check buildenv and PKGBUILD opts)
@@ -829,20 +875,24 @@ else
# clear user-specified makeflags if requested
if [ "$(check_option makeflags)" = "n" ]; then
export MAKEFLAGS=""
MAKEFLAGS=""
fi
# build
msg "Starting build()..."
# some applications (eg, blackbox) will not build with some languages
unset LC_ALL LANG
unset LC_ALL LC_MESSAGES LANG
umask 0022
# ensure all necessary build variables are exported
export CFLAGS CXXFLAGS MAKEFLAGS
#check for "exit on syntax error" shell option
echo $SHELLOPTS | grep errexit 2>&1 >/dev/null
set_e=$?
ret=0
if [ "$LOGGING" = "1" ]; then
BUILDLOG="${startdir}/${pkgname}-${pkgver}-${pkgrel}-${CARCH}.log"
if [ -f "$BUILDLOG" ]; then
@@ -859,38 +909,32 @@ else
#use 'errexit' to bail on syntax error
[ $set_e -eq 1 ] && set -e
build 2>&1 | tee "$BUILDLOG"
build 2>&1 | tee "$BUILDLOG"; ret=${PIPESTATUS[0]}
[ $set_e -eq 1 ] && set +e
if [ ${PIPESTATUS[0]} -gt 0 ]; then
error "Build Failed. Aborting..."
removedeps
exit 2
fi
else
#use 'errexit' to bail on syntax error
[ $set_e -eq 1 ] && set -e
build 2>&1
build 2>&1 || ret=$?
[ $set_e -eq 1 ] && set +e
if [ $? -gt 0 ]; then
error "Build Failed. Aborting..."
removedeps
exit 2
fi
fi
if [ $ret -gt 0 ]; then
error "Build Failed. Aborting..."
removedeps
exit 2
fi
fi
if [ "$(check_option docs)" = "n" ]; then
# remove info/doc files
msg "Removing info/doc files..."
cd $startdir/pkg
cd "$startdir/pkg"
#fix flyspray bug #5021
rm -rf ${DOC_DIRS[@]}
fi
# move /usr/share/man files to /usr/man
if [ -d $startdir/pkg/usr/share/man ]; then
cd $startdir
cd "$startdir"
mkdir -p pkg/usr/man
cp -a pkg/usr/share/man/* pkg/usr/man/
rm -rf pkg/usr/share/man
@@ -898,12 +942,12 @@ fi
# compress man pages
msg "Compressing man pages..."
find $startdir/pkg/{usr{,/local},opt/*}/man -type f 2>/dev/null | while read i ; do
find "$startdir"/pkg/{usr{,/local},opt/*}/man -type f 2>/dev/null | while read i ; do
ext="${i##*.}"
fn="${i##*/}"
if [ "$ext" != "gz" -a "$ext" != "bz2" ]; then
# update symlinks to this manpage
find $startdir/pkg/{usr{,/local},opt/*}/man -lname "$fn" 2> /dev/null | while read ln ; do
find "$startdir"/pkg/{usr{,/local},opt/*}/man -lname "$fn" 2> /dev/null | while read ln ; do
rm -f "$ln"
ln -sf "${fn}.gz" "${ln}.gz"
done
@@ -912,7 +956,7 @@ find $startdir/pkg/{usr{,/local},opt/*}/man -type f 2>/dev/null | while read i ;
fi
done
cd $startdir
cd "$startdir"
# strip binaries
if [ "$(check_option strip)" = "y" ]; then
@@ -946,7 +990,7 @@ if [ "$PACKAGER" != "" ]; then
else
packager="Arch Linux (http://www.archlinux.org)"
fi
size=$(du -cb $startdir/pkg | tail -n 1 | awk '{print $1}')
size=$(du -cb "$startdir/pkg" | tail -n 1 | awk '{print $1}')
# build a filelist - do this first to keep meta files out of the list
msg "Generating .FILELIST file..."
@@ -955,7 +999,7 @@ tar cvf /dev/null * | sort >.FILELIST
# write the .PKGINFO file
msg "Generating .PKGINFO file..."
cd $startdir/pkg
cd "$startdir/pkg"
echo "# Generated by makepkg $myver" >.PKGINFO
echo -n "# " >>.PKGINFO
date >>.PKGINFO

View File

@@ -131,20 +131,20 @@ if [ "$dest" = "" ]; then
fi
# convert a (possibly) relative path to absolute
cd $dest
dest=$(pwd)
cd "$dest"
dest="$(pwd)"
cd - &>/dev/null
sd=$(date +"[%b %d %H:%M]")
for category in $*; do
for port in $(find $toplevel/$category -maxdepth 1 -mindepth 1 -type d | sort); do
for port in $(find "$toplevel/$category" -maxdepth 1 -mindepth 1 -type d | sort); do
cd $port
if [ -f PKGBUILD ]; then
. PKGBUILD
buildstatus=0
if [ ! -f $dest/$pkgname-$pkgver-$pkgrel.pkg.tar.gz ]; then
makepkg $MAKEPKG_OPTS -m -w $dest 2>>$toplevel/makepkg.log
if [ ! -f "$dest/$pkgname-$pkgver-$pkgrel.pkg.tar.gz" ]; then
PKGDEST="$dest" makepkg $MAKEPKG_OPTS -m 2>>$toplevel/makepkg.log
if [ $? -gt 0 ]; then
buildstatus=2
else

View File

@@ -29,41 +29,65 @@ def createOptParser():
"speed. Pacman mirror files are located in /etc/pacman.d/. It " \
"can also rank one mirror if the URL is provided."
parser = OptionParser(usage = usage, description = description)
parser.add_option("-f", "--formatted", action = "store_true",
dest = "formatted", default = False,
help = "output in mirror file format")
parser.add_option("-n", type = "int", dest = "num", default = 0,
help = "number of servers to output, 0 for all")
help = "number of servers to output, 0 for all")
parser.add_option("-t", "--times", action = "store_true",
dest = "times", default = False,
help = "only output mirrors and their response times")
parser.add_option("-u", "--url", action = "store_true", dest = "url",
default=False, help="test a specific url")
default = False, help = "test a specific url")
parser.add_option("-v", "--verbose", action = "store_true",
dest = "verbose", default = False, help ="be verbose in output")
dest = "verbose", default = False,
help = "be verbose in ouptut")
return parser
def timeCmd(cmd):
before = time.time();
before = time.time()
try:
cmd();
cmd()
except KeyboardInterrupt, ki:
raise ki
except socket.timeout, ioe:
return 'timeout'
except Exception, e:
return 'unreachable'
return time.time() - before;
return time.time() - before
def talkToServer(serverUrl):
opener = urllib2.build_opener()
tmp = opener.open(serverUrl).read()
# retrieve first 50,000 bytes only
tmp = opener.open(serverUrl).read(50000)
def getFuncToTime(serverUrl):
return lambda : talkToServer(serverUrl)
def cmpPairBySecond(p1, p2):
if p1[1] == p2[1]: return 0
if p1[1] < p2[1]: return -1
if p1[1] == p2[1]:
return 0
if p1[1] < p2[1]:
return -1
return 1
def printResults(servers, time, verbose, num):
items = servers.items()
items.sort(cmpPairBySecond)
itemsLen = len(items)
numToShow = num
if numToShow > itemsLen or numToShow == 0:
numToShow = itemsLen
if itemsLen > 0:
if time:
print
print ' Servers sorted by time (seconds):'
for i in items[0:numToShow]:
if i[1] == 'timeout' or i[1] == 'unreachable':
print i[0], ':', i[1]
else:
print i[0], ':', "%.2f" % i[1]
else:
for i in items[0:numToShow]:
print 'Server =', i[0]
if __name__ == "__main__":
parser = createOptParser()
(options, args) = parser.parse_args()
@@ -78,53 +102,72 @@ if __name__ == "__main__":
if options.url:
if options.verbose:
print 'Testing', args[0] + '...'
serverToTime = timeCmd(getFuncToTime(args[0]))
print args[0], ':', serverToTime
try:
serverToTime = timeCmd(getFuncToTime(args[0]))
except KeyboardInterrupt, ki:
sys.exit(1)
if serverToTime == 'timeout' or serverToTime == 'unreachable':
print args[0], ':', serverToTime
else:
print args[0], ':', "%.2f" % serverToTime
sys.exit(0)
if not os.path.isfile(args[0]):
print 'file', args[0], 'does not exist.'
print >>sys.stderr, 'rankmirrors: file', args[0], 'does not exist.'
sys.exit(1)
fl = open(args[0], 'r')
serverToTime = {}
if options.formatted:
if options.times:
print 'Querying servers, this may take some time...'
else:
print "# Server list generated by rankmirrors on",
print datetime.date.today()
else:
print 'Querying servers, this may take some time...'
for ln in fl.readlines():
splitted = ln.split('=')
if splitted[0].strip() != 'Server':
if options.formatted:
if not options.times:
print ln,
continue
serverUrl = splitted[1].strip()
if serverUrl[-1] == '\n': serverUrl = serverUrl[0:-1]
if options.verbose and options.formatted:
print '#',serverUrl,'...',
if serverUrl[-1] == '\n':
serverUrl = serverUrl[0:-1]
if options.verbose and options.times:
print serverUrl, '...',
elif options.verbose:
print serverUrl,'...',
elif not options.formatted:
print '#', serverUrl, '...',
elif options.times:
print ' * ',
sys.stdout.flush()
serverToTime[serverUrl] = timeCmd(getFuncToTime(serverUrl))
if options.verbose:
print serverToTime[serverUrl]
items = serverToTime.items()
items.sort(cmpPairBySecond)
numToShow = int(options.num)
if numToShow == 0: numToShow = len(items)
if len(items) > 0:
if options.formatted:
for i in items[0:numToShow]:
print 'Server =', i[0]
else:
# add *.db.tar.gz to server name. the repo name is parsed
# from the mirror url; it is the third (or fourth) dir
# from the end, where the url is http://foo/bar/REPO/os/arch
try:
splitted2 = serverUrl.split('/')
if serverUrl[-1] != '/':
repoName = splitted2[-3]
dbFileName = '/' + repoName + '.db.tar.gz'
else:
repoName = splitted2[-4]
dbFileName = repoName + '.db.tar.gz'
except:
dbFileName = ''
try:
serverToTime[serverUrl] = timeCmd(getFuncToTime(serverUrl + dbFileName))
if options.verbose:
try:
print "%.2f" % serverToTime[serverUrl]
except:
print serverToTime[serverUrl]
except:
print
print ' Servers sorted by time:'
for i in items[0:numToShow]:
print i[1], ':', i[0]
printResults(serverToTime, options.times, options.verbose,
options.num)
sys.exit(0)
printResults(serverToTime, options.times, options.verbose, options.num)
# vim: set ts=4 sw=4 et:

View File

@@ -19,7 +19,7 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
# USA.
myver='3.0.0'
myver='3.0.3'
FORCE=0
REPO_DB_FILE=""
@@ -117,7 +117,7 @@ db_write_entry()
license=*) _licenses="$_licenses $license" ;;
replaces=*) _replaces="$_replaces $replaces" ;;
provides=*) _provides="$_provides $provides" ;;
conflicts=*) _conflicts="$_conflicts $conflicts" ;;
conflict=*) _conflicts="$_conflicts $conflict" ;;
esac
done
@@ -148,7 +148,7 @@ db_write_entry()
# create desc entry
echo ":: creating 'desc' db entry"
echo -e "%FILENAME%\n$1\n" >> desc
echo -e "%FILENAME%\n$(basename $1)\n" >>desc
echo -e "%NAME%\n$pkgname\n" >>desc
echo -e "%VERSION%\n$pkgver\n" >>desc
if [ -n "$pkgdesc" ]; then
@@ -157,7 +157,7 @@ db_write_entry()
if [ -n "$_groups" ]; then
echo "%GROUPS%" >>desc
echo $_groups | tr -s ' ' '\n' >>desc
echo "" >desc
echo "" >>desc
fi
[ -n $csize ] && echo -e "%CSIZE%\n$csize\n" >>desc
[ -n $size ] && echo -e "%ISIZE%\n$size\n" >>desc
@@ -246,7 +246,7 @@ if [ $# -gt 1 ]; then
fi
else
if [ -f "$arg" ]; then
if ! tar xf "$arg" .PKGINFO 2>&1 >/dev/null; then
if ! tar tf "$arg" .PKGINFO 2>&1 >/dev/null; then
echo "error: '$arg' is not a package file, skipping"
else
echo ":: adding package '$arg'"

View File

@@ -10,7 +10,7 @@ localedir = $(datadir)/locale
DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
INCLUDES = -I$(top_srcdir)/lib/libalpm
AM_CFLAGS = -D_GNU_SOURCE $(CFLAGS)
AM_CFLAGS = -D_GNU_SOURCE
pacman_SOURCES = \
add.h add.c \

View File

@@ -19,6 +19,8 @@
* USA.
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -26,11 +28,12 @@
#include <alpm.h>
#include <alpm_list.h>
/* pacman */
#include "add.h"
#include "log.h"
#include "downloadprog.h"
#include "trans.h"
#include "add.h"
#include "conf.h"
#include "util.h"

View File

@@ -21,7 +21,7 @@
#ifndef _PM_ADD_H
#define _PM_ADD_H
#include <alpm.h>
#include <alpm_list.h>
int pacman_add(alpm_list_t *targets);

View File

@@ -19,6 +19,8 @@
* USA.
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -26,12 +28,13 @@
#include <libintl.h>
#include <alpm.h>
/* pacman */
#include "conf.h"
#include "util.h"
#include "log.h"
#include "sync.h"
#include "downloadprog.h"
#include "conf.h"
config_t *config_new()
{

View File

@@ -51,7 +51,7 @@ typedef struct __config_t {
unsigned short op_s_search;
unsigned short op_s_upgrade;
unsigned short group;
unsigned int flags;
pmtransflag_t flags;
unsigned short noask;
unsigned int ask;
} config_t;

View File

@@ -25,46 +25,66 @@
#include <stdio.h>
#include <string.h>
#include <libintl.h>
#include <alpm.h>
#include <alpm_list.h>
/* pacman */
#include "deptest.h"
#include "util.h"
#include "conf.h"
#include "log.h"
#include "sync.h"
#include "deptest.h"
extern config_t *config;
int pacman_deptest(alpm_list_t *targets)
{
int retval = 0;
pmdb_t *local;
pmpkg_t *pkg;
alpm_list_t *i, *provides;
alpm_list_t *i;
if(targets == NULL) {
return(0);
}
local = alpm_option_get_localdb();
for(i = targets; i; i = alpm_list_next(i)) {
const char *pkgname;
pkgname = alpm_list_getdata(i);
/* find this package in the local DB */
pkg = alpm_db_get_pkg(local, pkgname);
int found = 0;
pmpkg_t *pkg;
pmdepend_t *dep;
const char *target;
alpm_list_t *j, *provides;
if(!pkg) {
target = alpm_list_getdata(i);
/* splitdep modifies the string... we'll compensate for now */
char *saved_target = NULL;
saved_target = calloc(strlen(target)+1, sizeof(char));
strncpy(saved_target, target, strlen(target));
dep = alpm_splitdep(target);
pkg = alpm_db_get_pkg(alpm_option_get_localdb(), target);
if(pkg && alpm_depcmp(pkg, dep)) {
found = 1;
} else {
/* not found, can we find anything that provides this in the local DB? */
provides = alpm_db_whatprovides(local, pkgname);
if(!provides) {
/* nope, must be missing */
MSG(NL, _("requires: %s"), pkgname);
retval = 1;
provides = alpm_db_whatprovides(alpm_option_get_localdb(), target);
for(j = provides; j; j = alpm_list_next(j)) {
pmpkg_t *pkg;
pkg = alpm_list_getdata(j);
if(pkg && alpm_depcmp(pkg, dep)) {
found = 1;
break;
}
}
}
if(!found) {
MSG(NL, "%s", saved_target);
retval = 1;
}
free(saved_target);
}
return(retval);
}

View File

@@ -21,7 +21,7 @@
#ifndef _PM_DEPTEST_H
#define _PM_DEPTEST_H
#include <alpm.h>
#include <alpm_list.h>
int pacman_deptest(alpm_list_t *targets);

Some files were not shown because too many files have changed in this diff Show More