The purge option, combined with the PURGE_TARGETS variable,
allows makepkg to automatically remove commonly confliting or
removed files (e.g. /usr/share/info/dir, *.pod).
Original work: Tim Yang
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
Adds defined options to the PKGINFO file in the form of "makepkgopt =".
It may be useful to be able to add these to the pacman DB at some point
as that would allow (e.g.) checking which packages have had their docs
striped (FS#7092).
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
This prevents makepkg compressing every file when MAN_DIRS is not
supplied in makepkg.conf
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
Provides a MAN_DIRS variable in makepkg.conf which can be used
to specify folders to look for manual (man and info) pages to be
compressed. Useful for packages that install to /opt. Also
clarifies that "zipman" means "zip manuals" and covers both man
and info pages.
Original work by: Tiago Pierezan Camargo <tcamargo at gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
This is the first step in being able to automatically remove phantom
lock files.
Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: fix compilation warnings]
Signed-off-by: Dan McGee <dan@archlinux.org>
Changelogs and install files were getting extracted into the local
db folder before it was manually created. This created issues for
uses with 0077 umasks and was highlighted with the new sudo handling
of umasks (FS#12263).
This moves the local db creation to its own function which is called
before the start of package archive extraction. Also, added a check
that the folder is actually created.
Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: rename to _alpm_db_prepare()]
Signed-off-by: Dan McGee <dan@archlinux.org>
Pacman currently logs .pacnew warnings to pacman.log but a similar history
of .pacsave warnings isn't kept. The user should be able to search
pacman.log to discover when and where all .pac* files were created by
pacman.
Addresses FS#12531.
Signed-off-by: Dan McGee <dan@archlinux.org>
As reported here, man pages could no longer be built :
http://archlinux.org/pipermail/pacman-dev/2008-December/007726.html
I found the explanation here :
http://www.methods.co.nz/asciidoc/source-highlight-filter.html
"If you use a2x(1) to generate PDF you need to include the --no-xmllint
option to suppress xmllint(1) checking — the programlisting language
attribute (required by the dblatex source highlighter) is not part of the
DocBook 4 specification (but it is in the newer DocBook 5 specification)."
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
Using > or < in the provides array is wrong so make it cause an error.
Fixes FS#12540.
Also, use bash substitution rather than spawning new processes where
possible in the error checking. Move split package detection to a
better position.
Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: backport to maint]
Signed-off-by: Dan McGee <dan@archlinux.org>
The use if "! -z" to check if a string is not null is not good practice
so replace with the "-n" option. Also use the AND comparison within one
test rather than on two separate tests.
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
Allows specifying alternative build script with spaces in name
Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: backport some of the fixes to maint]
Signed-off-by: Dan McGee <dan@archlinux.org>
This will allow makepkg to work on systems like Mac OS X where the
default getopt is too old to properly handle long options.
The new parse_options function should replicate getopt's behaviour
completely.
Original work: Yun Zheng Hu <yunzheng.hu@gmail.com>
[Allan: Rewrite and bug fixes]
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
May help debug issues we come across with proxy behavior (e.g. those pesky
segfaults) as well as be informative to the user when things aren't working
quite right. Addresses FS#12396.
Signed-off-by: Dan McGee <dan@archlinux.org>
1. Do not warn people about missing arch if they are using --ignorearch.
2. Remove unneed reference to bug report about using fakeroot as little
as possible. We want to do that, bug report of not.
3. Removes superfluous warning given when building as root. The user
has already used the "--asroot" flag.
4. Move comment about skipping warning message to above where it occurs
5. Do not warn about skipping source retreval, integrety checks and
extraction when using --repackage
6. Do not warn about skipping build when using --repackage
7. Move comment about fakeroot usage to above test condition
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
Fix the issue uncovered by FS#12344. In this instance, the dotglob shopt was
being set in the build() function but never cleared, causing issues in the
remaining parts of the makepkg script.
Signed-off-by: Dan McGee <dan@archlinux.org>
The option parsing was catching any "-d" in an argument so packages
with this in their name did not work.
Also removed commented code line that appears to be inserted during
testing.
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
When the output is going to a file, glibc seems to buffer way too much
making it hard to monitor progress while tailing a file.
Signed-off-by: Simo Leone <simo@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
If the delta line doesn't match our regex, we won't go and process it,
possibly walking off the end of the string.
Signed-off-by: Dan McGee <dan@archlinux.org>
This patch slightly modifies pacman.c/_parseconfig():
See FS#12148. Now pacman prints the following error message in that case:
"error: could not register 'unstable' database (could not open database)"
I also added an error message for alpm_db_setserver() error.
I changed the "return(1);" scheme to "ret = 1; goto cleanup;" to make
sure that we free allocated memory and close open files.
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
Not only does this require less sed-magic, it also fixes FS#12286 where
fetching the revision number fails if mercurial is in compact mode.
Signed-off-by: Dan McGee <dan@archlinux.org>
We don't want a failed write to kill our whole program when we are
downloading things, so set the SIGPIPE handler to ignore when downloading
and restore any previous signal handler when we complete the download.
Signed-off-by: Dan McGee <dan@archlinux.org>
Use libfetch naming in the code in place of libdownload names. This is in
preparation for dropping support for libdownload at some point as libfetch
can run on Linux.
Signed-off-by: Dan McGee <dan@archlinux.org>
From now on -Qu is an "outdated package" filter on local database.
(This is a behaviour change.)
This patch fixes some memleaks and makes the code cleaner, for details see
my comment on FS#7884.
FS#11868 is implemented.
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
If PKGBUILD (BUILDSCRIPT) is not found, test for information from a
pipe and use that. Fixes FS#9187.
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
Do not attemp to update pkgver/pkgrel when reading a SCM based PKGBUILD
from a pipe.
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
Example usage and output :
> src/util/testdb -h
usage:
testdb [-b <pacman db>] : check the local database
testdb [-b <pacman db>] core extra ... : check the listed sync databases
> src/util/testdb
Checking the integrity of the local database in /var/lib/pacman/
> src/util/testdb core extra testing community
Checking the integrity of the sync databases in /var/lib/pacman/
missing dependency for archboot : bcm43xx-fwcutter>=006-2
missing dependency for xvattr : xfree86
missing dependency for eclipse-ve : eclipse<3.3
missing dependency for flumotion : twisted-web
missing dependency for gg2 : arts
missing dependency for man-pages-cs : groff-utf8
missing dependency for qc-usb : kernel26<2.6.26
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
This patch addresses quite a few lingering issues in the pacman-optimize
script. FS#11767 provoked this look-over and the following issues were
noticed and fixed:
* If an alternate dbroot was specified, then the lockfile location was never
updated to reflect it. The lockfile location is now set after all dbpath
initialization.
* The inclusion of a trailing slash on dbroot was problematic and led to the
following command being executed:
bsdtar -xpf /tmp/pacman-optimize.p12Q4vAUWY/pacman-db.tar.gz \
-C /var/lib/pacman/.new/
It is doubtful we meant to create a hidden directory like this below our
database root, only to go and delete it a second later and then
re-extract. Fix the whole thing by ensuring our dbpath has its trailing
slash stripped and then appending it when necessary.
* The DB extraction was performed twice for no real apparent reason. This
opens the door for extraction problems the second time around, leaving you
with no original database to fall back to. Change the behavior so we only
extract once, and then perform a directory shuffle once we verify the
checksums are correct.
* Perform an explicit sync after we drop the new database on the disk. It
should work better this way.
* Tighten up our check for a pacman lockfile and the time we create one.
There is still a possible race condition but the window is shorter.
Signed-off-by: Dan McGee <dan@archlinux.org>
This is similar to the change we made in makepkg so it is cross-platform
compatible and doesn't require coreutils.
Signed-off-by: Dan McGee <dan@archlinux.org>
We never had a call to pclose() in here before, leaving our file descriptor
in some sort of limbo state. In addition, clean up some of the other logic
such as directly calling exit(1) on a popen() failure rather than going to
our cleanup block, and handling and respecting the exit status of the
subprocess correctly.
Signed-off-by: Dan McGee <dan@archlinux.org>
Inspired by commit 7e8f1469c4, use our given
PKGEXT or SRCEXT to determine what method of compression to use on the
package we create. If the extension is invalid, this should fall back to
creating a non-compressed tar file.
Signed-off-by: Dan McGee <dan@archlinux.org>
When we do our sed edits, we really don't need every command printed out to
the terminal. Now with "make -s", the output is quite palatable.
Signed-off-by: Dan McGee <dan@archlinux.org>