Compare commits

...

31 Commits

Author SHA1 Message Date
Pierre Schmitz
d5c6bc7656 prepare release 2012-10-13 21:06:31 +02:00
Dan McGee
f7615fe7d7 Fix releasing files with '@' in name
SVN treats '@' as a revision specifier, so with the addition of systemd
spawning service files, we need to ensure it doesn't screw things up.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-10-13 20:40:09 +02:00
Pierre Schmitz
1703b92e1a mkarchroot: do not try to bind /etc/timezone from host
/etc/timezone is no longer used. We only need /etc/localtime.

This fixes FS#31929
2012-10-13 20:33:53 +02:00
Pierre Schmitz
cfd81ab563 prepare release 2012-10-04 21:19:31 +02:00
Pierre Schmitz
ac1ee41e4d mkarchroot: use a helper function to simplify bind mounts 2012-10-04 19:57:19 +02:00
Pierre Schmitz
ecae65e7fd prepare release 2012-10-03 12:46:07 +02:00
Pierre Schmitz
c617c67ff8 mkarchroot: Use systemd's nspawn if available
* If we are running systemd use nspawn instead of our own chroot setup
* Use pacstrap to setup our chroot environment
* Make sure the common trap is still called
* Bind resolve.conf, timezone and lcoaltime from the host if nspawn is not used
* Run ldconfig within the chroot
2012-10-03 12:38:33 +02:00
Pierre Schmitz
7228cc00e8 Use dedicated trap functions to avoid unsetting the trap when e.g. cleanup is called 2012-10-03 12:35:40 +02:00
Pierre Schmitz
a26416dca3 makechrootpkg: do not run namcap as root 2012-10-03 12:32:55 +02:00
Pierre Schmitz
37bb1d33a7 archbuild: abort if update or creation of the chroot fails 2012-10-03 12:32:03 +02:00
Florian Pritz
dbef0b91bf Fix ownership when copying files from chroot to system
Previously files were always owned by nobody which means trying to write
to them directly would fail because only the owner has +w.

Signed-off-by: Florian Pritz <bluewind@xinu.at>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-09-14 16:01:01 +02:00
Pierre Schmitz
499f20071a prepare release 2012-07-20 23:29:43 +02:00
Eric Bélanger
0d3d63e3aa Fix bash completions
With bash-completion 2.0, the completion must have the same name as the binary.

Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-06-25 00:01:32 +02:00
Pierre Schmitz
d2ec5ab67d prepare release 2012-06-16 17:06:15 +02:00
Pierre Schmitz
a23d93ce7f commitpkg: check if there are any packages to process before doing so 2012-06-16 16:56:42 +02:00
Pierre Schmitz
246b8ead60 mkarchroot: reset trap so it wont be called twice 2012-06-16 16:21:55 +02:00
Pierre Schmitz
b14a1b1bcc archbuild: do not cross filesystems when removing the chroot copies 2012-06-16 15:28:52 +02:00
Pierre Schmitz
0cd9e1ae7e archbuild: use flock -n as we do elsewhere 2012-06-16 15:24:16 +02:00
Allan McRae
3734c80bf7 Fix /run permissions in chroot
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-06-15 09:27:27 +02:00
Pierre Schmitz
7b696f6f8d prepare release 2012-06-12 18:22:37 +02:00
Pierre Schmitz
ed9d5a16e3 Support multiple package cache directories
* We use the host package cache configuration
* As only the first cache will be written to, we mount the others readonly
2012-06-12 08:17:58 +02:00
Pierre Schmitz
e44c49aebb archbuild: Store chroots in /var/lib instead of /var/tmp
/var/tmp is cleaned up by tmpfiels by default which we cannot handle gracefully.
2012-06-12 06:53:11 +02:00
Pierre Schmitz
c5cd72c085 Remove no longer used option 2012-06-11 23:44:30 +02:00
Pierre Schmitz
8bedb89fd6 Add a version number to each chroot so we can tell the user when a rebuild is needed 2012-06-11 17:04:17 +02:00
Pierre Schmitz
c7cda47342 Enable signature checking within build environment
* bind /sys and /dev/pts from host
* drop support for devtmpfs as it is no longer needed
* add /run and /dev/rtc0
* clone own ipc, uts and mount namespaces for chroot
* set localtime, timezone and locale within chroot environment
* copy /etc/pacman.d/gnupg from host
2012-06-11 16:44:23 +02:00
Pierre Schmitz
41b39c3e78 prepare release 2012-06-11 11:39:42 +02:00
Pierre Schmitz
6743c97383 update makepkg.conf and pacman.conf 2012-06-11 11:32:05 +02:00
Gerardo Exequiel Pozzi
231496c82a mkarchroot: use bind mount instead of symlink for /dev/ptmx
We need /dev/ptmx -> /dev/pts/ptmx (for devpts -o newinstance)
Other way to do this thing is via bind mount (as said kernel doc[devpts.txt]).

This should be done in this way at least for /dev as devtmpfs in the chroot.
Since we can not touch /dev (devtmpfs), because devtmpfs is "singleton",
just use bind method and avoid interference.

Do it the same for both modes of /dev (tmpfs) and (devtmpfs) to keep it simple.

Currently devpts in chroot is not working without this when using /dev as devtmpfs,
this fixes this issue (opening /dev/ptmx, creates devices nodes on outside /dev/pts)

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-06-10 12:57:14 +02:00
Lukas Fleischer
fda394f1a0 Gracefully handle files containing an "@"
The "@" sign in file names in SVN marks the beginning of a pegged
version number -- from the Subversion book:

    Peg revisions are specified to the Subversion command-line client
    using at syntax, so called because the syntax involves appending an
    “at sign” (@) and the peg revision to the end of the path with which
    the revision is associated.

