Compare commits

..

145 Commits

Author SHA1 Message Date
Pierre Schmitz
cb25d50913 prepare release 2011-08-14 23:31:35 +02:00
Pierre Schmitz
c51cc8d365 Only commit if needed 2011-08-14 21:30:08 +02:00
Pierre Schmitz
e64c1d33eb prepare release 2011-08-14 14:12:54 +02:00
Pierre Schmitz
19f3a868f4 update makepkg.conf from pacman 3.5.4-4 2011-08-14 14:12:34 +02:00
Pierre Schmitz
f1ee5208ed supress svn verbose output 2011-08-13 23:02:45 +02:00
Pierre Schmitz
b97b245d52 prepare release 2011-08-13 22:58:08 +02:00
Lukas Fleischer
ee970f0bde commitpkg: Provide a commit message template
Generate a message template when omitting the commit message (includes
the same subject line that is used if a commit message is specified).

Also, use two newlines to separate the subject line from the message
body as it looks much clearer that way.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-08-13 20:33:44 +02:00
Lukas Fleischer
35fc83ce7d Makefile: Add PREFIX support
Default to "/usr/local" which should be used if you want to build
devtools from sources and install without using a package manager.

Use `make PREFIX=/usr install` to install to "/usr" instead.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-08-13 20:31:22 +02:00
Lukas Fleischer
51b5d69cfc archrelease: Fix removal of repository content
Fix the `svn rm` invocation when releasing to a repository that already
contains some files. `svn ls` only returns basenames, so we need to
prepend the path here.

Regression introduced in 8384ad849d.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-08-13 20:20:21 +02:00
Lukas Fleischer
30bcca88d3 commitpkg: Use positive patterns in SVN checks
In addition to what we had before, this will also detect:

* Non-existent files.
* Files that are missing or scheduled for deletion.
* Ignored files.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-08-13 20:18:35 +02:00
Lukas Fleischer
25aae4ecfe commitpkg: Avoid unnecessary use of grep(1)
Use bash patterns instead of using grep(1) to check if a source file
contains the string "://".

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-08-13 20:18:11 +02:00
Lukas Fleischer
c8ba49c6a1 commitpkg: Proper quoting in version control checks
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-08-13 20:15:19 +02:00
Pierre Schmitz
e63c5f26a2 Remove communityco on uninstall 2011-08-13 20:11:34 +02:00
Florian Pritz
c9c4e8043c merge archco and communityco
Signed-off-by: Florian Pritz <bluewind@xinu.at>

 delete mode 100755 communityco
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-08-13 20:10:15 +02:00
Eric Bélanger
2582637376 checkpkg: Use symlinks in work directory instead of copying the packages
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-08-13 20:06:43 +02:00
Florian Pritz
74df2a90d8 makechrootpkg: support absolute paths for chroot copy
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-07-25 20:37:48 +02:00
Dan McGee
8384ad849d archrelease: remove extra SVN commit
This relies on the fact that trunk/ never has any subdirectories, so we
can simply copy all the files in it to the relevant repos/xxx/ directory
after removing all existing files in that directory.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-07-25 20:36:21 +02:00
Gerardo Exequiel Pozzi
1febb47b2c Edit /etc/locale.gen instead of overwrite.
I need this for archiso, instead of maintaining a private copy.

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-07-25 18:28:17 +02:00
Andrea Scarpino
c57284e053 Install a package in the chroot without confirm
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-07-25 18:03:35 +02:00
Eric Bélanger
d177c87080 lddd: Add /usr/local/lib to library directories
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-07-25 18:02:10 +02:00
Eric Bélanger
4b24337a51 lddd: Replace hardcoded list of library directories by those listed in /etc/ld.so.conf.d
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-07-25 18:01:18 +02:00
Eric Bélanger
9a29f624f1 checkpkg: Clean up soname check output
A missing quote in a grep command was giving out false matches.

By moving the objdump command in the same echo statement as the
filename, we ensure that every library name are displayed on a line of
their own in case they don't have a SONAME defined in their
headers. That is the case for some plugin libraries.

Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-07-25 17:53:08 +02:00
Eric Bélanger
3040951ca0 Replace backticks by $() and add missing quotes
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-07-25 17:53:02 +02:00
Dan McGee
5d39ffb341 archrelease: add repos/ directory if it doesn't exist
Very easy thing to forget when creating a new package, but easy enough
to check for and add automatically.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-07-25 17:50:22 +02:00
user
7e5ae10b43 Include epoch in updpkg default message
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-05-30 00:03:06 +02:00
Pierre Schmitz
ab5eb2e4de prepare release 2011-05-18 18:28:33 +02:00
Florian Pritz
a1a6a8eaca commitpkg: add -a option to upload only one arch
-a i686 uploads only i686 packages and ignore everything else

Signed-off-by: Florian Pritz <bluewind@server-speed.net>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-05-18 18:28:05 +02:00
Jakob Gruber
6d4367de35 Change pacman calls with -Sd flags to -Sdd
The old pacman -d flag is now -dd since commit 111e07d0be44b7.

Signed-off-by: Jakob Gruber <jakob.gruber@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-05-16 18:19:19 +02:00
Pierre Schmitz
5df1f9bd6d Revert "Use en_US.UTF-8 locale instead of C to support unicode filenames"
This reverts commit 9b33a29ea5.

This was a bad idea as bsdtar cannot read pacakges create with this locale.
2011-05-03 20:34:39 +02:00
Pierre Schmitz
9b33a29ea5 Use en_US.UTF-8 locale instead of C to support unicode filenames 2011-05-03 20:07:24 +02:00
Pierre Schmitz
3985129c3d prepare release 2011-04-29 21:32:57 +02:00
Allan McRae
e197f6d34c checkpkg: remove checking for old style package names
All the packages in the Arch repo have been rebuilt to include the
architecture in their package names so this workaround is no longer
needed.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-29 21:20:11 +02:00
Eric Bélanger
c45e5bbf22 checkpkg: Added epoch support
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-29 21:20:04 +02:00
Eric Bélanger
e380f396cf Added bash_completion file
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-29 21:18:21 +02:00
Allan McRae
d187cdbc38 Use GPGKEY to select signing key
Use the default key from the gpg keyring to sign packages unless
GPGKEY is specified (either in makepkg.conf or as an environmental
variable).

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-17 22:18:56 +02:00
Allan McRae
fee49075f0 Copy check() log from chroot
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-17 22:16:45 +02:00
Eric Bélanger
39ae6e23d6 commitpkg: clean up svn after changing arch from any to i686/x86_64
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-17 11:56:09 +02:00
Pierre Schmitz
61cc1f3504 prepare release 2011-04-11 18:27:44 +02:00
Pierre Schmitz
7037948b65 Add simple function to sign packages
Set SIGNPKG to y in makepkg.conf to enable signing.
2011-04-11 18:26:11 +02:00
Pierre Schmitz
0e6780f2c8 prepare release 2011-04-09 23:04:59 +02:00
Pierre Schmitz
45c8269441 archrelease: be more verbose 2011-04-09 13:41:14 +02:00
Pierre Schmitz
7e3013b2ae Fix rsync call; quotes wont work here 2011-04-08 12:24:25 +02:00
Dan McGee
c16e7c25c9 commitpkg: upload signatures if available
Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Dan McGee
c955ecf35d commitpkg: upload all files at the same time
Batch them up using a bash array and then pass them all to a single
invocation of rsync.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Dan McGee
160e936bba commitpkg: add '-y' to rsyncopts
This allows uploads to possibly be smaller if a similar file exists
nearby without the same name. Unlikely in most cases, but we might as
well take advantage if they do exist:

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Dan McGee
69f9e64aa3 commitpkg: move all rsync opts to rsyncopts var
Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Dan McGee
71efb148df commitpkg: make repo/server selection more modular
This gets rid of the ever-expanding conditional we had before and
replaces it with two case statements.

The first handles the command name. If it ends with 'pkg', we treat the
entire first part of the reponame, unless of course 'commitpkg' was
called directly. This allows one to add new symlinks such as
'gnome-unstablepkg'.

The second handles the server. Well-known repositories are listed and
passed to the appropriate server. All unusual repos are assumed to live
on gerolde and sent that direction.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Dan McGee
48ccc1c7fb Unify comment style
Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-04-02 00:26:33 +02:00
Pierre Schmitz
563ffa7be8 prepare release 2011-03-28 14:59:00 +02:00
Rémy Oudompheng
f01097f22c Don't prefix package name with './' if package is in $PKGDEST
Commit ad593b8b61 introduces
a problem when $PKGDEST is set and the package to transfer
has an absolute pathname. In this case there is no need
to add anything to have rsync work properly.

