Pacman-dev
Threads by month
- ----- 2026 -----
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- 7330 discussions
[pacman-dev] [PATCH] makepkg-template: add --version and some license info
by Florian Pritz 29 May '13
by Florian Pritz 29 May '13
29 May '13
Signed-off-by: Florian Pritz <bluewind(a)xinu.at>
---
scripts/makepkg-template.pl.in | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/scripts/makepkg-template.pl.in b/scripts/makepkg-template.pl.in
index 7e37799..f3eda05 100755
--- a/scripts/makepkg-template.pl.in
+++ b/scripts/makepkg-template.pl.in
@@ -1,4 +1,22 @@
#!/usr/bin/perl
+# makepkg-template - template system for makepkg
+# @configure_input@
+#
+# Copyright (c) 2013 Pacman Development Team <pacman-dev(a)archlinux.org>
+#
+# 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 of the License, 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, see <http://www.gnu.org/licenses/>.
+#
use warnings;
use strict;
use v5.10.1;
@@ -158,14 +176,27 @@ sub usage {
print gettext(" (default: use version specified in the template markers)\n");
print gettext(" --template-dir <dir> directory to search for templates\n");
printf(gettext(" (default: %s)\n"), '@TEMPLATE_DIR@');
+ print gettext(" --help, -h This help message\n");
+ print gettext(" --version Version information\n");
print "\n";
exit($exitstatus);
}
+sub version {
+ my ($exitstatus) = @_;
+ printf(gettext("makepkg-template (pacman) %s\n"), '@PACKAGE_VERSION@');
+ print gettext(
+ 'Copyright (c) 2013 Pacman Development Team <pacman-dev(a)archlinux.org>.'."\n".
+ 'This is free software; see the source for copying conditions.'."\n".
+ 'There is NO WARRANTY, to the extent permitted by law.'."\n");
+ exit($exitstatus);
+}
+
Getopt::Long::Configure ("bundling");
GetOptions(
"help" => sub {usage(0); },
"h" => sub {usage(0); },
+ "version" => sub {version(0); },
"input|p=s" => \$opts{input},
"output|o=s" => \$opts{output},
"newest|n" => \$opts{newest},
--
1.8.2.3
2
3
From: "Jason St. John" <jstjohn(a)purdue.edu>
Resolve several grammatical errors and minor formatting consistency issues
in PKGBUILD(5).
Signed-off-by: Jason St. John <jstjohn(a)purdue.edu>
---
This is the third (and hopefully final) version of this patch.
This is a resubmission of a previous patch based on Allan's feedback, which can
be found here:
https://mailman.archlinux.org/pipermail/pacman-dev/2013-April/016968.html
There are some additional changes, but they should be relatively benign.
doc/PKGBUILD.5.txt | 132 ++++++++++++++++++++++++++++-------------------------
doc/footer.txt | 2 +-
2 files changed, 70 insertions(+), 64 deletions(-)
diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt
index ea280a0..35633f6 100644
--- a/doc/PKGBUILD.5.txt
+++ b/doc/PKGBUILD.5.txt
@@ -48,10 +48,12 @@ similar to `$_basekernver`.
The version of the software as released from the author (e.g., '2.7.1').
The variable is not allowed to contain colons or hyphens.
+
-The `pkgver` variable can be automatically updated by providing a `pkgver()` function
-in the PKGBUILD that outputs the new package version. This is run after downloading
-and extracting the sources so can use those files in determining the new `pkgver`.
-This is most useful when used with sources from version control systems (see below).
+The `pkgver` variable can be automatically updated by providing a `pkgver()`
+function in the PKGBUILD that outputs the new package version.
+This is run after downloading and extracting the sources so it can use those
+files in determining the new `pkgver`.
+This is most useful when used with sources from version control systems (see
+below).
*pkgrel*::
This is the release number specific to the Arch Linux release. This
@@ -62,7 +64,8 @@ This is most useful when used with sources from version control systems (see bel
*pkgdesc*::
This should be a brief description of the package and its functionality.
- Try to keep the description to one line of text and not use the package's name.
+ Try to keep the description to one line of text and to not use the package's
+ name.
*epoch*::
Used to force the package to be seen as newer than any previous versions
@@ -75,7 +78,7 @@ This is most useful when used with sources from version control systems (see bel
*url*::
This field contains a URL that is associated with the software being
- packaged. Typically the project's website.
+ packaged. This is typically the project's web site.
*license (array)*::
This field specifies the license(s) that apply to the package.
@@ -91,13 +94,13 @@ This is most useful when used with sources from version control systems (see bel
*install*::
Specifies a special install script that is to be included in the package.
- This file should reside in the same directory as the PKGBUILD, and will
+ This file should reside in the same directory as the PKGBUILD and will
be copied into the package by makepkg. It does not need to be included
in the source array (e.g., `install=$pkgname.install`).
*changelog*::
Specifies a changelog file that is to be included in the package.
- This file should reside in the same directory as the PKGBUILD, and will
+ This file should reside in the same directory as the PKGBUILD and will
be copied into the package by makepkg. It does not need to be included
in the source array (e.g., `changelog=$pkgname.changelog`).
@@ -105,10 +108,10 @@ This is most useful when used with sources from version control systems (see bel
An array of source files required to build the package. Source files
must either reside in the same directory as the PKGBUILD, or be a
fully-qualified URL that makepkg can use to download the file.
- To make the PKGBUILD as useful as possible, use the `$pkgname` and `$pkgver`
- variables if possible when specifying the download location. Compressed files
- will be extracted automatically unless found in
- the noextract array described below.
+ To simplify the maintenance of PKGBUILDs, use the `$pkgname` and `$pkgver`
+ variables when specifying the download location, if possible.
+ Compressed files will be extracted automatically unless found in the
+ noextract array described below.
+
It is also possible to change the name of the downloaded file, which is helpful
with weird URLs and for handling multiple source files with the same
@@ -118,12 +121,12 @@ makepkg also supports building developmental versions of packages using sources
downloaded from version control systems (VCS). For more information, see
<<VCS,Using VCS Sources>> below.
+
-Files in the source array with extensions `.sig`, `.sign` or `.asc` are recognized by
-makepkg as PGP signatures and will be automatically used to verify the integrity
-of the corresponding source file.
+Files in the source array with extensions `.sig`, `.sign` or, `.asc` are
+recognized by makepkg as PGP signatures and will be automatically used to verify
+the integrity of the corresponding source file.
*noextract (array)*::
- An array of filenames corresponding to those from the source array. Files
+ An array of file names corresponding to those from the source array. Files
listed here will not be extracted with the rest of the source files. This
is useful for packages that use compressed data directly.
@@ -152,10 +155,10 @@ of the corresponding source file.
files should use `arch=('any')`.
*backup (array)*::
- An array of filenames, without preceding slashes, that
+ An array of file names, without preceding slashes, that
should be backed up if the package is removed or upgraded. This is
- commonly used for packages placing configuration files in /etc. See
- Handling Config Files in linkman:pacman[8] for more information.
+ commonly used for packages placing configuration files in '/etc'. See
+ `"Handling Config Files"` in linkman:pacman[8] for more information.
*depends (array)*::
An array of packages this package depends on to run. Entries in
@@ -168,7 +171,7 @@ of the corresponding source file.
If the dependency name appears to be a library (ends with .so), makepkg will
try to find a binary that depends on the library in the built package and
append the version needed by the binary. Appending the version yourself
-disables auto detection.
+disables automatic detection.
*makedepends (array)*::
An array of packages this package depends on to build but are not
@@ -209,7 +212,7 @@ only specific versions of a package may be provided.
+
If the provision name appears to be a library (ends with .so), makepkg will
try to find the library in the built package and append the correct
-version. Appending the version yourself disables auto detection.
+version. Appending the version yourself disables automatic detection.
*replaces (array)*::
An array of packages this package should replace. This can be used
@@ -289,13 +292,13 @@ Packaging Functions
-------------------
In addition to the above directives, PKGBUILDs require a set of functions that
-provide instructions to build and install the package. As a minimum, the PKGBUILD
-must contain a package() function which installs all the package's files into the
-packaging directory, with optional prepare(), build() and check() being used to
-create those files from source.
+provide instructions to build and install the package. As a minimum, the
+PKGBUILD must contain a `package()` function which installs all the package's
+files into the packaging directory, with optional `prepare()`, `build()`, and
+`check()` functions being used to create those files from source.
*package() Function*::
- The package() function is used to install files into the directory that
+ The `package()` function is used to install files into the directory that
will become the root directory of the built package and is run after all
the optional functions listed below. When specified in combination with
the fakeroot BUILDENV option in linkman:makepkg.conf[5], fakeroot usage
@@ -303,41 +306,41 @@ create those files from source.
be run as the user calling makepkg.
*prepare() Function*::
- An optional prepare() function can be specified in which operations that
- are to be run in order to prepare the sources for building (such as
- patching) are performed. This function is run after the source extraction
- and before the build() function and is skipped when source extraction is
- skipped.
+ An optional `prepare()` function can be specified in which operations to
+ prepare the sources for building, such as patching, are performed. This
+ function is run after the source extraction and before the `build()`
+ function. The `prepare()` function is skipped when source extraction
+ is skipped.
*build() Function*::
- The optional build() function is use to compile and/or adjust the source
- files in preparation to be installed by the package() function. This is
- directly sourced and executed by makepkg, so anything that bash or the
+ The optional `build()` function is use to compile and/or adjust the source
+ files in preparation to be installed by the `package()` function. This is
+ directly sourced and executed by makepkg, so anything that Bash or the
system has available is available for use here. Be sure any exotic
- commands used are covered by `makedepends`.
+ commands used are covered by the `makedepends` array.
+
-If you create any variables of your own in the build function, it is
-recommended to use the bash `local` keyword to scope the variable to inside
-the build function.
+If you create any variables of your own in the `build()` function, it is
+recommended to use the Bash `local` keyword to scope the variable to inside
+the `build()` function.
*check() Function*::
- An optional check() function can be specified in which a package's
- test-suite may be run. This function is run between the build() and
- package() functions. Be sure any exotic commands used are covered by
- `checkdepends`.
+ An optional `check()` function can be specified in which a package's
+ test-suite may be run. This function is run between the `build()` and
+ `package()` functions. Be sure any exotic commands used are covered by the
+ `checkdepends` array.
-All of the above variables such as `$pkgname` and `$pkgver` are available for use
-in the build function. In addition, makepkg defines the following variables for use
-during the build and install process:
+All of the above variables such as `$pkgname` and `$pkgver` are available for
+use in the `build()` function. In addition, makepkg defines the following
+variables for use during the build and install process:
*srcdir*::
- This contains the directory where makepkg extracts, or copies, all source
- files.
+ This contains the directory where makepkg extracts, or copies, all source
+ files.
*pkgdir*::
- This contains the directory where makepkg bundles the installed package
- (this directory will become the root directory of your built package).
- This variable should only be used in the package() function.
+ This contains the directory where makepkg bundles the installed package.
+ This directory will become the root directory of your built package. This
+ variable should only be used in the `package()` function.
*startdir*::
This contains the absolute path to the directory where the PKGBUILD is
@@ -362,8 +365,8 @@ An optional global directive is available when building a split package:
*pkgbase*::
The name used to refer to the group of packages in the output of makepkg
- and in the naming of source-only tarballs. If not specified, the first
- element in the `pkgname` array is used. The variable is not allowed to
+ and in the naming of source-only tarballs. If not specified, the first
+ element in the `pkgname` array is used. The variable is not allowed to
begin with a hyphen.
Install/Upgrade/Remove Scripting
@@ -377,7 +380,7 @@ self-explanatory. Note that during an upgrade operation, none of the install
or remove scripts will be called.
Scripts are passed either one or two ``full version strings'', where a full
-version string is either 'pkgver-pkgrel' or 'epoch:pkgver-pkgrel' if epoch is
+version string is either 'pkgver-pkgrel' or 'epoch:pkgver-pkgrel', if epoch is
non-zero.
*pre_install*::
@@ -415,10 +418,12 @@ reference with all of the available functions defined.
Using VCS Sources[[VCS]]
------------------------
-Building a developmental version of a package using sources from a version control
-system (VCS) is enabled by specifying the source in the form
-`source=('folder::url#fragment')`. Currently makepkg supports the `bzr`, `git`, `hg` and
-`svn` protocols.
+Building a developmental version of a package using sources from a version
+control system (VCS) is enabled by specifying the source in the form
+`source=('folder::url#fragment')`. Currently makepkg supports the Bazaar, Git,
+Subversion, and Mercurial version control systems. For other version control
+systems, manual cloning of upstream repositories must be done in the `prepare()`
+function.
The source URL is divided into three components:
@@ -427,11 +432,12 @@ The source URL is divided into three components:
source into.
*url*::
- The url to the VCS repo. This must include the the vcs in the URL protocol for
- makepkg to recognize this as a VCS source. If the protocol does not include
- the VCS name, it can be added by prefixing the URL with `vcs+`. For example,
- using a git repository over `http` would have a source URL in the form
- `git+http://...`.
+ The URL to the VCS repository. This must include the VCS in the URL protocol
+ for makepkg to recognize this as a VCS source. If the protocol does not
+ include the VCS name, it can be added by prefixing the URL with `vcs+`. For
+ example, using a Git repository over HTTPS would have a source URL in the
+ form:
+ `git+https://...`.
*fragment*::
(optional) Allows specifying a revision number or branch for makepkg to checkout
@@ -455,7 +461,7 @@ Example
-------
The following is an example PKGBUILD for the 'patch' package. For more
examples, look through the build files of your distribution's packages. For
-those using Arch Linux, consult the ABS tree.
+those using Arch Linux, consult the Arch Build System (ABS) tree.
[source,sh]
-------------------------------
diff --git a/doc/footer.txt b/doc/footer.txt
index ccb931c..af19304 100644
--- a/doc/footer.txt
+++ b/doc/footer.txt
@@ -8,7 +8,7 @@ information on pacman and its related tools.
Bugs
----
-Bugs? You must be kidding, there are no bugs in this software. But if we
+Bugs? You must be kidding; there are no bugs in this software. But if we
happen to be wrong, send us an email with as much detail as possible to
mailto:pacman-dev@archlinux.org[].
--
1.8.3
1
0
From: "Jason St. John" <jstjohn(a)purdue.edu>
Several grammatical errors and minor formatting consistency issues have
been resolved in PKGBUILD(5).
---
Ignore the patch I submitted just a few minutes ago, and use this patch instead. I
just noticed a quoting problem introduced in that patch.
This is a resubmission of a previous patch based on Allan's feedback, which can
be found here:
https://mailman.archlinux.org/pipermail/pacman-dev/2013-April/016968.html
There are some additional changes, but they should be relatively benign.
doc/PKGBUILD.5.txt | 132 ++++++++++++++++++++++++++++-------------------------
doc/footer.txt | 2 +-
2 files changed, 70 insertions(+), 64 deletions(-)
diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt
index ea280a0..2b94477 100644
--- a/doc/PKGBUILD.5.txt
+++ b/doc/PKGBUILD.5.txt
@@ -48,10 +48,12 @@ similar to `$_basekernver`.
The version of the software as released from the author (e.g., '2.7.1').
The variable is not allowed to contain colons or hyphens.
+
-The `pkgver` variable can be automatically updated by providing a `pkgver()` function
-in the PKGBUILD that outputs the new package version. This is run after downloading
-and extracting the sources so can use those files in determining the new `pkgver`.
-This is most useful when used with sources from version control systems (see below).
+The `pkgver` variable can be automatically updated by providing a `pkgver()`
+function in the PKGBUILD that outputs the new package version.
+This is run after downloading and extracting the sources so it can use those
+files in determining the new `pkgver`.
+This is most useful when used with sources from version control systems (see
+below).
*pkgrel*::
This is the release number specific to the Arch Linux release. This
@@ -62,7 +64,8 @@ This is most useful when used with sources from version control systems (see bel
*pkgdesc*::
This should be a brief description of the package and its functionality.
- Try to keep the description to one line of text and not use the package's name.
+ Try to keep the description to one line of text and to not use the package's
+ name.
*epoch*::
Used to force the package to be seen as newer than any previous versions
@@ -75,7 +78,7 @@ This is most useful when used with sources from version control systems (see bel
*url*::
This field contains a URL that is associated with the software being
- packaged. Typically the project's website.
+ packaged. This is typically the project's web site.
*license (array)*::
This field specifies the license(s) that apply to the package.
@@ -91,13 +94,13 @@ This is most useful when used with sources from version control systems (see bel
*install*::
Specifies a special install script that is to be included in the package.
- This file should reside in the same directory as the PKGBUILD, and will
+ This file should reside in the same directory as the PKGBUILD and will
be copied into the package by makepkg. It does not need to be included
in the source array (e.g., `install=$pkgname.install`).
*changelog*::
Specifies a changelog file that is to be included in the package.
- This file should reside in the same directory as the PKGBUILD, and will
+ This file should reside in the same directory as the PKGBUILD and will
be copied into the package by makepkg. It does not need to be included
in the source array (e.g., `changelog=$pkgname.changelog`).
@@ -105,10 +108,10 @@ This is most useful when used with sources from version control systems (see bel
An array of source files required to build the package. Source files
must either reside in the same directory as the PKGBUILD, or be a
fully-qualified URL that makepkg can use to download the file.
- To make the PKGBUILD as useful as possible, use the `$pkgname` and `$pkgver`
- variables if possible when specifying the download location. Compressed files
- will be extracted automatically unless found in
- the noextract array described below.
+ To simplify the maintenance of PKGBUILDs, use the `$pkgname` and `$pkgver`
+ variables when specifying the download location, if possible.
+ Compressed files will be extracted automatically unless found in the
+ noextract array described below.
+
It is also possible to change the name of the downloaded file, which is helpful
with weird URLs and for handling multiple source files with the same
@@ -118,12 +121,12 @@ makepkg also supports building developmental versions of packages using sources
downloaded from version control systems (VCS). For more information, see
<<VCS,Using VCS Sources>> below.
+
-Files in the source array with extensions `.sig`, `.sign` or `.asc` are recognized by
-makepkg as PGP signatures and will be automatically used to verify the integrity
-of the corresponding source file.
+Files in the source array with extensions `.sig`, `.sign` or, `.asc` are
+recognized by makepkg as PGP signatures and will be automatically used to verify
+the integrity of the corresponding source file.
*noextract (array)*::
- An array of filenames corresponding to those from the source array. Files
+ An array of file names corresponding to those from the source array. Files
listed here will not be extracted with the rest of the source files. This
is useful for packages that use compressed data directly.
@@ -152,10 +155,10 @@ of the corresponding source file.
files should use `arch=('any')`.
*backup (array)*::
- An array of filenames, without preceding slashes, that
+ An array of file names, without preceding slashes, that
should be backed up if the package is removed or upgraded. This is
- commonly used for packages placing configuration files in /etc. See
- Handling Config Files in linkman:pacman[8] for more information.
+ commonly used for packages placing configuration files in '/etc'. See
+ ``Handling Config Files'' in linkman:pacman[8] for more information.
*depends (array)*::
An array of packages this package depends on to run. Entries in
@@ -168,7 +171,7 @@ of the corresponding source file.
If the dependency name appears to be a library (ends with .so), makepkg will
try to find a binary that depends on the library in the built package and
append the version needed by the binary. Appending the version yourself
-disables auto detection.
+disables automatic detection.
*makedepends (array)*::
An array of packages this package depends on to build but are not
@@ -209,7 +212,7 @@ only specific versions of a package may be provided.
+
If the provision name appears to be a library (ends with .so), makepkg will
try to find the library in the built package and append the correct
-version. Appending the version yourself disables auto detection.
+version. Appending the version yourself disables automatic detection.
*replaces (array)*::
An array of packages this package should replace. This can be used
@@ -289,13 +292,13 @@ Packaging Functions
-------------------
In addition to the above directives, PKGBUILDs require a set of functions that
-provide instructions to build and install the package. As a minimum, the PKGBUILD
-must contain a package() function which installs all the package's files into the
-packaging directory, with optional prepare(), build() and check() being used to
-create those files from source.
+provide instructions to build and install the package. As a minimum, the
+PKGBUILD must contain a `package()` function which installs all the package's
+files into the packaging directory, with optional `prepare()`, `build()`, and
+`check()` functions being used to create those files from source.
*package() Function*::
- The package() function is used to install files into the directory that
+ The `package()` function is used to install files into the directory that
will become the root directory of the built package and is run after all
the optional functions listed below. When specified in combination with
the fakeroot BUILDENV option in linkman:makepkg.conf[5], fakeroot usage
@@ -303,41 +306,41 @@ create those files from source.
be run as the user calling makepkg.
*prepare() Function*::
- An optional prepare() function can be specified in which operations that
- are to be run in order to prepare the sources for building (such as
- patching) are performed. This function is run after the source extraction
- and before the build() function and is skipped when source extraction is
- skipped.
+ An optional `prepare()` function can be specified in which operations to
+ prepare the sources for building, such as patching, are performed. This
+ function is run after the source extraction and before the `build()`
+ function, and the `prepare()` function is skipped when source extraction
+ is skipped.
*build() Function*::
- The optional build() function is use to compile and/or adjust the source
- files in preparation to be installed by the package() function. This is
- directly sourced and executed by makepkg, so anything that bash or the
+ The optional `build()` function is use to compile and/or adjust the source
+ files in preparation to be installed by the `package()` function. This is
+ directly sourced and executed by makepkg, so anything that Bash or the
system has available is available for use here. Be sure any exotic
- commands used are covered by `makedepends`.
+ commands used are covered by the `makedepends` array.
+
-If you create any variables of your own in the build function, it is
-recommended to use the bash `local` keyword to scope the variable to inside
-the build function.
+If you create any variables of your own in the `build()` function, it is
+recommended to use the Bash `local` keyword to scope the variable to inside
+the `build()` function.
*check() Function*::
- An optional check() function can be specified in which a package's
- test-suite may be run. This function is run between the build() and
- package() functions. Be sure any exotic commands used are covered by
- `checkdepends`.
+ An optional `check()` function can be specified in which a package's
+ test-suite may be run. This function is run between the `build()` and
+ `package()` functions. Be sure any exotic commands used are covered by the
+ `checkdepends` array.
-All of the above variables such as `$pkgname` and `$pkgver` are available for use
-in the build function. In addition, makepkg defines the following variables for use
-during the build and install process:
+All of the above variables such as `$pkgname` and `$pkgver` are available for
+use in the `build()` function. In addition, makepkg defines the following
+variables for use during the build and install process:
*srcdir*::
- This contains the directory where makepkg extracts, or copies, all source
- files.
+ This contains the directory where makepkg extracts, or copies, all source
+ files.
*pkgdir*::
- This contains the directory where makepkg bundles the installed package
- (this directory will become the root directory of your built package).
- This variable should only be used in the package() function.
+ This contains the directory where makepkg bundles the installed package.
+ This directory will become the root directory of your built package. This
+ variable should only be used in the `package()` function.
*startdir*::
This contains the absolute path to the directory where the PKGBUILD is
@@ -362,8 +365,8 @@ An optional global directive is available when building a split package:
*pkgbase*::
The name used to refer to the group of packages in the output of makepkg
- and in the naming of source-only tarballs. If not specified, the first
- element in the `pkgname` array is used. The variable is not allowed to
+ and in the naming of source-only tarballs. If not specified, the first
+ element in the `pkgname` array is used. The variable is not allowed to
begin with a hyphen.
Install/Upgrade/Remove Scripting
@@ -377,7 +380,7 @@ self-explanatory. Note that during an upgrade operation, none of the install
or remove scripts will be called.
Scripts are passed either one or two ``full version strings'', where a full
-version string is either 'pkgver-pkgrel' or 'epoch:pkgver-pkgrel' if epoch is
+version string is either 'pkgver-pkgrel' or 'epoch:pkgver-pkgrel', if epoch is
non-zero.
*pre_install*::
@@ -415,10 +418,12 @@ reference with all of the available functions defined.
Using VCS Sources[[VCS]]
------------------------
-Building a developmental version of a package using sources from a version control
-system (VCS) is enabled by specifying the source in the form
-`source=('folder::url#fragment')`. Currently makepkg supports the `bzr`, `git`, `hg` and
-`svn` protocols.
+Building a developmental version of a package using sources from a version
+control system (VCS) is enabled by specifying the source in the form
+`source=('folder::url#fragment')`. Currently makepkg supports the Bazaar, Git,
+Subversion, and Mercurial version control systems. For other version control
+systems, manual cloning of upstream repositories must be done in the `prepare()`
+function.
The source URL is divided into three components:
@@ -427,11 +432,12 @@ The source URL is divided into three components:
source into.
*url*::
- The url to the VCS repo. This must include the the vcs in the URL protocol for
- makepkg to recognize this as a VCS source. If the protocol does not include
- the VCS name, it can be added by prefixing the URL with `vcs+`. For example,
- using a git repository over `http` would have a source URL in the form
- `git+http://...`.
+ The URL to the VCS repository. This must include the VCS in the URL protocol
+ for makepkg to recognize this as a VCS source. If the protocol does not
+ include the VCS name, it can be added by prefixing the URL with `vcs+`. For
+ example, using a Git repository over HTTPS would have a source URL in the
+ form:
+ `git+https://...`.
*fragment*::
(optional) Allows specifying a revision number or branch for makepkg to checkout
@@ -455,7 +461,7 @@ Example
-------
The following is an example PKGBUILD for the 'patch' package. For more
examples, look through the build files of your distribution's packages. For
-those using Arch Linux, consult the ABS tree.
+those using Arch Linux, consult the Arch Build System (ABS) tree.
[source,sh]
-------------------------------
diff --git a/doc/footer.txt b/doc/footer.txt
index ccb931c..af19304 100644
--- a/doc/footer.txt
+++ b/doc/footer.txt
@@ -8,7 +8,7 @@ information on pacman and its related tools.
Bugs
----
-Bugs? You must be kidding, there are no bugs in this software. But if we
+Bugs? You must be kidding; there are no bugs in this software. But if we
happen to be wrong, send us an email with as much detail as possible to
mailto:pacman-dev@archlinux.org[].
--
1.8.3
2
1
From: "Jason St. John" <jstjohn(a)purdue.edu>
Resolve several grammatical errors and minor formatting consistency issues
in pacman(8). Generalize the "FTP servers" and package file extension
information.
Signed-off-by: Jason St. John <jstjohn(a)purdue.edu>
---
This is a resubmission based on Dave's feedback.
doc/pacman.8.txt | 146 ++++++++++++++++++++++++++++---------------------------
1 file changed, 74 insertions(+), 72 deletions(-)
diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt
index 36b5617..1cc1eaa 100644
--- a/doc/pacman.8.txt
+++ b/doc/pacman.8.txt
@@ -17,17 +17,17 @@ Description
-----------
Pacman is a package management utility that tracks installed packages on a Linux
system. It features dependency support, package groups, install and uninstall
-hooks, and the ability to sync your local machine with a remote ftp server to
+hooks, and the ability to sync your local machine with a remote repository to
automatically upgrade packages. Pacman packages are a zipped tar format.
-Since version 3.0.0, pacman has been the frontend to linkman:libalpm[3], the
+Since version 3.0.0, pacman has been the front-end to linkman:libalpm[3], the
``Arch Linux Package Management'' library. This library allows alternative
-front ends to be written (for instance, a GUI front end).
+front-ends to be written (for instance, a GUI front-end).
Invoking pacman involves specifying an operation with any potential options and
-targets to operate on. A 'target' is usually a package name, filename, URL, or
+targets to operate on. A 'target' is usually a package name, file name, URL, or
a search string. Targets can be provided as command line arguments.
-Additionally, if stdin is not from a terminal and a single dash (-) is passed
+Additionally, if stdin is not from a terminal and a single hyphen (-) is passed
as an argument, targets will be read from stdin.
@@ -44,7 +44,7 @@ Operations
packages and their files, as well as meta-information about individual
packages (dependencies, conflicts, install date, build date, size). This
can be run against the local package database or can be used on
- individual '.tar.gz' packages. In the first case, if no package names
+ individual package files. In the first case, if no package names
are provided in the command line, all installed packages will be
queried. Additionally, various filters can be applied on the package
list. See <<QO,Query Options>> below.
@@ -58,19 +58,19 @@ Operations
See <<RO,Remove Options>> below.
*-S, \--sync*::
- Synchronize packages. Packages are installed directly from the ftp
- servers, including all dependencies required to run the packages. For
+ Synchronize packages. Packages are installed directly from the remote
+ repositories, including all dependencies required to run the packages. For
example, `pacman -S qt` will download and install qt and all the
- packages it depends on. If a package name exists in more than one repo, the
- repo can be explicitly specified to clarify the package to install:
- `pacman -S testing/qt`. You can also specify version requirements:
- `pacman -S "bash>=3.2"`. (Quotes are needed, otherwise your shell
- interprets ">" as redirection to file.)
+ packages it depends on. If a package name exists in more than one
+ repository, the repository can be explicitly specified to clarify the
+ package to install: `pacman -S testing/qt`. You can also specify version
+ requirements: `pacman -S "bash>=3.2"`. Quotes are needed, otherwise the
+ shell interprets ">" as redirection to a file.
+
In addition to packages, groups can be specified as well. For example, if
gnome is a defined package group, then `pacman -S gnome` will provide a
prompt allowing you to select which packages to install from a numbered list.
-The package selection is specified using a space and/or comma separated list of
+The package selection is specified using a space- and/or comma-separated list of
package numbers. Sequential packages may be selected by specifying the first
and last package numbers separated by a hyphen (`-`). Excluding packages is
achieved by prefixing a number or range of numbers with a caret (`^`).
@@ -81,7 +81,7 @@ provide the same functionality as foo will be searched for. If any package is
found, it will be installed. A selection prompt is provided if multiple packages
providing foo are found.
+
-You can also use `pacman -Su` to upgrade all packages that are out of date. See
+You can also use `pacman -Su` to upgrade all packages that are out-of-date. See
<<SO,Sync Options>> below. When upgrading, pacman performs version comparison
to determine which packages need upgrading. This behavior operates as follows:
@@ -91,7 +91,7 @@ to determine which packages need upgrading. This behavior operates as follows:
1 < 1.0 < 1.1 < 1.1.1 < 1.2 < 2.0 < 3.0.0
+
Additionally, version strings can have an 'epoch' value defined that will
-overrule any version comparison (unless the epoch values are equal). This is
+overrule any version comparison, unless the epoch values are equal. This is
specified in an `epoch:version-rel` format. For example, `2:1.0-1` is always
greater than `1:3.6-1`.
@@ -104,16 +104,16 @@ greater than `1:3.6-1`.
*-U, \--upgrade*::
Upgrade or add package(s) to the system and install the required
- dependencies from sync repos. Either a URL or file path can be
+ dependencies from sync repositories. Either a URL or file path can be
specified. This is a ``remove-then-add'' process. See <<UO,Upgrade
Options>> below; also see <<HCF,Handling Config Files>> for an explanation
- on how pacman takes care of config files.
+ on how pacman takes care of configuration files.
*-V, \--version*::
Display version and exit.
*-h, \--help*::
- Display syntax for the given operation. If no operation was supplied
+ Display syntax for the given operation. If no operation was supplied,
then the general syntax is shown.
@@ -121,16 +121,17 @@ Options
-------
*-b, \--dbpath* <path>::
Specify an alternative database location (a typical default is
- +{localstatedir}/lib/pacman+). This should not be used unless you know what you are
- doing. *NOTE*: if specified, this is an absolute path and the root path is
+ +{localstatedir}/lib/pacman+). This should not be used unless you know what
+ you are doing.
+ *NOTE*: if specified, this is an absolute path, and the root path is
not automatically prepended.
*-r, \--root* <path>::
Specify an alternative installation root (default is `/`). This should
not 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 that is "owned" by another system.
- *NOTE*: if database path or logfile are not specified on either the
+ temporarily mounted partition that is "owned" by another system.
+ *NOTE*: If database path or log file are not specified on either the
command line or in linkman:pacman.conf[5], their default location will
be inside this root path.
@@ -142,14 +143,15 @@ Options
*\--cachedir* <dir>::
Specify an alternative package cache location (a typical default is
- +{localstatedir}/cache/pacman/pkg+). Multiple cache directories can be specified,
- and they are tried in the order they are passed to pacman. *NOTE*: this
- is an absolute path, the root path is not automatically prepended.
+ +{localstatedir}/cache/pacman/pkg+). Multiple cache directories can be
+ specified, and they are tried in the order they are passed to pacman.
+ *NOTE*: This is an absolute path, and the root path is not automatically
+ prepended.
*\--color* <when>::
- Specify when to enable coloring, can be 'always', 'never' or 'auto'. Always
- forces colours on, never forces colours off, and auto only automatically enables
- colours when outputting onto a tty.
+ Specify when to enable coloring. Valid options are 'always', 'never', or
+ 'auto'. 'always' forces colors on; 'never' forces colors off; and 'auto' only
+ automatically enables colors when outputting onto a tty.
*\--config* <file>::
Specify an alternate configuration file.
@@ -163,8 +165,8 @@ Options
typical default is +{sysconfdir}/pacman.d/gnupg+). This directory should contain
two files: `pubring.gpg` and `trustdb.gpg`. `pubring.gpg` holds the public keys
of all packagers. `trustdb.gpg` contains a so-called trust database, which
- specifies that the keys are authentic and trusted. *NOTE*: this is an absolute
- path, the root path is not automatically prepended.
+ specifies that the keys are authentic and trusted. *NOTE*: This is an absolute
+ path, and the root path is not automatically prepended.
*\--logfile* <file>::
Specify an alternate log file. This is an absolute path, regardless of
@@ -183,7 +185,7 @@ Transaction Options (apply to '-S', '-R' and '-U')
system. Specify this option twice to skip all dependency checks.
*\--dbonly*::
- Adds/Removes the database entry only, leaves all files in place.
+ Adds/removes the database entry only, leaving all files in place.
*\--noprogressbar*::
Do not show a progress bar when downloading files. This can be useful
@@ -197,12 +199,12 @@ Transaction Options (apply to '-S', '-R' and '-U')
Only print the targets instead of performing the actual operation (sync,
remove or upgrade). Use '\--print-format' to specify how targets are
displayed. The default format string is "%l", which displays URLs with
- '-S', filenames with '-U' and pkgname-pkgver with '-R'.
+ '-S', file names with '-U', and pkgname-pkgver with '-R'.
*\--print-format* <format>::
Specify a printf-like format to control the output of the '\--print'
operation. The possible attributes are: %n for pkgname, %v for pkgver,
- %l for location, %r for repo and %s for size.
+ %l for location, %r for repo, and %s for size.
Upgrade Options (apply to '-S' and '-U')[[UO]]
--------------------------------------------
@@ -217,7 +219,7 @@ Upgrade Options (apply to '-S' and '-U')[[UO]]
*\--asdeps*::
Install packages non-explicitly; in other words, fake their install reason
to be installed as a dependency. This is useful for makepkg and other
- build from source tools that need to install dependencies before building
+ build-from-source tools that need to install dependencies before building
the package.
*\--asexplicit*::
@@ -232,12 +234,12 @@ Upgrade Options (apply to '-S' and '-U')[[UO]]
with a comma.
*\--ignoregroup* <group>::
- Directs pacman to ignore upgrades of all packages in 'group' even if
+ Directs pacman to ignore upgrades of all packages in 'group', even if
there is one available. Multiple groups can be specified by
separating them with a comma.
*\--needed*::
- Do not reinstall the targets that are already up to date.
+ Do not reinstall the targets that are already up-to-date.
Query Options[[QO]]
@@ -269,8 +271,8 @@ Query Options[[QO]]
*-k \--check*::
Check that all files owned by the given package(s) are present on the
system. If packages are not specified or filter flags are not provided,
- check all installed packages. Specifying this option twice will perform
- more detailed file checking (including permissions, file sizes and
+ check all installed packages. Specifying this option twice will perform
+ more detailed file checking (including permissions, file sizes, and
modification times) for packages that contain the needed mtree file.
*-l, \--list*::
@@ -279,16 +281,16 @@ Query Options[[QO]]
*-m, \--foreign*::
Restrict or filter output to packages that were not found in the sync
- database(s). Typically these are packages that were downloaded manually
+ database(s). Typically these are packages that were downloaded manually
and installed with '\--upgrade'.
*-n, \--native*::
Restrict or filter output to packages that are found in the sync
- database(s). This is the inverse filter of '\--foreign'.
+ database(s). This is the inverse filter of '\--foreign'.
*-o, \--owns* <file>::
Search for packages that own the specified file(s). The path can be
- relative or absolute and one or more files can be specified.
+ relative or absolute, and one or more files can be specified.
*-p, \--file*::
Signifies that the package supplied on the command line is a file and
@@ -296,8 +298,8 @@ Query Options[[QO]]
This is useful in combination with '\--info' and '\--list'.
*-q, \--quiet*::
- Show less information for certain query operations. (This is useful when
- pacman's output is processed in a script.) Search will only show package
+ Show less information for certain query operations. This is useful when
+ pacman's output is processed in a script. Search will only show package
names and not version, group, and description information; owns will
only show package names instead of "file is owned by pkg" messages; group
will only show package names and omit group names; list will only show
@@ -315,9 +317,9 @@ Query Options[[QO]]
installed package.
*-u, \--upgrades*::
- Restrict or filter output to packages that are out of date on the local
- system. (Only package versions are used to find outdated packages,
- replacements are not checked here.) This option works best if the sync
+ Restrict or filter output to packages that are out-of-date on the local
+ system. Only package versions are used to find outdated packages;
+ replacements are not checked here. This option works best if the sync
database is refreshed using '-Sy'.
@@ -325,19 +327,19 @@ Remove Options[[RO]]
--------------------
*-c, \--cascade*::
Remove all target packages, as well as all packages that depend on one
- or more target packages. This operation is recursive, and must be used
- with care since it can remove many potentially needed packages.
+ or more target packages. This operation is recursive and must be used
+ with care, since it can remove many potentially needed packages.
*-n, \--nosave*::
Instructs pacman to ignore file backup designations. Normally, when a
- file is removed from the system the database is checked to see if the
+ file is removed from the system, the database is checked to see if the
file should be renamed with a '.pacsave' extension.
*-s, \--recursive*::
Remove each target specified including all of their dependencies, provided
that (A) they are not required by other packages; and (B) they were not
explicitly installed by the user. This operation is recursive and analogous
- to a backwards '\--sync' operation, and helps keep a clean system without
+ to a backwards '\--sync' operation, and it helps keep a clean system without
orphans. If you want to omit condition (B), pass this option twice.
*-u, \--unneeded*::
@@ -352,7 +354,7 @@ Sync Options[[SO]]
Remove packages that are no longer installed from the cache as well as
currently unused sync databases to free up disk space. When pacman
downloads packages, it saves them in a cache directory. In addition,
- databases are saved for every sync DB you download from, and are not
+ databases are saved for every sync DB you download from and are not
deleted even if they are removed from the configuration file
linkman:pacman.conf[5]. Use one '\--clean' switch to only remove
packages that are no longer installed; use two to remove all files
@@ -377,9 +379,9 @@ linkman:pacman.conf[5].
can be specified on the command line.
*-q, \--quiet*::
- Show less information for certain sync operations. (This is useful when
- pacman's output is processed in a script.) Search will only show package
- names and not repo, version, group, and description information; list
+ Show less information for certain sync operations. This is useful when
+ pacman's output is processed in a script. Search will only show package
+ names and not repository, version, group, and description information; list
will only show package names and omit databases and versions; group will
only show package names and omit group names.
@@ -390,16 +392,16 @@ linkman:pacman.conf[5].
be returned.
*-u, \--sysupgrade*::
- Upgrades all packages that are out of date. Each currently-installed
+ Upgrades all packages that are out-of-date. Each currently-installed
package will be examined and upgraded if a newer package exists. A
- report of all packages to upgrade will be presented and the operation
+ report of all packages to upgrade will be presented, and the operation
will not proceed without user confirmation. Dependencies are
automatically resolved at this level and will be installed/upgraded if
necessary.
+
-Pass this option twice to enable package downgrade; in this case pacman will
-select sync packages whose version does not match with the local version. This
-can be useful when the user switches from a testing repo to a stable one.
+Pass this option twice to enable package downgrades; in this case, pacman will
+select sync packages whose versions do not match with the local versions. This
+can be useful when the user switches from a testing repository to a stable one.
+
Additional targets can also be specified manually, so that '-Su foo' will do a
system upgrade and install/upgrade the foo package in the same operation.
@@ -411,17 +413,17 @@ system upgrade and install/upgrade the foo package in the same operation.
Download a fresh copy of the master package list from the server(s)
defined in linkman:pacman.conf[5]. This should typically be used each time
you use '\--sysupgrade' or '-u'. Passing two '\--refresh' or '-y' flags
- will force a refresh of all package lists even if they appear to be up
- to date.
+ will force a refresh of all package lists, even if they appear to be up-
+ to-date.
Handling Config Files[[HCF]]
----------------------------
-Pacman uses the same logic as rpm to determine action against files that are
-designated to be backed up. During an upgrade, 3 md5 hashes are used for each
-backup file to determine the required action: one for the original file
-installed, one for the new file that's about to be installed, and one for the
-actual file existing on the filesystem. After comparing these 3 hashes, the
+Pacman uses the same logic as 'rpm' to determine action against files that are
+designated to be backed up. During an upgrade, three MD5 hashes are used for
+each backup file to determine the required action: one for the original file
+installed, one for the new file that is about to be installed, and one for the
+actual file existing on the file system. After comparing these three hashes, the
follow scenarios can result:
original=X, current=X, new=X::
@@ -429,13 +431,13 @@ original=X, current=X, new=X::
new file.
original=X, current=X, new=Y::
- The current file is the same as the original but the new one differs.
+ The current file is the same as the original, but the new one differs.
Since the user did not ever modify the file, and the new one may contain
- improvements or bugfixes, install the new file.
+ improvements or bug fixes, install the new file.
original=X, current=Y, new=X::
Both package versions contain the exact same file, but the one on the
- filesystem has been modified. Leave the current file in place.
+ file system has been modified. Leave the current file in place.
original=X, current=Y, new=Y::
The new file is identical to the current file. Install the new file.
@@ -446,8 +448,8 @@ original=X, current=Y, new=Z::
necessary changes into the original file.
original=NULL, current=Y, new=Z::
- Package was not previously installed and the file already exists on the
- filesystem. Save the current file with a '.pacorig' extension, install the
+ The package was not previously installed, and the file already exists on the
+ file system. Save the current file with a '.pacorig' extension, install the
new file, and warn the user.
--
1.8.3
1
0
From: "Jason St. John" <jstjohn(a)purdue.edu>
Several grammatical errors and minor formatting consistency issues have
been resolved in pacman(8).
Signed-off-by: Jason St. John <jstjohn(a)purdue.edu>
---
doc/pacman.8.txt | 144 ++++++++++++++++++++++++++++---------------------------
1 file changed, 73 insertions(+), 71 deletions(-)
diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt
index 36b5617..00a4ef9 100644
--- a/doc/pacman.8.txt
+++ b/doc/pacman.8.txt
@@ -17,17 +17,17 @@ Description
-----------
Pacman is a package management utility that tracks installed packages on a Linux
system. It features dependency support, package groups, install and uninstall
-hooks, and the ability to sync your local machine with a remote ftp server to
+hooks, and the ability to sync your local machine with a remote FTP server to
automatically upgrade packages. Pacman packages are a zipped tar format.
-Since version 3.0.0, pacman has been the frontend to linkman:libalpm[3], the
+Since version 3.0.0, pacman has been the front-end to linkman:libalpm[3], the
``Arch Linux Package Management'' library. This library allows alternative
-front ends to be written (for instance, a GUI front end).
+front-ends to be written (for instance, a GUI front-end).
Invoking pacman involves specifying an operation with any potential options and
-targets to operate on. A 'target' is usually a package name, filename, URL, or
+targets to operate on. A 'target' is usually a package name, file name, URL, or
a search string. Targets can be provided as command line arguments.
-Additionally, if stdin is not from a terminal and a single dash (-) is passed
+Additionally, if stdin is not from a terminal and a single hyphen (-) is passed
as an argument, targets will be read from stdin.
@@ -44,7 +44,7 @@ Operations
packages and their files, as well as meta-information about individual
packages (dependencies, conflicts, install date, build date, size). This
can be run against the local package database or can be used on
- individual '.tar.gz' packages. In the first case, if no package names
+ individual '.tar.xz' packages. In the first case, if no package names
are provided in the command line, all installed packages will be
queried. Additionally, various filters can be applied on the package
list. See <<QO,Query Options>> below.
@@ -58,19 +58,19 @@ Operations
See <<RO,Remove Options>> below.
*-S, \--sync*::
- Synchronize packages. Packages are installed directly from the ftp
+ Synchronize packages. Packages are installed directly from the FTP
servers, including all dependencies required to run the packages. For
example, `pacman -S qt` will download and install qt and all the
- packages it depends on. If a package name exists in more than one repo, the
- repo can be explicitly specified to clarify the package to install:
- `pacman -S testing/qt`. You can also specify version requirements:
- `pacman -S "bash>=3.2"`. (Quotes are needed, otherwise your shell
- interprets ">" as redirection to file.)
+ packages it depends on. If a package name exists in more than one
+ repository, the repository can be explicitly specified to clarify the
+ package to install: `pacman -S testing/qt`. You can also specify version
+ requirements: `pacman -S "bash>=3.2"`. Quotes are needed, otherwise the
+ shell interprets ">" as redirection to a file.
+
In addition to packages, groups can be specified as well. For example, if
gnome is a defined package group, then `pacman -S gnome` will provide a
prompt allowing you to select which packages to install from a numbered list.
-The package selection is specified using a space and/or comma separated list of
+The package selection is specified using a space- and/or comma-separated list of
package numbers. Sequential packages may be selected by specifying the first
and last package numbers separated by a hyphen (`-`). Excluding packages is
achieved by prefixing a number or range of numbers with a caret (`^`).
@@ -81,7 +81,7 @@ provide the same functionality as foo will be searched for. If any package is
found, it will be installed. A selection prompt is provided if multiple packages
providing foo are found.
+
-You can also use `pacman -Su` to upgrade all packages that are out of date. See
+You can also use `pacman -Su` to upgrade all packages that are out-of-date. See
<<SO,Sync Options>> below. When upgrading, pacman performs version comparison
to determine which packages need upgrading. This behavior operates as follows:
@@ -91,7 +91,7 @@ to determine which packages need upgrading. This behavior operates as follows:
1 < 1.0 < 1.1 < 1.1.1 < 1.2 < 2.0 < 3.0.0
+
Additionally, version strings can have an 'epoch' value defined that will
-overrule any version comparison (unless the epoch values are equal). This is
+overrule any version comparison, unless the epoch values are equal. This is
specified in an `epoch:version-rel` format. For example, `2:1.0-1` is always
greater than `1:3.6-1`.
@@ -104,16 +104,16 @@ greater than `1:3.6-1`.
*-U, \--upgrade*::
Upgrade or add package(s) to the system and install the required
- dependencies from sync repos. Either a URL or file path can be
+ dependencies from sync repositories. Either a URL or file path can be
specified. This is a ``remove-then-add'' process. See <<UO,Upgrade
Options>> below; also see <<HCF,Handling Config Files>> for an explanation
- on how pacman takes care of config files.
+ on how pacman takes care of configuration files.
*-V, \--version*::
Display version and exit.
*-h, \--help*::
- Display syntax for the given operation. If no operation was supplied
+ Display syntax for the given operation. If no operation was supplied,
then the general syntax is shown.
@@ -121,16 +121,17 @@ Options
-------
*-b, \--dbpath* <path>::
Specify an alternative database location (a typical default is
- +{localstatedir}/lib/pacman+). This should not be used unless you know what you are
- doing. *NOTE*: if specified, this is an absolute path and the root path is
+ +{localstatedir}/lib/pacman+). This should not be used unless you know what
+ you are doing.
+ *NOTE*: if specified, this is an absolute path, and the root path is
not automatically prepended.
*-r, \--root* <path>::
Specify an alternative installation root (default is `/`). This should
not 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 that is "owned" by another system.
- *NOTE*: if database path or logfile are not specified on either the
+ temporarily mounted partition that is "owned" by another system.
+ *NOTE*: If database path or log file are not specified on either the
command line or in linkman:pacman.conf[5], their default location will
be inside this root path.
@@ -142,14 +143,15 @@ Options
*\--cachedir* <dir>::
Specify an alternative package cache location (a typical default is
- +{localstatedir}/cache/pacman/pkg+). Multiple cache directories can be specified,
- and they are tried in the order they are passed to pacman. *NOTE*: this
- is an absolute path, the root path is not automatically prepended.
+ +{localstatedir}/cache/pacman/pkg+). Multiple cache directories can be
+ specified, and they are tried in the order they are passed to pacman.
+ *NOTE*: This is an absolute path, and the root path is not automatically
+ prepended.
*\--color* <when>::
- Specify when to enable coloring, can be 'always', 'never' or 'auto'. Always
- forces colours on, never forces colours off, and auto only automatically enables
- colours when outputting onto a tty.
+ Specify when to enable coloring. Valid options are 'always', 'never', or
+ 'auto'. 'always' forces colors on; 'never' forces colors off; and 'auto' only
+ automatically enables colors when outputting onto a tty.
*\--config* <file>::
Specify an alternate configuration file.
@@ -163,8 +165,8 @@ Options
typical default is +{sysconfdir}/pacman.d/gnupg+). This directory should contain
two files: `pubring.gpg` and `trustdb.gpg`. `pubring.gpg` holds the public keys
of all packagers. `trustdb.gpg` contains a so-called trust database, which
- specifies that the keys are authentic and trusted. *NOTE*: this is an absolute
- path, the root path is not automatically prepended.
+ specifies that the keys are authentic and trusted. *NOTE*: This is an absolute
+ path, and the root path is not automatically prepended.
*\--logfile* <file>::
Specify an alternate log file. This is an absolute path, regardless of
@@ -183,7 +185,7 @@ Transaction Options (apply to '-S', '-R' and '-U')
system. Specify this option twice to skip all dependency checks.
*\--dbonly*::
- Adds/Removes the database entry only, leaves all files in place.
+ Adds/removes the database entry only, leaving all files in place.
*\--noprogressbar*::
Do not show a progress bar when downloading files. This can be useful
@@ -197,12 +199,12 @@ Transaction Options (apply to '-S', '-R' and '-U')
Only print the targets instead of performing the actual operation (sync,
remove or upgrade). Use '\--print-format' to specify how targets are
displayed. The default format string is "%l", which displays URLs with
- '-S', filenames with '-U' and pkgname-pkgver with '-R'.
+ '-S', file names with '-U', and pkgname-pkgver with '-R'.
*\--print-format* <format>::
Specify a printf-like format to control the output of the '\--print'
operation. The possible attributes are: %n for pkgname, %v for pkgver,
- %l for location, %r for repo and %s for size.
+ %l for location, %r for repo, and %s for size.
Upgrade Options (apply to '-S' and '-U')[[UO]]
--------------------------------------------
@@ -217,7 +219,7 @@ Upgrade Options (apply to '-S' and '-U')[[UO]]
*\--asdeps*::
Install packages non-explicitly; in other words, fake their install reason
to be installed as a dependency. This is useful for makepkg and other
- build from source tools that need to install dependencies before building
+ build-from-source tools that need to install dependencies before building
the package.
*\--asexplicit*::
@@ -232,12 +234,12 @@ Upgrade Options (apply to '-S' and '-U')[[UO]]
with a comma.
*\--ignoregroup* <group>::
- Directs pacman to ignore upgrades of all packages in 'group' even if
+ Directs pacman to ignore upgrades of all packages in 'group', even if
there is one available. Multiple groups can be specified by
separating them with a comma.
*\--needed*::
- Do not reinstall the targets that are already up to date.
+ Do not reinstall the targets that are already up-to-date.
Query Options[[QO]]
@@ -269,8 +271,8 @@ Query Options[[QO]]
*-k \--check*::
Check that all files owned by the given package(s) are present on the
system. If packages are not specified or filter flags are not provided,
- check all installed packages. Specifying this option twice will perform
- more detailed file checking (including permissions, file sizes and
+ check all installed packages. Specifying this option twice will perform
+ more detailed file checking (including permissions, file sizes, and
modification times) for packages that contain the needed mtree file.
*-l, \--list*::
@@ -279,16 +281,16 @@ Query Options[[QO]]
*-m, \--foreign*::
Restrict or filter output to packages that were not found in the sync
- database(s). Typically these are packages that were downloaded manually
+ database(s). Typically these are packages that were downloaded manually
and installed with '\--upgrade'.
*-n, \--native*::
Restrict or filter output to packages that are found in the sync
- database(s). This is the inverse filter of '\--foreign'.
+ database(s). This is the inverse filter of '\--foreign'.
*-o, \--owns* <file>::
Search for packages that own the specified file(s). The path can be
- relative or absolute and one or more files can be specified.
+ relative or absolute, and one or more files can be specified.
*-p, \--file*::
Signifies that the package supplied on the command line is a file and
@@ -296,8 +298,8 @@ Query Options[[QO]]
This is useful in combination with '\--info' and '\--list'.
*-q, \--quiet*::
- Show less information for certain query operations. (This is useful when
- pacman's output is processed in a script.) Search will only show package
+ Show less information for certain query operations. This is useful when
+ pacman's output is processed in a script. Search will only show package
names and not version, group, and description information; owns will
only show package names instead of "file is owned by pkg" messages; group
will only show package names and omit group names; list will only show
@@ -315,9 +317,9 @@ Query Options[[QO]]
installed package.
*-u, \--upgrades*::
- Restrict or filter output to packages that are out of date on the local
- system. (Only package versions are used to find outdated packages,
- replacements are not checked here.) This option works best if the sync
+ Restrict or filter output to packages that are out-of-date on the local
+ system. Only package versions are used to find outdated packages;
+ replacements are not checked here. This option works best if the sync
database is refreshed using '-Sy'.
@@ -325,19 +327,19 @@ Remove Options[[RO]]
--------------------
*-c, \--cascade*::
Remove all target packages, as well as all packages that depend on one
- or more target packages. This operation is recursive, and must be used
- with care since it can remove many potentially needed packages.
+ or more target packages. This operation is recursive and must be used
+ with care, since it can remove many potentially needed packages.
*-n, \--nosave*::
Instructs pacman to ignore file backup designations. Normally, when a
- file is removed from the system the database is checked to see if the
+ file is removed from the system, the database is checked to see if the
file should be renamed with a '.pacsave' extension.
*-s, \--recursive*::
Remove each target specified including all of their dependencies, provided
that (A) they are not required by other packages; and (B) they were not
explicitly installed by the user. This operation is recursive and analogous
- to a backwards '\--sync' operation, and helps keep a clean system without
+ to a backwards '\--sync' operation, and it helps keep a clean system without
orphans. If you want to omit condition (B), pass this option twice.
*-u, \--unneeded*::
@@ -352,7 +354,7 @@ Sync Options[[SO]]
Remove packages that are no longer installed from the cache as well as
currently unused sync databases to free up disk space. When pacman
downloads packages, it saves them in a cache directory. In addition,
- databases are saved for every sync DB you download from, and are not
+ databases are saved for every sync DB you download from and are not
deleted even if they are removed from the configuration file
linkman:pacman.conf[5]. Use one '\--clean' switch to only remove
packages that are no longer installed; use two to remove all files
@@ -377,9 +379,9 @@ linkman:pacman.conf[5].
can be specified on the command line.
*-q, \--quiet*::
- Show less information for certain sync operations. (This is useful when
- pacman's output is processed in a script.) Search will only show package
- names and not repo, version, group, and description information; list
+ Show less information for certain sync operations. This is useful when
+ pacman's output is processed in a script. Search will only show package
+ names and not repository, version, group, and description information; list
will only show package names and omit databases and versions; group will
only show package names and omit group names.
@@ -390,16 +392,16 @@ linkman:pacman.conf[5].
be returned.
*-u, \--sysupgrade*::
- Upgrades all packages that are out of date. Each currently-installed
+ Upgrades all packages that are out-of-date. Each currently-installed
package will be examined and upgraded if a newer package exists. A
- report of all packages to upgrade will be presented and the operation
+ report of all packages to upgrade will be presented, and the operation
will not proceed without user confirmation. Dependencies are
automatically resolved at this level and will be installed/upgraded if
necessary.
+
-Pass this option twice to enable package downgrade; in this case pacman will
-select sync packages whose version does not match with the local version. This
-can be useful when the user switches from a testing repo to a stable one.
+Pass this option twice to enable package downgrades; in this case, pacman will
+select sync packages whose versions do not match with the local versions. This
+can be useful when the user switches from a testing repository to a stable one.
+
Additional targets can also be specified manually, so that '-Su foo' will do a
system upgrade and install/upgrade the foo package in the same operation.
@@ -411,17 +413,17 @@ system upgrade and install/upgrade the foo package in the same operation.
Download a fresh copy of the master package list from the server(s)
defined in linkman:pacman.conf[5]. This should typically be used each time
you use '\--sysupgrade' or '-u'. Passing two '\--refresh' or '-y' flags
- will force a refresh of all package lists even if they appear to be up
- to date.
+ will force a refresh of all package lists, even if they appear to be up-
+ to-date.
Handling Config Files[[HCF]]
----------------------------
-Pacman uses the same logic as rpm to determine action against files that are
-designated to be backed up. During an upgrade, 3 md5 hashes are used for each
-backup file to determine the required action: one for the original file
-installed, one for the new file that's about to be installed, and one for the
-actual file existing on the filesystem. After comparing these 3 hashes, the
+Pacman uses the same logic as 'rpm' to determine action against files that are
+designated to be backed up. During an upgrade, three MD5 hashes are used for
+each backup file to determine the required action: one for the original file
+installed, one for the new file that is about to be installed, and one for the
+actual file existing on the file system. After comparing these three hashes, the
follow scenarios can result:
original=X, current=X, new=X::
@@ -429,13 +431,13 @@ original=X, current=X, new=X::
new file.
original=X, current=X, new=Y::
- The current file is the same as the original but the new one differs.
+ The current file is the same as the original, but the new one differs.
Since the user did not ever modify the file, and the new one may contain
- improvements or bugfixes, install the new file.
+ improvements or bug fixes, install the new file.
original=X, current=Y, new=X::
Both package versions contain the exact same file, but the one on the
- filesystem has been modified. Leave the current file in place.
+ file system has been modified. Leave the current file in place.
original=X, current=Y, new=Y::
The new file is identical to the current file. Install the new file.
@@ -446,8 +448,8 @@ original=X, current=Y, new=Z::
necessary changes into the original file.
original=NULL, current=Y, new=Z::
- Package was not previously installed and the file already exists on the
- filesystem. Save the current file with a '.pacorig' extension, install the
+ The package was not previously installed, and the file already exists on the
+ file system. Save the current file with a '.pacorig' extension, install the
new file, and warn the user.
--
1.8.3
2
1
From: "Jason St. John" <jstjohn(a)purdue.edu>
Several grammatical errors and minor formatting consistency issues have
been resolved in PKGBUILD(5).
---
This is a resubmission of a previous patch based on Allan's feedback, which can
be found here:
https://mailman.archlinux.org/pipermail/pacman-dev/2013-April/016968.html
There are some additional changes, but they should be relatively benign.
doc/PKGBUILD.5.txt | 132 ++++++++++++++++++++++++++++-------------------------
doc/footer.txt | 2 +-
2 files changed, 70 insertions(+), 64 deletions(-)
diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt
index ea280a0..2b94477 100644
--- a/doc/PKGBUILD.5.txt
+++ b/doc/PKGBUILD.5.txt
@@ -48,10 +48,12 @@ similar to `$_basekernver`.
The version of the software as released from the author (e.g., '2.7.1').
The variable is not allowed to contain colons or hyphens.
+
-The `pkgver` variable can be automatically updated by providing a `pkgver()` function
-in the PKGBUILD that outputs the new package version. This is run after downloading
-and extracting the sources so can use those files in determining the new `pkgver`.
-This is most useful when used with sources from version control systems (see below).
+The `pkgver` variable can be automatically updated by providing a `pkgver()`
+function in the PKGBUILD that outputs the new package version.
+This is run after downloading and extracting the sources so it can use those
+files in determining the new `pkgver`.
+This is most useful when used with sources from version control systems (see
+below).
*pkgrel*::
This is the release number specific to the Arch Linux release. This
@@ -62,7 +64,8 @@ This is most useful when used with sources from version control systems (see bel
*pkgdesc*::
This should be a brief description of the package and its functionality.
- Try to keep the description to one line of text and not use the package's name.
+ Try to keep the description to one line of text and to not use the package's
+ name.
*epoch*::
Used to force the package to be seen as newer than any previous versions
@@ -75,7 +78,7 @@ This is most useful when used with sources from version control systems (see bel
*url*::
This field contains a URL that is associated with the software being
- packaged. Typically the project's website.
+ packaged. This is typically the project's web site.
*license (array)*::
This field specifies the license(s) that apply to the package.
@@ -91,13 +94,13 @@ This is most useful when used with sources from version control systems (see bel
*install*::
Specifies a special install script that is to be included in the package.
- This file should reside in the same directory as the PKGBUILD, and will
+ This file should reside in the same directory as the PKGBUILD and will
be copied into the package by makepkg. It does not need to be included
in the source array (e.g., `install=$pkgname.install`).
*changelog*::
Specifies a changelog file that is to be included in the package.
- This file should reside in the same directory as the PKGBUILD, and will
+ This file should reside in the same directory as the PKGBUILD and will
be copied into the package by makepkg. It does not need to be included
in the source array (e.g., `changelog=$pkgname.changelog`).
@@ -105,10 +108,10 @@ This is most useful when used with sources from version control systems (see bel
An array of source files required to build the package. Source files
must either reside in the same directory as the PKGBUILD, or be a
fully-qualified URL that makepkg can use to download the file.
- To make the PKGBUILD as useful as possible, use the `$pkgname` and `$pkgver`
- variables if possible when specifying the download location. Compressed files
- will be extracted automatically unless found in
- the noextract array described below.
+ To simplify the maintenance of PKGBUILDs, use the `$pkgname` and `$pkgver`
+ variables when specifying the download location, if possible.
+ Compressed files will be extracted automatically unless found in the
+ noextract array described below.
+
It is also possible to change the name of the downloaded file, which is helpful
with weird URLs and for handling multiple source files with the same
@@ -118,12 +121,12 @@ makepkg also supports building developmental versions of packages using sources
downloaded from version control systems (VCS). For more information, see
<<VCS,Using VCS Sources>> below.
+
-Files in the source array with extensions `.sig`, `.sign` or `.asc` are recognized by
-makepkg as PGP signatures and will be automatically used to verify the integrity
-of the corresponding source file.
+Files in the source array with extensions `.sig`, `.sign` or, `.asc` are
+recognized by makepkg as PGP signatures and will be automatically used to verify
+the integrity of the corresponding source file.
*noextract (array)*::
- An array of filenames corresponding to those from the source array. Files
+ An array of file names corresponding to those from the source array. Files
listed here will not be extracted with the rest of the source files. This
is useful for packages that use compressed data directly.
@@ -152,10 +155,10 @@ of the corresponding source file.
files should use `arch=('any')`.
*backup (array)*::
- An array of filenames, without preceding slashes, that
+ An array of file names, without preceding slashes, that
should be backed up if the package is removed or upgraded. This is
- commonly used for packages placing configuration files in /etc. See
- Handling Config Files in linkman:pacman[8] for more information.
+ commonly used for packages placing configuration files in '/etc'. See
+ `"Handling Config Files"` in linkman:pacman[8] for more information.
*depends (array)*::
An array of packages this package depends on to run. Entries in
@@ -168,7 +171,7 @@ of the corresponding source file.
If the dependency name appears to be a library (ends with .so), makepkg will
try to find a binary that depends on the library in the built package and
append the version needed by the binary. Appending the version yourself
-disables auto detection.
+disables automatic detection.
*makedepends (array)*::
An array of packages this package depends on to build but are not
@@ -209,7 +212,7 @@ only specific versions of a package may be provided.
+
If the provision name appears to be a library (ends with .so), makepkg will
try to find the library in the built package and append the correct
-version. Appending the version yourself disables auto detection.
+version. Appending the version yourself disables automatic detection.
*replaces (array)*::
An array of packages this package should replace. This can be used
@@ -289,13 +292,13 @@ Packaging Functions
-------------------
In addition to the above directives, PKGBUILDs require a set of functions that
-provide instructions to build and install the package. As a minimum, the PKGBUILD
-must contain a package() function which installs all the package's files into the
-packaging directory, with optional prepare(), build() and check() being used to
-create those files from source.
+provide instructions to build and install the package. As a minimum, the
+PKGBUILD must contain a `package()` function which installs all the package's
+files into the packaging directory, with optional `prepare()`, `build()`, and
+`check()` functions being used to create those files from source.
*package() Function*::
- The package() function is used to install files into the directory that
+ The `package()` function is used to install files into the directory that
will become the root directory of the built package and is run after all
the optional functions listed below. When specified in combination with
the fakeroot BUILDENV option in linkman:makepkg.conf[5], fakeroot usage
@@ -303,41 +306,41 @@ create those files from source.
be run as the user calling makepkg.
*prepare() Function*::
- An optional prepare() function can be specified in which operations that
- are to be run in order to prepare the sources for building (such as
- patching) are performed. This function is run after the source extraction
- and before the build() function and is skipped when source extraction is
- skipped.
+ An optional `prepare()` function can be specified in which operations to
+ prepare the sources for building, such as patching, are performed. This
+ function is run after the source extraction and before the `build()`
+ function, and the `prepare()` function is skipped when source extraction
+ is skipped.
*build() Function*::
- The optional build() function is use to compile and/or adjust the source
- files in preparation to be installed by the package() function. This is
- directly sourced and executed by makepkg, so anything that bash or the
+ The optional `build()` function is use to compile and/or adjust the source
+ files in preparation to be installed by the `package()` function. This is
+ directly sourced and executed by makepkg, so anything that Bash or the
system has available is available for use here. Be sure any exotic
- commands used are covered by `makedepends`.
+ commands used are covered by the `makedepends` array.
+
-If you create any variables of your own in the build function, it is
-recommended to use the bash `local` keyword to scope the variable to inside
-the build function.
+If you create any variables of your own in the `build()` function, it is
+recommended to use the Bash `local` keyword to scope the variable to inside
+the `build()` function.
*check() Function*::
- An optional check() function can be specified in which a package's
- test-suite may be run. This function is run between the build() and
- package() functions. Be sure any exotic commands used are covered by
- `checkdepends`.
+ An optional `check()` function can be specified in which a package's
+ test-suite may be run. This function is run between the `build()` and
+ `package()` functions. Be sure any exotic commands used are covered by the
+ `checkdepends` array.
-All of the above variables such as `$pkgname` and `$pkgver` are available for use
-in the build function. In addition, makepkg defines the following variables for use
-during the build and install process:
+All of the above variables such as `$pkgname` and `$pkgver` are available for
+use in the `build()` function. In addition, makepkg defines the following
+variables for use during the build and install process:
*srcdir*::
- This contains the directory where makepkg extracts, or copies, all source
- files.
+ This contains the directory where makepkg extracts, or copies, all source
+ files.
*pkgdir*::
- This contains the directory where makepkg bundles the installed package
- (this directory will become the root directory of your built package).
- This variable should only be used in the package() function.
+ This contains the directory where makepkg bundles the installed package.
+ This directory will become the root directory of your built package. This
+ variable should only be used in the `package()` function.
*startdir*::
This contains the absolute path to the directory where the PKGBUILD is
@@ -362,8 +365,8 @@ An optional global directive is available when building a split package:
*pkgbase*::
The name used to refer to the group of packages in the output of makepkg
- and in the naming of source-only tarballs. If not specified, the first
- element in the `pkgname` array is used. The variable is not allowed to
+ and in the naming of source-only tarballs. If not specified, the first
+ element in the `pkgname` array is used. The variable is not allowed to
begin with a hyphen.
Install/Upgrade/Remove Scripting
@@ -377,7 +380,7 @@ self-explanatory. Note that during an upgrade operation, none of the install
or remove scripts will be called.
Scripts are passed either one or two ``full version strings'', where a full
-version string is either 'pkgver-pkgrel' or 'epoch:pkgver-pkgrel' if epoch is
+version string is either 'pkgver-pkgrel' or 'epoch:pkgver-pkgrel', if epoch is
non-zero.
*pre_install*::
@@ -415,10 +418,12 @@ reference with all of the available functions defined.
Using VCS Sources[[VCS]]
------------------------
-Building a developmental version of a package using sources from a version control
-system (VCS) is enabled by specifying the source in the form
-`source=('folder::url#fragment')`. Currently makepkg supports the `bzr`, `git`, `hg` and
-`svn` protocols.
+Building a developmental version of a package using sources from a version
+control system (VCS) is enabled by specifying the source in the form
+`source=('folder::url#fragment')`. Currently makepkg supports the Bazaar, Git,
+Subversion, and Mercurial version control systems. For other version control
+systems, manual cloning of upstream repositories must be done in the `prepare()`
+function.
The source URL is divided into three components:
@@ -427,11 +432,12 @@ The source URL is divided into three components:
source into.
*url*::
- The url to the VCS repo. This must include the the vcs in the URL protocol for
- makepkg to recognize this as a VCS source. If the protocol does not include
- the VCS name, it can be added by prefixing the URL with `vcs+`. For example,
- using a git repository over `http` would have a source URL in the form
- `git+http://...`.
+ The URL to the VCS repository. This must include the VCS in the URL protocol
+ for makepkg to recognize this as a VCS source. If the protocol does not
+ include the VCS name, it can be added by prefixing the URL with `vcs+`. For
+ example, using a Git repository over HTTPS would have a source URL in the
+ form:
+ `git+https://...`.
*fragment*::
(optional) Allows specifying a revision number or branch for makepkg to checkout
@@ -455,7 +461,7 @@ Example
-------
The following is an example PKGBUILD for the 'patch' package. For more
examples, look through the build files of your distribution's packages. For
-those using Arch Linux, consult the ABS tree.
+those using Arch Linux, consult the Arch Build System (ABS) tree.
[source,sh]
-------------------------------
diff --git a/doc/footer.txt b/doc/footer.txt
index ccb931c..af19304 100644
--- a/doc/footer.txt
+++ b/doc/footer.txt
@@ -8,7 +8,7 @@ information on pacman and its related tools.
Bugs
----
-Bugs? You must be kidding, there are no bugs in this software. But if we
+Bugs? You must be kidding; there are no bugs in this software. But if we
happen to be wrong, send us an email with as much detail as possible to
mailto:pacman-dev@archlinux.org[].
--
1.8.3
1
0
The bugs in 4.1 are mostly addressed and I will make a 4.1.1 release
sometime soon, so now is time to think about pacman-4.2.
I wanted to discuss the removal of directory symlink support again
because there was not much response on the list last time.
Currently, if there is a symlink to a directory on the filesystem, we
can treat it like a directory. e.g. Arch Linux has /lib -> usr/lib.
So if a package installs a file in /lib, pacman silently puts it in
/usr/lib.
I'd like to remove that support for the following reasons:
1) It requires we resolve the true path of every directory involved in
an upgrade for conflict checking. e.g. /lib/foo.so and /usr/lib/foo.so
are conflicts. This has substantial overhead, both in terms of
computing and in code. Removing this would mean all symlinks would be
treated like a file.
2) We do not handle it very well. e.g. if a package contains a /foo ->
some/dir symlink, it needs to be installed before any package with a
file in /foo in the same transaction. We "implement" this through
flagging a conflict. When the package containing the directory symlink
is removed, we need to scan all packages to ensure it is not being
"used" by any other package in the local database. This is covered by
the _failing_ pactests sync700-702.
3) If packages really want to install files in a directory where there
is a symlink, it is easily dealt with in the PKGBUILD. e.g.
package() {
ln -s usr/lib $pkgdir/lib
make DESTDIR=$pkgdir
rm $pkgdir/lib
}
4) There is no use case for it (at least on linux). I have only ever
seen this used as a poor man's bind mount.
5) It believe it would actually make replacing /bin and /sbin able to
occur in a single transaction (no --ignore filesystem) as we can replace
a completely removed directory by a file.
Any comments here? I see there is a patchset already available that
does most (all?) of the removal. What we would need is to have
something like a pacman-db-upgrade that changed filelists to avoid
symlink paths. E.g a package with /lib/foo haves its filelist adjusted
to /usr/lib/foo. The other option is to have testdb check for these and
advise people to run that before updating to pacman-4.2?
Any comments?
Allan
4
25
29 May '13
Signed-off-by: Eric Bélanger <snowmaniscool(a)gmail.com>
---
doc/makepkg.8.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/makepkg.8.txt b/doc/makepkg.8.txt
index bb7a9a3..53a7867 100644
--- a/doc/makepkg.8.txt
+++ b/doc/makepkg.8.txt
@@ -17,7 +17,7 @@ Synopsis
Description
-----------
'makepkg' is a script to automate the building of packages. The requirements for
-using the script are a build-capable \*nix platform and a custom build script
+using the script are a build-capable *nix platform and a custom build script
for each package you wish to build (known as a PKGBUILD). See
linkman:PKGBUILD[5] for details on creating your own build scripts.
--
1.8.2.2
3
4
This allows for somewhat easy templating for PKGBUILDs.
Signed-off-by: Florian Pritz <bluewind(a)xinu.at>
---
v4:
- added support for "-" to --input and --output (stdin/stdout)
- adapted manpage and fixed ordering of the arguments to the example diff call
- lots of code suggestion + fixes by Andrew
Dave raised that questions: Do we care that my diff example in the manpage uses
"<()" which is a bashism?
Given it's only an example and should be understandable even if you don't use
bash I think it's better to keep it short rather than have it work everywhere.
Opinions welcome.
configure.ac | 9 +++
doc/.gitignore | 1 +
doc/Makefile.am | 4 +
doc/makepkg-template.1.txt | 132 ++++++++++++++++++++++++++++++++
scripts/.gitignore | 1 +
scripts/Makefile.am | 11 +++
scripts/makepkg-template.pl.in | 167 +++++++++++++++++++++++++++++++++++++++++
7 files changed, 325 insertions(+)
create mode 100644 doc/makepkg-template.1.txt
create mode 100755 scripts/makepkg-template.pl.in
diff --git a/configure.ac b/configure.ac
index 81bc1b3..3b0c62c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -97,6 +97,11 @@ AC_ARG_WITH(buildscript,
AS_HELP_STRING([--with-buildscript=name], [set the build script name used by makepkg]),
[BUILDSCRIPT=$withval], [BUILDSCRIPT=PKGBUILD])
+# Help line for buildscript filename
+AC_ARG_WITH(template-dir,
+ AS_HELP_STRING([--with-template-dir=name], [set the template dir used by makepkg-template]),
+ [TEMPLATE_DIR=$withval], [TEMPLATE_DIR=/usr/share/makepkg-template])
+
# Help line for debug package suffix
AC_ARG_WITH(debug-suffix,
AS_HELP_STRING([--with-debug-suffix=name], [set the suffix for split debugging symbol packages used by makepkg]),
@@ -457,6 +462,9 @@ AC_DEFINE_UNQUOTED([SRCEXT], "$SRCEXT", [The file extension used by pacman sourc
# Set makepkg build script name
AC_SUBST(BUILDSCRIPT)
AC_DEFINE_UNQUOTED([BUILDSCRIPT], "$BUILDSCRIPT", [The build script name used by makepkg])
+# Set makepkg-template template dir
+AC_SUBST(TEMPLATE_DIR)
+AC_DEFINE_UNQUOTED([TEMPLATE_DIR], "$TEMPLATE_DIR", [The template dir used by makepkg-teplate])
# Set makepkg split debugging symbol package suffix
AC_SUBST(DEBUGSUFFIX)
AC_DEFINE_UNQUOTED([DEBUGSUFFIX], "$DEBUGSUFFIX", [The suffix for debugging symbol packages used by makepkg])
@@ -524,6 +532,7 @@ ${PACKAGE_NAME}:
package extension : ${PKGEXT}
source pkg extension : ${SRCEXT}
build script name : ${BUILDSCRIPT}
+ template dir : ${TEMPLATE_DIR}
Compilation options:
Use libcurl : ${have_libcurl}
diff --git a/doc/.gitignore b/doc/.gitignore
index a96ddb3..ad496ce 100644
--- a/doc/.gitignore
+++ b/doc/.gitignore
@@ -1,6 +1,7 @@
PKGBUILD.5
libalpm.3
makepkg.8
+makepkg-template.1
makepkg.conf.5
pacman.8
pacman-key.8
diff --git a/doc/Makefile.am b/doc/Makefile.am
index bcb05b7..cb01255 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -6,6 +6,7 @@
ASCIIDOC_MANS = \
pacman.8 \
makepkg.8 \
+ makepkg-template.1 \
repo-add.8 \
vercmp.8 \
pkgdelta.8 \
@@ -21,6 +22,7 @@ DOXYGEN_MANS = $(wildcard man3/*.3)
HTML_MANPAGES = \
pacman.8.html \
makepkg.8.html \
+ makepkg-template.1.html \
repo-add.8.html \
vercmp.8.html \
pkgdelta.8.html \
@@ -46,6 +48,7 @@ EXTRA_DIST = \
asciidoc-override.css \
pacman.8.txt \
makepkg.8.txt \
+ makepkg-template.1.txt \
repo-add.8.txt \
vercmp.8.txt \
pkgdelta.8.txt \
@@ -147,6 +150,7 @@ $(HTML_OTHER): asciidoc.conf Makefile.am
# Dependency rules
pacman.8 pacman.8.html: pacman.8.txt
makepkg.8 makepkg.8.html: makepkg.8.txt
+makepkg-template.1 makepkg-template.1.html: makepkg-template.1.txt
repo-add.8 repo-add.8.html: repo-add.8.txt
vercmp.8 vercmp.8.html: vercmp.8.txt
pkgdelta.8 pkgdelta.8.html: pkgdelta.8.txt
diff --git a/doc/makepkg-template.1.txt b/doc/makepkg-template.1.txt
new file mode 100644
index 0000000..2f86e8f
--- /dev/null
+++ b/doc/makepkg-template.1.txt
@@ -0,0 +1,132 @@
+/////
+vim:set ts=4 sw=4 syntax=asciidoc noet spell spelllang=en_us:
+/////
+makepkg-template(1)
+===================
+
+Name
+----
+makepkg-template - package build templating utility
+
+
+Synopsis
+--------
+'makepkg-template' [options]
+
+
+Description
+-----------
+
+'makepkg-template' is a script to ease the work of maintaining multiple similar
+PKGBUILDs. It allows you to move most of the code from the PKGBUILD into a
+template file and uses markers to allow in-place updating of existing PKGBUILDs
+if the template has been changed.
+
+Template files can contain any code allowed in a PKGBUILD. You can think of
+them like external files included with "." or "source", but they will be
+inlined into the PKGBUILD by 'makepkg-template' so you do not depend on the
+template file if you wish to build the package.
+
+Markers are bash comments in the form of:
+
+ # template start; key=value; key2=value2; ...
+
+and
+
+ # template end;
+
+Currently used keys are: name (mandatory) and version. Values are limited to
+alphanumerics, "@", "+", ".", "-" and "_".
+
+For initial creation there is a one line shortcut which doesn't need an end:
+
+ # template input; key=value;
+
+If you use this 'makepkg-template' will replace it with start and end markers
+and the template code on the first run.
+
+Template files should be stored in one directory and filenames should be
+"$template_name-$version.template" with a symlink "$template_name.template"
+pointing to the most recent template.
+
+If the version is not set in the marker, 'makepkg-template' will automatically
+use the most recent version of the template, otherwise the specified version
+will be used.
+
+This allows for easier verification of untrused PKGBUILDs if the template is
+trusted. You verify the non-template code and then use a command similar to
+this:
+
+ diff -u <(makepkg-template -o -) PKGBUILD
+
+Template files may also contain markers leading to nested templates in the
+resulting PKGBUILD. If you use markers in a template, please set the version
+you used/tested with in the start/input marker so other people can properly
+recreate from templates.
+
+Options
+-------
+
+*-p, \--input* <buildscript>::
+ Read the package script `buildscript` instead of the `PKGBUILD` default.
+
+*-o, \--output* <buildscript>::
+ Write the updated file to `buildscript` instead of overwriting the input file.
+
+*-n, \--newest*::
+ Always use the newest available template file.
+
+*\--template-dir* <dir>::
+ Change the dir where we are looking for template files.
+
+Example PKGBUILD
+----------------
+
+ pkgname=perl-config-simple
+ pkgver=4.58
+ pkgrel=1
+ pkgdesc="simple configuration file class"
+ arch=(any)
+ license=(PerlArtistic GPL)
+ depends=('perl')
+ source=("http://search.cpan.org/CPAN/authors/id/S/SH/SHERZODR/Config-Simple-${pkgver…")
+ md5sums=(f014aec54f0a1e2e880d317180fce502)
+ _distname="Config-Simple"
+
+ # template start; name=perl-module; version=1.0;
+ options=(!emptydirs)
+ _distdir="${_distname}-${pkgver}"
+ url="https://metacpan.org/release/${_distname}"
+
+ build() {
+ export PERL_MM_USE_DEFAULT=1 PERL5LIB="" \
+ PERL_AUTOINSTALL=--skipdeps \
+ PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR='$pkgdir'" \
+ PERL_MB_OPT="--installdirs vendor --destdir '$pkgdir'" \
+ MODULEBUILDRC=/dev/null
+
+ cd "$srcdir/$_distdir"
+ /usr/bin/perl Makefile.PL
+ make
+ }
+
+ check() {
+ export PERL_MM_USE_DEFAULT=1 PERL5LIB=""
+ cd "$srcdir/$_distdir"
+ make test
+ }
+
+ package() {
+ cd "$srcdir/$_distdir"
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" -name .packlist -o -name perllocal.pod -delete
+ }
+ # template end;
+
+
+
+See Also
+--------
+linkman:makepkg[8], linkman:PKGBUILD[5]
+
+include::footer.txt[]
diff --git a/scripts/.gitignore b/scripts/.gitignore
index 9e403bf..26e088b 100644
--- a/scripts/.gitignore
+++ b/scripts/.gitignore
@@ -1,4 +1,5 @@
makepkg
+makepkg-template
pacman-db-upgrade
pacman-key
pacman-optimize
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 784b180..1f3bae2 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -5,6 +5,7 @@ SUBDIRS = po
bin_SCRIPTS = \
$(OURSCRIPTS) \
+ makepkg-template \
repo-remove \
repo-elephant
@@ -18,6 +19,7 @@ OURSCRIPTS = \
EXTRA_DIST = \
makepkg.sh.in \
+ makepkg-template.pl.in \
pacman-db-upgrade.sh.in \
pacman-key.sh.in \
pacman-optimize.sh.in \
@@ -54,6 +56,7 @@ edit = sed \
-e 's|@PACKAGE_BUGREPORT[@]|$(PACKAGE_BUGREPORT)|g' \
-e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \
-e 's|@BUILDSCRIPT[@]|$(BUILDSCRIPT)|g' \
+ -e 's|@TEMPLATE_DIR[@]|$(TEMPLATE_DIR)|g' \
-e 's|@DEBUGSUFFIX[@]|$(DEBUGSUFFIX)|g' \
-e "s|@INODECMD[@]|$(INODECMD)|g" \
-e 's|@SIZECMD[@]|$(SIZECMD)|g' \
@@ -76,6 +79,14 @@ makepkg: \
$(srcdir)/makepkg.sh.in \
$(srcdir)/library/parseopts.sh
+makepkg-template: \
+ $(srcdir)/makepkg-template.pl.in \
+ Makefile
+
+ $(AM_V_at)$(RM) -f makepkg-template
+ $(AM_V_GEN)$(edit) $< > $@
+ $(AM_V_at)chmod +x,a-w $@
+
pacman-db-upgrade: \
$(srcdir)/pacman-db-upgrade.sh.in \
$(srcdir)/library/output_format.sh
diff --git a/scripts/makepkg-template.pl.in b/scripts/makepkg-template.pl.in
new file mode 100755
index 0000000..568ad6b
--- /dev/null
+++ b/scripts/makepkg-template.pl.in
@@ -0,0 +1,167 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use v5.14;
+use Cwd qw(abs_path);
+use File::Spec;
+use Getopt::Long;
+use Pod::Usage;
+
+my %opts = (
+ input => '@BUILDSCRIPT@',
+ template_dir => '@TEMPLATE_DIR@',
+);
+
+my $template_name_charset = qr/[[:alnum:]+_.@-]/;
+my $template_marker = qr/# template/;
+
+sub burp {
+ my ($file_name, @lines) = @_;
+ open (my $fh, ">", $file_name) || die "can't create $file_name $!" ;
+ print $fh @lines;
+ close $fh;
+}
+
+# read a template marker line and parse values into a hash
+# format is "# template (start|input); key=value; key2=value2; ..."
+sub parse_template_line {
+ my ($line, $filename, $linenumber) = @_;
+ my %values;
+
+ my ($marker, @elements) = split(/;\s?/, $line);
+
+ ($values{command}) = ($marker =~ /$template_marker (.*)/);
+
+ foreach my $element (@elements) {
+ my ($key, $val) = ($element =~ /^([a-z0-9]+)=(.*)$/);
+ die "invalid key/value pair $filename:$linenumber: $line"
+ unless $key and $val;
+ $values{$key} = $val;
+ }
+
+ # end doesn't take arguments
+ if ($values{command} ne "end") {
+ if (!$values{name}) {
+ die "invalid template line: can't find template name\n",
+ "$filename:$linenumber: $line";
+ }
+
+ unless ($values{name} =~ /^$template_name_charset+$/) {
+ die "invalid chars used in name '$values{name}'. allowed: [:alnum:]+_.@-\n",
+ "$filename:$linenumber: $line";
+ }
+ }
+
+ return \%values;
+}
+
+# load a template, process possibly existing markers (nested templates)
+sub load_template {
+ my ($values) = @_;
+
+ my $ret = "";
+
+ my $path;
+ if (!$opts{newest} and $values->{version}) {
+ $path = "$opts{template_dir}/$values->{name}-$values->{version}.template";
+ } else {
+ $path = "$opts{template_dir}/$values->{name}.template";
+ }
+
+ # resolve symlink(s) and use the real file's name for version detection
+ my ($version) = (abs_path($path) =~ /-([0-9.]+)[.]template$/);
+
+ if (!$version) {
+ die "Couldn't detect version for template '$values->{name}'";
+ }
+
+ my $parsed = process_file($path);
+
+ $ret .= "# template start; name=$values->{name}; version=$version;\n";
+ $ret .= $parsed;
+ $ret .= "# template end;\n";
+ return $ret;
+}
+
+# process input file and load templates for all markers found
+sub process_file {
+ my ($filename) = @_;
+
+ my $ret = "";
+ my $nesting_level = 0;
+ my $linenumber = 0;
+
+ open (my $fh, "<", $filename) or die "failed to open '$filename': $!";
+ my @lines = <$fh>;
+ close $fh;
+
+ foreach my $line (@lines) {
+ $linenumber++;
+
+ if ($line =~ $template_marker) {
+ my $values = parse_template_line($line, $filename, $linenumber);
+
+ given ($values->{command}) {
+ when (['start', 'input']) {
+ if ($nesting_level == 0) {
+ $ret .= load_template($values);
+ }
+ }
+
+ when ('end') {
+ # nothing to do here, just for completeness
+ }
+
+ default {
+ die "Unknown template marker '$values->{command}'\n",
+ "$filename:$linenumber: $line";
+ }
+ }
+
+ $nesting_level++ if $values->{command} eq "start";
+ $nesting_level-- if $values->{command} eq "end";
+
+ # marker lines should never be added
+ next;
+ }
+
+ # we replace code inside blocks with the template
+ # so we ignore the content of the block
+ next if $nesting_level > 0;
+
+ $ret .= $line;
+ }
+ return $ret;
+}
+
+Getopt::Long::Configure ("bundling");
+GetOptions(
+ "help" => sub {pod2usage(-exitval => 0, -verbose => 1); },
+ "h" => sub {pod2usage(-exitval => 0, -verbose => 0); },
+ "input|p=s" => \$opts{input},
+ "output|o=s" => \$opts{output},
+ "newest|n" => \$opts{newest},
+ "template-dir=s" => \$opts{template_dir},
+) or pod2usage(1);
+
+$opts{output} = $opts{input} unless $opts{output};
+
+$opts{input} = "/dev/stdin" if $opts{input} eq "-";
+$opts{output} = "/dev/stdout" if $opts{output} eq "-";
+
+burp($opts{output}, process_file($opts{input}));
+
+__END__
+=head1 SYNOPSIS
+
+makepkg-template [options]
+
+ Options:
+ --input, -p <file> PKGBUILD to read (default: @BUILDSCRIPT@)
+ --output, -o <file> file to output to (default: input file)
+ --newest, -n update templates to newest possible version
+ (default: use specified version in the template markers)
+ --template-dir <dir> dir to search for templates (default: @TEMPLATE_DIR@)
+
+=cut
+# vim: set noet:
--
1.8.2.2
3
12
[pacman-dev] [GIT] The official pacman repository branch, master, updated. v4.1.1-28-g7ea58d0
by allanï¼ archlinux.org 29 May '13
by allanï¼ archlinux.org 29 May '13
29 May '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The official pacman repository".
The branch, master has been updated
via 7ea58d09f69a9a13b637e7128e7b882ac2bebc64 (commit)
via 4fadcbfab2c8fbc78d7ca5d824b86ae0043d42fa (commit)
via dc08eca368de31b85e27063160e73b75b91bc58f (commit)
via 9555ec714a2113144b0bb09e468662d67f60857e (commit)
via e5dd8c2ac561173c93849c4baab6be2406679be5 (commit)
via 5bcc058d4217a3e843e9adfbe0d8882ddf0f31b1 (commit)
via a975523fb97fdb65245f3d3a4e0c581c9dbeef3f (commit)
via dece66ac180ccc9fa0854e2bb181cd7585ac81a3 (commit)
via 3b4e74cb3b2a2964b28c85bde46ac826d2f196b0 (commit)
via 28dd29dedbc0a0e7fe1514043944b35aec8d2949 (commit)
via 296e630edd129989856b1ebfaa7e8497a90bc937 (commit)
via 84ac55b0529b6489da38ebfc56a988228aa4859a (commit)
via 7d2c7fb347e8b5ea89127f3f8b4a545772394600 (commit)
via d235f541143026aa59d012d7083a41c43a622eeb (commit)
via 8335e169a6f38c288db4249c3d272a9ced332580 (commit)
via 1ed881fed31952c65f9606df5e265c36221974e9 (commit)
via 090c4006d748e0ec50b74e974b4f1fa6f3d6c1ec (commit)
via 8be08f7cae8257af6866febc9d2a57d8d8601a51 (commit)
via 72c6d19d64a89a5ad0d162fc0bb6517ea80fc252 (commit)
from 0f988beff8794338485352dc1beafbfcdbb20db1 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 7ea58d09f69a9a13b637e7128e7b882ac2bebc64
Author: Jason St. John <jstjohn(a)purdue.edu>
Date: Tue May 28 13:39:56 2013 +0200
Update example PKGBUILD
Update doc/PKGBUILD-example.txt with several changes from the official
Arch Linux package for patch-2.7.1-1, including other changes shown below:
-- replaces spaces with tabs in functions
-- replaces 'make prefix=' with 'make DESTDIR='
-- improves quoting of the "cd" command in functions
Signed-off-by: Jason St. John <jstjohn(a)purdue.edu>
Signed-off-by: Allan McRae <allan(a)archlinux.org>
commit 4fadcbfab2c8fbc78d7ca5d824b86ae0043d42fa
Author: Jason St. John <jstjohn(a)purdue.edu>
Date: Tue May 28 12:54:52 2013 +0200
Quote sources in PKGBUILD prototypes and example PKGBUILD
Signed-off-by: Jason St. John <jstjohn(a)purdue.edu>
Signed-off-by: Allan McRae <allan(a)archlinux.org>
commit dc08eca368de31b85e27063160e73b75b91bc58f
Author: Allan McRae <allan(a)archlinux.org>
Date: Sun May 19 22:41:01 2013 +1000
Improve error message when package is missing required signature
When attempting to install a package (either via -S or -U) and the
signature is missing, the current error message "invalid or corrupted
package (PGP signature)" is very unclear. Instead inform the user
that the package is missing the required signature.
Partial fix for FS#34741.
Signed-off-by: Allan McRae <allan(a)archlinux.org>
commit 9555ec714a2113144b0bb09e468662d67f60857e
Author: Andrew Gregory <andrew.gregory.8(a)gmail.com>
Date: Sat May 18 19:39:36 2013 -0400
pacman.8: document .pacorig files
Signed-off-by: Andrew Gregory <andrew.gregory.8(a)gmail.com>
Signed-off-by: Allan McRae <allan(a)archlinux.org>
commit e5dd8c2ac561173c93849c4baab6be2406679be5
Author: Andrew Gregory <andrew.gregory.8(a)gmail.com>
Date: Sat May 18 19:37:59 2013 -0400
add.c: refactor backup file modification checks
The previous implementation was overly complex with unnecessary checks
and nested conditionals. By reordering the tests and changing them to
all be checks for positive hash matches rather than non-matches, we can
collapse several cases and make the process much more linear. This
removes the need to set hash_orig = "" just to reach some of the checks
and corrects a faulty assumption that files are equivalent when the
hashing process fails.
Signed-off-by: Andrew Gregory <andrew.gregory.8(a)gmail.com>
Signed-off-by: Allan McRae <allan(a)archlinux.org>
commit 5bcc058d4217a3e843e9adfbe0d8882ddf0f31b1
Author: Phillip Smith <fukawi2(a)gmail.com>
Date: Tue Apr 30 09:10:08 2013 +1000
makepkg: add support for CARCH environment var
Add support for overriding configuration in /etc/makepkg.conf and
~/.makepkg.conf by setting the environment variable CARCH similar to
how SRCDEST and PKGDEST behave.
Fixes FS#35030.
Signed-off-by: Allan McRae <allan(a)archlinux.org>
commit a975523fb97fdb65245f3d3a4e0c581c9dbeef3f
Author: Allan McRae <allan(a)archlinux.org>
Date: Sun May 19 00:20:01 2013 +1000
Clean partial downloads from cache
When using "pacman -Sc" to clean the cache, it make sense to also remove
partially downloaded files.
Fixes FS#34317.
Signed-off-by: Allan McRae <allan(a)archlinux.org>
commit dece66ac180ccc9fa0854e2bb181cd7585ac81a3
Author: Allan McRae <allan(a)archlinux.org>
Date: Sun May 19 00:03:36 2013 +1000
makepkg: remove support for PKGBUILDs without a package() function
Not having a package() function means all building occurs as root
and repackaging can lose permissions. Given the use of package()
functions has been around for years and we deprecated not having
one in pacman-4.1, we can remove support for PKGBUILDs without
package() functions altogether. However, keep PKGBUILDs that have
neither a build() or package() function working.
Signed-off-by: Allan McRae <allan(a)archlinux.org>
commit 3b4e74cb3b2a2964b28c85bde46ac826d2f196b0
Author: Allan McRae <allan(a)archlinux.org>
Date: Sat May 18 23:43:27 2013 +1000
makepkg: Add helper to test for functions in build script
Signed-off-by: Allan McRae <allan(a)archlinux.org>
commit 28dd29dedbc0a0e7fe1514043944b35aec8d2949
Author: Allan McRae <allan(a)archlinux.org>
Date: Sat May 18 22:47:35 2013 +1000
makepkg: remove sourcing PKGBUILD from stdin
Using PKGBUILDs from stdin means that we can not use pkgver() in
packages. Given we have the "-p" option to pass any file to
makepkg and passing a PKGBUILD in the form "cat foo | makepkg"
does not work, this feature is unneeded.
Signed-off-by: Allan McRae <allan(a)archlinux.org>
commit 296e630edd129989856b1ebfaa7e8497a90bc937
Author: Andrew Gregory <andrew.gregory.8(a)gmail.com>
Date: Fri May 10 14:19:05 2013 -0400
pmtest: set LC_ALL=C in subprocess.call
LC_ALL=C is required to force pacman's output to English for tests that
rely on that output, but setting it in Makefile.am results in those
tests breaking under different locales when pactest.py is run directly.
This will also ease an eventual transition to python3 which LC_ALL=C
causes to default to ascii encoded strings, creating problems for tests
with unicode strings.
Signed-off-by: Andrew Gregory <andrew.gregory.8(a)gmail.com>
Signed-off-by: Allan McRae <allan(a)archlinux.org>
commit 84ac55b0529b6489da38ebfc56a988228aa4859a
Merge: 0f988be 7d2c7fb
Author: Allan McRae <allan(a)archlinux.org>
Date: Wed May 29 14:02:56 2013 +1000
Merge branch 'maint'
-----------------------------------------------------------------------
Summary of changes:
Makefile.am | 2 +-
NEWS | 22 ++++-----
contrib/checkupdates.sh.in | 2 +-
contrib/paccache.sh.in | 7 ++-
doc/PKGBUILD-example.txt | 23 +++++----
doc/makepkg.8.txt | 4 ++
doc/pacman.8.txt | 5 ++
lib/libalpm/add.c | 117 ++++++++++++++++++++++-----------------------
lib/libalpm/alpm.h | 1 +
lib/libalpm/be_package.c | 6 ++-
lib/libalpm/deps.c | 2 +-
lib/libalpm/error.c | 2 +
proto/PKGBUILD-split.proto | 4 +-
proto/PKGBUILD.proto | 4 +-
scripts/makepkg.sh.in | 109 +++++++++++++++++------------------------
src/pacman/sync.c | 4 +-
test/pacman/pmtest.py | 2 +-
17 files changed, 155 insertions(+), 161 deletions(-)
hooks/post-receive
--
The official pacman repository
1
0