The trivial workaround is to always append an at sign to the end of the
path in the version control checks.

Before:

    $ community-stagingpkg 'Add systemd units.'
    ==> ERROR: exim-submission@.service is not under version control
    $ svn status -v | grep 'exim-submission@.service'
    A                -       ?   ?           exim-submission@.service

After:

    $ community-stagingpkg 'Add systemd units.'
    ==> Committing changes to trunk...done
    ==> Signing package exim-4.80-2-x86_64.pkg.tar.xz...
    [...]

Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-06-10 12:47:40 +02:00
Allan McRae
addea828fe Prevent packages being uploaded with "Unknown Packager"
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
2012-06-10 12:46:32 +02:00
Pierre Schmitz
acbbe8cb90 Move bash_completion to /usr/share/bash-completion/completions/ 2012-03-21 07:32:44 +01:00
18 changed files with 286 additions and 192 deletions

2
.gitignore vendored
View File

@@ -1,5 +1,5 @@
*~ *~
devtools-*.tar.gz devtools-*.tar.gz*
archbuild archbuild
archco archco
archrelease archrelease

View File

@@ -1,4 +1,4 @@
V=20120305 V=20121013
PREFIX = /usr/local PREFIX = /usr/local
@@ -64,6 +64,10 @@ CROSSREPOMOVE_LINKS = \
extra2community \ extra2community \
community2extra community2extra
BASHCOMPLETION_LINKS = \
archco \
communityco
all: $(BINPROGS) $(SBINPROGS) bash_completion zsh_completion all: $(BINPROGS) $(SBINPROGS) bash_completion zsh_completion
edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g" edit = sed -e "s|@pkgdatadir[@]|$(DESTDIR)$(PREFIX)/share/devtools|g"
@@ -89,7 +93,8 @@ install:
for l in ${ARCHBUILD_LINKS}; do ln -sf archbuild $(DESTDIR)$(PREFIX)/bin/$$l; done for l in ${ARCHBUILD_LINKS}; do ln -sf archbuild $(DESTDIR)$(PREFIX)/bin/$$l; done
for l in ${CROSSREPOMOVE_LINKS}; do ln -sf crossrepomove $(DESTDIR)$(PREFIX)/bin/$$l; done for l in ${CROSSREPOMOVE_LINKS}; do ln -sf crossrepomove $(DESTDIR)$(PREFIX)/bin/$$l; done
ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides
install -Dm0644 bash_completion $(DESTDIR)/etc/bash_completion.d/devtools install -Dm0644 bash_completion $(DESTDIR)/usr/share/bash-completion/completions/devtools
for l in ${BASHCOMPLETION_LINKS}; do ln -sf devtools $(DESTDIR)/usr/share/bash-completion/completions/$$l; done
install -Dm0644 zsh_completion $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools install -Dm0644 zsh_completion $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools
ln -sf archco $(DESTDIR)$(PREFIX)/bin/communityco ln -sf archco $(DESTDIR)$(PREFIX)/bin/communityco
@@ -100,7 +105,7 @@ uninstall:
for l in ${COMMITPKG_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done for l in ${COMMITPKG_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
for l in ${ARCHBUILD_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done for l in ${ARCHBUILD_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
for l in ${CROSSREPOMOVE_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done for l in ${CROSSREPOMOVE_LINKS}; do rm -f $(DESTDIR)$(PREFIX)/bin/$$l; done
rm $(DESTDIR)/etc/bash_completion.d/devtools rm $(DESTDIR)/usr/share/bash-completion/completions/devtools
rm $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools rm $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_devtools
rm -f $(DESTDIR)$(PREFIX)/bin/communityco rm -f $(DESTDIR)$(PREFIX)/bin/communityco
rm -f $(DESTDIR)$(PREFIX)/bin/find-libprovides rm -f $(DESTDIR)$(PREFIX)/bin/find-libprovides

View File

@@ -14,7 +14,7 @@ else
repo=${tag%-*} repo=${tag%-*}
arch=${tag##*-} arch=${tag##*-}
fi fi
chroots='/var/tmp/archbuild' chroots='/var/lib/archbuild'
clean_first=false clean_first=false
usage() { usage() {
@@ -43,28 +43,31 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then
[[ -d $copy ]] || continue [[ -d $copy ]] || continue
msg2 "Deleting chroot copy '$(basename "${copy}")'..." msg2 "Deleting chroot copy '$(basename "${copy}")'..."
# Lock the copy exec 9>"$copydir.lock"
exec 9>"${copy}.lock" if ! flock -n 9; then
flock 9 stat_busy "Locking chroot copy '$copy'"
flock 9
stat_done
fi
{ type -P btrfs && btrfs subvolume delete "${copy}"; } &>/dev/null { type -P btrfs && btrfs subvolume delete "${copy}"; } &>/dev/null
rm -rf "${copy}" rm -rf --one-file-system "${copy}"
done done
exec 9>&- exec 9>&-
rm -rf "${chroots}/${repo}-${arch}" rm -rf --one-file-system "${chroots}/${repo}-${arch}"
mkdir -p "${chroots}/${repo}-${arch}" mkdir -p "${chroots}/${repo}-${arch}"
setarch "${arch}" mkarchroot \ setarch "${arch}" mkarchroot \
-C "@pkgdatadir@/pacman-${repo}.conf" \ -C "@pkgdatadir@/pacman-${repo}.conf" \
-M "@pkgdatadir@/makepkg-${arch}.conf" \ -M "@pkgdatadir@/makepkg-${arch}.conf" \
"${chroots}/${repo}-${arch}/root" \ "${chroots}/${repo}-${arch}/root" \
"${base_packages[@]}" "${base_packages[@]}" || abort
else else
setarch ${arch} mkarchroot \ setarch ${arch} mkarchroot \
-u \ -u \
-C "@pkgdatadir@/pacman-${repo}.conf" \ -C "@pkgdatadir@/pacman-${repo}.conf" \
-M "@pkgdatadir@/makepkg-${arch}.conf" \ -M "@pkgdatadir@/makepkg-${arch}.conf" \
"${chroots}/${repo}-${arch}/root" "${chroots}/${repo}-${arch}/root" || abort
fi fi
msg "Building in chroot for [${repo}] (${arch})..." msg "Building in chroot for [${repo}] (${arch})..."

View File

@@ -54,6 +54,9 @@ for file in "${known_files[@]}"; do
fi fi
done done
# gracefully handle files containing an "@" character
known_files=("${known_files[@]/%/@}")
for tag in "$@"; do for tag in "$@"; do
stat_busy "Copying ${trunk} to ${tag}" stat_busy "Copying ${trunk} to ${tag}"
@@ -63,7 +66,7 @@ for tag in "$@"; do
while read -r file; do while read -r file; do
trash+=("repos/$tag/$file") trash+=("repos/$tag/$file")
done < <(svn ls "repos/$tag") done < <(svn ls "repos/$tag")
[[ $trash ]] && svn rm -q "${trash[@]}" [[ $trash ]] && svn rm -q "${trash[@]/%/@}"
else else
mkdir -p "repos/$tag" mkdir -p "repos/$tag"
svn add --parents -q "repos/$tag" svn add --parents -q "repos/$tag"

View File

@@ -57,7 +57,7 @@ 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[@]}"; do for s in "${source[@]}"; do
if [[ $s != *://* ]] && ! svn status -v "$s" | grep -q '^[ AMRX~]'; then if [[ $s != *://* ]] && ! svn status -v "$s@" | grep -q '^[ AMRX~]'; then
die "$s is not under version control" die "$s is not under version control"
fi fi
done done
@@ -87,6 +87,23 @@ while getopts ':l:a:s:f' flag; do
done done
shift $(( OPTIND - 1 )) shift $(( OPTIND - 1 ))
# check packages have the packager field set
for _arch in ${arch[@]}; do
if [[ -n $commit_arch && ${_arch} != "$commit_arch" ]]; then
continue
fi
for _pkgname in ${pkgname[@]}; do
fullver=$(get_full_version $_pkgname)
if pkgfile=$(shopt -s nullglob;
getpkgfile "${PKGDEST+$PKGDEST/}$_pkgname-$fullver-${_arch}".pkg.tar.?z); then
if grep -q "packager = Unknown Packager" <(bsdtar -xOqf $pkgfile .PKGINFO); then
die "PACKAGER was not set when building package"
fi
fi
done
done
if [[ -z $server ]]; then if [[ -z $server ]]; then
case "$repo" in case "$repo" in
core|extra|testing|staging|kde-unstable|gnome-unstable) core|extra|testing|staging|kde-unstable|gnome-unstable)
@@ -166,19 +183,21 @@ for _arch in ${arch[@]}; do
commit_arches+=($_arch) commit_arches+=($_arch)
fi fi
done done
archrelease "${archreleaseopts[@]}" "${commit_arches[@]/#/$repo-}" || die
new_uploads=() if [[ ${#commit_arches[*]} -gt 0 ]]; then
archrelease "${archreleaseopts[@]}" "${commit_arches[@]/#/$repo-}" || die
# convert to absolute paths so rsync can work with colons (epoch) fi
while read -r -d '' upload; do
new_uploads+=("$upload")
done < <(realpath -z "${uploads[@]}")
uploads=("${new_uploads[@]}")
unset new_uploads
if [[ ${#uploads[*]} -gt 0 ]]; then if [[ ${#uploads[*]} -gt 0 ]]; then
new_uploads=()
# convert to absolute paths so rsync can work with colons (epoch)
while read -r -d '' upload; do
new_uploads+=("$upload")
done < <(realpath -z "${uploads[@]}")
uploads=("${new_uploads[@]}")
unset new_uploads
msg 'Uploading all package and signature files' msg 'Uploading all package and signature files'
rsync "${rsyncopts[@]}" "${uploads[@]}" "$server:staging/$repo/" || die rsync "${rsyncopts[@]}" "${uploads[@]}" "$server:staging/$repo/" || die
fi fi

View File

@@ -62,8 +62,6 @@ setup_workdir() {
} }
cleanup() { cleanup() {
trap - EXIT INT QUIT TERM
[[ -n $WORKDIR ]] && rm -rf "$WORKDIR" [[ -n $WORKDIR ]] && rm -rf "$WORKDIR"
[[ $1 ]] && exit $1 [[ $1 ]] && exit $1
} }
@@ -73,13 +71,23 @@ abort() {
cleanup 0 cleanup 0
} }
trap_abort() {
trap - EXIT INT QUIT TERM HUP
abort
}
trap_exit() {
trap - EXIT INT QUIT TERM HUP
cleanup 0
}
die() { die() {
error "$*" error "$*"
cleanup 1 cleanup 1
} }
trap abort INT QUIT TERM HUP trap 'trap_abort' INT QUIT TERM HUP
trap 'cleanup 0' EXIT trap 'trap_exit' EXIT
## ##
# usage : in_array( $needle, $haystack ) # usage : in_array( $needle, $haystack )

View File

@@ -25,6 +25,7 @@ passeddir=
default_copy=$USER default_copy=$USER
[[ -n $SUDO_USER ]] && default_copy=$SUDO_USER [[ -n $SUDO_USER ]] && default_copy=$SUDO_USER
[[ -z $default_copy || $default_copy = root ]] && default_copy=copy [[ -z $default_copy || $default_copy = root ]] && default_copy=copy
src_owner=${SUDO_USER:-$USER}
usage() { usage() {
echo "usage ${0##*/} [options] -r <chrootdir> [--] [makepkg args]" echo "usage ${0##*/} [options] -r <chrootdir> [--] [makepkg args]"
@@ -258,15 +259,11 @@ nobody ALL = NOPASSWD: /usr/bin/pacman
EOF EOF
chmod 440 "$copydir/etc/sudoers.d/nobody-pacman" chmod 440 "$copydir/etc/sudoers.d/nobody-pacman"
# Set this system wide as makepkg will source /etc/profile before calling build()
echo 'LANG=C' > "$copydir/etc/locale.conf"
# 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 >"$copydir/chrootbuild" <<EOF cat >"$copydir/chrootbuild" <<EOF
#!/bin/bash #!/bin/bash
. /etc/profile . /etc/profile
export LANG=C
export HOME=/build export HOME=/build
cd /build cd /build
@@ -278,7 +275,7 @@ if $run_namcap; then
pacman -S --needed --noconfirm namcap pacman -S --needed --noconfirm namcap
for pkgfile in /build/PKGBUILD /pkgdest/*.pkg.tar.?z; do for pkgfile in /build/PKGBUILD /pkgdest/*.pkg.tar.?z; do
echo "Checking \${pkgfile##*/}" echo "Checking \${pkgfile##*/}"
namcap "\$pkgfile" 2>&1 | tee "/build/\${pkgfile##*/}-namcap.log" sudo -u nobody namcap "\$pkgfile" 2>&1 | tee "/build/\${pkgfile##*/}-namcap.log"
done done
fi fi
@@ -296,10 +293,12 @@ if mkarchroot -r "/chrootbuild" "$copydir"; then
popd >/dev/null popd >/dev/null
fi fi
chown "$src_owner" "$pkgfile"
mv "$pkgfile" "$PKGDEST" mv "$pkgfile" "$PKGDEST"
done done
for l in "$copydir"/build/*-{build,check,namcap,package,package_*}.log; do for l in "$copydir"/build/*-{build,check,namcap,package,package_*}.log; do
chown "$src_owner" "$l"
[[ -f $l ]] && mv "$l" . [[ -f $l ]] && mv "$l" .
done done
else else
@@ -308,6 +307,7 @@ else
fi fi
for f in "$copydir"/srcdest/*; do for f in "$copydir"/srcdest/*; do
chown "$src_owner" "$f"
mv "$f" "$SRCDEST" mv "$f" "$SRCDEST"
done done

View File

@@ -31,7 +31,7 @@ CHOST="i686-pc-linux-gnu"
# -mtune optimizes for an architecture, but builds for whole processor family # -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" 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" 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" LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
#-- Make Flags: change this for DistCC/SMP systems #-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2" #MAKEFLAGS="-j2"

View File

@@ -31,7 +31,7 @@ CHOST="x86_64-unknown-linux-gnu"
# -mtune optimizes for an architecture, but builds for whole processor family # -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" 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" 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" LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
#-- Make Flags: change this for DistCC/SMP systems #-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2" #MAKEFLAGS="-j2"

View File

@@ -10,10 +10,11 @@
m4_include(lib/common.sh) m4_include(lib/common.sh)
CHROOT_VERSION='v2'
FORCE='n' FORCE='n'
RUN='' RUN=''
NOCOPY='n' NOCOPY='n'
USE_DEVTMPFS='n'
working_dir='' working_dir=''
@@ -29,13 +30,12 @@ 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'
echo ' -d Use devtmpfs instead of minimal /dev (tmpfs)'
echo ' -h This message' echo ' -h This message'
exit 1 exit 1
} }
while getopts 'r:ufnhC:M:c:d' arg; do while getopts 'r:ufnhC:M:c:' arg; do
case "${arg}" in case "${arg}" in
r) RUN="$OPTARG" ;; r) RUN="$OPTARG" ;;
u) RUN='/bin/sh -c "pacman -Syu --noconfirm && (pacman -Qqu >/dev/null && pacman -Su --noconfirm || exit 0)"' ;; u) RUN='/bin/sh -c "pacman -Syu --noconfirm && (pacman -Qqu >/dev/null && pacman -Su --noconfirm || exit 0)"' ;;
@@ -44,7 +44,6 @@ while getopts 'r:ufnhC:M:c:d' arg; do
M) makepkg_conf="$OPTARG" ;; M) makepkg_conf="$OPTARG" ;;
n) NOCOPY='y' ;; n) NOCOPY='y' ;;
c) cache_dir="$OPTARG" ;; c) cache_dir="$OPTARG" ;;
d) USE_DEVTMPFS="y" ;;
h|?) usage 0 ;; h|?) usage 0 ;;
*) error "invalid argument '${arg}'"; usage ;; *) error "invalid argument '${arg}'"; usage ;;
esac esac
@@ -68,72 +67,85 @@ shift 1
[[ -z $working_dir ]] && die 'Please specify a working directory.' [[ -z $working_dir ]] && die 'Please specify a working directory.'
if [[ -z $cache_dir ]]; then if [[ -z $cache_dir ]]; then
cache_conf=${working_dir}/etc/pacman.conf cache_dirs=($(pacman -v $cache_conf 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g'))
[[ ! -f $cache_conf ]] && cache_conf=${pac_conf:-/etc/pacman.conf} else
cache_dir=$( (grep -m 1 '^CacheDir' $cache_conf || echo 'CacheDir = /var/cache/pacman/pkg') | sed 's/CacheDir\s*=\s*//') cache_dirs=(${cache_dir})
unset cache_conf
fi fi
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#')
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 if echo "${host_mirror}" | grep -q 'file://'; then
host_mirror_path=$(echo "${host_mirror}" | sed -E 's#file://(/.*)/\$repo/os/\$arch#\1#g') host_mirror_path=$(echo "${host_mirror}" | sed -E 's#file://(/.*)/\$repo/os/\$arch#\1#g')
fi fi
# {{{ functions # {{{ functions
bind_mount() {
local mode="${2:-rw}"
local target="${working_dir}${1}"
if [[ ! -e "$target" ]]; then
if [[ -d "$1" ]]; then
install -d "$target"
else
install -D /dev/null "$target"
fi
fi
mount -o bind "$1" "$target"
mount -o remount,${mode},bind "$target"
mount --make-slave "$target"
}
chroot_mount() { chroot_mount() {
[[ -e "${working_dir}/sys" ]] || mkdir "${working_dir}/sys" trap 'trap_chroot_umount' EXIT INT QUIT TERM HUP
mount -t sysfs sysfs "${working_dir}/sys"
[[ -e "${working_dir}/proc" ]] || mkdir "${working_dir}/proc" if (( ! have_nspawn )); then
mount -t proc proc "${working_dir}/proc" bind_mount /sys ro
[[ -e "${working_dir}/dev" ]] || mkdir "${working_dir}/dev" [[ -e "${working_dir}/proc" ]] || mkdir "${working_dir}/proc"
if [[ ${USE_DEVTMPFS} = "y" ]]; then mount -t proc proc -o nosuid,noexec,nodev "${working_dir}/proc"
mount -t devtmpfs dev "${working_dir}/dev" -o mode=0755,nosuid bind_mount /proc/sys ro
else
mount -t tmpfs dev "${working_dir}/dev" -o mode=0755,size=10M,nosuid [[ -e "${working_dir}/dev" ]] || mkdir "${working_dir}/dev"
mount -t tmpfs dev "${working_dir}/dev" -o mode=0755,size=10M,nosuid,strictatime
mknod -m 666 "${working_dir}/dev/null" c 1 3 mknod -m 666 "${working_dir}/dev/null" c 1 3
mknod -m 666 "${working_dir}/dev/zero" c 1 5 mknod -m 666 "${working_dir}/dev/zero" c 1 5
mknod -m 600 "${working_dir}/dev/console" c 5 1 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/random" c 1 8
mknod -m 644 "${working_dir}/dev/urandom" c 1 9 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/tty" c 5 0
mknod -m 666 "${working_dir}/dev/ptmx" c 5 2
mknod -m 666 "${working_dir}/dev/tty0" c 4 0 mknod -m 666 "${working_dir}/dev/tty0" c 4 0
mknod -m 666 "${working_dir}/dev/full" c 1 7 mknod -m 666 "${working_dir}/dev/full" c 1 7
mknod -m 666 "${working_dir}/dev/rtc0" c 254 0
ln -s /proc/kcore "${working_dir}/dev/core" ln -s /proc/kcore "${working_dir}/dev/core"
ln -s /proc/self/fd "${working_dir}/dev/fd" ln -s /proc/self/fd "${working_dir}/dev/fd"
ln -s /proc/self/fd/0 "${working_dir}/dev/stdin" 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/1 "${working_dir}/dev/stdout"
ln -s /proc/self/fd/2 "${working_dir}/dev/stderr" 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
bind_mount /dev/pts
[[ -e "${working_dir}/run" ]] || mkdir "${working_dir}/run"
mount -t tmpfs tmpfs "${working_dir}/run" -o mode=0755,nodev,nosuid,strictatime,size=64M
for host_config in resolv.conf localtime; do
bind_mount /etc/$host_config ro
done
fi fi
[[ -e "${working_dir}/dev/shm" ]] || mkdir "${working_dir}/dev/shm" [[ -n $host_mirror_path ]] && bind_mount "$host_mirror_path" ro
mount -t tmpfs shm "${working_dir}/dev/shm" -o nodev,nosuid,size=128M
[[ -e "${working_dir}/dev/pts" ]] || mkdir "${working_dir}/dev/pts" bind_mount "${cache_dirs[0]}"
mount -t devpts devpts "${working_dir}/dev/pts" -o newinstance,ptmxmode=666 for cache_dir in ${cache_dirs[@]:1}; do
ln -s pts/ptmx "${working_dir}/dev/ptmx" bind_mount "$cache_dir" ro
done
[[ -e $cache_dir ]] || mkdir -p "${cache_dir}"
[[ -e "${working_dir}/${cache_dir}" ]] || mkdir -p "${working_dir}/${cache_dir}"
mount -o bind "${cache_dir}" "${working_dir}/${cache_dir}"
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/resolv.conf "${working_dir}/etc/resolv.conf" cp -a /etc/pacman.d/gnupg "${working_dir}/etc/pacman.d"
echo "Server = ${host_mirror}" > ${working_dir}/etc/pacman.d/mirrorlist echo "Server = ${host_mirror}" > ${working_dir}/etc/pacman.d/mirrorlist
if [[ -n $pac_conf && $NOCOPY = 'n' ]]; then if [[ -n $pac_conf && $NOCOPY = 'n' ]]; then
@@ -143,16 +155,30 @@ copy_hostconf () {
if [[ -n $makepkg_conf && $NOCOPY = 'n' ]]; then if [[ -n $makepkg_conf && $NOCOPY = 'n' ]]; then
cp ${makepkg_conf} ${working_dir}/etc/makepkg.conf cp ${makepkg_conf} ${working_dir}/etc/makepkg.conf
fi fi
sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${cache_dirs[@]})|g" -i ${working_dir}/etc/pacman.conf
} }
chroot_umount () { trap_chroot_umount () {
umount "${working_dir}/proc" trap 'trap_exit' EXIT INT QUIT TERM HUP
umount "${working_dir}/sys"
umount "${working_dir}/dev/pts" for cache_dir in ${cache_dirs[@]}; do
umount "${working_dir}/dev/shm" umount "${working_dir}/${cache_dir}"
umount "${working_dir}/dev" done
umount "${working_dir}/${cache_dir}"
[[ -n $host_mirror_path ]] && umount "${working_dir}/${host_mirror_path}" [[ -n $host_mirror_path ]] && umount "${working_dir}/${host_mirror_path}"
if (( ! have_nspawn )); then
for host_config in resolv.conf localtime; do
umount "${working_dir}/etc/${host_config}"
done
umount "${working_dir}/proc/sys"
umount "${working_dir}/proc"
umount "${working_dir}/sys"
umount "${working_dir}/dev/pts"
umount "${working_dir}/dev/shm"
umount "${working_dir}/dev"
umount "${working_dir}/run"
fi
} }
chroot_lock () { chroot_lock () {
@@ -168,21 +194,39 @@ chroot_lock () {
stat_done stat_done
fi fi
} }
chroot_run() {
local dir=$1
shift
if (( have_nspawn)); then
eval systemd-nspawn -D "${dir}" -- ${@} 2>/dev/null
else
eval unshare -mui -- chroot "${dir}" ${@}
fi
}
# }}} # }}}
# use systemd-nspawn if we have it available and systemd is running
if type -P systemd-nspawn >/dev/null && mountpoint -q /sys/fs/cgroup/systemd; then
have_nspawn=1
fi
umask 0022 umask 0022
if [[ -n $RUN ]]; then if [[ -n $RUN ]]; then
# run chroot {{{ # run chroot {{{
#Sanity check #Sanity check
if [[ ! -f "${working_dir}/.arch-chroot" ]]; then if [[ ! -f "${working_dir}/.arch-chroot" ]]; then
die "'${working_dir}' does not appear to be a Arch chroot." die "'${working_dir}' does not appear to be a Arch chroot."
elif [[ $(cat "${working_dir}/.arch-chroot") != ${CHROOT_VERSION} ]]; then
die "'${working_dir}' is not compatible with ${APPNAME} version ${CHROOT_VERSION}. Please rebuild."
fi fi
chroot_lock chroot_lock
chroot_mount chroot_mount
copy_hostconf copy_hostconf
eval chroot "${working_dir}" ${RUN} chroot_run "${working_dir}" ${RUN}
# }}} # }}}
else else
@@ -195,40 +239,35 @@ else
chmod 0755 "${working_dir}" chmod 0755 "${working_dir}"
fi fi
mkdir -p "${working_dir}/var/lib/pacman/sync"
mkdir -p "${working_dir}/etc/"
chroot_lock chroot_lock
chroot_mount chroot_mount
pacargs="--noconfirm --root=${working_dir} --cachedir=${cache_dir}" pacargs="${cache_dirs[@]/#/--cachedir=}"
if [[ -n $pac_conf ]]; then if [[ -n $pac_conf ]]; then
pacargs="$pacargs --config=${pac_conf}" pacargs="$pacargs --config=${pac_conf}"
fi fi
if (( $# != 0 )); then if (( $# != 0 )); then
op='-Sy'
if [[ $FORCE = 'y' ]]; then if [[ $FORCE = 'y' ]]; then
op="${op}f" pacargs="$pacargs --force"
fi fi
if ! pacman ${op} ${pacargs} $@; then if ! pacstrap -GMcd "${working_dir}" ${pacargs} $@; then
die 'Failed to install all packages' die 'Failed to install all packages'
fi fi
fi fi
if [[ -d "${working_dir}/lib/modules" ]]; then if [[ -d "${working_dir}/lib/modules" ]]; then
ldconfig -r "${working_dir}" chroot_run "${working_dir}" ldconfig
fi fi
if [[ -e "${working_dir}/etc/locale.gen" ]]; then if [[ -e "${working_dir}/etc/locale.gen" ]]; then
sed -i 's@^#\(en_US\|de_DE\)\(\.UTF-8\)@\1\2@' "${working_dir}/etc/locale.gen" sed -i 's@^#\(en_US\|de_DE\)\(\.UTF-8\)@\1\2@' "${working_dir}/etc/locale.gen"
chroot "${working_dir}" /usr/sbin/locale-gen chroot_run "${working_dir}" locale-gen
fi fi
echo 'LANG=C' > "${working_dir}/etc/locale.conf"
copy_hostconf copy_hostconf
if [[ ! -e "${working_dir}/.arch-chroot" ]]; then echo "${CHROOT_VERSION}" > "${working_dir}/.arch-chroot"
date +%s > "${working_dir}/.arch-chroot"
fi
# }}} # }}}
fi fi

View File

@@ -37,18 +37,13 @@ Architecture = auto
#CheckSpace #CheckSpace
#VerbosePkgLists #VerbosePkgLists
# PGP signature checking # By default, pacman accepts packages signed by keys that its local keyring
# NOTE: None of this will work without running `pacman-key --init` first. # trusts (see pacman-key and its man page), as well as unsigned packages.
# The compiled in default is equivalent to the following line. This requires
# you to locally sign and trust packager keys using `pacman-key` for them to be
# considered valid.
#SigLevel = Optional TrustedOnly #SigLevel = Optional TrustedOnly
# If you wish to check signatures but avoid local sign and trust issues, use
# the following line. This will treat any key imported into pacman's keyring as # NOTE: You must run `pacman-key --init` before first using pacman; the local
# trusted. # keyring can then be populated with the keys of all official Arch Linux
#SigLevel = Optional TrustAll # packagers with `pacman-key --populate archlinux`.
# For now, off by default unless you read the above.
SigLevel = Never
# #
# REPOSITORIES # REPOSITORIES
@@ -74,18 +69,23 @@ SigLevel = Never
# after the header, and they will be used before the default mirrors. # after the header, and they will be used before the default mirrors.
#[testing] #[testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist
[core] [core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[extra] [extra]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
#[community-testing] #[community-testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist
[community] [community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for

View File

@@ -37,18 +37,13 @@ Architecture = auto
#CheckSpace #CheckSpace
#VerbosePkgLists #VerbosePkgLists
# PGP signature checking # By default, pacman accepts packages signed by keys that its local keyring
# NOTE: None of this will work without running `pacman-key --init` first. # trusts (see pacman-key and its man page), as well as unsigned packages.
# The compiled in default is equivalent to the following line. This requires
# you to locally sign and trust packager keys using `pacman-key` for them to be
# considered valid.
#SigLevel = Optional TrustedOnly #SigLevel = Optional TrustedOnly
# If you wish to check signatures but avoid local sign and trust issues, use
# the following line. This will treat any key imported into pacman's keyring as # NOTE: You must run `pacman-key --init` before first using pacman; the local
# trusted. # keyring can then be populated with the keys of all official Arch Linux
#SigLevel = Optional TrustAll # packagers with `pacman-key --populate archlinux`.
# For now, off by default unless you read the above.
SigLevel = Never
# #
# REPOSITORIES # REPOSITORIES
@@ -74,21 +69,27 @@ SigLevel = Never
# after the header, and they will be used before the default mirrors. # after the header, and they will be used before the default mirrors.
[gnome-unstable] [gnome-unstable]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[testing] [testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[core] [core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[extra] [extra]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community-testing] [community-testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community] [community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for

View File

@@ -37,18 +37,13 @@ Architecture = auto
#CheckSpace #CheckSpace
#VerbosePkgLists #VerbosePkgLists
# PGP signature checking # By default, pacman accepts packages signed by keys that its local keyring
# NOTE: None of this will work without running `pacman-key --init` first. # trusts (see pacman-key and its man page), as well as unsigned packages.
# The compiled in default is equivalent to the following line. This requires
# you to locally sign and trust packager keys using `pacman-key` for them to be
# considered valid.
#SigLevel = Optional TrustedOnly #SigLevel = Optional TrustedOnly
# If you wish to check signatures but avoid local sign and trust issues, use
# the following line. This will treat any key imported into pacman's keyring as # NOTE: You must run `pacman-key --init` before first using pacman; the local
# trusted. # keyring can then be populated with the keys of all official Arch Linux
#SigLevel = Optional TrustAll # packagers with `pacman-key --populate archlinux`.
# For now, off by default unless you read the above.
SigLevel = Never
# #
# REPOSITORIES # REPOSITORIES
@@ -74,21 +69,27 @@ SigLevel = Never
# after the header, and they will be used before the default mirrors. # after the header, and they will be used before the default mirrors.
[kde-unstable] [kde-unstable]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[testing] [testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[core] [core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[extra] [extra]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community-testing] [community-testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community] [community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for

View File

@@ -37,18 +37,13 @@ Architecture = auto
#CheckSpace #CheckSpace
#VerbosePkgLists #VerbosePkgLists
# PGP signature checking # By default, pacman accepts packages signed by keys that its local keyring
# NOTE: None of this will work without running `pacman-key --init` first. # trusts (see pacman-key and its man page), as well as unsigned packages.
# The compiled in default is equivalent to the following line. This requires
# you to locally sign and trust packager keys using `pacman-key` for them to be
# considered valid.
#SigLevel = Optional TrustedOnly #SigLevel = Optional TrustedOnly
# If you wish to check signatures but avoid local sign and trust issues, use
# the following line. This will treat any key imported into pacman's keyring as # NOTE: You must run `pacman-key --init` before first using pacman; the local
# trusted. # keyring can then be populated with the keys of all official Arch Linux
#SigLevel = Optional TrustAll # packagers with `pacman-key --populate archlinux`.
# For now, off by default unless you read the above.
SigLevel = Never
# #
# REPOSITORIES # REPOSITORIES
@@ -74,40 +69,50 @@ SigLevel = Never
# after the header, and they will be used before the default mirrors. # after the header, and they will be used before the default mirrors.
[staging] [staging]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[testing] [testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[core] [core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[extra] [extra]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community-staging] [community-staging]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community-testing] [community-testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community] [community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system, # If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repository here. # enable the multilib repositories as required here.
[multilib-staging] [multilib-staging]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[multilib-testing] [multilib-testing]
#SigLevel = Optional TrustAll SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[multilib] [multilib]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories. # tips on creating your own repositories.
#[custom] #[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs #Server = file:///home/custompkgs

View File

@@ -37,18 +37,13 @@ Architecture = auto
#CheckSpace #CheckSpace
#VerbosePkgLists #VerbosePkgLists
# PGP signature checking # By default, pacman accepts packages signed by keys that its local keyring
# NOTE: None of this will work without running `pacman-key --init` first. # trusts (see pacman-key and its man page), as well as unsigned packages.
# The compiled in default is equivalent to the following line. This requires
# you to locally sign and trust packager keys using `pacman-key` for them to be
# considered valid.
#SigLevel = Optional TrustedOnly #SigLevel = Optional TrustedOnly
# If you wish to check signatures but avoid local sign and trust issues, use
# the following line. This will treat any key imported into pacman's keyring as # NOTE: You must run `pacman-key --init` before first using pacman; the local
# trusted. # keyring can then be populated with the keys of all official Arch Linux
#SigLevel = Optional TrustAll # packagers with `pacman-key --populate archlinux`.
# For now, off by default unless you read the above.
SigLevel = Never
# #
# REPOSITORIES # REPOSITORIES
@@ -74,31 +69,38 @@ SigLevel = Never
# after the header, and they will be used before the default mirrors. # after the header, and they will be used before the default mirrors.
[testing] [testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[core] [core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[extra] [extra]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community-testing] [community-testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community] [community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system, # If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repository here. # enable the multilib repositories as required here.
[multilib-testing] [multilib-testing]
#SigLevel = Optional TrustAll SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[multilib] [multilib]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories. # tips on creating your own repositories.
#[custom] #[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs #Server = file:///home/custompkgs

View File

@@ -37,18 +37,13 @@ Architecture = auto
#CheckSpace #CheckSpace
#VerbosePkgLists #VerbosePkgLists
# PGP signature checking # By default, pacman accepts packages signed by keys that its local keyring
# NOTE: None of this will work without running `pacman-key --init` first. # trusts (see pacman-key and its man page), as well as unsigned packages.
# The compiled in default is equivalent to the following line. This requires
# you to locally sign and trust packager keys using `pacman-key` for them to be
# considered valid.
#SigLevel = Optional TrustedOnly #SigLevel = Optional TrustedOnly
# If you wish to check signatures but avoid local sign and trust issues, use
# the following line. This will treat any key imported into pacman's keyring as # NOTE: You must run `pacman-key --init` before first using pacman; the local
# trusted. # keyring can then be populated with the keys of all official Arch Linux
#SigLevel = Optional TrustAll # packagers with `pacman-key --populate archlinux`.
# For now, off by default unless you read the above.
SigLevel = Never
# #
# REPOSITORIES # REPOSITORIES
@@ -74,28 +69,39 @@ SigLevel = Never
# after the header, and they will be used before the default mirrors. # after the header, and they will be used before the default mirrors.
#[testing] #[testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist
[core] [core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[extra] [extra]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
#[community-testing] #[community-testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist #Include = /etc/pacman.d/mirrorlist
[community] [community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system, # If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repository here. # enable the multilib repositories as required here.
#[multilib-testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist
[multilib] [multilib]
#SigLevel = Optional TrustAll SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories. # tips on creating your own repositories.
#[custom] #[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs #Server = file:///home/custompkgs

View File

@@ -37,18 +37,13 @@ Architecture = auto
#CheckSpace #CheckSpace
#VerbosePkgLists #VerbosePkgLists
# PGP signature checking # By default, pacman accepts packages signed by keys that its local keyring
# NOTE: None of this will work without running `pacman-key --init` first. # trusts (see pacman-key and its man page), as well as unsigned packages.
# The compiled in default is equivalent to the following line. This requires
# you to locally sign and trust packager keys using `pacman-key` for them to be
# considered valid.
#SigLevel = Optional TrustedOnly #SigLevel = Optional TrustedOnly
# If you wish to check signatures but avoid local sign and trust issues, use
# the following line. This will treat any key imported into pacman's keyring as # NOTE: You must run `pacman-key --init` before first using pacman; the local
# trusted. # keyring can then be populated with the keys of all official Arch Linux
#SigLevel = Optional TrustAll # packagers with `pacman-key --populate archlinux`.
# For now, off by default unless you read the above.
SigLevel = Never
# #
# REPOSITORIES # REPOSITORIES
@@ -74,29 +69,36 @@ SigLevel = Never
# after the header, and they will be used before the default mirrors. # after the header, and they will be used before the default mirrors.
[staging] [staging]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[testing] [testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[core] [core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[extra] [extra]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community-staging] [community-staging]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community-testing] [community-testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
#SigLevel = Optional TrustAll
[community] [community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories. # tips on creating your own repositories.
#[custom] #[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs #Server = file:///home/custompkgs

View File

@@ -37,18 +37,13 @@ Architecture = auto
#CheckSpace #CheckSpace
#VerbosePkgLists #VerbosePkgLists
# PGP signature checking # By default, pacman accepts packages signed by keys that its local keyring
# NOTE: None of this will work without running `pacman-key --init` first. # trusts (see pacman-key and its man page), as well as unsigned packages.
# The compiled in default is equivalent to the following line. This requires
# you to locally sign and trust packager keys using `pacman-key` for them to be
# considered valid.
#SigLevel = Optional TrustedOnly #SigLevel = Optional TrustedOnly
# If you wish to check signatures but avoid local sign and trust issues, use
# the following line. This will treat any key imported into pacman's keyring as # NOTE: You must run `pacman-key --init` before first using pacman; the local
# trusted. # keyring can then be populated with the keys of all official Arch Linux
#SigLevel = Optional TrustAll # packagers with `pacman-key --populate archlinux`.
# For now, off by default unless you read the above.
SigLevel = Never
# #
# REPOSITORIES # REPOSITORIES
@@ -74,18 +69,23 @@ SigLevel = Never
# after the header, and they will be used before the default mirrors. # after the header, and they will be used before the default mirrors.
[testing] [testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[core] [core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[extra] [extra]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community-testing] [community-testing]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
[community] [community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for # An example of a custom package repository. See the pacman manpage for