Signed-off-by: Rémy Oudompheng <remy@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-03-28 14:57:22 +02:00
Pierre Schmitz
ad593b8b61 prepare release 2011-03-26 14:34:07 +01:00
Allan McRae
e23c94675e Be less generic with package extension
Arch only uses .gz and .xz packages so look for .pkg.tar.?z.  This
prevents matching potential detached signature files.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-03-26 13:03:32 +01:00
Pierre Schmitz
96a11523e5 Update default makepkg.conf and pacman.conf to match the ones from pacman 3.5 2011-03-26 12:42:21 +01:00
Pierre Schmitz
bdde6e5a35 Merge branch 'master', remote-tracking branch 'heftig/master' 2011-03-26 09:58:28 +01:00
Ray Rashif
38f85d654a support optdepends
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-03-26 09:39:37 +01:00
Lukas Fleischer
2ed8ef1185 makechrootpkg: Copy package logs with split packages (fixes FS#23239).
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-03-26 09:38:28 +01:00
Lukas Fleischer
aa06caf31c Abort properly if source files are not under version control (FS#23122).
Remove superfluous subshell code from version control checks in
commitpkg, making it exit properly if source files are not under version
control. Also, improve correctness of sed(1) commands and use fgrep(1)
instead of grep(1) where appropriate.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-03-26 09:37:03 +01:00
Dave Reisner
08a68bb4a0 commitpkg: prefix package filenames with ./
This is a hint to rsync that the file is a path and not a remote module
in the case of a package with an epoch in the version.

Signed-off-by: Dave Reisner <d@falconindy.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-03-23 20:46:00 +01:00
Florian Pritz
3bc5f6b5c9 add epoch support
Signed-off-by: Florian Pritz <bluewind@server-speed.net>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-03-23 19:03:10 +01:00
Jan Steffens
2fa8fdec47 Make default copydir user-dependent
Eases usage when chroots are shared between multiple users.
2011-03-22 19:47:48 +01:00
Jan Steffens
0af05a48ab Use Btrfs snapshots for chroot copies, when available
This is much faster than using Rsync to clone.

Rsync stays available when the chroots are not on a Btrfs.
2011-03-22 19:47:48 +01:00
Jan Steffens
174ff59dba Add flock-based locking to chroots
This prevents accidents when chroots are shared between multiple users.
2011-03-22 19:47:32 +01:00
Jan Steffens
5434d3991c Remove sudo from archbuild
Archbuild should be called via sudo.
2011-03-18 12:04:26 +01:00
Jan Steffens
36dc5d8792 Stop the PACKAGER= and MAKEFLAGS= from piling on
Repeatedly reusing the same chroot kept adding lines to makepkg.conf.
2011-03-18 12:04:26 +01:00
Jan Steffens
96f22cfede Use the multilib-devel group 2011-03-18 12:04:26 +01:00
Lukas Fleischer
8b9733661d Use variables in Makefile instead of hardcoding stuff in every target.
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2011-03-18 12:04:23 +01:00
Lukas Fleischer
dbdb237519 Add ".PHONY" target to Makefile.
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2011-03-18 12:03:38 +01:00
Lukas Fleischer
2ff5c45d14 makechrootpkg: Copy package logs with split packages (fixes FS#23239).
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2011-03-18 11:28:45 +01:00
Lukas Fleischer
80168e7e1c Abort properly if source files are not under version control (FS#23122).
Remove superfluous subshell code from version control checks in
commitpkg, making it exit properly if source files are not under version
control. Also, improve correctness of sed(1) commands and use fgrep(1)
instead of grep(1) where appropriate.

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
2011-03-18 11:28:45 +01:00
Jan Steffens
f72297a639 Use readlink -e to canonicalize chrootdir 2011-03-14 02:31:26 +01:00
Jan Steffens
ba7cc139c4 Fix spelling 2011-03-14 02:31:26 +01:00
Jan Steffens
3491ea5d79 Syntax cleanup
No functional change.
2011-03-14 02:31:20 +01:00
Pierre Schmitz
d1304a3f1d prepare release 2011-01-08 17:31:53 +01:00
Pierre Schmitz
bcf8cd7eb1 mkarchroot: return 0 if there was no package to update in SyncFirst 2011-01-08 17:29:56 +01:00
Pierre Schmitz
95afa2e495 checkpkg: use sdiff -s to show differences in the file lists
This makes it much better readable especially for very large file lists.
2011-01-08 17:06:27 +01:00
Allan McRae
1094111559 checkpkg: get back to working directory after soname check
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-01-08 17:04:27 +01:00
Allan McRae
62860de113 checkpkg: Do not download oldpkg if in starting directory
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2011-01-08 17:04:18 +01:00
Pierre Schmitz
14ba11dcdf mkarchroot: pass inline shell script to chroot 2011-01-06 10:28:10 +01:00
Pierre Schmitz
be5505a54a prepare release 2011-01-06 09:25:55 +01:00
Pierre Schmitz
d09d34d77a mkarchroot: Ensure all packages have been updated
In reference to FS#22304 run pacman -Su again if there are still updates available.
This is the case for packages listed in SyncFirst.
2011-01-06 09:22:57 +01:00
Pierre Schmitz
5815d639f3 Accept any dir except a repos subdir as trunk 2010-12-14 15:13:06 +01:00
Pierre Schmitz
f804be7bbb prepare release 2010-12-12 23:34:13 +01:00
Pierre Schmitz
397f4cb04b makechrootpkg: The user nobody is only needed to run pacman 2010-12-09 12:51:47 +01:00
Allan McRae
f98eaebd1b Do not clean build directory on successful build
It is often useful to go back through build logs after building a
package and it is removed at the start of the next run anyway.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-12-09 10:35:13 +01:00
Pierre Schmitz
7a369b3c35 mkarchroot: add missing devices nodes
/dev/tty, /dev/tty0 and /dev/full
2010-12-04 15:03:15 +01:00
Pierre Schmitz
a17eaf3be8 prepare release 2010-12-02 16:53:11 +01:00
Pierre Schmitz
962d84c708 checkpkg: don't exclude libs ending with .so
See https://bugs.archlinux.org/task/21315
2010-12-02 16:50:23 +01:00
Pierre Schmitz
e06a4a7243 archbuild: update the root install instead of the working copy
This avoids updating the chroot on every call. See https://bugs.archlinux.org/task/21930
2010-12-02 13:37:13 +01:00
Pierre Schmitz
d6792db31c mkarchroot: create a minimal /dev instead of using the one of the host 2010-12-02 13:09:34 +01:00
Pierre Schmitz
372fb4e7d1 bugfix release 2010-11-22 19:14:47 +01:00
Andrea Scarpino
25133fcd17 Fetch the right architecture when a repo contains dash
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-11-22 16:07:14 +01:00
Pierre Schmitz
e3d2f1a020 prepare release 2010-11-18 00:28:25 +01:00
Pierre Schmitz
8440133032 archbuild: simplify multilib call 2010-11-17 22:10:21 +01:00
Pierre Schmitz
0adf83fadf Don't try to guess users architecture 2010-11-16 13:43:13 +01:00
Pierre Schmitz
ecc3fcf86d Explicitly install libtool-multilib when building multilib packages
This bypasses a strange pacman behaviour with the --noconfirm parameter.
2010-11-16 13:31:54 +01:00
Pierre Schmitz
394d9c8b54 Create pacman sync dir on chroot creation
See https://bugs.archlinux.org/task/21125
2010-11-16 13:27:33 +01:00
Pierre Schmitz
7a3550c903 commitpkg: pkgfile might be an absolute path when using PKGDEST 2010-10-19 07:44:35 +02:00
Pierre Schmitz
c290215aa6 prepare release 2010-10-17 14:33:40 +02:00
Andrea Scarpino
32b55d1587 install option (-I) does not require a directory containing a PKGBUILD
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-10-17 12:57:57 +02:00
Pierre Schmitz
6201853f52 install gcc-multilib for multilib-build by default 2010-10-17 12:57:48 +02:00
Florian Pritz
fbc3929ec0 commitpkg: error out if ~/staging/$repo doesn't exist
Signed-off-by: Florian Pritz <bluewind@xssn.at>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-09-16 06:15:40 +02:00
Pierre Schmitz
8cb3bcc17b checkpkg: make diff output more readable 2010-09-11 20:17:41 +02:00
Pierre Schmitz
db7a90ccd2 Use pacman to determine the host's mirror 2010-09-11 19:25:54 +02:00
Pierre Schmitz
a9bfd8d2c9 ad support for multilib-testing 2010-09-11 19:09:05 +02:00
Pierre Schmitz
0d0e1a9079 repare release 2010-09-06 20:53:26 +02:00
Ionut Biru
b9ea05789d checkpkg: fix extracting soname bumps
extracting the tarball was done from the wrong directory

Signed-off-by: Ionut Biru <ibiru@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-09-06 20:28:14 +02:00
Pierre Schmitz
79ac757e7f add support for community-staging repository 2010-09-01 20:00:11 +02:00
Pierre Schmitz
a4eabcceaa add makepkg.conf for [multilib] 2010-08-22 21:54:17 +02:00
Pierre Schmitz
b591e69541 add initial [multilib] support 2010-08-22 21:52:23 +02:00
Pierre Schmitz
2f18ca1836 Use findmnt to generate a mtab
Instead of just copying the hosts mtab use findmnt. This way only reachable mount points are shown.
2010-08-22 20:26:33 +02:00
Pierre Schmitz
0ebc0b4b4b prepare release 2010-08-20 12:44:16 +02:00
Pierre Schmitz
9b001033ae Add archbuild helper script to create and build in chroots
This will create chroots on demand if needed.
2010-08-20 12:41:39 +02:00
Pierre Schmitz
ae5083fc11 source PKGBUILD before evaluating install and changelog files
This makes it possible to use e.g. install=$pkgname.install
2010-08-20 11:55:33 +02:00
Pierre Schmitz
6f4e865ff9 makechrootpkg: read packager and makeflags from makepkg.conf
also set some sane default options
2010-08-18 21:43:27 +02:00
Ionut Biru
000d68f7c6 copy packages into TEMPDIR
TEMPDIR is used before packages are copied into it and made it fail
because cannot find any.

Signed-off-by: Ionut Biru <ibiru@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-08-18 17:30:49 +02:00
Pierre Schmitz
fc6efdc38a reduce pacman's verbosity 2010-08-17 19:30:54 +02:00
Pierre Schmitz
87f5eb6300 Use host mirror in chroot environment
* Set first enabled mirror found mirrorlist as mirror within the chroot.
* If the mirror is local bind its directory read-only into the chroot.
* Fallback is the kernel.org mirror.
2010-08-17 19:23:16 +02:00
Pierre Schmitz
1a419e7974 add default config files for makepkg and pacman 2010-08-17 18:44:11 +02:00
Pierre Schmitz
1418bfbf42 Use default locale instead of copying from host
Use en_US.UTF-8 and de_DE.UTF-8 by default (the latter is needed for some packages like gcc)
2010-08-17 18:38:47 +02:00
Pierre Schmitz
f1c05d870b tagging 0.9.8 2010-08-17 08:33:23 +02:00
Pierre Schmitz
2e6d542220 add [staging] repository 2010-08-17 08:12:03 +02:00
Pierre Schmitz
cfddde22be Fix typo 2010-08-16 21:30:44 +02:00
Pierre Schmitz
f7b67c25ff Provide /dev/{shm,pts} within chroot
implements FS#20246
2010-08-12 18:26:07 +02:00
Pierre Schmitz
65d654a9d7 lddd: correct mktemp usage 2010-07-13 15:10:47 +02:00
Pierre Schmitz
cfdfbd99f8 checkpkg: Improve output message 2010-07-11 13:46:40 +02:00
Pierre Schmitz
a01ed3869c checkpkg: Use temporary working directory 2010-07-11 13:45:51 +02:00
Pierre Schmitz
e656ec7052 Check if ~/.makepkg.conf exists
Fixes FS#20041
2010-07-01 16:51:43 +02:00
Pierre Schmitz
dcc7b6728d prepare 0.9.7 release 2010-06-28 10:32:47 +02:00
Pierre Schmitz
88764c0298 local can only be used within functions 2010-06-28 10:26:38 +02:00
Pierre Schmitz
f2959b8dd5 check if changelog and install files are commited to svn 2010-06-28 09:54:50 +02:00
Pierre Schmitz
0564514df4 remove useless sourcing of PKGBUILD 2010-06-28 09:50:08 +02:00
Pierre Schmitz
edb24eb1a0 Simplify detection of changelog and install files
Thise code was copied from makepkg
2010-06-28 09:48:21 +02:00
Andrea Scarpino
a2132bc899 read {SRC, PKG}DEST from user makepkg.conf
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-06-28 09:35:20 +02:00
Eric Bélanger
964c0d1640 Fixed changelog support to work with makepkg 3.4
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-06-28 08:07:41 +02:00
Pierre Schmitz
76f3e25949 keep partially transferred files 2010-06-25 21:40:45 +02:00
Pierre Schmitz
85251a1d7b removed mode lines; was not a good idea after all 2010-06-24 10:01:20 +02:00
Eric Bélanger
27df94f51b commitpkg: add newline to make output look more orderly
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2010-06-22 17:09:49 +02:00
Pierre Schmitz
12eec95ff8 set version in Makefile 2010-05-02 15:46:51 +02:00
Pierre Schmitz
d4f00819ac copy namcap.log to working dir 2010-05-02 15:42:29 +02:00
Pierre Schmitz
4a4455c086 Set target CARCH before sourcing the PKGBUILD
CARCH might be used within the PKGBUILD to select correct sources
2010-05-02 15:23:54 +02:00
Pierre Schmitz
52e140f2fe exit 1 on build failure 2010-05-02 15:16:53 +02:00
Pierre Schmitz
48dead1af7 Force correct remote file permissions 2010-03-31 23:58:59 +02:00
Pierre Schmitz
17e875f6b3 makechrootpkg: Keep source files even if build fails
implementes FS#18437
2010-03-03 21:49:22 +01:00
Pierre Schmitz
a7c5010d24 Upload any pkg.tar.* file as long as it is canonical 2010-03-03 21:41:53 +01:00
Pierre Schmitz
f72775feac PKGEXT was not defined in the context 2010-03-03 21:38:59 +01:00
21 changed files with 1276 additions and 241 deletions

110
Makefile
View File

@@ -1,47 +1,79 @@
V=0.9.26
PREFIX = /usr/local
BINPROGS = \
checkpkg \
commitpkg \
archco \
archrelease \
archrm \
archbuild \
lddd \
finddeps \
rebuildpkgs
SBINPROGS = \
mkarchroot \
makechrootpkg
CONFIGFILES = \
makepkg-i686.conf \
makepkg-x86_64.conf \
pacman-extra.conf \
pacman-testing.conf \
pacman-staging.conf \
pacman-multilib.conf \
pacman-multilib-testing.conf
COMMITPKG_LINKS = \
extrapkg \
corepkg \
testingpkg \
stagingpkg \
communitypkg \
community-testingpkg \
community-stagingpkg \
multilibpkg \
multilib-testingpkg
ARCHBUILD_LINKS = \
extra-i686-build \
extra-x86_64-build \
testing-i686-build \
testing-x86_64-build \
staging-i686-build \
staging-x86_64-build \
multilib-build \
multilib-testing-build
all: all:
install: install:
# commitpkg/checkpkg and friends install -dm0755 $(DESTDIR)$(PREFIX)/bin
mkdir -p $(DESTDIR)/usr/bin install -dm0755 $(DESTDIR)$(PREFIX)/sbin
install -m 755 checkpkg $(DESTDIR)/usr/bin install -dm0755 $(DESTDIR)$(PREFIX)/share/devtools
install -m 755 commitpkg $(DESTDIR)/usr/bin install -m0755 ${BINPROGS} $(DESTDIR)$(PREFIX)/bin
ln -sf commitpkg $(DESTDIR)/usr/bin/extrapkg install -m0755 ${SBINPROGS} $(DESTDIR)$(PREFIX)/sbin
ln -sf commitpkg $(DESTDIR)/usr/bin/corepkg install -m0644 ${CONFIGFILES} $(DESTDIR)$(PREFIX)/share/devtools
ln -sf commitpkg $(DESTDIR)/usr/bin/testingpkg for l in ${COMMITPKG_LINKS}; do ln -sf commitpkg $(DESTDIR)$(PREFIX)/bin/$$l; done
ln -sf commitpkg $(DESTDIR)/usr/bin/communitypkg for l in ${ARCHBUILD_LINKS}; do ln -sf archbuild $(DESTDIR)$(PREFIX)/bin/$$l; done
ln -sf commitpkg $(DESTDIR)/usr/bin/community-testingpkg install -Dm0644 bash_completion $(DESTDIR)/etc/bash_completion.d/devtools
# arch{co,release,rm} ln -sf archco $(DESTDIR)$(PREFIX)/bin/communityco
install -m 755 archco $(DESTDIR)/usr/bin
install -m 755 communityco $(DESTDIR)/usr/bin
install -m 755 archrelease $(DESTDIR)/usr/bin
install -m 755 archrm $(DESTDIR)/usr/bin
# new chroot tools, only usable by root
mkdir -p $(DESTDIR)/usr/sbin
install -m 755 mkarchroot $(DESTDIR)/usr/sbin
install -m 755 makechrootpkg $(DESTDIR)/usr/sbin
#Additional packaging helper scripts
install -m 755 lddd $(DESTDIR)/usr/bin
install -m 755 finddeps $(DESTDIR)/usr/bin
install -m 755 rebuildpkgs $(DESTDIR)/usr/bin
uninstall: uninstall:
# remove all files we installed for f in ${BINPROGS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$f; done
rm $(DESTDIR)/usr/bin/checkpkg for f in ${SBINPROGS}; do rm -f $(DESTDIR)$(PREFIX)/sbin/$$f; done
rm $(DESTDIR)/usr/bin/commitpkg for f in ${CONFIGFILES}; do rm -f $(DESTDIR)$(PREFIX)/share/devtools/$$f; done
rm $(DESTDIR)/usr/bin/extrapkg for l in ${COMMITPKG_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
rm $(DESTDIR)/usr/bin/corepkg for l in ${ARCHBUILD_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
rm $(DESTDIR)/usr/bin/testingpkg rm $(DESTDIR)/etc/bash_completion.d/devtools
rm $(DESTDIR)/usr/bin/communitypkg rm -f $(DESTDIR)$(PREFIX)/bin/communityco
rm $(DESTDIR)/usr/bin/community-testingpkg
rm $(DESTDIR)/usr/sbin/mkarchroot
rm $(DESTDIR)/usr/sbin/makechrootpkg
rm $(DESTDIR)/usr/bin/lddd
rm $(DESTDIR)/usr/bin/finddeps
rm $(DESTDIR)/usr/bin/archco
rm $(DESTDIR)/usr/bin/archrelease
rm $(DESTDIR)/usr/bin/archrm
rm $(DESTDIR)/usr/bin/communityco
rm $(DESTDIR)/usr/bin/rebuildpkgs
dist: dist:
git archive --format=tar --prefix=devtools-$(V)/ $(V) | gzip -9 > devtools-$(V).tar.gz git archive --format=tar --prefix=devtools-$(V)/ $(V) | gzip -9 > devtools-$(V).tar.gz
upload:
scp devtools-$(V).tar.gz gerolde.archlinux.org:/srv/ftp/other/devtools/
.PHONY: all install uninstall dist upload

67
archbuild Executable file
View File

@@ -0,0 +1,67 @@
#!/bin/bash
base_packages='base base-devel sudo'
cmd="$(basename "${0%-build}")"
if [ "${cmd%-*}" == 'multilib' ]; then
repo="${cmd}"
arch='x86_64'
base_packages+=' multilib-devel'
else
repo=${cmd%-*}
arch=${cmd##*-}
fi
chroots='/var/tmp/archbuild'
clean_first=false
usage() {
echo "usage $(basename "$0")"
echo ' -c Recreate the chroot before building'
echo ' -r <dir> Create chroots in this directory'
exit 1
}
while getopts 'cr:' arg; do
case "${arg}" in
c) clean_first=true ;;
r) chroots="$OPTARG" ;;
*) usage ;;
esac
done
if [ "$EUID" != '0' ]; then
echo 'This script must be run as root.'
exit 1
fi
if ${clean_first} || [ ! -d "${chroots}/${repo}-${arch}" ]; then
echo "Creating chroot for [${repo}] (${arch})..."
for copy in ${chroots}/${repo}-${arch}/*; do
[[ -d $copy ]] || continue
echo "Deleting chroot copy '$(basename "${copy}")'..."
# Lock the copy
exec 9>${copy}.lock
flock 9
{ type -P btrfs && btrfs subvolume delete ${copy}; } &>/dev/null
rm -rf ${copy}
done
exec 9>&-
rm -rf ${chroots}/${repo}-${arch}
mkdir -p ${chroots}/${repo}-${arch}
setarch ${arch} mkarchroot \
-C /usr/share/devtools/pacman-${repo}.conf \
-M /usr/share/devtools/makepkg-${arch}.conf \
${chroots}/${repo}-${arch}/root \
${base_packages}
else
setarch ${arch} mkarchroot \
-u \
${chroots}/${repo}-${arch}/root
fi
echo "Building in chroot for [${repo}] (${arch})..."
setarch ${arch} makechrootpkg -c -r ${chroots}/${repo}-${arch}

22
archco
View File

@@ -1,13 +1,23 @@
#!/bin/bash #!/bin/bash
scriptname=${0##*/}
if [ "$1" = '' ]; then if [ "$1" = '' ]; then
echo 'Usage: archco <package name> [<package name>]' echo 'Usage: '$scriptname' <package name> [<package name>]'
exit 1 exit 1
fi fi
for i in "$@"; do case $scriptname in
svn co svn+ssh://gerolde.archlinux.org/srv/svn-packages/$i archco)
done SVNURL="svn+ssh://gerolde.archlinux.org/srv/svn-packages";;
communityco)
SVNURL="svn+ssh://aur.archlinux.org/srv/svn-packages";;
*)
echo "error: couldn't find svn url for $scriptname"
exit 1
;;
esac
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent for i in "$@"; do
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132 svn co "$SVNURL/$i"
done

View File

@@ -9,28 +9,48 @@ if [ "$1" = '' ]; then
abort 'Usage: archrelease <repo>' abort 'Usage: archrelease <repo>'
fi fi
# TODO: validate repo is really repo-arch
if [ ! -f PKGBUILD ]; then if [ ! -f PKGBUILD ]; then
abort 'archrelease: PKGBUILD not found' abort 'archrelease: PKGBUILD not found'
fi fi
if [ "$(basename $(readlink -f .))" != 'trunk' ]; then trunk=$(basename $(pwd))
abort 'archrelease: Not in a package trunk dir'
# Normally this should be trunk, but it may be something
# such as 'gnome-unstable'
if [ "$(basename $(dirname $(pwd)))" == "repos" ]; then
abort 'archrelease: Should not be in repos dir (try from trunk/)'
fi fi
if [ ! -z "$(svn status -q)" ]; then if [ ! -z "$(svn status -q)" ]; then
abort 'archrelease: You have not committed your changes yet!' abort 'archrelease: You have not committed your changes yet!'
fi fi
echo -n 'releasing package...' echo -n "releasing package to ${1}..."
pushd .. >/dev/null pushd .. >/dev/null
if [ -d "repos/${1}" ]; then if [ -d "repos/${1}" ]; then
svn rm --force -q "repos/${1}" for file in $(svn ls "repos/${1}"); do
svn commit -q -m "archrelease: remove ${1}" || abort svn rm -q "repos/${1}/$file"
done
fi fi
svn copy -q -r HEAD trunk "repos/${1}" if [ ! -d repos ]; then
mkdir repos
svn add -q repos
fi
if [ ! -d "repos/${1}" ]; then
mkdir "repos/${1}"
svn add -q "repos/${1}"
fi
known_files=$(svn ls "trunk")
for file in $known_files; do
if [ "$file" != "${file%/}" ]; then
abort "archrelease: subdirectories are not supported in package directories!"
fi
done
for file in $known_files; do
svn copy -q -r HEAD "trunk/$file" "repos/${1}/"
done
svn commit -q -m "archrelease: copy trunk to ${1}" || abort svn commit -q -m "archrelease: copy trunk to ${1}" || abort
popd >/dev/null popd >/dev/null
echo 'done' echo 'done'
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

3
archrm
View File

@@ -11,6 +11,3 @@ fi
#popd #popd
rm -rf $1 rm -rf $1
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

69
bash_completion Normal file
View File

@@ -0,0 +1,69 @@
_devtools_compgen() {
local i r
COMPREPLY=($(compgen -W '$*' -- "$cur"))
for ((i=1; i < ${#COMP_WORDS[@]}-1; i++)); do
for r in ${!COMPREPLY[@]}; do
if [[ ${COMP_WORDS[i]} = ${COMPREPLY[r]} ]]; then
unset 'COMPREPLY[r]'; break
fi
done
done
}
_archco_pkg() {
_devtools_compgen "$(
\pacman -$1
)"
}
_archco() {
local cur prev
COMPREPLY=()
cur=$(_get_cword)
prev=${COMP_WORDS[COMP_CWORD-1]}
_archco_pkg Slq
true
} &&
complete -F _archco archco communityco
_makechrootpkg() {
local cur
COMPREPLY=()
_get_comp_words_by_ref cur
case $cur in
-*)
COMPREPLY=( $( compgen -W '-I -c -d -h -l -r -u' -- "$cur" ) )
;;
*)
_filedir
return 0
;;
esac
true
} &&
complete -F _makechrootpkg makechrootpkg
_mkarchroot() {
local cur
COMPREPLY=()
_get_comp_words_by_ref cur
case $cur in
-*)
COMPREPLY=( $( compgen -W '-C -M -c -f -h -n -r -u' -- "$cur" ) )
;;
*)
_filedir
return 0
;;
esac
true
} &&
complete -F _mkarchroot mkarchroot
# ex:et ts=2 sw=2 ft=sh

