grim/containers/msys2-cross
Initial revision, pacman works in the container, but doesn't work with other roots yet
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Dockerfile Sun Nov 18 23:52:58 2018 -0600
@@ -0,0 +1,26 @@
+# vi:et:ts=4 sw=4 sts=4:ft=dockerfile +# Get our base dependencies + apt-get install -y mingw-w64 mingw-w64-tools wget xz-utils gnupg2 && \ + rm -rf /var/lib/apt/lists +COPY sync/ /var/lib/pacman/sync/ +COPY bin/ /usr/local/bin/ +COPY keyrings/ /usr/share/pacman/keyrings/ + wget -O /usr/local/bin/pacman https://pkgbuild.com/~eschwartz/repo/x86_64-extracted/pacman-static && \ + chmod +x /usr/local/bin/pacman && \ + mkdir -p /windows/etc /windows/var/lib/pacman /windows/var/log /windows/tmp + pacman-key --populate msys2 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/pacman-key Sun Nov 18 23:52:58 2018 -0600
@@ -0,0 +1,856 @@
+# pacman-key - manages pacman's keyring +# Based on apt-key, from Debian +# Generated from pacman-key.sh.in; do not edit by hand. +# Copyright (c) 2010-2016 Pacman Development Team <pacman-dev@archlinux.org> +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# gettext initialization +export TEXTDOMAIN='pacman-scripts' +export TEXTDOMAINDIR='/usr/share/locale' +declare -r myver="5.0.1" +DEFAULT_KEYSERVER='hkp://pool.sks-keyservers.net' + printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1 + printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1 + printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1 + printf "${BLUE}::${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}" "$@" >&1 + printf "${YELLOW}==> $(gettext "WARNING:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 + printf "${RED}==> $(gettext "ERROR:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 + local opt= optarg= i= shortopts=$1 + local -a longopts=() unused_argv=() + while [[ $1 && $1 != '--' ]]; do + for o in "${longopts[@]}"; do + if [[ ${o%:} = "$1" ]]; then + [[ ${o%:} = "$1"* ]] && longmatch+=("$o") + case ${#longmatch[*]} in + # success, override with opt and return arg req (0 == none, 1 == required) + if [[ $longmatch = *: ]]; then + # fail, ambiguous match + printf "pacman-key: $(gettext "option '%s' is ambiguous; possibilities:")" "--$1" + printf " '%s'" "${longmatch[@]%:}" + --) # explicit end of options + for (( i = 1; i < ${#1}; i++ )); do + if [[ $shortopts != *$opt* ]]; then + printf "pacman-key: $(gettext "invalid option") -- '%s'\n" "$opt" >&2 + # option requires optarg + if [[ $shortopts = *$opt:* ]]; then + # if we're not at the end of the option chunk, the rest is the optarg + if (( i < ${#1} - 1 )); then + # if we're at the end, grab the the next positional, if it exists + elif (( i == ${#1} - 1 )) && [[ $2 ]]; then + printf "pacman-key: $(gettext "option requires an argument") -- '%s'\n" "$opt" >&2 + --?*=*|--?*) # long option + IFS='=' read -r opt optarg <<< "${1#--}" + printf "pacman-key: $(gettext "option '%s' does not allow an argument")\n" "--$opt" >&2 + OPTRET+=("--$opt" "$optarg") + OPTRET+=("--$opt" "$2" ) + printf "pacman-key: $(gettext "option '%s' requires an argument")\n" "--$opt" >&2 + # ambiguous option -- error was reported for us by longoptmatch() + printf "pacman-key: $(gettext "invalid option") '--%s'\n" "$opt" >&2 + *) # non-option arg encountered, add it as a parameter + # add end-of-opt terminator and any leftover positional parameters + OPTRET+=('--' "${unused_argv[@]}" "$@") +if [[ -n "$MSYSTEM" ]]; then + readonly -a UTILS_NAME=('bsdtar' + for wrapper in ${UTILS_NAME[@]}; do + local UTILS_PATH="/usr/bin/" + if ! type -p ${UTILS_PATH}${FUNCNAME[0]} >/dev/null; then + error "$(gettext "Cannot find the %s binary required for makepkg.")" "${UTILS_PATH}${FUNCNAME[0]}" + ${UTILS_PATH}${FUNCNAME[0]} "$@" + printf "pacman-key (pacman) %s\n" ${myver} + printf -- "$(gettext "Usage: %s [options] operation [targets]")\n" $(basename $0) + printf -- "$(gettext "Manage pacman's list of trusted keys")\n" + printf -- "$(gettext "Operations:")\n" + printf -- "$(gettext " -a, --add Add the specified keys (empty for stdin)")\n" + printf -- "$(gettext " -d, --delete Remove the specified keyids")\n" + printf -- "$(gettext " -e, --export Export the specified or all keyids")\n" + printf -- "$(gettext " -f, --finger List fingerprint for specified or all keyids")\n" + printf -- "$(gettext " -l, --list-keys List the specified or all keys")\n" + printf -- "$(gettext " -r, --recv-keys Fetch the specified keyids")\n" + printf -- "$(gettext " -u, --updatedb Update the trustdb of pacman")\n" + printf -- "$(gettext " -v, --verify Verify the file(s) specified by the signature(s)")\n" + printf -- "$(gettext " --edit-key Present a menu for key management task on keyids")\n" + printf -- "$(gettext " --import Imports pubring.gpg from dir(s)")\n" + printf -- "$(gettext " --import-trustdb Imports ownertrust values from trustdb.gpg in dir(s)")\n" + printf -- "$(gettext " --init Ensure the keyring is properly initialized")\n" + printf -- "$(gettext " --list-sigs List keys and their signatures")\n" + printf -- "$(gettext " --lsign-key Locally sign the specified keyid")\n" + printf -- "$(gettext " --populate Reload the default keys from the (given) keyrings\n\ + in '%s'")\n" "/usr/share/pacman/keyrings" + printf -- "$(gettext " --refresh-keys Update specified or all keys from a keyserver")\n" + printf -- "$(gettext "Options:")\n" + printf -- "$(gettext " --config <file> Use an alternate config file (instead of\n\ + '%s')")\n" "/etc/pacman.conf" + printf -- "$(gettext " --gpgdir <dir> Set an alternate directory for GnuPG (instead\n\ + of '%s')")\n" "/etc/pacman.d/gnupg" + printf -- "$(gettext " --keyserver <server-url> Specify a keyserver to use if necessary")\n" + printf -- "$(gettext " -h, --help Show this help message and exit")\n" + printf -- "$(gettext " -V, --version Show program version")\n" + printf "pacman-key (pacman) %s\n" "${myver}" + printf -- "$(gettext "\ +Copyright (c) 2010-2016 Pacman Development Team <pacman-dev@archlinux.org>.\n\ +This is free software; see the source for copying conditions.\n\ +There is NO WARRANTY, to the extent permitted by law.\n")" +# read the config file "$1" which has key=value pairs, and return the key which +# matches "$2". the equals sign between pairs may be surrounded by any amount +# of whitespace. Optionally, "$3" can be specified which is the default value + while IFS='=' read -r key value; do + [[ -z $key || ${key:0:1} = '#' ]] && continue + if [[ ${key%% *} = "$2" && -n ${value##* } ]]; then +key_lookup_from_name() { + <("${GPG_PACMAN[@]}" --search-keys --batch --with-colons "$1" 2>/dev/null | + awk -F: '$1 == "pub" { print $2 }') + # only return success on non-ambiguous lookup + error "$(gettext "Failed to lookup key by name:") %s" "$name" + printf '%s' "${ids[0]}" + error "$(gettext "Key name is ambiguous:") %s" "$name" + # Generate the master key, which will be in both pubring and secring + "${GPG_PACMAN[@]}" --gen-key --batch <<EOF +%echo Generating pacman keyring master key... +Name-Real: Pacman Keyring Master Key +Name-Email: pacman@localhost +secret_keys_available() { + "${GPG_PACMAN[@]}" -K --with-colons | wc -l +# Adds the given gpg.conf option if it is not present in the file. +# Note that if we find it commented out, we won't add the option. +# args: $1 conffile, $2 option-name, $3 (optional) option-value + local conffile=$1; shift + # looking for the option 'bare', only leading spaces or # chars allowed, + # followed by at least one space and any other text or the end of line. + if ! grep -q "^[[:space:]#]*$1\([[:space:]].*\)*$" "$conffile" &>/dev/null; then + printf '%s\n' "$*" >> "$conffile" + # Verify if the key exists in pacman's keyring + if ! "${GPG_PACMAN[@]}" --list-keys "$key" &>/dev/null ; then + error "$(gettext "The key identified by %s could not be found locally.")" "$key" + # Check for simple existence rather than for a directory as someone + # may want to use a symlink here + [[ -e ${PACMAN_KEYRING_DIR} ]] || mkdir -p -m 755 "${PACMAN_KEYRING_DIR}" + [[ -f ${PACMAN_KEYRING_DIR}/pubring.gpg ]] || touch ${PACMAN_KEYRING_DIR}/pubring.gpg + [[ -f ${PACMAN_KEYRING_DIR}/secring.gpg ]] || touch ${PACMAN_KEYRING_DIR}/secring.gpg + [[ -f ${PACMAN_KEYRING_DIR}/trustdb.gpg ]] || "${GPG_PACMAN[@]}" --update-trustdb + chmod 644 ${PACMAN_KEYRING_DIR}/{pubring,trustdb}.gpg + chmod 600 ${PACMAN_KEYRING_DIR}/secring.gpg + conffile="${PACMAN_KEYRING_DIR}/gpg.conf" + [[ -f $conffile ]] || touch "$conffile" + add_gpg_conf_option "$conffile" 'no-greeting' + add_gpg_conf_option "$conffile" 'no-permission-warning' + add_gpg_conf_option "$conffile" 'lock-never' + keyserv=${KEYSERVER:-$DEFAULT_KEYSERVER} + add_gpg_conf_option "$conffile" 'keyserver' "$keyserv" + add_gpg_conf_option "$conffile" 'keyserver-options' 'timeout=10' + # set up a private signing key (if none available) + if [[ $(secret_keys_available) -lt 1 ]]; then + if [[ ! -r ${PACMAN_KEYRING_DIR}/pubring.gpg || \ + ! -r ${PACMAN_KEYRING_DIR}/trustdb.gpg ]]; then + error "$(gettext "You do not have sufficient permissions to read the %s keyring.")" "pacman" + msg "$(gettext "Use '%s' to correct the keyring permissions.")" "pacman-key --init" + if (( EXPORT || FINGER || LIST || VERIFY )); then + if ! grep -q "^[[:space:]]*lock-never[[:space:]]*$" ${PACMAN_KEYRING_DIR}/gpg.conf &>/dev/null; then + error "$(gettext "You do not have sufficient permissions to run this command.")" + msg "$(gettext "Use '%s' to correct the keyring permissions.")" "pacman-key --init" + if (( LSIGNKEY )); then + if [[ $(secret_keys_available) -lt 1 ]]; then + error "$(gettext "There is no secret key available to sign with.")" + msg "$(gettext "Use '%s' to generate a default secret key.")" "pacman-key --init" + local KEYRING_IMPORT_DIR='/usr/share/pacman/keyrings' + local keyring KEYRINGIDS=("$@") + if (( ${#KEYRINGIDS[*]} == 0 )); then + # get list of all available keyrings + KEYRINGIDS=("$KEYRING_IMPORT_DIR"/*.gpg) + KEYRINGIDS=("${KEYRINGIDS[@]##*/}") + KEYRINGIDS=("${KEYRINGIDS[@]%.gpg}") + if (( ${#KEYRINGIDS[*]} == 0 )); then + error "$(gettext "No keyring files exist in %s.")" "$KEYRING_IMPORT_DIR" + # verify listed keyrings exist + for keyring in "${KEYRINGIDS[@]}"; do + if [[ ! -f "$KEYRING_IMPORT_DIR/$keyring.gpg" ]]; then + error "$(gettext "The keyring file %s does not exist.")" "$KEYRING_IMPORT_DIR/$keyring.gpg" + # Variable used for iterating on keyrings + # Add keys from requested keyrings + for keyring in "${KEYRINGIDS[@]}"; do + msg "$(gettext "Appending keys from %s.gpg...")" "$keyring" + "${GPG_PACMAN[@]}" --quiet --import "${KEYRING_IMPORT_DIR}/${keyring}.gpg" + # Read the trusted key IDs to an array. Because this is an ownertrust + # file, we know we have the full 40 hex digit fingerprint values. + # Format of ownertrust dump file: + # 40CHARFINGERPRINTXXXXXXXXXXXXXXXXXXXXXXX:6: + # 40CHARFINGERPRINTXXXXXXXXXXXXXXXXXXXXXXX:5: + for keyring in "${KEYRINGIDS[@]}"; do + if [[ -s "${KEYRING_IMPORT_DIR}/${keyring}-trusted" ]]; then + while IFS=: read key_id _; do + # skip blank lines, comments; these are valid in this file + [[ -z $key_id || ${key_id:0:1} = \# ]] && continue + # Mark this key to be lsigned + trusted_ids[$key_id]=$keyring + done < "${KEYRING_IMPORT_DIR}/${keyring}-trusted" + if (( ${#trusted_ids[@]} > 0 )); then + msg "$(gettext "Locally signing trusted keys in keyring...")" + lsign_keys "${!trusted_ids[@]}" + msg "$(gettext "Importing owner trust values...")" + for keyring in "${KEYRINGIDS[@]}"; do + if [[ -s "${KEYRING_IMPORT_DIR}/${keyring}-trusted" ]]; then + "${GPG_PACMAN[@]}" --import-ownertrust "${KEYRING_IMPORT_DIR}/${keyring}-trusted" + for keyring in "${KEYRINGIDS[@]}"; do + if [[ -s $KEYRING_IMPORT_DIR/$keyring-revoked ]]; then + while read -r key_id; do + revoked_ids["$key_id"]=1 + done <"$KEYRING_IMPORT_DIR/$keyring-revoked" + if (( ${#revoked_ids[@]} > 0 )); then + msg "$(gettext "Disabling revoked keys in keyring...")" + for key_id in "${!revoked_ids[@]}"; do + msg2 "$(gettext "Disabling key %s...")" "${key_id}" + printf 'disable\nquit\n' | LANG=C "${GPG_PACMAN[@]}" --command-fd 0 --quiet --batch --edit-key "${key_id}" 2>/dev/null + if ! "${GPG_PACMAN[@]}" --quiet --batch --import "$@" ; then + error "$(gettext "A specified keyfile could not be added to the keyring.")" + check_keyids_exist "$@" + if ! "${GPG_PACMAN[@]}" --quiet --batch --delete-key --yes "$@" ; then + error "$(gettext "A specified key could not be removed from the keyring.")" + check_keyids_exist "$@" + if ! "${GPG_PACMAN[@]}" --edit-key "$key" ; then + error "$(gettext "The key identified by %s could not be edited.")" "$key" + check_keyids_exist "$@" + if ! "${GPG_PACMAN[@]}" --armor --export "$@" ; then + error "$(gettext "A specified key could not be exported from the keyring.")" + if ! "${GPG_PACMAN[@]}" --batch --fingerprint "$@" ; then + error "$(gettext "The fingerprint of a specified key could not be determined.")" + for importdir in "$@"; do + if [[ -f "${importdir}/trustdb.gpg" ]]; then + /bin/gpg --homedir "${importdir}" --export-ownertrust | \ + "${GPG_PACMAN[@]}" --import-ownertrust - + if (( PIPESTATUS )); then + error "$(gettext "%s could not be imported.")" "${importdir}/trustdb.gpg" + error "$(gettext "File %s does not exist and could not be imported.")" "${importdir}/trustdb.gpg" + for importdir in "$@"; do + if [[ -f "${importdir}/pubring.gpg" ]]; then + if ! "${GPG_PACMAN[@]}" --quiet --batch --import "${importdir}/pubring.gpg" ; then + error "$(gettext "%s could not be imported.")" "${importdir}/pubring.gpg" + error "$(gettext "File %s does not exist and could not be imported.")" "${importdir}/pubring.gpg" + if ! "${GPG_PACMAN[@]}" --batch --list-keys "$@" ; then + error "$(gettext "A specified key could not be listed.")" + if ! "${GPG_PACMAN[@]}" --batch --list-sigs "$@" ; then + error "$(gettext "A specified signature could not be listed.")" + msg2 "$(gettext "Locally signing key %s...")" "${key_id}" + # we cannot use --yes here as gpg would still ask for confirmation if a key has more than one uid + printf 'y\ny\n' | LANG=C "${GPG_PACMAN[@]}" --command-fd 0 --quiet --batch --lsign-key "${key_id}" 2>/dev/null + if (( PIPESTATUS[1] )); then + error "$(gettext "%s could not be locally signed.")" "${key_id}" + # if the key is not a hex ID, do a lookup + if [[ $name = ?(0x)+([0-9a-fA-F]) ]]; then + if id=$(key_lookup_from_name "$name"); then + (( ${#keyids[*]} > 0 )) || exit 1 + if ! "${GPG_PACMAN[@]}" --recv-keys "${keyids[@]}" ; then + error "$(gettext "Remote key not fetched correctly from keyserver.")" + check_keyids_exist "$@" + if ! "${GPG_PACMAN[@]}" --refresh-keys "$@" ; then + error "$(gettext "A specified local key could not be updated from a keyserver.")" + msg "Checking %s..." "$sig" + if ! "${GPG_PACMAN[@]}" --status-fd 1 --verify "$sig" | grep -qE '^\[GNUPG:\] TRUST_(FULLY|ULTIMATE)$'; then + error "$(gettext "The signature identified by %s could not be verified.")" "$sig" + msg "$(gettext "Updating trust database...")" + if ! "${GPG_PACMAN[@]}" --batch --check-trustdb ; then + error "$(gettext "Trust database could not be updated.")" +# determine whether we have gettext; make it a no-op if we do not +if ! type -p gettext >/dev/null; then +OPT_LONG=('add' 'config:' 'delete' 'edit-key' 'export' 'finger' 'gpgdir:' + 'help' 'import' 'import-trustdb' 'init' 'keyserver:' 'list-keys' 'list-sigs' + 'lsign-key' 'nocolor' 'populate' 'recv-keys' 'refresh-keys' 'updatedb' +if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then + exit 1 # E_INVALID_OPTION; +unset OPT_SHORT OPT_LONG OPTRET +if [[ $1 == "--" ]]; then + -a|--add) ADD=1 UPDATEDB=1 ;; + --config) shift; CONFIG=$1 ;; + -d|--delete) DELETE=1 UPDATEDB=1 ;; + --edit-key) EDITKEY=1 UPDATEDB=1 ;; + -e|--export) EXPORT=1 ;; + -f|--finger) FINGER=1 ;; + --gpgdir) shift; PACMAN_KEYRING_DIR=$1 ;; + --import) IMPORT=1 UPDATEDB=1 ;; + --import-trustdb) IMPORT_TRUSTDB=1 UPDATEDB=1 ;; + --keyserver) shift; KEYSERVER=$1 ;; + -l|--list-keys) LISTKEYS=1 ;; + --list-sigs) LISTSIGS=1 ;; + --lsign-key) LSIGNKEY=1 UPDATEDB=1 ;; + --nocolor) USE_COLOR='n';; + --populate) POPULATE=1 UPDATEDB=1 ;; + -r|--recv-keys) RECEIVE=1 UPDATEDB=1 ;; + --refresh-keys) REFRESH=1 ;; + -u|--updatedb) UPDATEDB=1 ;; + -v|--verify) VERIFY=1 ;; + -h|--help) usage; exit 0 ;; + -V|--version) version; exit 0 ;; +# check if messages are to be printed using color +unset ALL_OFF BOLD BLUE GREEN RED YELLOW +if [[ -t 2 && ! $USE_COLOR = "n" ]]; then + # prefer terminal safe colored and bold text when tput is supported + if tput setaf 0 &>/dev/null; then + BLUE="${BOLD}$(tput setaf 4)" + GREEN="${BOLD}$(tput setaf 2)" + RED="${BOLD}$(tput setaf 1)" + YELLOW="${BOLD}$(tput setaf 3)" + GREEN="${BOLD}\e[1;32m" + YELLOW="${BOLD}\e[1;33m" +readonly ALL_OFF BOLD BLUE GREEN RED YELLOW +if ! type -p gpg >/dev/null; then + error "$(gettext "Cannot find the %s binary required for all %s operations.")" "gpg" "pacman-key" +CONFIG=${CONFIG:-/etc/pacman.conf} +if [[ ! -r "${CONFIG}" ]]; then + error "$(gettext "%s configuration file '%s' not found.")" "pacman" "$CONFIG" +# if PACMAN_KEYRING_DIR isn't assigned, try to get it from the config +# file, falling back on a hard default +PACMAN_KEYRING_DIR=${PACMAN_KEYRING_DIR:-$(get_from "$CONFIG" "GPGDir" "/etc/pacman.d/gnupg")} +GPG_PACMAN=(gpg --homedir "${PACMAN_KEYRING_DIR}" --no-permission-warning) +if [[ -n ${KEYSERVER} ]]; then + GPG_PACMAN+=(--keyserver "${KEYSERVER}") +# check only a single operation has been given +# don't include UPDATEDB in here as other opts can induce it +numopt=$(( ADD + DELETE + EDITKEY + EXPORT + FINGER + IMPORT + IMPORT_TRUSTDB + + INIT + LISTKEYS + LISTSIGS + LSIGNKEY + POPULATE + RECEIVE + REFRESH + VERIFY )) + if (( ! UPDATEDB )); then + error "$(gettext "no operation specified (use -h for help)")" + error "$(gettext "Multiple operations specified.")" + msg "$(gettext "Please run %s with each operation separately.")" "pacman-key" +# check for targets where needed +if (( (ADD || DELETE || EDIT || IMPORT || IMPORT_TRUSTDB || + LSIGNKEY || RECEIVE || VERIFY) && $# == 0 )); then + error "$(gettext "No targets specified")" +(( ! INIT )) && check_keyring +(( ADD )) && add_keys "$@" +(( DELETE )) && delete_keys "$@" +(( EDITKEY )) && edit_keys "$@" +(( EXPORT )) && export_keys "$@" +(( FINGER )) && finger_keys "$@" +(( IMPORT )) && import "$@" +(( IMPORT_TRUSTDB)) && import_trustdb "$@" +(( INIT )) && initialize +(( LISTKEYS )) && list_keys "$@" +(( LISTSIGS )) && list_sigs "$@" +(( LSIGNKEY )) && lsign_keys "$@" +(( POPULATE )) && populate_keyring "$@" +(( RECEIVE )) && receive_keys "$@" +(( REFRESH )) && refresh_keys "$@" +(( VERIFY )) && verify_sig "$@" +(( UPDATEDB )) && updatedb --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/convey.yml Sun Nov 18 23:52:58 2018 -0600
@@ -0,0 +1,17 @@
+ tag: msys2-cross:${HG_COMMIT_SHORT} Binary file etc/.pacman.conf.swp has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/pacman.conf Sun Nov 18 23:52:58 2018 -0600
@@ -0,0 +1,86 @@
+# See the pacman.conf(5) manpage for option and repository directives +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +#GPGDir = /etc/pacman.d/gnupg/ +#XferCommand = /usr/bin/curl -C - -f %u > %o +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#CleanMethod = KeepInstalled +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Required DatabaseOptional +LocalFileSigLevel = Optional +#RemoteFileSigLevel = Required +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. +# - 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: +# 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. +Include = etc/pacman.d/mirrorlist.mingw32 +Include = etc/pacman.d/mirrorlist.mingw64 +Include = etc/pacman.d/mirrorlist.msys +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/pacman.d/mirrorlist.mingw32 Sun Nov 18 23:52:58 2018 -0600
@@ -0,0 +1,10 @@
+## 32-bit Mingw-w64 repository mirrorlist +Server = http://repo.msys2.org/mingw/i686 +Server = https://downloads.sourceforge.net/project/msys2/REPOS/MINGW/i686 +Server = http://www2.futureware.at/~nickoe/msys2-mirror/mingw/i686 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/pacman.d/mirrorlist.mingw64 Sun Nov 18 23:52:58 2018 -0600
@@ -0,0 +1,10 @@
+## 64-bit Mingw-w64 repository mirrorlist +Server = http://repo.msys2.org/mingw/x86_64 +Server = https://downloads.sourceforge.net/project/msys2/REPOS/MINGW/x86_64 +Server = http://www2.futureware.at/~nickoe/msys2-mirror/mingw/x86_64 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/pacman.d/mirrorlist.msys Sun Nov 18 23:52:58 2018 -0600
@@ -0,0 +1,10 @@
+## MSYS2 repository mirrorlist +Server = http://repo.msys2.org/msys/$arch +Server = https://downloads.sourceforge.net/project/msys2/REPOS/MSYS2/$arch +Server = http://www2.futureware.at/~nickoe/msys2-mirror/msys/$arch/ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/keyrings/msys2-trusted Sun Nov 18 23:52:58 2018 -0600
@@ -0,0 +1,4 @@
+D55E7A6D7CE9BA1587C0ACACF40D263ECA25678A:4: +123D4D51A1793859C2BE916BBBE514E53E0D0813:4: +B91BCF3303284BF90CC043CA9F418C233E652008:4: +9DD0D4217D75A33B896159E6DA7EF2ABAEEA755C:4: --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/keyrings/msys2.gpg Sun Nov 18 23:52:58 2018 -0600
@@ -0,0 +1,391 @@
+-----BEGIN PGP PUBLIC KEY BLOCK----- +mQENBFQoKq4BCADQZfHzaUekzY+SH8glL5U1F7cBtaHYG3V7T64MZYvftvZsii++ +YbrYe2D9voGVJXiAtC0QSWiVlD7UTgvYfUk4HckweWg9bofhcXlRv+ob7un14yJh +OrA6m3GfJybLeb6hIYWtQfCWJweajvhT30/TpPQFq+Qap4KGXl4qUsgCZwHTj0UC +NSYjP1uXXS+gW0hBg10z1+L9egs6LCaLhmvvT6rf/AT2ybxK5NdO2mC1l9mtvNI7 +LpK+NCbX+fAB3UaPVkU0dM19ATDUaNw+m/GPwDoA42wmIQ29e+uhNkfgEcS4jsw9 +OOtpszc2EswR97+UsdacerXCePDl0sQhShaLABEBAAG0MUFsZXhleSBQYXZsb3Yg +KEFsZXhwdXgpIDxhbGV4ZXkucGF3bG93QGdtYWlsLmNvbT6JATgEEwECACIFAlQo +Kq4CGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEPQNJj7KJWeK2KoH/3A4 +Xz4HiKW6VtYkcF3Qce/Jnd9JOJ7EdGDIV0BrU+WNLN9Oj48RebEHZAtzoKHQyChC +hXvB+Cu97HN2k6noetDfgsGJPia6qRdcFPHQDNZaoXNNGaltbpZvWhqPX5pA6qpP +KiQGuvYe7K8A6ZSPP7WZNd0fVPGAei+pnSseq/MHn7F1cnt0SPDgt1OBY+wk/W5e +NDAWTiok5Ci6vRkapemOAWYaVJJgXXqt50qI0DoPrG4gLIr1wu3N6gUVJS9J7NI2 +oK7V7rpW1RHULCpLwAO9/joviksJtjl0RARrfkUf1TvSt70Ngru+rADum208om0b +chyGtQgWjGV2Mq57yrm5AQ0EVCgqrgEIAMTwg2GGDonwSmGS65C3fDjfFCT8WJrl +W3AALM/r2nU40xOAQtZJy9D0mgh55TDfQG+Ea3Ed4Crz2IU7uuTop/nXcCD9Q6Du +bP9X7ORZyMfUzqll1xt3Md2kLLN2hR6Y6C2VIP3KBoTkJf6/uAqSY3N2lVbJxOZY +IWJ2qNNQLP6G0h5jq8KNlf4hC8Cou8r+Ti0OqW9pHV2RN1RseR46Rcc0oHZibyM/ +btKk/NiXeWvNRnUpUDOHu1padUgtt1xjh7Wj2tpHRjKgUQ9fXAwPRgHV3+v+iy4W +3oP6xa38d1lQCRA0o6/mDmStNSyaE5tyEjZiESAbvVzRjUN+fBfRqnMAEQEAAYkB +HwQYAQIACQUCVCgqrgIbDAAKCRD0DSY+yiVnimY+CAC1dISoXon2GpLGrKTnXh09 +bwlOMgHrNEIwtr+gWBIUhKwb1XbAoRlUhVE+q7QLtczTYTCW66I03PWTOFtOE1ux +b5C6g0PUcYESm8FYwjy+TzZqjRAoxlzXNcTdB/gxUHtfSNHxUB5KIQ6H8ktJdswr +sbfj3hJGHdAncehbDeQDxQJ/1JbBOHvn+65seHaNFF2f5zk8A3hLy/QwM0B8GsHf +jP5S4nFFvY6+mnqWikEnkfPlLz6MPNuFPdRkObkUQW/LTWZ9OZHFa/vA0sN/Z2+s +kdNhcQxf/fin/1UNxIzszXFwxzTiCRwprT0Y9mv+yQtY9C8obuEi1qSkCnvPitYr +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- +mQINBFQwR2gBEAD3j9gJvfEdyxC4/4jTn1OqAX9Jkv5lFnczGJrj4EZCEV23hhXk +PHJO5mjGpTYHCDzcKpLPRY6ew5a/L4c2ZF/awQ2B78BnRKwxfY2ukw9B33fY+dqX +hmB8Iw9IqZfnf2aeY5zQPR2x2Qcav5Kq++b11KnNcEaNCGj7nNvMOkI73YtVWDr0 +O/zIoZAHnS6FH03Z0qGNEWqOfqUGJHP4eqlfzO1muA2ya9OUcKajKiYMRxpExA29 +tn0081x4qasXIOLAl1QAXwX+Bcin8uf7E7C/kuG79/TN2sSGB+0VHziEku7X9Eco +jrjj+tYW36T12jgpXJi0Qgsc4orBFJe8TEMRL0r56/81uC5jcSApzumSH7It28bH +WmmxFzCuaeH5PsWF/cb62PIJR7DIopKM8dkWqE4tac1KePER2w7rPFPDhxCDrqC8 +k/AygIBG3UmHqV6LTew1+XjNKXyr1ZeSlRIo98bueK+jBw5dnkm+qbY1hFG8uBvx +nP9rvyil+977nc4f1GwhFg0VYd2E24v/tYNwvS08iUJXYLPaKgmnGlCVnn2YvhYc +cEBdXSLXr1MgR484KKosuklVkGe01xqj04D4Xy9Yxx+a2e5p6QDBM4m1dOe6RDNZ +7jusSJ3NEAYeSpXLUAD7iVX4zNC7MlL0yJu+zVZqivqaNuLP72NPb5+j2wARAQAB +tDJNYXJ0ZWxsIE1hbG9uZSAobWFydGVsbCkgPG1hcnRlbGxtYWxvbmVAZ21haWwu +Y29tPokCOAQTAQIAIgUCVDBHaAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AA +CgkQ2n7yq67qdVwimg/+IcQ8c4weRStnxXw+anxOtb6DvwJgfwqVcMFvctzNYpIH +uEq3F9Sghvk30CHUbhXnTDHv0sFzp8GwtYgrogc0ZcbiOmz5PMwkTD6Kf8NdT43I +3ZpsBPxAJScfBjjhDB+C0H5BiFeiobD9qEVkC6iVCaBxjCaA5gTU52rTLzOpRv3I +lnpuFnSdSqbeQUdl1kQG1d9grgGe/PGaODOsyRhNMFcs7cBXO++L9rGm0gCzIPym +7cq4BgtERjn1RnxkNsiSMfHdCNWs7ST19mnbvkrW2jyli7P24r5vVfcxknQYGLn3 +o9+pHMKQrq1xR749+AqcQ6ZZs7X6BJ5kXYB4p2lMNc8wTMkLknhbdYrvweWf4RqJ +4BC7OP64U/5A6SEQOiilDA/odc93HDwvskKhC4lVl2bn2oPdroS6szaOoq+nJ5Ev +cpqdQhHeDbTrBFgzvxIC5hwAEYFBI+oXeKs7u15XTu0SIweGWe5o74S+CW598+85 +nrlAuaVNkFr2GckcbsJCa3tuzF6CPmtl4NR7VsTspLcp/p5kaUt8eQMZEr7plItt +OTqIuIy8MEvCnlhQPlPirrir38QGCO4I+gGar6J0CveDooqL/YG2XIaqber6gFC7 +QsedgN7+5P0kzM/KW/rDdJyz68KC8fqSzDAmWGal+70/bmfS+9IX4USvf6LKeum5 +Ag0EVDBHaAEQAL7+y1C6UIvhWNDsfvgA6eyPJq9uOiNS4FdlBqnUvf+5HcuSWCtg +ZFIFUNDHGnxD1CaYJSqLHXBfpSnCRT2bTwav3qvenwPFsAKtzs0HllLpGtBrFdbB +aVQ7QfDQjS2Nes0eK3sgelUjqYsuGz0NgAu6XN7JaGLS9lWbW+BgfkaeyUW1AAwG +WUI582DxqKjCQeRkh6fuzPqwMi2YPQt71zAAyrL8J7K94oS6PG3i8Cb5lhRScdLI +Ea/txTio2JSBK2eSPVYniY1gGxVlsqawIGCG8CwhPEj8XqXL+VHAgfwOpfIOVmig +QPrPtxZpLRWI8qNAjh17W5to+m5Sjt0o+juLKjrg7gfpcapbXOjN9EBEFiTmiAHs +qlaW8+HOgty4p/v7+nR3r1cGsDtn9wOhy216t1NCZqnvlwkhMM/wuY/r+GqrrC8R +39l8USQtYucLSbkY4zG5wca+UWCgemTF/ROjhMLp1rOvCci/rLhKp7PhyNJWG8yL +gSVubYmGXAqBdAVBStV59Lf1DuWySFPIdRLPhcoSkzJUIistpLWB5RnGoEGUroSZ +vd9jCHBaMzo47ZzcLyTMEW0dqrKnQzDQRVg9Q4tKM6Q6p7iJbxaWKxErymCONMHA +V9YF4Zr3K0oBv/gW5QeS5E+JfhbKHBTj8n0RMAD2+SRQvfQHECV4qPTJABEBAAGJ +Ah8EGAECAAkFAlQwR2gCGwwACgkQ2n7yq67qdVz1xhAAsUccwuLjFEjbjpAUA+Xk +4KRsN8aZtz7R9qrT5ss10K8SSx6o/HJmUtyPrYos4MLjxUOi92I8HbeC8ivU963y +iRQmI4gEZsYy8ZXM3TEiMmq7uV+o9W/IJDcGF/MvwvBvgzXqfvZPZGfQqN8tS7A9 +aAqtbOi/9WE9+EIrYxe8fXTQbi3wR+5Gi9rNAYFlA0/tmnbKenikCQ2OHJ+TfW+G +7IzTboNCD7X2DEiOJUU5IberoYSa5rRX1MaVUz5tCGoKLGT3XZED047q7DLaODGS +wSuuBRpP61rq1ozrOYkyHr5UaTVraNrzBO7slxV8nlMFNYF2mdlq8KMhsYAxWj28 +pFnIoXbPPGz4kHGhX9TCkDmJS5huDOjj40QhpyK4M3QbzSAqGg8OJhjRW2t4MkDV +WX2/7zBHl5P2dvKsq9DuqYCmX1GOLQk2igH7sfU66ypRxJ2sTPyOvj+BDP6PGbUV +Mc2yhxQ4xokmr6zHL33T4nclV97ZqvA/KhVqfJsBfPiCXgCRYwQldNB/HRD8XKct +Jx3+t4v19Qz/htadyI92Hvbpd8BtAkJ3Z8JssCVK+OPPUJ9GmDrNzlve5JGdZs4i +Dc4uCtuH8a6A+0xGnWSxH1zqB24y7hRPnKgpg6mb03DMXjx2SDn90cjrjaQTbgyO +80lA8d5ulMjn2/Dfqm7dE2k= +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- +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 +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- +mQENBFQpJ+YBCADHeKfwHoIX/C2glZvsHabl7lK/mcFMAI62WMHRGZ16oNEZp3Zy +8W3iE+stzlsTPOkqn4mJyBANp6Rl+HSIrzW09RMpeehN3ZVN37Fhti/S2pDDVPz/ +Jf43ewENHceBXNuBT5lex0zvp8VFdCZ3DNOTEDnMzxONb49m4kkD77qW3w+OG1v2 +Kwb9CTEWTZU9FDuJLmVxG5Avsejtz/E3dx/76l0mInbT8UNtUxOXIulgq75CDOeK +06PjJElMtlm0NVnpLwlUIkdgaOAMl57wlxMVSm83k35iDaRIlUdxLuUXO80x/ahB +R7IO0Uxi7wvWwOANwidmaPircIWYaHW+nzoPABEBAAG0L0lnbmFjaW8gQ2FzYWwg +UXVpbnRlaXJvIDxpY3F1aW50ZWlyb0BnbWFpbC5jb20+iQE5BBMBAgAjBQJUKSfm +AhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQn0GMIz5lIAjMtgf+Jakx +HKuZ5u8SB4V26mg9StIFCk0IF3SsHxRAaxZEI7Efwc4WcSOjMBEGgl2JbgkjFBJp +U9Iftjk7kUWa6jkDfFoRzhgGIBkRpASnsQlEPZ4BmVHdIl8b1GxLP3ycOSRB2+n8 +GVd67S6T0ETz8KWfte21LI/8sdHPQYPSQPSaGo/UpOHcAhAzrQmjJlpuxQ8n2M1z +JUPbJeMX3cYNfTNwkxx47A4+BB2/Rj9VAIGXvcTOcgE6W9GCNrbteaAybZS0mOJT ++hmDXplXIPtDbdB9A3pkBHPuFLi4mCX5YfauRuw7tm+0Q/CugSViGO0gmpA2M0IF +e+g8RndPdNkBc7muULkBDQRUKSfmAQgAq3OhtswS9z/UnZBYLOhlaiXV5H+fU6Zp +fTlvqBvJWdqPVeOmvaQGgTwt62W2IHdrD/dLKU9KaWzJeQbqZntUfX3HWC1IyJ0Z +85GL/c22MHVPceJ3J+X1dydT/E0h90Mg5sOS5fzcFLoG0wSEEQYHwkU9N6Jc2j3C +3Kf/9iQZ0dh7FD/03IwzSS8rcJV+5BwzbnEYry7fyKtdgMPESNBsMQryX2iDteu0 +eXhHbRXAnWaa+asmpkjgaFQDTALdUQU2jJbak8BhaQt2GasY26eChK6vs8aNf3J6 +KLlgGS2Rl+bIpIsA/rhSgu42gdfNv/OtQKbHoZ05cA2tl0f659uWYQARAQABiQEf +BBgBAgAJBQJUKSfmAhsMAAoJEJ9BjCM+ZSAI6YsH/ROBsjIcIx2iXhX5OU7hn5LH +bxS4NQHS/SWihFxSy8ecGoWcggDqA2Vc7Q9hQOobHif9zlUUCNzafbDWQEG//Q1o +whQlk2xZZS3CT/uE9/Zi5DEB1ERthDsLG1jo5HvdqrYKoNuNb7j1+8aGH7qwRaoS +tAe9rt4fnRLKTt4akOq1H9LguDKQNBrJgzs0Bvks538qC5HNfQFMNEHUc5O0Nf2W +ZQRmEnPgrNpLHkfoPRXpS0012JYt961gn1hkXh5Oj7yuL5JXf0obaLZTHdPJzhoP +Z6gC2OYoZee3WFTHVjK5K3WUPbV7P0KPF6c13yBMoJK0x+WzgahOq3Ll+zN0Rf0= +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- +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 +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- +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 +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- +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 +-----END PGP PUBLIC KEY BLOCK----- Binary file sync/mingw32.db has changed
Binary file sync/mingw32.db.sig has changed
Binary file sync/mingw64.db has changed
Binary file sync/mingw64.db.sig has changed
Binary file sync/msys.db has changed
Binary file sync/msys.db.sig has changed