View File

@@ -27,33 +27,36 @@ if [ "$arch" == 'any' ]; then
CARCH='any' CARCH='any'
fi fi
for _pkgname in ${pkgname[@]}; do STARTDIR=$(pwd)
pkgfile=${_pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT} TEMPDIR=$(mktemp -d /tmp/checkpkg-script.XXXX)
oldstylepkgfile=${_pkgname}-${pkgver}-${pkgrel}${PKGEXT} cd $TEMPDIR
if [ -f "$(pwd)/$pkgfile" ]; then for _pkgname in ${pkgname[@]}; do
pkgfile=$(pwd)/$pkgfile if [ -z ${epoch} ] ; then
pkgfile=${_pkgname}-${pkgver}-${pkgrel}-${CARCH}${PKGEXT}
else
pkgfile=${_pkgname}-${epoch}:${pkgver}-${pkgrel}-${CARCH}${PKGEXT}
fi
if [ -f "$STARTDIR/$pkgfile" ]; then
ln -s "$STARTDIR/$pkgfile" "$pkgfile"
elif [ -f "$PKGDEST/$pkgfile" ]; then elif [ -f "$PKGDEST/$pkgfile" ]; then
pkgfile=$PKGDEST/$pkgfile ln -s "$PKGDEST/$pkgfile" "$pkgfile"
elif [ -f "$(pwd)/$oldstylepkgfile" ]; then
pkgfile=$(pwd)/$oldstylepkgfile
elif [ -f "$PKGDEST/$oldstylepkgfile" ]; then
pkgfile=$PKGDEST/$oldstylepkgfile
else else
echo "File \"$pkgfile\" doesn't exist" echo "File \"$pkgfile\" doesn't exist"
exit 1 exit 1
fi fi
tmp=`pacman -Spd --noconfirm $_pkgname` tmp=$(pacman -Spdd --noconfirm $_pkgname)
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "Couldn't download previous package for $_pkgname." echo "Couldn't download previous package for $_pkgname."
exit 1 exit 1
fi fi
pkgurl=`echo $tmp | rev | cut -d ' ' -f 1 | rev` pkgurl=$(echo $tmp | rev | cut -d ' ' -f 1 | rev)
oldpkg=`strip_url $pkgurl` oldpkg=$(strip_url $pkgurl)
if [ "$(basename $oldpkg)" = "$(basename $pkgfile)" ]; then if [ "$(basename $oldpkg)" = "$(basename $pkgfile)" ]; then
echo "The built package ($_pkgname) is the one in the repo right now!" echo "The built package ($_pkgname) is the one in the repo right now!"
@@ -62,9 +65,11 @@ for _pkgname in ${pkgname[@]}; do
if [ ! -f $oldpkg ]; then if [ ! -f $oldpkg ]; then
if echo $pkgurl | grep '^file:///' > /dev/null 2>&1; then if echo $pkgurl | grep '^file:///' > /dev/null 2>&1; then
cp `echo $pkgurl | sed 's#^file://##'` . ln -s "${pkgurl#file://}" $(basename "${pkgurl#file://}")
elif [ -f $PKGDEST/$oldpkg ]; then elif [ -f "$PKGDEST/$oldpkg" ]; then
cp $PKGDEST/$oldpkg . ln -s "$PKGDEST/$oldpkg" "$oldpkg"
elif [ -f "$STARTDIR/$oldpkg" ]; then
ln -s "$STARTDIR/$oldpkg" "$oldpkg"
else else
wget --quiet $pkgurl wget --quiet $pkgurl
fi fi
@@ -76,20 +81,19 @@ for _pkgname in ${pkgname[@]}; do
sort -o filelist-$_pkgname filelist-$_pkgname sort -o filelist-$_pkgname filelist-$_pkgname
sort -o filelist-$_pkgname-old filelist-$_pkgname-old sort -o filelist-$_pkgname-old filelist-$_pkgname-old
diff filelist-$_pkgname-old filelist-$_pkgname sdiff -s filelist-$_pkgname-old filelist-$_pkgname
if diff filelist-$_pkgname-old filelist-$_pkgname | grep '\.so\.' > /dev/null 2>&1; then if diff filelist-$_pkgname-old filelist-$_pkgname | grep '\.so' > /dev/null 2>&1; then
mkdir -p pkg mkdir -p pkg
cd pkg cd pkg
bsdtar xf "$pkgfile" > /dev/null bsdtar xf ../"$pkgfile" > /dev/null
for i in `diff ../filelist-$_pkgname-old ../filelist-$_pkgname | grep \> | grep \.so\. | awk '{print $2}'`; do for i in $(diff ../filelist-$_pkgname-old ../filelist-$_pkgname | grep \> | grep '\.so' | awk '{print $2}'); do
echo -n "${i}: " echo "${i}: " "$(objdump -p $i | grep SONAME)"
objdump -p $i | grep SONAME
done done
cd ..
else else
echo "No filename differences for $_pkgname." echo "No soname differences for $_pkgname."
fi fi
done done
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent echo "Files saved to $TEMPDIR"
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

189
commitpkg
View File

@@ -5,6 +5,30 @@ abort() {
exit 1 exit 1
} }
getpkgfile() {
if [[ ${#} -ne 1 ]]; then
echo 'ERROR: No canonical package found!' >&2
exit 1
elif [ ! -f "${1}" ]; then
echo "ERROR: Package ${1} not found!" >&2
exit 1
fi
echo ${1}
}
##
# usage : get_full_version( $epoch, $pkgver, $pkgrel )
# return : full version spec, including epoch (if necessary), pkgver, pkgrel
##
get_full_version() {
if [[ $1 -eq 0 ]]; then
# zero epoch case, don't include it in version
echo $2-$3
else
echo $1:$2-$3
fi
}
# Source makepkg.conf; fail if it is not found # Source makepkg.conf; fail if it is not found
if [ -r '/etc/makepkg.conf' ]; then if [ -r '/etc/makepkg.conf' ]; then
@@ -27,79 +51,152 @@ fi
. PKGBUILD . PKGBUILD
pkgbase=${pkgbase:-$pkgname} pkgbase=${pkgbase:-$pkgname}
# set up repo-specific opts depending on how we were called case "$cmd" in
server='gerolde.archlinux.org' commitpkg)
if [ "$cmd" == 'extrapkg' ]; then if [ $# -eq 0 ]; then
repo='extra' abort 'usage: commitpkg <reponame> [-l limit] [-a arch] [commit message]'
elif [ "$cmd" == 'corepkg' ]; then fi
repo='core' repo="$1"
elif [ "$cmd" == 'testingpkg' ]; then shift
repo='testing' ;;
elif [ "$cmd" == 'communitypkg' ]; then *pkg)
repo='community' repo="${cmd%pkg}"
server='aur.archlinux.org' ;;
elif [ "$cmd" == 'community-testingpkg' ]; then *)
repo='community-testing' abort 'usage: commitpkg <reponame> [-l limit] [-a arch] [commit message]'
server='aur.archlinux.org' ;;
else esac
if [ $# -eq 0 ]; then
abort 'usage: commitpkg <reponame> [-l limit] [commit message]' case "$repo" in
fi core|extra|testing|staging)
repo="$1" server='gerolde.archlinux.org' ;;
shift community*|multilib*)
fi server='aur.archlinux.org' ;;
*)
server='gerolde.archlinux.org'
echo "Non-standard repository $repo in use, defaulting to server $server" ;;
esac
# check if all local source files are under version control # check if all local source files are under version control
(for s in ${source[@]} $install; do for s in "${source[@]}"; do
echo $s | grep -vq '://' && \ if [[ $s != *://* ]] && ! svn status -v "$s" | grep -q '^[ AMRX~]'; then
svn status $s | grep -q '?' && \ abort "$s is not under version control"
abort "$s is not under version control" fi
done) || true done
# check if changelog and install files are under version control
for i in 'changelog' 'install'; do
filelist=$(sed -n "s/^[[:space:]]*$i=//p" PKGBUILD)
for file in $filelist; do
# evaluate any bash variables used
eval file=${file}
if ! svn status -v "${file}" | grep -q '^[ AMRX~]'; then
abort "${file} is not under version control"
fi
done
done
# see if any limit options were passed, we'll send them to rsync # see if any limit options were passed, we'll send them to rsync
unset rsyncopts rsyncopts='-e ssh -p --chmod=ug=rw,o=r -c -h -L --progress --partial -y'
if [ "$1" = '-l' ]; then if [ "$1" = '-l' ]; then
rsyncopts="--bwlimit=$2" rsyncopts="$rsyncopts --bwlimit=$2"
shift 2 shift 2
fi fi
echo -n 'committing changes to trunk...' if [ "$1" = "-a" ]; then
if [ -n "$1" ]; then commit_arch=$2
svn commit -q -m "upgpkg: $pkgbase $pkgver-$pkgrel shift 2
$1" || abort
else
svn commit -q || abort
fi fi
echo 'done'
if [ -n "$(svn status -q)" ]; then
echo -n 'committing changes to trunk...'
msgtemplate="upgpkg: $pkgbase $(get_full_version ${epoch:-0} $pkgver $pkgrel)
"
if [ -n "$1" ]; then
svn commit -q -m "${msgtemplate}${1}" || abort
else
msgfile="$(mktemp)"
echo "$msgtemplate" > "$msgfile"
if [ -n "$SVN_EDITOR" ]; then
$SVN_EDITOR "$msgfile"
elif [ -n "$VISUAL" ]; then
$VISUAL "$msgfile"
elif [ -n "$EDITOR" ]; then
$EDITOR "$msgfile"
else
vi "$msgfile"
fi
[ -s "$msgfile" ] || abort
svn commit -q -F "$msgfile" || abort
unlink "$msgfile"
fi
echo 'done'
fi
declare -a uploads
for _arch in ${arch[@]}; do for _arch in ${arch[@]}; do
for _pkgname in ${pkgname[@]}; do if [ -n "$commit_arch" ] && [ "${_arch}" != "$commit_arch" ]; then
pkgfile=$_pkgname-$pkgver-$pkgrel-${_arch}$PKGEXT echo "skipping ${_arch}"
continue
fi
if [ ! -f $pkgfile -a -f "$PKGDEST/$pkgfile" ]; then for _pkgname in ${pkgname[@]}; do
pkgfile="$PKGDEST/$pkgfile" fullver=$(get_full_version ${epoch:-0} $pkgver $pkgrel)
elif [ ! -f $pkgfile ]; then pkgfile=$(getpkgfile "$_pkgname-$fullver-${_arch}".pkg.tar.?z 2>/dev/null)
pkgdestfile=$(getpkgfile "$PKGDEST/$_pkgname-$fullver-${_arch}".pkg.tar.?z 2>/dev/null)
if [ -f "$pkgfile" ]; then
pkgfile="./$pkgfile"
elif [ -f "$pkgdestfile" ]; then
pkgfile="$pkgdestfile"
else
echo "skipping ${_arch}" echo "skipping ${_arch}"
continue 2 continue 2
fi fi
uploads+=("$pkgfile")
echo -n 'uploading ' if [[ $SIGNPKG == 'y' ]]; then
rsync -c -h -L --progress $rsyncopts "${pkgfile}" -e ssh $server:staging/$repo || abort echo "Signing package ${pkgfile}..."
if [[ -n $GPGKEY ]]; then
SIGNWITHKEY="-u ${GPGKEY}"
fi
gpg --detach-sign --use-agent ${SIGNWITHKEY} "${pkgfile}" || abort
fi
sigfile="${pkgfile}.sig"
if [ -f "${sigfile}" ]; then
uploads+=("$sigfile")
elif [[ $SIGNPKG == 'y' ]]; then
abort "Signature ${pkgfile}.sig was not found"
fi
done done
archrelease $repo-${_arch} || abort archrelease $repo-${_arch} || abort
done done
if [[ ${#uploads[*]} -gt 0 ]]; then
echo 'uploading all package and signature files'
rsync $rsyncopts "${uploads[@]}" "$server:staging/$repo/" || abort
fi
if [ "${arch[*]}" == 'any' ]; then if [ "${arch[*]}" == 'any' ]; then
if [ -d ../repos/$repo-i686 -a -d ../repos/$repo-x86_64 ]; then if [ -d ../repos/$repo-i686 -a -d ../repos/$repo-x86_64 ]; then
pushd ../repos/ >/dev/null pushd ../repos/ >/dev/null
echo -n "removing $repo-i686 and $repo-x86_64..." echo "removing $repo-i686 and $repo-x86_64..."
svn rm $repo-i686 svn rm $repo-i686
svn rm $repo-x86_64 svn rm $repo-x86_64
svn commit -q -m "removed $repo-i686 and $repo-x86_64 for $pkgname" svn commit -q -m "removed $repo-i686 and $repo-x86_64 for $pkgname"
echo 'done' echo 'done'
popd >/dev/null popd >/dev/null
fi fi
else
if [ -d ../repos/$repo-any ]; then
pushd ../repos/ >/dev/null
echo "removing $repo-any..."
svn rm $repo-any
svn commit -q -m "removed $repo-any for $pkgname"
echo 'done'
popd >/dev/null
fi
fi fi
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

View File

@@ -1,13 +0,0 @@
#!/bin/bash
if [ "$1" = '' ]; then
echo 'Usage: communityco <package name> [<package name>]'
exit 1
fi
for i in "$@"; do
svn co svn+ssh://aur.archlinux.org/srv/svn-packages/$i
done
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

View File

@@ -21,22 +21,26 @@ for d in $(find . -type d); do
unset pkgname depends makedepends unset pkgname depends makedepends
. PKGBUILD . PKGBUILD
for dep in "${depends[@]}"; do for dep in "${depends[@]}"; do
# lose the version comaparator, if any # lose the version comparator, if any
depname=${dep%%[<>=]*} depname=${dep%%[<>=]*}
if [ "$depname" = "$match" ]; then if [ "$depname" = "$match" ]; then
echo "$d (depends)" echo "$d (depends)"
fi fi
done done
for dep in "${makedepends[@]}"; do for dep in "${makedepends[@]}"; do
# lose the version comaparator, if any # lose the version comparator, if any
depname=${dep%%[<>=]*} depname=${dep%%[<>=]*}
if [ "$depname" = "$match" ]; then if [ "$depname" = "$match" ]; then
echo "$d (makedepends)" echo "$d (makedepends)"
fi fi
done done
for dep in "${optdepends[@]/:*}"; do
# lose the version comaparator, if any
depname=${dep%%[<>=]*}
if [ "$depname" = "$match" ]; then
echo "$d (optdepends)"
fi
done
fi fi
cd $tld cd $tld
done done
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

15
lddd
View File

@@ -4,14 +4,12 @@
# #
ifs=$IFS ifs=$IFS
IFS=':' IFS="${IFS}:"
libdirs='/lib:/usr/lib:/opt/qt/lib:/opt/kde/lib:/usr/lib/libfakeroot:/opt/NX/lib' libdirs="/lib /usr/lib /usr/local/lib $(cat /etc/ld.so.conf.d/*)"
extras= extras=
TEMPDIR=$(mktemp /tmp/lddd-script.XXXX) TEMPDIR=$(mktemp -d /tmp/lddd-script.XXXX)
rm $TEMPDIR
mkdir -p $TEMPDIR
echo 'Go out and drink some tea, this will take a while :) ...' echo 'Go out and drink some tea, this will take a while :) ...'
# Check ELF binaries in the PATH and specified dir trees. # Check ELF binaries in the PATH and specified dir trees.
@@ -27,9 +25,9 @@ for tree in $PATH $libdirs $extras; do
-name '*.mcopclass' ! -name '*.mcoptype') -name '*.mcopclass' ! -name '*.mcoptype')
IFS=$ifs IFS=$ifs
for i in $files; do for i in $files; do
if [ `file $i | grep -c 'ELF'` -ne 0 ]; then if [ $(file $i | grep -c 'ELF') -ne 0 ]; then
# Is an ELF binary. # Is an ELF binary.
if [ `ldd $i 2>/dev/null | grep -c 'not found'` -ne 0 ]; then if [ $(ldd $i 2>/dev/null | grep -c 'not found') -ne 0 ]; then
# Missing lib. # Missing lib.
echo "$i:" >> $TEMPDIR/raw.txt echo "$i:" >> $TEMPDIR/raw.txt
ldd $i 2>/dev/null | grep 'not found' >> $TEMPDIR/raw.txt ldd $i 2>/dev/null | grep 'not found' >> $TEMPDIR/raw.txt
@@ -46,6 +44,3 @@ done
sort -u $TEMPDIR/pacman.txt >> $TEMPDIR/possible-rebuilds.txt sort -u $TEMPDIR/pacman.txt >> $TEMPDIR/possible-rebuilds.txt
echo "Files saved to $TEMPDIR" echo "Files saved to $TEMPDIR"
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

View File

@@ -10,9 +10,8 @@
FORCE='n' FORCE='n'
RUN='' RUN=''
MAKEPKG_ARGS='-sr' MAKEPKG_ARGS='-s --noconfirm'
REPACK='' REPACK=''
COPY='copy'
WORKDIR=$PWD WORKDIR=$PWD
update_first='0' update_first='0'
@@ -24,6 +23,10 @@ chrootdir=''
APPNAME=$(basename "${0}") APPNAME=$(basename "${0}")
default_copy=$USER
[[ -n $SUDO_USER ]] && default_copy=$SUDO_USER
[[ -z $default_copy || $default_copy = root ]] && default_copy=copy
usage() { usage() {
echo "usage ${APPNAME} [options] -r <chrootdir> [--] [makepkg args]" echo "usage ${APPNAME} [options] -r <chrootdir> [--] [makepkg args]"
echo ' Run this script in a PKGBUILD dir to build a package inside a' echo ' Run this script in a PKGBUILD dir to build a package inside a'
@@ -50,7 +53,8 @@ usage() {
echo '-r <dir> The chroot dir to use' echo '-r <dir> The chroot dir to use'
echo '-I <pkg> Install a package into the working copy of the chroot' echo '-I <pkg> Install a package into the working copy of the chroot'
echo '-l <copy> The directory to use as the working copy of the chroot' echo '-l <copy> The directory to use as the working copy of the chroot'
echo ' Useful for maintain multiple copies Default: copy' echo ' Useful for maintaining multiple copies.'
echo " Default: $default_copy"
exit 1 exit 1
} }
@@ -62,14 +66,20 @@ while getopts 'hcudr:I:l:' arg; do
d) add_to_db=1 ;; d) add_to_db=1 ;;
r) chrootdir="$OPTARG" ;; r) chrootdir="$OPTARG" ;;
I) install_pkg="$OPTARG" ;; I) install_pkg="$OPTARG" ;;
l) COPY="$OPTARG" ;; l) copy="$OPTARG" ;;
*) MAKEPKG_ARGS="$MAKEPKG_ARGS -$arg $OPTARG" ;; *) MAKEPKG_ARGS="$MAKEPKG_ARGS -$arg $OPTARG" ;;
esac esac
done done
#Get rid of trailing / in chrootdir # Canonicalize chrootdir, getting rid of trailing /
[ "$chrootdir" != "/" ] && chrootdir=$(echo $chrootdir | sed 's#/$##') chrootdir=$(readlink -e "$chrootdir")
copydir="$chrootdir/$COPY"
if [[ ${copy:0:1} = "/" ]]; then
copydir=$copy
else
[[ -z $copy ]] && copy=$default_copy
copydir="$chrootdir/$copy"
fi
# Pass all arguments after -- right to makepkg # Pass all arguments after -- right to makepkg
MAKEPKG_ARGS="$MAKEPKG_ARGS ${*:$OPTIND}" MAKEPKG_ARGS="$MAKEPKG_ARGS ${*:$OPTIND}"
@@ -87,11 +97,10 @@ if [ "$EUID" != '0' ]; then
exit 1 exit 1
fi fi
if [ ! -f PKGBUILD ]; then if [ ! -f PKGBUILD -a -z "$install_pkg" ]; then
echo 'This must be run in a directory containing a PKGBUILD.' echo 'This must be run in a directory containing a PKGBUILD.'
exit 1 exit 1
fi fi
source PKGBUILD
if [ ! -d "$chrootdir" ]; then if [ ! -d "$chrootdir" ]; then
echo "No chroot dir defined, or invalid path '$chrootdir'" echo "No chroot dir defined, or invalid path '$chrootdir'"
@@ -105,50 +114,110 @@ if [ ! -d "$chrootdir/root" ]; then
fi fi
umask 0022 umask 0022
# Lock the chroot we want to use. We'll keep this lock until we exit.
# Note this is the same FD number as in mkarchroot
exec 9>"$copydir.lock"
if ! flock -n 9; then
echo -n "locking chroot copy '$copy'..."
flock 9
echo "done"
fi
if [ ! -d "$copydir" -o "$clean_first" -eq "1" ]; then if [ ! -d "$copydir" -o "$clean_first" -eq "1" ]; then
# Get a read lock on the root chroot to make
# sure we don't clone a half-updated chroot
exec 8>"$chrootdir/root.lock"
if ! flock -sn 8; then
echo -n "locking clean chroot..."
flock -s 8
echo "done"
fi
echo -n 'creating clean working copy...' echo -n 'creating clean working copy...'
mkdir -p "$copydir" use_rsync=false
rsync -a --delete -q -W -x "$chrootdir/root/" "$copydir" if type -P btrfs >/dev/null; then
[ -d $copydir ] && btrfs subvolume delete "$copydir" &>/dev/null
btrfs subvolume snapshot "$chrootdir/root" "$copydir" &>/dev/null || use_rsync=true
else
use_rsync=true
fi
if $use_rsync; then
mkdir -p "$copydir"
rsync -a --delete -q -W -x "$chrootdir/root/" "$copydir"
fi
echo 'done' echo 'done'
# Drop the read lock again
exec 8>&-
fi fi
if [ -n "$install_pkg" ]; then if [ -n "$install_pkg" ]; then
pkgname="$(basename "$install_pkg")" pkgname="$(basename "$install_pkg")"
cp "$install_pkg" "$copydir/$pkgname" cp "$install_pkg" "$copydir/$pkgname"
mkarchroot -r "pacman -U /$pkgname" "$copydir" mkarchroot -r "pacman -U /$pkgname --noconfirm" "$copydir"
ret=$? ret=$?
rm "$copydir/$pkgname" rm "$copydir/$pkgname"
#exit early, we've done all we need to # Exit early, we've done all we need to
exit $ret exit $ret
fi fi
if [ $update_first -eq 1 ]; then if [ $update_first -eq 1 ]; then
mkarchroot -r 'pacman -Syu --noconfirm' "$copydir" mkarchroot -u "$copydir"
fi fi
[ -d "$copydir/build" ] || mkdir "$copydir/build" [ -d "$copydir/build" ] || mkdir "$copydir/build"
if [ "$REPACK" != "1" ]; then if [ "$REPACK" != "1" ]; then
#Remove anything in there UNLESS -R (repack) was passed to makepkg # Remove anything in there UNLESS -R (repack) was passed to makepkg
rm -rf "$copydir/build/"* rm -rf "$copydir/build/"*
fi fi
# Read .makepkg.conf even if called via sudo
if [ -n "${SUDO_USER}" ]; then
makepkg_conf="/$(eval echo ~${SUDO_USER})/.makepkg.conf"
else
makepkg_conf="~/.makepkg.conf"
fi
# Get SRC/PKGDEST from makepkg.conf # Get SRC/PKGDEST from makepkg.conf
SRCDEST=$(grep '^SRCDEST=' /etc/makepkg.conf | cut -d= -f2) if [ -f "${makepkg_conf}" ]; then
PKGDEST=$(grep '^PKGDEST=' /etc/makepkg.conf | cut -d= -f2) eval $(grep '^SRCDEST=' "${makepkg_conf}")
eval $(grep '^PKGDEST=' "${makepkg_conf}")
eval $(grep '^MAKEFLAGS=' "${makepkg_conf}")
eval $(grep '^PACKAGER=' "${makepkg_conf}")
fi
[ -z "${SRCDEST}" ] && eval $(grep '^SRCDEST=' /etc/makepkg.conf)
[ -z "${PKGDEST}" ] && eval $(grep '^PKGDEST=' /etc/makepkg.conf)
[ -d "$copydir/pkgdest" ] || mkdir "$copydir/pkgdest" [ -d "$copydir/pkgdest" ] || mkdir "$copydir/pkgdest"
if ! grep 'PKGDEST=/pkgdest' "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then if ! grep 'PKGDEST="/pkgdest"' "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then
echo 'PKGDEST=/pkgdest' >> "$copydir/etc/makepkg.conf" echo 'PKGDEST="/pkgdest"' >> "$copydir/etc/makepkg.conf"
fi fi
[ -d "$copydir/srcdest" ] || mkdir "$copydir/srcdest" [ -d "$copydir/srcdest" ] || mkdir "$copydir/srcdest"
if ! grep 'SRCDEST=/srcdest' "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then if ! grep 'SRCDEST="/srcdest"' "$copydir/etc/makepkg.conf" >/dev/null 2>&1; then
echo 'SRCDEST=/srcdest' >> "$copydir/etc/makepkg.conf" echo 'SRCDEST="/srcdest"' >> "$copydir/etc/makepkg.conf"
fi
[ -z "${MAKEFLAGS}" ] && eval $(grep '^MAKEFLAGS=' /etc/makepkg.conf)
if [ -n "${MAKEFLAGS}" ]; then
sed -i '/^MAKEFLAGS=/d' "$copydir/etc/makepkg.conf"
echo "MAKEFLAGS='${MAKEFLAGS}'" >> "$copydir/etc/makepkg.conf"
fi
[ -z "${PACKAGER}" ] && eval $(grep '^PACKAGER=' /etc/makepkg.conf)
if [ -n "${PACKAGER}" ]; then
sed -i '/^PACKAGER=/d' "$copydir/etc/makepkg.conf"
echo "PACKAGER='${PACKAGER}'" >> "$copydir/etc/makepkg.conf"
fi fi
# Set target CARCH as it might be used within the PKGBUILD to select correct sources
eval $(grep '^CARCH=' "$copydir/etc/makepkg.conf")
export CARCH
# Copy PKGBUILD and sources # Copy PKGBUILD and sources
source PKGBUILD source=($(. PKGBUILD; echo ${source[@]}))
cp PKGBUILD "$copydir/build/" cp PKGBUILD "$copydir/build/"
for f in ${source[@]}; do for f in ${source[@]}; do
basef=$(echo $f | sed 's|::.*||' | sed 's|^.*://.*/||g') basef=$(echo $f | sed 's|::.*||' | sed 's|^.*://.*/||g')
@@ -159,58 +228,49 @@ for f in ${source[@]}; do
fi fi
done done
install_files=$(grep 'install=' PKGBUILD) ( . PKGBUILD
for pkg in ${pkgname[@]}; do for i in 'changelog' 'install'; do
install_files+=' ' filelist=$(sed -n "s/^[[:space:]]*$i=//p" PKGBUILD)
install_files+=$(echo $install_files |sed "s/\$pkgname/$pkg/"|sed "s/\${pkgname}/$pkg/") for file in $filelist; do
install_files=$(eval echo $install_files |tr '[:blank:]' '\n'|sort |uniq) # evaluate any bash variables used
eval file=${file}
if [[ -f "$file" ]]; then
cp "$file" "$copydir/build/"
fi
done
done done
)
for f in $install_files;do
install="${f#"install="}"
if [ "$install" != "" -a -f "$install" ]; then
cp "$install" "$copydir/build/"
fi
done
if [ -f 'ChangeLog' ]; then
cp ChangeLog "$copydir/build/"
fi
chown -R nobody "$copydir/build" chown -R nobody "$copydir/build"
chown -R nobody "$copydir/srcdest" chown -R nobody "$copydir/srcdest"
chown -R nobody "$copydir/pkgdest" chown -R nobody "$copydir/pkgdest"
if ! grep "^nobody" "$copydir/etc/sudoers" >/dev/null 2>&1; then echo 'nobody ALL = NOPASSWD: /usr/bin/pacman' > "$copydir/etc/sudoers.d/nobody-pacman"
touch "$copydir/etc/sudoers" chmod 440 "$copydir/etc/sudoers.d/nobody-pacman"
echo 'nobody ALL=(ALL) NOPASSWD: ALL' >> "$copydir/etc/sudoers"
chmod 440 "$copydir/etc/sudoers"
fi
#This is a little gross, but this way the script is recreated every time in the #This is a little gross, but this way the script is recreated every time in the
#working copy #working copy
(cat <<EOF (cat <<EOF
#!/bin/bash #!/bin/bash
export LANG=$LOCALE export LANG=C
cd /build cd /build
export HOME=/build export HOME=/build
sudo -u nobody makepkg $MAKEPKG_ARGS || touch BUILD_FAILED sudo -u nobody makepkg $MAKEPKG_ARGS || touch BUILD_FAILED
[ -f BUILD_FAILED ] && exit 1 [ -f BUILD_FAILED ] && exit 1
which namcap &>/dev/null && namcap /build/PKGBUILD /pkgdest/*${PKGEXT} > /pkgdest/namcap.log which namcap &>/dev/null && namcap /build/PKGBUILD /pkgdest/*.pkg.tar.* > /build/namcap.log
exit 0 exit 0
EOF EOF
) > "$copydir/chrootbuild" ) > "$copydir/chrootbuild"
chmod +x "$copydir/chrootbuild" chmod +x "$copydir/chrootbuild"
if mkarchroot -r "/chrootbuild" "$copydir"; then if mkarchroot -r "/chrootbuild" "$copydir"; then
for pkgfile in "${copydir}"/pkgdest/*${PKGEXT}; do for pkgfile in "${copydir}"/pkgdest/*.pkg.tar.*; do
[ -e "$pkgfile" ] || continue [ -e "$pkgfile" ] || continue
_pkgname=$(basename "$pkgfile")
if [ "$add_to_db" -eq "1" ]; then if [ "$add_to_db" -eq "1" ]; then
[ -d "${copydir}/repo" ] || mkdir -p "${copydir}/repo" mkdir -p "${copydir}/repo"
pushd "${copydir}/repo" >/dev/null pushd "${copydir}/repo" >/dev/null
cp "$pkgfile" . cp "$pkgfile" .
repo-add repo.db.tar.gz "$_pkgname" repo-add repo.db.tar.gz "$(basename "$pkgfile")"
popd >/dev/null popd >/dev/null
fi fi
@@ -221,16 +281,7 @@ if mkarchroot -r "/chrootbuild" "$copydir"; then
fi fi
done done
for f in "${copydir}"/srcdest/*; do for l in "${copydir}"/build/{namcap,*-{build,check,package,package_*}}.log; do
[ -e "$f" ] || continue
if [ -d "$SRCDEST" ]; then
mv "$f" "${SRCDEST}"
else
mv "$f" "${WORKDIR}"
fi
done
for l in "${copydir}"/build/*-{build,package}.log; do
[ -f "$l" ] && mv "$l" "${WORKDIR}" [ -f "$l" ] && mv "$l" "${WORKDIR}"
done done
else else
@@ -238,12 +289,17 @@ else
touch "${copydir}/build/BUILD_FAILED" touch "${copydir}/build/BUILD_FAILED"
fi fi
for f in "${copydir}"/srcdest/*; do
[ -e "$f" ] || continue
if [ -d "$SRCDEST" ]; then
mv "$f" "${SRCDEST}"
else
mv "$f" "${WORKDIR}"
fi
done
if [ -e "${copydir}/build/BUILD_FAILED" ]; then if [ -e "${copydir}/build/BUILD_FAILED" ]; then
echo "Build failed, check $copydir/build" echo "Build failed, check $copydir/build"
rm "${copydir}/build/BUILD_FAILED" rm "${copydir}/build/BUILD_FAILED"
else exit 1
rm -rf "${copydir}"/build/*
fi fi
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

114
makepkg-i686.conf Normal file
View File

@@ -0,0 +1,114 @@
#
# /etc/makepkg.conf
#
#########################################################################
# SOURCE ACQUISITION
#########################################################################
#
#-- The download utilities that makepkg should use to acquire sources
# Format: 'protocol::agent'
DLAGENTS=('ftp::/usr/bin/wget -c --passive-ftp -t 3 --waitretry=3 -O %o %u'
'http::/usr/bin/wget -c -t 3 --waitretry=3 -O %o %u'
'https::/usr/bin/wget -c -t 3 --waitretry=3 --no-check-certificate -O %o %u'
'rsync::/usr/bin/rsync -z %u %o'
'scp::/usr/bin/scp -C %u %o')
# Other common tools:
# /usr/bin/snarf
# /usr/bin/lftpget -c
# /usr/bin/curl
#########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
#
CARCH="i686"
CHOST="i686-pc-linux-gnu"
#-- Exclusive: will only run on i686
# -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family
CFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
CXXFLAGS="-march=i686 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu"
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
#########################################################################
# BUILD ENVIRONMENT
#########################################################################
#
# Defaults: BUILDENV=(fakeroot !distcc color !ccache check)
# A negated environment option will do the opposite of the comments below.
#
#-- fakeroot: Allow building packages as a non-root user
#-- distcc: Use the Distributed C/C++/ObjC compiler
#-- color: Colorize output messages
#-- ccache: Use ccache to cache compilation
#-- check: Run the check() function if present in the PKGBUILD
#
BUILDENV=(fakeroot !distcc color !ccache check)
#
#-- If using DistCC, your MAKEFLAGS will also need modification. In addition,
#-- specify a space-delimited list of hosts running in the DistCC cluster.
#DISTCC_HOSTS=""
#########################################################################
# GLOBAL PACKAGE OPTIONS
# These are default values for the options=() settings
#########################################################################
#
# Default: OPTIONS=(strip docs libtool emptydirs zipman purge)
# A negated option will do the opposite of the comments below.
#
#-- strip: Strip symbols from binaries/libraries
#-- docs: Save doc directories specified by DOC_DIRS
#-- libtool: Leave libtool (.la) files in packages
#-- emptydirs: Leave empty directories in packages
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
#-- purge: Remove files specified by PURGE_TARGETS
#
OPTIONS=(strip docs libtool emptydirs zipman purge)
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
INTEGRITY_CHECK=(md5)
#-- Options to be used when stripping binaries. See `man strip' for details.
STRIP_BINARIES="--strip-all"
#-- Options to be used when stripping shared libraries. See `man strip' for details.
STRIP_SHARED="--strip-unneeded"
#-- Options to be used when stripping static libraries. See `man strip' for details.
STRIP_STATIC="--strip-debug"
#-- Manual (man and info) directories to compress (if zipman is specified)
MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
#-- Doc directories to remove (if !docs is specified)
DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
#-- Files to be removed from all packages (if purge is specified)
PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
#########################################################################
# PACKAGE OUTPUT
#########################################################################
#
# Default: put built package and cached source in build directory
#
#-- Destination: specify a fixed directory where all packages will be placed
#PKGDEST=/home/packages
#-- Source cache: specify a fixed directory where source files will be cached
#SRCDEST=/home/sources
#-- Source packages: specify a fixed directory where all src packages will be placed
#SRCPKGDEST=/home/srcpackages
#-- Packager: name/email of the person or organization building packages
#PACKAGER="John Doe <john@doe.com>"
#########################################################################
# EXTENSION DEFAULTS
#########################################################################
#
# WARNING: Do NOT modify these variables unless you know what you are
# doing.
#
PKGEXT='.pkg.tar.xz'
SRCEXT='.src.tar.gz'
# vim: set ft=sh ts=2 sw=2 et:

114
makepkg-x86_64.conf Normal file
View File

@@ -0,0 +1,114 @@
#
# /etc/makepkg.conf
#
#########################################################################
# SOURCE ACQUISITION
#########################################################################
#
#-- The download utilities that makepkg should use to acquire sources
# Format: 'protocol::agent'
DLAGENTS=('ftp::/usr/bin/wget -c --passive-ftp -t 3 --waitretry=3 -O %o %u'
'http::/usr/bin/wget -c -t 3 --waitretry=3 -O %o %u'
'https::/usr/bin/wget -c -t 3 --waitretry=3 --no-check-certificate -O %o %u'
'rsync::/usr/bin/rsync -z %u %o'
'scp::/usr/bin/scp -C %u %o')
# Other common tools:
# /usr/bin/snarf
# /usr/bin/lftpget -c
# /usr/bin/curl
#########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
#
CARCH="x86_64"
CHOST="x86_64-unknown-linux-gnu"
#-- Exclusive: will only run on x86_64
# -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family
CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu"
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
#########################################################################
# BUILD ENVIRONMENT
#########################################################################
#
# Defaults: BUILDENV=(fakeroot !distcc color !ccache check)
# A negated environment option will do the opposite of the comments below.
#
#-- fakeroot: Allow building packages as a non-root user
#-- distcc: Use the Distributed C/C++/ObjC compiler
#-- color: Colorize output messages
#-- ccache: Use ccache to cache compilation
#-- check: Run the check() function if present in the PKGBUILD
#
BUILDENV=(fakeroot !distcc color !ccache check)
#
#-- If using DistCC, your MAKEFLAGS will also need modification. In addition,
#-- specify a space-delimited list of hosts running in the DistCC cluster.
#DISTCC_HOSTS=""
#########################################################################
# GLOBAL PACKAGE OPTIONS
# These are default values for the options=() settings
#########################################################################
#
# Default: OPTIONS=(strip docs libtool emptydirs zipman purge)
# A negated option will do the opposite of the comments below.
#
#-- strip: Strip symbols from binaries/libraries
#-- docs: Save doc directories specified by DOC_DIRS
#-- libtool: Leave libtool (.la) files in packages
#-- emptydirs: Leave empty directories in packages
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
#-- purge: Remove files specified by PURGE_TARGETS
#
OPTIONS=(strip docs libtool emptydirs zipman purge)
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
INTEGRITY_CHECK=(md5)
#-- Options to be used when stripping binaries. See `man strip' for details.
STRIP_BINARIES="--strip-all"
#-- Options to be used when stripping shared libraries. See `man strip' for details.
STRIP_SHARED="--strip-unneeded"
#-- Options to be used when stripping static libraries. See `man strip' for details.
STRIP_STATIC="--strip-debug"
#-- Manual (man and info) directories to compress (if zipman is specified)
MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
#-- Doc directories to remove (if !docs is specified)
DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
#-- Files to be removed from all packages (if purge is specified)
PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
#########################################################################
# PACKAGE OUTPUT
#########################################################################
#
# Default: put built package and cached source in build directory
#
#-- Destination: specify a fixed directory where all packages will be placed
#PKGDEST=/home/packages
#-- Source cache: specify a fixed directory where source files will be cached
#SRCDEST=/home/sources
#-- Source packages: specify a fixed directory where all src packages will be placed
#SRCPKGDEST=/home/srcpackages
#-- Packager: name/email of the person or organization building packages
#PACKAGER="John Doe <john@doe.com>"
#########################################################################
# EXTENSION DEFAULTS
#########################################################################
#
# WARNING: Do NOT modify these variables unless you know what you are
# doing.
#
PKGEXT='.pkg.tar.xz'
SRCEXT='.src.tar.gz'
# vim: set ft=sh ts=2 sw=2 et:

View File

@@ -26,7 +26,7 @@ usage() {
echo ' -C <file> Location of a pacman config file' echo ' -C <file> Location of a pacman config file'
echo ' -M <file> Location of a makepkg config file' echo ' -M <file> Location of a makepkg config file'
echo ' -n Do not copy config files into the chroot' echo ' -n Do not copy config files into the chroot'
echo " -c <dir> Set pacman cache. Default: /var/cache/pacman/pkg" echo ' -c <dir> Set pacman cache. Default: /var/cache/pacman/pkg'
echo ' -h This message' echo ' -h This message'
exit $1 exit $1
} }
@@ -34,7 +34,7 @@ usage() {
while getopts 'r:ufnhC:M:c:' arg; do while getopts 'r:ufnhC:M:c:' arg; do
case "${arg}" in case "${arg}" in
r) RUN="$OPTARG" ;; r) RUN="$OPTARG" ;;
u) RUN='pacman -Syu' ;; u) RUN='/bin/sh -c "pacman -Syu --noconfirm && (pacman -Qqu >/dev/null && pacman -Su --noconfirm || exit 0)"' ;;
f) FORCE='y' ;; f) FORCE='y' ;;
C) pac_conf="$OPTARG" ;; C) pac_conf="$OPTARG" ;;
M) makepkg_conf="$OPTARG" ;; M) makepkg_conf="$OPTARG" ;;
@@ -68,12 +68,21 @@ shift 1
if [ -z "$cache_dir" ]; then if [ -z "$cache_dir" ]; then
cache_conf=${working_dir}/etc/pacman.conf cache_conf=${working_dir}/etc/pacman.conf
[ ! -f $cache_conf ] && cache_conf=${pac_conf:-/etc/pacman.conf} [ ! -f $cache_conf ] && cache_conf=${pac_conf:-/etc/pacman.conf}
cache_dir=$((grep -m 1 '^CacheDir' $cache_conf || echo 'CacheDir = /var/cache/pacman/pkg') | sed 's/CacheDir\s*=\s*//') cache_dir=$( (grep -m 1 '^CacheDir' $cache_conf || echo 'CacheDir = /var/cache/pacman/pkg') | sed 's/CacheDir\s*=\s*//')
unset cache_conf unset cache_conf
fi fi
# {{{ functions if [ -f /etc/pacman.d/mirrorlist ]; then
host_mirror=$(pacman -Sddp extra/devtools 2>/dev/null | sed -E 's#(.*/)extra/os/.*#\1$repo/os/$arch#')
fi
if [ -z "${host_mirror}" ]; then
host_mirror='http://mirrors.kernel.org/archlinux/$repo/os/$arch'
fi
if echo "${host_mirror}" | grep -q 'file://'; then
host_mirror_path=$(echo "${host_mirror}" | sed -E 's#file://(/.*)/\$repo/os/\$arch#\1#g')
fi
# {{{ functions
chroot_mount() { chroot_mount() {
[ -e "${working_dir}/sys" ] || mkdir "${working_dir}/sys" [ -e "${working_dir}/sys" ] || mkdir "${working_dir}/sys"
mount -t sysfs sysfs "${working_dir}/sys" mount -t sysfs sysfs "${working_dir}/sys"
@@ -82,25 +91,69 @@ chroot_mount() {
mount -t proc proc "${working_dir}/proc" mount -t proc proc "${working_dir}/proc"
[ -e "${working_dir}/dev" ] || mkdir "${working_dir}/dev" [ -e "${working_dir}/dev" ] || mkdir "${working_dir}/dev"
mount -o bind /dev "${working_dir}/dev" mount -t tmpfs dev "${working_dir}/dev" -o mode=0755,size=10M,nosuid
mknod -m 666 "${working_dir}/dev/null" c 1 3
mknod -m 666 "${working_dir}/dev/zero" c 1 5
mknod -m 600 "${working_dir}/dev/console" c 5 1
mknod -m 644 "${working_dir}/dev/random" c 1 8
mknod -m 644 "${working_dir}/dev/urandom" c 1 9
mknod -m 666 "${working_dir}/dev/tty" c 5 0
mknod -m 666 "${working_dir}/dev/tty0" c 4 0
mknod -m 666 "${working_dir}/dev/full" c 1 7
ln -s /proc/kcore "${working_dir}/dev/core"
ln -s /proc/self/fd "${working_dir}/dev/fd"
ln -s /proc/self/fd/0 "${working_dir}/dev/stdin"
ln -s /proc/self/fd/1 "${working_dir}/dev/stdout"
ln -s /proc/self/fd/2 "${working_dir}/dev/stderr"
[ -e "${working_dir}/dev/shm" ] || mkdir "${working_dir}/dev/shm"
mount -t tmpfs shm "${working_dir}/dev/shm" -o nodev,nosuid,size=128M
[ -e "${working_dir}/dev/pts" ] || mkdir "${working_dir}/dev/pts"
mount -t devpts devpts "${working_dir}/dev/pts" -o newinstance,ptmxmode=666
ln -s pts/ptmx "${working_dir}/dev/ptmx"
[ -e "${cache_dir}" ] || mkdir -p "${cache_dir}" [ -e "${cache_dir}" ] || mkdir -p "${cache_dir}"
[ -e "${working_dir}/${cache_dir}" ] || mkdir -p "${working_dir}/${cache_dir}" [ -e "${working_dir}/${cache_dir}" ] || mkdir -p "${working_dir}/${cache_dir}"
mount -o bind "${cache_dir}" "${working_dir}/${cache_dir}" mount -o bind "${cache_dir}" "${working_dir}/${cache_dir}"
trap 'chroot_umount' 0 1 2 15 if [ -n "${host_mirror_path}" ]; then
[ -e "${working_dir}/${host_mirror_path}" ] || mkdir -p "${working_dir}/${host_mirror_path}"
mount -o bind "${host_mirror_path}" "${working_dir}/${host_mirror_path}"
mount -o remount,ro,bind "${host_mirror_path}" "${working_dir}/${host_mirror_path}"
fi
trap 'chroot_umount' EXIT INT QUIT TERM HUP
} }
copy_hostconf () { copy_hostconf () {
cp /etc/mtab "${working_dir}/etc/mtab" chroot "${working_dir}" /bin/findmnt -rnu -o SOURCE,TARGET,FSTYPE,OPTIONS > "${working_dir}/etc/mtab"
cp /etc/resolv.conf "${working_dir}/etc/resolv.conf" cp /etc/resolv.conf "${working_dir}/etc/resolv.conf"
echo "Server = ${host_mirror}" > ${working_dir}/etc/pacman.d/mirrorlist
} }
chroot_umount () { chroot_umount () {
umount "${working_dir}/proc" umount "${working_dir}/proc"
umount "${working_dir}/sys" umount "${working_dir}/sys"
umount "${working_dir}/dev/pts"
umount "${working_dir}/dev/shm"
umount "${working_dir}/dev" umount "${working_dir}/dev"
umount "${working_dir}/${cache_dir}" umount "${working_dir}/${cache_dir}"
[ -n "${host_mirror_path}" ] && umount "${working_dir}/${host_mirror_path}"
}
chroot_lock () {
# Only reopen the FD if it wasn't handed to us
if [ "$(readlink -f /dev/fd/9)" != "${working_dir}.lock" ]; then
exec 9>"${working_dir}.lock"
fi
# Lock the chroot. Take note of the FD number.
if ! flock -n 9; then
echo -n "locking chroot..."
flock 9
echo "done"
fi
} }
# }}} # }}}
@@ -114,28 +167,31 @@ if [ "$RUN" != "" ]; then
exit 1 exit 1
fi fi
chroot_lock
chroot_mount chroot_mount
copy_hostconf copy_hostconf
chroot "${working_dir}" ${RUN} eval chroot "${working_dir}" ${RUN}
# }}} # }}}
else else
# {{{ build chroot # {{{ build chroot
if [ -e "${working_dir}" -a "${FORCE}" = "n" ]; then if [ -e "${working_dir}" -a "${FORCE}" = "n" ]; then
echo "error: working dir '${working_dir}' already exists - try using -f" echo "error: working dir '${working_dir}' already exists - try using -f"
exit 1 exit 1
fi fi
mkdir -p "${working_dir}/var/lib/pacman/" if { type -P btrfs && btrfs subvolume create "${working_dir}"; } &>/dev/null; then
chmod 0755 "${working_dir}"
fi
mkdir -p "${working_dir}/var/lib/pacman/sync"
mkdir -p "${working_dir}/etc/" mkdir -p "${working_dir}/etc/"
chroot_lock
chroot_mount chroot_mount
pacargs='--noconfirm -v ' #--noprogressbar -v pacargs="--noconfirm --root=${working_dir} --cachedir=${cache_dir}"
pacargs="$pacargs --root=${working_dir}"
# pacman takes these as relative to the given root
pacargs="$pacargs --cachedir=${cache_dir}"
if [ "$pac_conf" != "" ]; then if [ "$pac_conf" != "" ]; then
pacargs="$pacargs --config=${pac_conf}" pacargs="$pacargs --config=${pac_conf}"
fi fi
@@ -164,7 +220,7 @@ if [ "$RUN" != "" ]; then
fi fi
if [ -e "${working_dir}/etc/locale.gen" ]; then if [ -e "${working_dir}/etc/locale.gen" ]; then
cp /etc/locale.gen "${working_dir}/etc/locale.gen" sed -i 's@^#\(en_US\|de_DE\)\(\.UTF-8\)@\1\2@' "${working_dir}/etc/locale.gen"
chroot "${working_dir}" locale-gen chroot "${working_dir}" locale-gen
fi fi
@@ -173,6 +229,3 @@ if [ "$RUN" != "" ]; then
fi fi
# }}} # }}}
fi fi
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132

80
pacman-extra.conf Normal file
View File

@@ -0,0 +1,80 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
HoldPkg = pacman glibc
# If upgrades are available for these packages they will be asked for first
SyncFirst = pacman
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#XferCommand = /usr/bin/curl -C - -f %u > %o
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options (all disabled by default)
#UseSyslog
#ShowSize
#UseDelta
#TotalDownload
#CheckSpace
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
#[testing]
#Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
#[community-testing]
#Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#Server = file:///home/custompkgs

View File

@@ -0,0 +1,88 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
HoldPkg = pacman glibc
# If upgrades are available for these packages they will be asked for first
SyncFirst = pacman
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#XferCommand = /usr/bin/curl -C - -f %u > %o
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options (all disabled by default)
#UseSyslog
#ShowSize
#UseDelta
#TotalDownload
#CheckSpace
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[testing]
Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[community-testing]
Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repository here.
[multilib-testing]
Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#Server = file:///home/custompkgs

85
pacman-multilib.conf Normal file
View File

@@ -0,0 +1,85 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
HoldPkg = pacman glibc
# If upgrades are available for these packages they will be asked for first
SyncFirst = pacman
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#XferCommand = /usr/bin/curl -C - -f %u > %o
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options (all disabled by default)
#UseSyslog
#ShowSize
#UseDelta
#TotalDownload
#CheckSpace
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
#[testing]
#Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
#[community-testing]
#Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repository here.
[multilib]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#Server = file:///home/custompkgs

86
pacman-staging.conf Normal file
View File

@@ -0,0 +1,86 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
HoldPkg = pacman glibc
# If upgrades are available for these packages they will be asked for first
SyncFirst = pacman
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#XferCommand = /usr/bin/curl -C - -f %u > %o
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options (all disabled by default)
#UseSyslog
#ShowSize
#UseDelta
#TotalDownload
#CheckSpace
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[staging]
Include = /etc/pacman.d/mirrorlist
[testing]
Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[community-staging]
Include = /etc/pacman.d/mirrorlist
[community-testing]
Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#Server = file:///home/custompkgs

80
pacman-testing.conf Normal file
View File

@@ -0,0 +1,80 @@
#
# /etc/pacman.conf
#
# See the pacman.conf(5) manpage for option and repository directives
#
# GENERAL OPTIONS
#
[options]
# The following paths are commented out with their default values listed.
# If you wish to use different paths, uncomment and update the paths.
#RootDir = /
#DBPath = /var/lib/pacman/
#CacheDir = /var/cache/pacman/pkg/
#LogFile = /var/log/pacman.log
HoldPkg = pacman glibc
# If upgrades are available for these packages they will be asked for first
SyncFirst = pacman
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#XferCommand = /usr/bin/curl -C - -f %u > %o
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
#IgnoreGroup =
#NoUpgrade =
#NoExtract =
# Misc options (all disabled by default)
#UseSyslog
#ShowSize
#UseDelta
#TotalDownload
#CheckSpace
#
# REPOSITORIES
# - can be defined here or included from another file
# - pacman will search repositories in the order defined here
# - local/custom mirrors can be added here or in separate files
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
# Server = ServerName
# Include = IncludePath
#
# The header [repo-name] is crucial - it must be present and
# uncommented to enable the repo.
#
# The testing repositories are disabled by default. To enable, uncomment the
# repo name header and Include lines. You can add preferred servers immediately
# after the header, and they will be used before the default mirrors.
[testing]
Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[community-testing]
Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#Server = file:///home/custompkgs

View File

@@ -99,6 +99,3 @@ if [ "$FAILED" != "" ]; then
fi fi
echo 'SVN pkgbumps in svn-packages/ - commit when ready' echo 'SVN pkgbumps in svn-packages/ - commit when ready'
# vim: set noexpandtab tabstop=8 shiftwidth=8 wrap:textwidth=132 autoindent
# kate: indent-mode normal; indent-width 8; tab-indents on; tab-width 8; word-wrap on; word-wrap-column 132