Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--README.md4
-rwxr-xr-xbin/build-master-status2
-rwxr-xr-xbin/build-packages188
-rwxr-xr-xbin/change-git-remotes2
-rwxr-xr-xbin/check-mirrors32
-rwxr-xr-xbin/check-opcodes199
-rwxr-xr-xbin/cleanup11
-rwxr-xr-xbin/create-build-support-package6
-rwxr-xr-xbin/db-update14
-rwxr-xr-xbin/delete-packages3
-rwxr-xr-xbin/generate-key-graph2
-rwxr-xr-xbin/get-assignment32
-rwxr-xr-xbin/get-package-updates450
-rwxr-xr-xbin/get-source-info83
-rwxr-xr-xbin/harvest-commit-times65
-rwxr-xr-xbin/ii-watch2
-rwxr-xr-xbin/interpret-mail2
-rwxr-xr-xbin/local-build-package220
-rwxr-xr-xbin/manage-slaves37
-rwxr-xr-xbin/manual-fix55
-rwxr-xr-xbin/nit-picker6
-rwxr-xr-xbin/opcode293
-rwxr-xr-xbin/ping-to-master5
-rwxr-xr-xbin/prioritize-build-list2
-rwxr-xr-xbin/return-assignment48
-rwxr-xr-xbin/sanity-check68
-rwxr-xr-xbin/schedule-for-rebuild (renamed from bin/seed-build-list)428
-rwxr-xr-xbin/strict-bashism-check15
-rwxr-xr-xbin/watch-build-logs26
-rwxr-xr-xconf/master.conf.example6
-rwxr-xr-xconf/slave.conf.example8
-rwxr-xr-xlib/common-functions307
-rwxr-xr-xlib/intentions-queue9
-rwxr-xr-xlib/load-configuration36
-rwxr-xr-xlib/mysql-functions87
-rwxr-xr-xlib/opcode_list1706
-rw-r--r--misc/README.Indexes1
-rw-r--r--misc/database-layout.dmf2057
39 files changed, 2071 insertions, 4447 deletions
diff --git a/.gitignore b/.gitignore
index b8f99f5..768fb9a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
work
+.idea
diff --git a/README.md b/README.md
index 8fd0141..9ffdadd 100644
--- a/README.md
+++ b/README.md
@@ -38,12 +38,8 @@ The standard configuration in `conf/*.conf.example` can be locally overwritten b
* enable `[releng]` repository in `/etc/pacman.conf` with an i686 mirror
## tools for the build master and the build slaves
-* `check-opcodes`:
-Scan binaries for certain opcodes.
* `clean-git`:
Clean the packages' git repositories.
-* `opcode`:
-Helper for `check-opcodes`.
* `strict-bashism-check`:
Strict style check for this code base.
diff --git a/bin/build-master-status b/bin/build-master-status
index 7a17923..b66ba2b 100755
--- a/bin/build-master-status
+++ b/bin/build-master-status
@@ -18,7 +18,7 @@ if ! verbose_flock -n 9; then
fi
# update todos
-find "${base_dir}/bin/" "${base_dir}/conf/" "${base_dir}/lib/" -type f \
+find "${base_dir}/bin/" "${conf_dir}/" "${base_dir}/lib/" -type f \
-exec grep -nHF '' '{}' \; | \
sed 's,^'"$(str_to_regex "${base_dir}")"'/,,' | \
sed -n '
diff --git a/bin/build-packages b/bin/build-packages
index 9c5ab03..b39546d 100755
--- a/bin/build-packages
+++ b/bin/build-packages
@@ -21,7 +21,7 @@
# TODO: the following things need proper locking and/or proper handling of
# external locks:
# - `git` on the package source
-# - `archbuild` (e.g. /var/lib/archbuilds/staging-i686-build/root.lock)
+# - `archbuild` (e.g. /var/lib/archbuilds/extra-staging-i686-build/root.lock)
# - `find ... -exec umount` on the build chroot
# TODO: releave some locking conditions - meta goal: be able to run multiple
@@ -38,12 +38,6 @@ usage() {
>&2 echo 'build-packages: build package(s) on the build-list'
>&2 echo ''
>&2 echo 'possible options:'
- >&2 echo ' -d|--diff source-directory:'
- >&2 echo ' Apply the diff between $source-directory/PKGBUILD and'
- >&2 echo ' $source-directory/../../trunk/PKGBUILD before building.'
- >&2 echo ' This option is intended for building from trunk where minor'
- >&2 echo ' fixes did not get released yet. Hence, it conflicts intentionally'
- >&2 echo ' with -n, -l, -t or -x and it requires -p.'
>&2 echo ' -h|--help: Show this help and exit.'
>&2 echo ' -l|--local pkgname.git-revision.git-mod-revision.repository.architecture:'
>&2 echo ' Build the given package without asking / reporting to the'
@@ -74,10 +68,10 @@ usage() {
>&2 echo ' clean the chroot before building'
>&2 echo ' :haskell_without_check:'
>&2 echo ' try with :without_check: iff this is a haskell-*, python-* or python2-* package'
- >&2 echo ' :mirrored_source:'
- >&2 echo ' compile from source tarbal from sources.archlinux.org if possible'
>&2 echo ' :mirrored_source_by_hash:'
>&2 echo ' download sources from sources.archlinux32.org by hash if possible'
+ >&2 echo ' :on_x86_64:'
+ >&2 echo ' build any package with x86_64 arch'
>&2 echo ' :without_check:'
>&2 echo ' run makepkg with "--no-check"'
>&2 echo ' :without_systemd_nspawn:'
@@ -90,8 +84,7 @@ usage() {
}
eval set -- "$(
- getopt -o d:hl:n:p:s:t:ux \
- --long diff: \
+ getopt -o hl:n:p:s:t:ux \
--long help \
--long local: \
--long prefer: \
@@ -102,7 +95,6 @@ eval set -- "$(
)"
unset count
-unset diff_source_dir
unset forced_package
unset forced_straws
unset prefered_package
@@ -112,14 +104,6 @@ timeout=0
while true
do
case "$1" in
- -d|--diff)
- shift
- if [ -n "${diff_source_dir}" ]; then
- >&2 echo 'Option -d, --diff can be given only once.'
- usage
- fi
- diff_source_dir="$1"
- ;;
-h|--help)
usage 0
;;
@@ -173,17 +157,6 @@ if [ $# -ne 0 ]; then
usage
fi
-if [ -n "${diff_source_dir}" ]; then
- if [ -n "${count}" ] || \
- [ -n "${forced_package}" ] || \
- [ "${timeout}" -ne 0 ] || \
- ${exit_after_failure} || \
- [ -z "${prefered_package}" ]; then
- >&2 echo 'Conflicting flags.'
- usage
- fi
-fi
-
if [ -n "${forced_package}" ]; then
if [ -n "${count}" ] || \
[ "${timeout}" -ne 0 ] || \
@@ -222,6 +195,14 @@ checksum=$(
while [ "${count}" -ne 0 ] && \
[ "$(calculate_script_checksum)" = "${checksum}" ]; do
+ if [ -f '/tmp/do-not-run-build-slave' ]; then
+ >&2 echo 'build slave is on halt.'
+ >&2 echo 'I will terminate the loop and stop now.'
+ # non-zero exit code to signal systemctl that the process should not
+ # be restarted automatically
+ exit 1
+ fi
+
if [ "${timeout}" -ne 0 ] && [ "${timeout}" -lt "$(date +%s)" ];
then
break
@@ -249,7 +230,7 @@ while [ "${count}" -ne 0 ] && \
if [ -z "${forced_package}" ]; then
package=$(
# shellcheck disable=SC2029
- ssh \
+ ssh -o PasswordAuthentication=No \
-i "${master_build_server_identity}" \
-p "${master_build_server_port}" \
"${master_build_server_user}@${master_build_server}" \
@@ -277,7 +258,7 @@ while [ "${count}" -ne 0 ] && \
# 0: ok, I gave you an assignment
0)
- [ ${count} -gt 0 ] && \
+ [ "${count}" -gt 0 ] && \
count=$((count-1))
arch="${package##* }"
package="${package% *}"
@@ -291,19 +272,9 @@ while [ "${count}" -ne 0 ] && \
package="${package% *}"
if [ "${arch}" = 'any' ]; then
arch="${my_arch}"
- fi
-
- if [ -n "${diff_source_dir}" ] &&
- [ "${prefered_package}" != "${package}" ]; then
- >&2 echo 'The prefered package was not handed out.'
- >&2 echo 'Because -d was given, I will abort.'
- # shellcheck disable=SC2029
- ssh \
- -i "${master_build_server_identity}" \
- -p "${master_build_server_port}" \
- "${master_build_server_user}@${master_build_server}" \
- 'return-assignment' 'ABORT'
- exit 2
+ assignment_was_any=true
+ else
+ assignment_was_any=false
fi
if [ "${git_revision##*-}" = 'HEAD' ]; then
@@ -376,14 +347,10 @@ while [ "${count}" -ne 0 ] && \
tmp_dir=$(mktemp -d "${work_dir}/tmp.build-packages.XXXXXX")
trap bail_out EXIT
- if ! git_repo=$(find_repository_with_commit "${git_revision}") || \
- [ -z "${git_repo}" ] || \
- ! find_pkgbuilds "${package}" "${repository}" "${git_repo}" "${git_revision}" "${mod_git_revision}" || \
- ! extract_source_directory "${git_repo}" "${git_revision}" "${mod_git_revision}" "${tmp_dir}" "${sub_pkgrel}" || \
- ! apply_trunk_patch "${tmp_dir}" "${diff_source_dir}"; then
+ if ! extract_source_directory "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${tmp_dir}" "${sub_pkgrel}"; then
# report local failure (probably a missing commit) to build-master
# shellcheck disable=SC2029
- ssh \
+ ssh -o PasswordAuthentication=No \
-i "${master_build_server_identity}" \
-p "${master_build_server_port}" \
"${master_build_server_user}@${master_build_server}" \
@@ -394,17 +361,21 @@ while [ "${count}" -ne 0 ] && \
continue
fi
+ if [ -d "${tmp_dir}/keys/pgp" ]; then
+ find "${tmp_dir}/keys/pgp" -type f -exec gpg --import {} +
+ fi
+
cd "${tmp_dir}"
echo 'nothing' > "${tmp_dir}/.ping-build-master"
if [ -z "${forced_package}" ]; then
- # we get a lock on "${work_dir}/ping-build-master.lock",
+ # we get a lock on "${tmp_dir}/ping-build-master.lock",
# if we release that lock, ping-to-master should stop _immediately_
- exec 9> "${work_dir}/ping-build-master.lock"
+ exec 9> "${tmp_dir}/ping-build-master.lock"
if ! verbose_flock -n 9; then
>&2 echo 'ERROR: Cannot lock ping-to-master - this should not happen.'
exit 2
fi
- "${base_dir}/bin/ping-to-master" "$$" "${tmp_dir}" &
+ "${base_dir}/bin/ping-to-master" "$$" "${tmp_dir}" "${tmp_dir}/ping-build-master.lock" &
fi
success=false
@@ -448,7 +419,7 @@ while [ "${count}" -ne 0 ] && \
if echo "${straw}" | \
grep -qF ':with_build_support:'; then
- build_command='staging-with-build-support-'"${arch}"'-build'
+ build_command="${repository}-staging-with-build-support-${arch}-build"
elif echo "${straw}" | \
grep -qF ':without_systemd_nspawn:'; then
if [ -z "${prefered_package}" ]; then
@@ -459,7 +430,7 @@ while [ "${count}" -ne 0 ] && \
>&2 echo 'The prefered package was not handed out.'
>&2 echo 'Because straw :without_systemd_nspawn: is active, I will abort.'
# shellcheck disable=SC2029
- ssh \
+ ssh -o PasswordAuthentication=No \
-i "${master_build_server_identity}" \
-p "${master_build_server_port}" \
"${master_build_server_user}@${master_build_server}" \
@@ -485,8 +456,30 @@ while [ "${count}" -ne 0 ] && \
outerParameters="${innerParameters} -fcrs --asdeps --noconfirm --holdver"
middleParameters=''
innerParameters=''
+ elif echo "${straw}" | \
+ grep -qF ':on_x86_64:'; then
+ if [ -z "${prefered_package}" ]; then
+ >&2 echo 'straw :on_x86_64: only allowed with -p'
+ exit 2
+ fi
+ if [ "${prefered_package}" != "${package}" ]; then
+ >&2 echo 'The prefered package was not handed out.'
+ >&2 echo 'Because straw :on_x86_64: is active, I will abort.'
+ # shellcheck disable=SC2029
+ ssh -o PasswordAuthentication=No \
+ -i "${master_build_server_identity}" \
+ -p "${master_build_server_port}" \
+ "${master_build_server_user}@${master_build_server}" \
+ 'return-assignment' 'ABORT'
+ exit 2
+ fi
+ if ! ${assignment_was_any}; then
+ >&2 printf 'Can only build "any" packages with :on_x86_64:, but got a "%s" package.\n' "${arch}"
+ exit 2
+ fi
+ build_command="${repository}-staging-x86_64-build"
else
- build_command='staging-'"${arch}"'-build'
+ build_command="${repository}-staging-${arch}-build"
fi
find . -maxdepth 1 -type f \( \
@@ -501,13 +494,13 @@ while [ "${count}" -ne 0 ] && \
echo 'checking-source' > "${tmp_dir}/.ping-build-master"
success=false
verifysource_trial=0
- while [ ${verifysource_trial} -lt 5 ]; do
+ while [ ${verifysource_trial} -lt 4 ]; do
verifysource_trial=$((verifysource_trial + 1))
log_file="${tmp_dir}/$(
date -u --iso-8601=seconds | \
cut -d+ -f1
).build-log"
- if CARCH="${arch}" makepkg --verifysource 2> "${log_file}"; then
+ if GIT_TERMINAL_PROMPT=0 CARCH="${arch}" makepkg --verifysource 2> "${log_file}"; then
success=true
rm "${log_file}"
break
@@ -557,53 +550,8 @@ while [ "${count}" -ne 0 ] && \
verifysource_trial=$((verifysource_trial + 1))
fi
- # try to download source from sources.archlinux.org/sources/$repo/$source
- if [ ${verifysource_trial} -eq 3 ]; then
- if echo "${straw}" | \
- grep -qF ':mirrored_source:'; then
- source_name=$(
- makepkg --printsrcinfo | \
- sed -n '
- /^\s*\(epoch\|pkg\(base\|ver\|rel\)\) = /{s|^\s\+||;p}
- /^pkgname = /q
- ' | \
- sed '
- s|^pkgbase = \(.*\)$|0 \1-|
- s|^epoch = \(.*\)$|1 \1:|
- s|^pkgver = \(.*\)$|2 \1-|
- s|^pkgrel = \([^.]*\)\(\..*\)\?$|3 \1.src.tar.gz|
- ' | \
- sort -k1n,1 | \
- sed '
- s|^[0-9] ||
- :a
- N
- s|\n[0-9] \(\S\+\)$|\1|
- ta
- '
- )
- if wget -q --timeout=15 -nc -nd "https://sources.archlinux.org/sources/${git_repo}/${source_name}"; then
- # shellcheck disable=SC2046
- tar -zst --overwrite \
- -f "${source_name}" \
- --exclude PKGBUILD \
- $(
- if [ -n "${PKGBUILD_mod}" ]; then
- git -C "${repo_paths__archlinux32}/${PKGBUILD_mod%/*}" archive "${mod_git_revision}" -- . | \
- tar -t | \
- sed 's/^/--exclude /'
- fi
- ) \
- --strip-components=1 \
- || true
- continue
- fi
- fi
- verifysource_trial=$((verifysource_trial + 1))
- fi
-
# try to download source from sources.archlinux32.org by its hash
- if [ ${verifysource_trial} -eq 4 ]; then
+ if [ ${verifysource_trial} -eq 3 ]; then
if echo "${straw}" | \
grep -qF ':mirrored_source_by_hash:'; then
if download_sources_by_hash; then
@@ -730,13 +678,22 @@ while [ "${count}" -ne 0 ] && \
} | \
sort | \
uniq -u | \
- while read -r unexpected_package; do
- >&2 printf 'removing unexpected build artifact "%s"\n' \
- "${unexpected_package}"
- rm "${unexpected_package}"*
- done
+ {
+ removed_something_unexpected=false
+ while read -r unexpected_package; do
+ >&2 printf 'removing unexpected build artifact "%s"\n' \
+ "${unexpected_package}"
+ rm "${unexpected_package}"*
+ removed_something_unexpected=true
+ done
+ if "${removed_something_unexpected}"; then
+ >&2 printf 'I was only expecting:\n%s\n' \
+ "${expected_packages}"
+ fi
+ }
fi
>&2 printf 'signing package(s)\n'
+ mv "${log_file}" "${tar_content_dir}/"
find . -maxdepth 1 -type f -name '*.pkg.tar.zst' \
-execdir gpg --local-user="${package_key}" --detach-sign '{}' \; \
-execdir mv '{}' '{}.sig' '{}-namcap.log' "${tar_content_dir}/" \; \
@@ -977,7 +934,8 @@ while [ "${count}" -ne 0 ] && \
\( \
-name '*.pkg.tar.zst-namcap.log' -o \
-name '*.pkg.tar.zst.so.needs' -o \
- -name '*.pkg.tar.zst.so.provides' \
+ -name '*.pkg.tar.zst.so.provides' -o \
+ -name '*.build-log' \
\) \
-execdir gzip '{}' \;
else
@@ -1015,7 +973,7 @@ while [ "${count}" -ne 0 ] && \
while ${upload_to_build_master}; do
err=0
# shellcheck disable=SC2029
- ssh \
+ ssh -o PasswordAuthentication=No \
-i "${master_build_server_identity}" \
-p "${master_build_server_port}" \
"${master_build_server_user}@${master_build_server}" \
@@ -1078,7 +1036,7 @@ while [ "${count}" -ne 0 ] && \
while true; do
err=0
# shellcheck disable=SC2029
- ssh \
+ ssh -o PasswordAuthentication=No \
-i "${master_build_server_identity}" \
-p "${master_build_server_port}" \
"${master_build_server_user}@${master_build_server}" \
@@ -1174,7 +1132,7 @@ while [ "${count}" -ne 0 ] && \
done
-# remove the slave switch file if it exists (and if we are runnig on a slave)
+# remove the slave switch file if it exists (and if we are running on a slave)
if ! ${i_am_the_master}; then
SLAVE=$(whoami)
[ -f "/tmp/do-not-run-build-slave.$SLAVE" ] && rm "/tmp/do-not-run-build-slave.$SLAVE"
diff --git a/bin/change-git-remotes b/bin/change-git-remotes
index 9f9e4a5..fc50b7a 100755
--- a/bin/change-git-remotes
+++ b/bin/change-git-remotes
@@ -68,7 +68,7 @@ fi
printf '%s\n' \
'git://github.com/archlinux/svntogit-'"${git_name}" \
'https://github.com/archlinux/svntogit-'"${git_name}" \
- 'https://git.archlinux.org/'"${git_name}"
+ 'git://git.archlinux.org/svntogit/'"${git_name}"'.git'
)
;;
*)
diff --git a/bin/check-mirrors b/bin/check-mirrors
index d106201..d0b626c 100755
--- a/bin/check-mirrors
+++ b/bin/check-mirrors
@@ -5,6 +5,16 @@
if [ $# -eq 0 ]; then
+# Create a lock file.
+
+ exec 9> "${check_mirrors_lock_file}"
+ if ! verbose_flock 9; then
+ >&2 echo 'come back (shortly) later - I cannot lock check-mirrors.'
+ exit
+ fi
+
+ echo 'updating mirrors from git...' >&2
+
if [ -d "${releng_directory}/.git" ]; then
git -C "${releng_directory}" remote update
else
@@ -54,6 +64,8 @@ if [ $# -eq 0 ]; then
parallel -j10 "$0" "{}" > \
"${tmp_file}"
+ echo 'loading mirror data into database...' >&2
+
# shellcheck disable=SC2016
{
printf 'LOAD DATA LOCAL INFILE "%s" INTO TABLE `mirror_statuses` (' \
@@ -83,6 +95,8 @@ if [ $# -eq 0 ]; then
} | \
mysql_run_query
+ echo 'done' >&2
+
elif [ $# -eq 1 ]; then
# check a single mirror
url="$1"
@@ -143,14 +157,16 @@ elif [ $# -eq 1 ]; then
cnt=$(
curl -s "${ip_flag}" "${url}archisos/"
) || has_isos=0
- for suffix in 'i686' 'dual'; do
- # shellcheck disable=SC2059
- if ! printf '%s\n' "${cnt}" | \
- grep -qF "$(printf "$(date '+archlinux-%Y.%m.%%02d-'"${suffix}"'.iso\n')" $(seq 31))" -; then
- has_isos=0
- break
- fi
- done
+# doesn't really work: dual doesn't exist anymore and the other test sometimes fails, sometimes succeeds?
+# let's assume the precense of the 'archisos' directory is enough
+# for suffix in 'i686' 'dual'; do
+# # shellcheck disable=SC2059
+# if ! printf '%s\n' "${cnt}" | \
+# grep -qF "$(printf "$(date '+archlinux-%Y.%m.%%02d-'"${suffix}"'.iso\n')" $(seq 31))" -; then
+# has_isos=0
+# break
+# fi
+# done
else
has_isos=0
last_sync='0'
diff --git a/bin/check-opcodes b/bin/check-opcodes
deleted file mode 100755
index e8bb807..0000000
--- a/bin/check-opcodes
+++ /dev/null
@@ -1,199 +0,0 @@
-#!/bin/sh
-
-# shellcheck disable=SC2086,SC2119,SC2120
-
-# shellcheck source=../lib/load-configuration
-. "${0%/*}/../lib/load-configuration"
-
-usage( ) {
- >&2 cat <<EOF
-
-check_opcodes: [options] [ -a <arch> ] <package>
-
-possible optons:
- -h|--help: Show this help page
- -a|--architecture: architecture family to check against, one of
- i486, i686, pentium3 (meaning target architecture
- the package should be runnable on)
- -v|--verbose: Verbose output, print result of check for logs
- -d|--debug: Debug output, used for development and testing
-
-EOF
- exit 1
-}
-
-VERBOSE=0
-DEBUG=0
-EXIT_CODE=0
-
-verbose( ) {
- if test $VERBOSE = 1; then
- echo "$@"
- fi
-}
-
-debug( ) {
- if test $DEBUG = 1; then
- echo "$@"
- fi
-}
-
-err( ) {
- echo "ERROR: $*"
- EXIT_CODE=1
-}
-
-tmp_dir=$(mktemp -d "${work_dir}/tmp.check-opcodes.XXXXXX")
-trap 'rm -rf --one-file-system "${tmp_dir:?}"' EXIT
-
-ARCH=i686
-
-while getopts ":vda:h-:" opt; do
- case $opt in
- -)
- case "$OPTARG" in
- help)
- usage
- ;;
- verbose)
- VERBOSE=1
- ;;
- debug)
- DEBUG=1
- ;;
- *)
- echo "ERROR: Invalid option: --$OPTARG" >&2
- usage
- ;;
- esac
- ;;
- h)
- usage
- ;;
- v)
- VERBOSE=1
- ;;
- d)
- DEBUG=1
- ;;
- a)
- ARCH=$OPTARG
- ;;
- \?)
- echo "ERROR: Invalid option: -$OPTARG" >&2
- usage
- ;;
- esac
-done
-
-shift $((OPTIND-1))
-
-PACKAGE=$1
-
-if test "$PACKAGE" = ""; then
- echo "ERROR: Filename of a package required as argument" >&2
- usage
- exit 1
-fi
-
-OPCODE_ARGS=""
-case $ARCH in
- i486)
- OPCODE_ARGS='-r -a 386 -v'
- ;;
- i686)
- OPCODE_ARGS='-s MMX -s SSE'
- ;;
-# TODO: pentium4
- pentium3)
- OPCODE_ARGS='-s SSE2 -s SSE3'
- ;;
- *)
- echo "ERROR: architecture must currently be one of i486, i686 and pentium3" >&2
- usage
- exit 1
-esac
-
-debug "Unpacking $PACKAGE to $tmp_dir.."
-bsdtar --no-fflags -x -C $tmp_dir -f $PACKAGE
-
-debug "Checking for architecture: $ARCH ($OPCODE_ARGS).."
-
-# shellcheck disable=SC2044
-for absfile in $(find $tmp_dir \( -regextype grep -regex '.*\.so\(\.[0-9.]\+\)\?' -type f \) -o \( -executable -type f \) ); do
- file=$(basename $absfile)
- relfile=${absfile#$tmp_dir}
- debug "Checking file: $relfile"
- if ! readelf -a $absfile > $tmp_dir/$file.elf 2>/dev/null; then
- debug "readelf failed, ignoring file"
- continue
- fi
- if ! objdump -f $absfile > $tmp_dir/$file.objdump 2>/dev/null; then
- debug "objdump failed, ignoring file"
- continue
- fi
- file $absfile > $tmp_dir/$file.file
-
- arch=$(grep ^architecture $tmp_dir/$file.objdump | sed 's/^architecture: //g' | cut -f 1 -d ,)
- case $arch in
- i386:x86-64)
- arch='x86_64'
- ;;
- i386)
- arch='x86'
- ;;
- *)
- arch='unknown'
- ;;
- esac
- debug " Objdump architecture: $arch"
-
- archelf=$(grep '^ \+Class' $tmp_dir/$file.elf | cut -f 2 -d : | tr -d ' ')
- case $archelf in
- ELF64)
- archelf='x86_64'
- ;;
- ELF32)
- archelf='x86'
- ;;
- *)
- archelf='unknown'
- ;;
- esac
- debug " Readelf architecture: $archelf"
-
- if test $arch != $archelf; then
- err "ERROR: $file ambigous architecture information (objdump: $arch, ELF: $archelf)"
- fi
-
- if test $arch = "x86_64"; then
- err "ERROR: $file is a 64-bit library!"
- continue
- fi
-
- objdump -M intel -d $absfile > $tmp_dir/$file.asm
- bad_opcodes=$(${base_dir}/bin/opcode $OPCODE_ARGS -m 1 < $tmp_dir/$file.asm | wc -l)
- if test $bad_opcodes != 0; then
- case $ARCH in
- i486)
- err "$relfile is not built for plain i486 opcodes"
- ;;
- i686)
- err "$relfile contains MMX, SSE or newer opcodes"
- ;;
- pentium3)
- err "$relfile contains SSE2 or newer opcodes"
- ;;
- esac
- if test $DEBUG = 1; then
- ${base_dir}/bin/opcode $OPCODE_ARGS -B 2 -A 2 < $tmp_dir/$file.asm
- fi
- else
- if test $VERBOSE = 1; then
- verbose "OK: $relfile fullfills architecture constraint for $ARCH"
- fi
- fi
-
-done
-
-exit $EXIT_CODE
diff --git a/bin/cleanup b/bin/cleanup
index 57c4e07..14d08ac 100755
--- a/bin/cleanup
+++ b/bin/cleanup
@@ -19,6 +19,14 @@ if [ -s "${work_dir}/build-master-sanity" ]; then
exit
fi
+# Lock the database - we should not run in parallel with db-update.
+exec 9> "${package_database_lock_file}"
+# shellcheck disable=SC2086
+if ! verbose_flock -n 9; then
+ >&2 echo 'come back (shortly) later - I cannot lock package database.'
+ exit 0
+fi
+
# only keep newest logs per failed package and fail_reason
# shellcheck disable=SC2016
@@ -68,6 +76,9 @@ fi
rm "${build_log_directory}/error/${file}"
done
+# Release database lock.
+flock -u 9 || true
+
# only keep namcap logs of last 2 weeks for succeeded packages
find "${build_log_directory}/success" -maxdepth 1 -type f -mtime +14 \
-not -exec zgrep -q '^+.*ELF file .* has text relocations' '{}' \; \
diff --git a/bin/create-build-support-package b/bin/create-build-support-package
index 09374ec..d786dcc 100755
--- a/bin/create-build-support-package
+++ b/bin/create-build-support-package
@@ -7,6 +7,10 @@
# TODO: use the intention-queue
+# TODO: add the possibility to add an "external" package - TBD: How to
+# create / Where to take from database information (e.g.
+# package_sources).
+
# shellcheck disable=SC2016
usage() {
>&2 echo 'usage:'
@@ -169,7 +173,7 @@ if [ -n "${source_package}" ]; then
fi
new_pkg="${pkg%-*-*-*}"
- new_pkg="${new_pkg}-shim${pkg#${new_pkg}}"
+ new_pkg="${new_pkg}-shim${pkg#"${new_pkg}"}"
failsafe_rsync \
"${master_mirror_rsync_directory}/pool/${pkg}" \
diff --git a/bin/db-update b/bin/db-update
index 88c567d..2d0f50e 100755
--- a/bin/db-update
+++ b/bin/db-update
@@ -683,12 +683,10 @@ mysql_query_update_replaced_bpir() {
# somewhat inaccurate
{
- printf '{\n'
- printf ' mysql_run_query'
- printf ' | sort -u'
- printf ' >> "%s/rm"\n' \
+ printf 'mysql_run_query'
+ printf ' >> "%s/rm"' \
"${perma_tmp_dir}"
- printf '} <<END_OF_MYSQL_QUERY\n'
+ printf ' <<END_OF_MYSQL_QUERY\n'
printf 'CREATE TEMPORARY TABLE `replaced_bpir` (`id` BIGINT, UNIQUE KEY (`id`));\n'
printf 'CREATE TEMPORARY TABLE `moved_bpir` (`id` BIGINT, `new_repository` MEDIUMINT, UNIQUE KEY (`id`));\n'
@@ -738,8 +736,10 @@ mysql_query_update_replaced_bpir() {
# and push our local *.db.tar.gz via rsync
while read -r arch repo; do
{
- printf 'recompress_gz "%s"' \
- "${tmp_dir}"
+ printf 'mkdir -p "%s/recompress_gz.tmp"\n' \
+ "${perma_tmp_dir}"
+ printf 'recompress_gz "%s/recompress_gz.tmp"' \
+ "${perma_tmp_dir}"
for suffix in '' '.old'; do
printf ' "%s/dbs/%s/%s/%s."*".tar.gz%s"' \
"${perma_tmp_dir}" \
diff --git a/bin/delete-packages b/bin/delete-packages
index 2bb3072..0026c88 100755
--- a/bin/delete-packages
+++ b/bin/delete-packages
@@ -160,7 +160,8 @@ export TMPDIR="${tmp_dir}"
mysql_join_binary_packages_in_repositories_binary_packages
mysql_join_binary_packages_in_repositories_repositories
mysql_join_repositories_architectures
- printf ' WHERE CONCAT('
+ printf ' WHERE `repositories`.`is_on_master_mirror`'
+ printf ' AND CONCAT('
printf '`architectures`.`name`,"/",'
printf '`repositories`.`name`,"/",'
printf '`binary_packages`.`pkgname`'
diff --git a/bin/generate-key-graph b/bin/generate-key-graph
index 3c5063f..b409d42 100755
--- a/bin/generate-key-graph
+++ b/bin/generate-key-graph
@@ -23,7 +23,7 @@ trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT
# shellcheck disable=SC2046
${master_mirror_rsync_command} $(
ls_master_mirror pool \
- | grep '^archlinux32-keyring\(-transition\)\?\(-[^-]\+\)\{3\}\.pkg\.tar\.zst$' \
+ | grep '^archlinux32-keyring\(-[^-]\+\)\{3\}\.pkg\.tar\.zst$' \
| sed 's#^#'"${master_mirror_rsync_directory}"'/pool/#'
) "${tmp_dir}/"
diff --git a/bin/get-assignment b/bin/get-assignment
index 6abfaef..8b399a3 100755
--- a/bin/get-assignment
+++ b/bin/get-assignment
@@ -96,6 +96,7 @@ if ! verbose_flock -s -n 8; then
fi
clean_up() {
+ # shellcheck disable=SC2317
rm -rf --one-file-system "${tmp_dir}"
}
@@ -200,16 +201,15 @@ while [ -s "${work_dir}/forced-package-builds.${slave}" ]; do
fi
done
-# a package with [all dependencies met (or unsuccessfully built) or which is part of a loop]
-# and which is currently not being built, ordered by:
+# a package with [all dependencies met (or unsuccessfully built) or which is part of a loop],
+# which is currently not being built and which has the highest priority, ordered by:
# 1: we requested it
# 2: tool chain priority
-# 3: its priority
-# 4: was built the least times
-# 5: architecture matches (or the slave is from the majority architecture)
-# 6: is part of a loop
-# 7: has the oldes package source
-# 8: build_assignment id
+# 3: was built the least times
+# 4: architecture matches (or the slave is from the majority architecture)
+# 5: is part of a loop
+# 6: has the oldes package source
+# 7: build_assignment id
next_building=$(
# shellcheck disable=SC2016
{
@@ -260,6 +260,21 @@ next_building=$(
printf ' AND `architectures`.`name` = from_base64("%s");\n' \
"${arch}"
+ printf 'SET @`max_priority`=('
+ printf 'SELECT MAX(`build_assignments`.`priority`)'
+ printf ' FROM `considered_build_assignments`'
+ printf ' JOIN `build_assignments`'
+ printf ' ON `build_assignments`.`id`=`considered_build_assignments`.`id`'
+ printf ');\n'
+
+ printf 'DELETE `considered_build_assignments`'
+ printf ' FROM `considered_build_assignments`'
+ printf ' JOIN `build_assignments`'
+ printf ' ON `build_assignments`.`id`=`considered_build_assignments`.`id`'
+ printf ' WHERE `build_assignments`.`priority`<@`max_priority`'
+ printf ';\n'
+
+
printf 'INSERT IGNORE INTO `considered_build_assignments_2` (`id`)'
printf ' SELECT `considered_build_assignments`.`id`'
printf ' FROM `considered_build_assignments`;\n'
@@ -539,7 +554,6 @@ next_building=$(
# 1: in toolchain, should be built later
# 2: not in toolchain
printf 'IFNULL(`toolchain_query`.`priority`,2),'
- printf '`build_assignments`.`priority` DESC,'
printf 'IFNULL(`latest_failed_builds`.`count`,0),'
printf 'IF('
printf '`architectures`.`id`=%s' \
diff --git a/bin/get-package-updates b/bin/get-package-updates
index 8e7e4ef..b067233 100755
--- a/bin/get-package-updates
+++ b/bin/get-package-updates
@@ -21,7 +21,12 @@ usage() {
>&2 echo ' (yyyy-mm-ddThh:mm:ss). Conflicts -n.'
>&2 echo ' -h|--help: Show this help and exit.'
>&2 echo ' -i|--ignore-insanity:'
- >&2 echo ' Do not abort when insane.'
+ >&2 echo ' Do not abort when insane.'
+ >&2 echo ' -m|--max-upstream-packages $number:'
+ >&2 echo ' Do not update more than $number upstream packages.'
+ >&2 echo ' Do not update git head of state repository.'
+ >&2 echo ' USE WITH CAUTION: This may remove packages, if they'
+ >&2 echo ' were moved. Always do a final run without -m.'
>&2 echo ' -n|--no-pull: Do not pull git repos, merely reorder build list.'
>&2 echo ' Conflicts -d.'
>&2 echo ' -r|--recent-modifications:'
@@ -33,10 +38,11 @@ usage() {
}
eval set -- "$(
- getopt -o d:hinrw \
+ getopt -o d:him:nrw \
--long date: \
--long help \
--long ignore-insanity \
+ --long max-upstream-packages: \
--long no-pull \
--long recent-modifications \
--long wait \
@@ -47,6 +53,7 @@ eval set -- "$(
block_flag='-n'
date_time=''
ignore_insanity=false
+max_upstream_packages=''
pull=true
recent_modifications=false
@@ -63,6 +70,10 @@ do
-i|--ignore-insanity)
ignore_insanity=true
;;
+ -m|--max-upstream-packages)
+ shift
+ max_upstream_packages="$1"
+ ;;
-n|--no-pull)
pull=false
;;
@@ -106,16 +117,22 @@ if [ -s "${work_dir}/build-master-sanity" ]; then
fi
fi
-# delete_package arch package
+# delete_package arch package repository
# mark $arch/$package for deletion
+
+# shellcheck disable=SC3043
delete_package() {
+ local architecture="$1"
+ local pkgbase="$2"
+ local repository="$3"
+ >&2 printf 'delete_package %s %s %s\n' "${architecture}" "${pkgbase}" "${repository}"
# shellcheck disable=SC2016
query_delete_packages=$(
printf '`architectures` AS `d_a`'
printf ' JOIN `architecture_compatibilities` AS `a_c`'
printf ' ON `a_c`.`runs_on`=`d_a`.`id`'
printf ' AND `d_a`.`name`=from_base64("%s")' \
- "$(printf '%s' "$1" | base64 -w0)"
+ "$(printf '%s' "${architecture}" | base64 -w0)"
printf ' JOIN `build_assignments`'
printf ' ON (`a_c`.`built_for`=`build_assignments`.`architecture`'
# "any" references all architectures, but this is not represented
@@ -125,9 +142,12 @@ delete_package() {
printf ' OR `d_a`.`name`="any")'
mysql_join_build_assignments_package_sources
printf ' AND `package_sources`.`pkgbase`=from_base64("%s")' \
- "$(printf '%s' "$2" | base64 -w0)"
+ "$(printf '%s' "${pkgbase}" | base64 -w0)"
mysql_join_build_assignments_binary_packages
mysql_join_binary_packages_binary_packages_in_repositories
+ mysql_join_package_sources_upstream_repositories
+ printf ' AND `upstream_repositories`.`name` LIKE from_base64("%s")' \
+ "$(printf '%s' "${repository}" | base64 -w0)"
)
# shellcheck disable=SC2016
{
@@ -165,6 +185,8 @@ delete_package() {
printf 'COMMIT;\n'
+ # no need to remove the binary_package, because it is now on the
+ # deletion-lists
printf 'DELETE `binary_packages_in_repositories`'
printf ' FROM %s' "${query_delete_packages}"
mysql_join_binary_packages_in_repositories_repositories
@@ -186,11 +208,16 @@ something_new=false
for repo in ${repo_names}; do
eval repo_path='"${repo_paths__'"${repo}"'}"'
- # Update git repositories (official packages, community packages and the repository of package customizations).
+ if [ "${repo}" = 'archlinux32' ]; then
+ branch='master'
+ else
+ branch='main'
+ fi
+ # Update git repositories (upstream state and our package customizations).
if [ -d "${repo_path}/.git" ]; then
git -C "${repo_path}" pull --ff-only
else
- git -C "${repo_path}" fetch origin master:master
+ git -C "${repo_path}" fetch origin "${branch}:${branch}"
fi || \
true
# read previous git revision numbers from database.
@@ -238,18 +265,9 @@ if ${pull} && \
exit
fi
-# Create a lock file for build list.
-
-exec 9> "${build_list_lock_file}"
-# shellcheck disable=SC2086
-if ! verbose_flock ${block_flag} 9; then
- >&2 echo 'come back (shortly) later - I cannot lock build list.'
- exit
-fi
-
-exec 8> "${sanity_check_lock_file}"
+exec 9> "${sanity_check_lock_file}"
# shellcheck disable=SC2086
-if ! verbose_flock -s ${block_flag} 8; then
+if ! verbose_flock -s ${block_flag} 9; then
>&2 echo 'come back (shortly) later - sanity-check running.'
exit
fi
@@ -272,227 +290,203 @@ echo 'Check modified packages from the last update, and put them to the build li
# If a package is deleted, remove from the rebuild list, and add it to the deletion list.
# If a new package is added, then ensure that it's not on the deletion list.
-# shellcheck disable=SC2016
-{
- printf 'SELECT DISTINCT'
- printf ' `package_sources`.`pkgbase`,'
- printf '`upstream_repositories`.`name`,'
- printf 'IF(`build_assignments`.`architecture`=%s,"any","x86_64")' \
- "${architecture_ids__any}"
- printf ' FROM `binary_packages`'
- mysql_join_binary_packages_binary_packages_in_repositories
- mysql_join_binary_packages_build_assignments
- mysql_join_build_assignments_package_sources
- mysql_join_package_sources_upstream_repositories
- printf ' WHERE `binary_packages_in_repositories`.`repository`=%s;\n' \
- "${repository_ids__any_build_list}"
-} | \
- mysql_run_query | \
- sed '
- s@^\(\S*\)\t\(\S*\)\t\(\S*\)$@s,^\\(.\\t\1/repos/\2-\3/\\)[^/]\\+$,\\1PKGBUILD,\ns,^\\(.\\t\2/\1/\\)[^/]\\+$,\\1PKGBUILD,@
- ' > \
- "${tmp_dir}/trigger-rebuild-on-any-file-sed-expression"
-
{
- # trigger rebuild of packages removed from blacklist
+ directories=$(
+ # shellcheck disable=SC2154
+ git -C "${repo_paths__state}" archive "${new_repo_revisions__state}" \
+ | tar -t \
+ | cut -d/ -f1 \
+ | grep -vF -- '-testing-' \
+ | grep -vF -- '-staging-' \
+ | sort -u
+ )
# shellcheck disable=SC2016
{
- printf 'SELECT `package_sources`.`pkgbase`,`upstream_repositories`.`name`,`git_repositories`.`name`'
+ printf 'SELECT DISTINCT `package_sources`.`pkgbase`,'
+ printf '`package_sources`.`git_revision`,'
+ printf '`upstream_repositories`.`name`'
printf ' FROM `package_sources`'
mysql_join_package_sources_upstream_repositories
- mysql_join_upstream_repositories_git_repositories
- printf ' WHERE `package_sources`.`pkgbase` IN ('
+ mysql_join_package_sources_build_assignments
+ mysql_join_build_assignments_binary_packages
+ mysql_join_binary_packages_binary_packages_in_repositories
+ printf ' AND NOT `binary_packages_in_repositories`.`is_to_be_deleted`'
+ } \
+ | mysql_run_query \
+ | tr '\t' ' ' \
+ | sort -u \
+ > "${tmp_dir}/mysql-packages"
+ for directory in ${directories}; do
# shellcheck disable=SC2154
- git -C "${repo_paths__archlinux32}" diff --name-status "${old_repo_revisions__archlinux32}" "${new_repo_revisions__archlinux32}" -- 'blacklist' | \
- sed '
- s@^D\tblacklist/[^/]\+/[^/]\+/@@
- t
- d
- ' | \
- base64_encode_each | \
- sed '
- s/^/from_base64("/
- s/$/")/
- ' | \
- tr '\n' ','
- printf '"");\n'
- } | \
- mysql_run_query | \
- while read -r pkgbase repository git_repository; do
- eval 'git_rev="${new_repo_revisions__'"${git_repository}"'}"'
- eval 'git_dir="${repo_paths__'"${git_repository}"'}"'
- # TODO: maybe, we want to exclude our own packages here, too? But why
- # would they be black listed in the first place?
- # shellcheck disable=SC2154
- if git -C "${git_dir}" archive "${git_rev}" -- "${pkgbase}/repos" \
- | tar -tf - \
- | grep -q -- '-\(any\|x86_64\)/PKGBUILD$'; then
- printf 'A %s %s %s\n' \
- "${pkgbase}" \
- "${git_rev}" \
- "${repository}"
- fi
- done
- # actual updates/removes
- for repo in ${repo_names}; do
- eval repo_path='"${repo_paths__'"${repo}"'}"'
- eval old_repo_revision='"${old_repo_revisions__'"${repo}"'}"'
- eval new_repo_revision='"${new_repo_revisions__'"${repo}"'}"'
- # if old revision unknown, mimic "git diff"-output
+ git -C "${repo_paths__state}" archive "${new_repo_revisions__state}" -- "${directory}" \
+ | tar -Ox \
+ | grep -v '^\S\+\( \S\+\)\1\1$' \
+ | grep ' [0-9a-f]\{40\}$' \
+ | cut -d' ' -f1,4 \
+ | sed '
+ s@$@ '"${directory%-*}"'@
+ '
+ done \
+ | grep -v '^lib32-' \
+ | sort -u \
+ > "${tmp_dir}/upstream-packages"
+ diff "${tmp_dir}/mysql-packages" "${tmp_dir}/upstream-packages" \
+ | grep '^>' \
+ | awk '{print $3 " " $2 " " $4}' \
+ | sort -k2,2 -k3,3 \
+ | uniq -uf1 \
+ | while read -r git_revision pkgbase repository; do
# shellcheck disable=SC2154
- if [ "${old_repo_revision}" = "NONE" ]; then
- git -C "${repo_path}" archive --format=tar HEAD | \
- tar -t | \
- sed 's|^|A\t|'
+ if git -C "${repo_paths__archlinux32}" archive "${new_repo_revisions__archlinux32}" -- "${repository}/${pkgbase}" >/dev/null 2>&1; then
+ mod_git_revision="${new_repo_revisions__archlinux32}"
else
- git -C "${repo_path}" diff --no-renames --name-status "${old_repo_revision}" "${new_repo_revision}"
- fi | \
- # rename any file to "PKGBUILD" for packages on the build-list
- sed -f "${tmp_dir}/trigger-rebuild-on-any-file-sed-expression" | \
- # only track changes in PKGBUILDs
- grep '/PKGBUILD$' | \
- if [ "${repo}" = "archlinux32" ]; then
- # modify the directory structure from the modifiaction-repository
- # to the one of an original source repository
- # shellcheck disable=SC2016
- sed 's|^\(.\t\)\([^/]\+\)/\([^/]\+\)/\(.\+\)$|\2 \1\3/repos/\2-x86_64/\4|' | \
- while read -r pkg_repo rest; do
- repo=$(find_git_repository_to_package_repository "${pkg_repo}")
- eval 'printf '"'"'%s %s\n'"'" \
- "$(printf '"${new_repo_revisions__%s}"' "${repo}")" \
- "'${rest}'"
- done
- else
- sed "s|^|${new_repo_revision} |"
- fi | \
- grep '^\S\+ .\s[^/]\+/repos/[^/]\+/PKGBUILD$' | \
- # ignore i686
- grep -- '-\(any\|x86_64\)/PKGBUILD$' | \
- # ignore staging and testing
- grep -v -- '[-/]\(staging\|testing\|unstable\)-[^/]\+/PKGBUILD$' | \
- sed 's|^\(\S\+\) \(.\)\t\([^/]\+\)/repos/\([^/]\+\)-[^/-]\+/PKGBUILD$|\2 \3 \1 \4|'
- done | \
- sort -u | \
- sed '
- s|^D\s|0 \0|
- t
- s|^[AM]\s|1 \0|
- t
- s|^|2 |
- ' | \
- sort -k1,1 | \
- sed 's|^[012] ||'
-} | \
- while read -r mode package git_revision repository; do
- if [ "${mode}" = 'D' ]; then
- # deleted PKGBUILD
- # shellcheck disable=SC2154
- git_revision="${new_repo_revisions__archlinux32}"
- found_package=false
- # we need to test archlinux32 last, because otherwise
- # find_package_repository_to_package might look in the wrong git
- # repository of a package w/o upstream
- for repository in ${repo_names} archlinux32; do
- eval 'repo_path="${repo_paths__'"${repository}"'}"'
- if [ "${repository}" = "archlinux32" ]; then
- if git -C "${repo_path}" archive "${new_repo_revisions__archlinux32}" 2> /dev/null | \
- tar -t 2> /dev/null | \
- grep -q '^[^/]\+/'"$(str_to_regex "${package}")"'/PKGBUILD$'; then
- found_package=true
- fi
- else
- # shellcheck disable=SC2154
- if eval 'git -C "${repo_path}" archive "${new_repo_revisions__'"${repository}"'}" -- "${package}/repos"' 2> /dev/null | \
- tar -t --wildcards "${package}/repos/*/PKGBUILD" 2> /dev/null | \
- cut -d/ -f3 | \
- grep -v 'staging\|testing\|-unstable' | \
- grep -vq -- '-i686$'; then
- eval 'git_revision="${new_repo_revisions__'"${repository}"'}"'
- found_package=true
- break
- fi
- fi
- done
- if ${found_package}; then
- mode='M'
- repository=$(
- find_package_repository_to_package "${package}" "${repository}" "${git_revision}"
- )
- else
- delete_package 'any' "${package}"
- continue
- fi
+ mod_git_revision='0000000000000000000000000000000000000000'
fi
- if [ "${mode}" = 'A' ] || [ "${mode}" = 'M' ]; then
- # shellcheck disable=SC2016
- {
- # delete old binary packages which are not yet built or on the
- # deletion list
- mysql_query_delete_packages \
- '`package_sources`.`pkgbase`=from_base64("'"$(
- printf '%s' "${package}" | \
- base64 -w0
- )"'")' \
- '`repositories`.`stability` IN ('"${repository_stability_ids__unbuilt}"','"${repository_stability_ids__forbidden}"')'
- # remove is-to-be-deleted marker from old binary packages
- printf 'UPDATE `binary_packages_in_repositories`'
- mysql_join_binary_packages_in_repositories_binary_packages
- mysql_join_binary_packages_build_assignments
- mysql_join_build_assignments_package_sources
- printf ' SET `binary_packages_in_repositories`.`is_to_be_deleted`=0'
- printf ' WHERE `package_sources`.`pkgbase`=from_base64("%s");\n' \
- "$(
- printf '%s' "${package}" | \
- base64 -w0
- )"
- } | \
- mysql_run_query
- printf '%s\n' "${package}" >> "${tmp_dir}/modified-packages"
- # shellcheck disable=SC2154
- printf '%s ' "${package}" "${git_revision}" "${new_repo_revisions__archlinux32}" "${repository}" >&2
-# TODO: sometimes we schedule the identical package twice (once "normal"
-# and once, because we found the deleted package elsewhere) - this could
-# be avoided
- mysql_generate_package_metadata "${repository_ids__any_to_be_decided}" "${package}" "${git_revision}" "${new_repo_revisions__archlinux32}" "${repository}"
- printf '\n' >&2
- continue
+ printf '%s %s %s %s\n' "${pkgbase}" "${repository}" "${git_revision}" "${mod_git_revision}"
+ done \
+ | if [ -n "${max_upstream_packages}" ]; then
+ head -n"${max_upstream_packages}"
+ else
+ cat
+ fi
+ # shellcheck disable=SC2154
+ git -C "${repo_paths__archlinux32}" diff "${old_repo_revisions__archlinux32}" "${new_repo_revisions__archlinux32}" --name-status \
+ | tr '\t/' ' ' \
+ | grep '^[AM]' \
+ | cut -d' ' -f2,3 \
+ | grep -v '^blacklist ' \
+ | while read -r repository pkgbase; do
+ git_revision=$(
+ # shellcheck disable=SC2046
+ git -C "${repo_paths__state}" archive "${new_repo_revisions__state}" -- $(
+ printf '%s\n' "${directories}" \
+ | grep '^'"${repository}"'-'
+ ) \
+ | tar -Ox \
+ | sort -k1,1 \
+ > "${tmp_dir}/git-revisions"
+ echo "${pkgbase}" \
+ | join -1 1 -2 1 -o 1.4 "${tmp_dir}/git-revisions" -
+ )
+ if [ -z "${git_revision}" ]; then
+ git_revision='0000000000000000000000000000000000000000'
fi
-
- >&2 echo "unknown git diff mode '${mode}'"
- exit 1
+ if [ ${#git_revision} != 40 ] \
+ || printf '%s\n' "${git_revision}" \
+ | grep -vq '[0-9]'; then
+ >&2 printf 'invalid git revision "%s"\n' "${git_revision}"
+ exit 1
+ fi
+ printf '%s %s %s %s\n' "${pkgbase}" "${repository}" "${git_revision}" "${new_repo_revisions__archlinux32}"
done
+} \
+| sort -u \
+| sort -k1,1 -k2,2 \
+> "${tmp_dir}/modified-packages"
+
+errors=$(
+ awk '{print $3 " " $4 " " $1 " " $2}' \
+ < "${tmp_dir}/modified-packages" \
+ | uniq -Df2
+)
+if [ -n "${errors}" ]; then
+ >&2 printf 'Some packages are scheduled with different versions - this should not happen:\n'
+ >&2 printf '%s\n' "${errors}"
+ exit 1
+fi
-if [ -s "${tmp_dir}/modified-packages" ] || ! ${pull}; then
- echo 'Delete black-listed packages.'
- if [ -s "${tmp_dir}/modified-packages" ]; then
- sort -u "${tmp_dir}/modified-packages" --output "${tmp_dir}/modified-packages"
+echo 'Mark to be deleted packages for removal'
+
+cut -d' ' -f1,3 "${tmp_dir}/mysql-packages" \
+| sort -u \
+| sponge "${tmp_dir}/mysql-packages"
+
+{
+ cut -d' ' -f1,3 "${tmp_dir}/upstream-packages"
+ git -C "${repo_paths__archlinux32}" archive "${new_repo_revisions__archlinux32}" \
+ | tar -t \
+ | grep -v '^blacklist/' \
+ | tr '/' ' ' \
+ | awk '{print $2 " " $1}'
+} \
+| sort -u \
+| sponge "${tmp_dir}/upstream-packages"
+
+diff "${tmp_dir}/mysql-packages" "${tmp_dir}/upstream-packages" \
+| grep '^<' \
+| cut -d' ' -f2,3 \
+| while read -r pkgbase repository; do
+ delete_package 'any' "${pkgbase}" "${repository}"
+done
+
+echo 'Insert updated packages'
+
+while read -r pkgbase repository git_revision mod_git_revision; do
+ if test "$repository" = "kde-unstable"; then
+ continue
fi
- # extract black-listed packages
- git -C "${repo_paths__archlinux32}" archive "${new_repo_revisions__archlinux32}" -- 'blacklist' | \
- tar -t 'blacklist' | \
- sed '
- s@^blacklist/\([^/]\+\)/[^/]\+/\([^/]\+\)$@\1\t\2@
- t
- d
- ' | \
- expand_blacklist_architectures "${tmp_dir}/architecture-compatibilities" | \
- if [ -s "${tmp_dir}/modified-packages" ]; then
- sort -k2,2 | \
- join -1 1 -2 2 -o 2.1,2.2 "${tmp_dir}/modified-packages" -
- sed '
- /^lib32-/ s/^/any /
- t
- d
- ' "${tmp_dir}/modified-packages"
- else
- cat
- fi | \
- sort -u | \
- while read -r arch pkgbase; do
- delete_package "${arch}" "${pkgbase}"
- done
- rm "${tmp_dir}/architecture-compatibilities"
-fi
+ if test "$repository" = "gnome-unstable"; then
+ continue
+ fi
+ # shellcheck disable=SC2016
+ {
+ # delete old binary packages which are not yet built or on the
+ # deletion list
+ mysql_query_delete_packages \
+ '`package_sources`.`pkgbase`=from_base64("'"$(
+ printf '%s' "${pkgbase}" \
+ | base64 -w0
+ )"'")' \
+ '`repositories`.`stability` IN ('"${repository_stability_ids__unbuilt}"','"${repository_stability_ids__forbidden}"')'
+ # remove is-to-be-deleted marker from old binary packages
+ printf 'UPDATE `binary_packages_in_repositories`'
+ mysql_join_binary_packages_in_repositories_binary_packages
+ mysql_join_binary_packages_build_assignments
+ mysql_join_build_assignments_package_sources
+ mysql_join_package_sources_upstream_repositories
+ printf ' SET `binary_packages_in_repositories`.`is_to_be_deleted`=0'
+ printf ' WHERE `package_sources`.`pkgbase`=from_base64("%s")' \
+ "$(
+ printf '%s' "${pkgbase}" \
+ | base64 -w0
+ )"
+ printf ' AND `upstream_repositories`.`name`=from_base64("%s");\n' \
+ "$(
+ printf '%s' "${repository}" \
+ | base64 -w0
+ )"
+ } \
+ | mysql_run_query
+ # shellcheck disable=SC2154
+ >&2 printf '%s ' "${pkgbase}" "${git_revision}" "${mod_git_revision}" "${repository}"
+ mysql_generate_package_metadata "${repository_ids__any_to_be_decided}" "${pkgbase}" "${git_revision}" "${mod_git_revision}" "${repository}"
+ >&2 printf '\n'
+done \
+< "${tmp_dir}/modified-packages"
+
+echo 'remove blacklisted packages'
+
+{
+ git -C "${repo_paths__archlinux32}" archive "${new_repo_revisions__archlinux32}" -- 'blacklist' \
+ | tar -t 'blacklist' \
+ | sed '
+ s@^blacklist/\([^/]\+\)/[^/]\+/\([^/]\+\)$@\1 \2@
+ t
+ d
+ ' \
+ | sort -k2,2 \
+ | join -1 1 -2 2 -o 2.1,2.2 "${tmp_dir}/modified-packages" -
+ git -C "${repo_paths__archlinux32}" diff --name-status "${old_repo_revisions__archlinux32}" "${new_repo_revisions__archlinux32}" -- 'blacklist' \
+ | sed '
+ s@^[AM]\sblacklist/\([^/]\+\)/[^/]\+/\([^/]\+\)$@\1 \2@
+ t
+ d
+ '
+} \
+| sort -u \
+| while read -r arch pkgbase; do
+ delete_package "${arch}" "${pkgbase}" '%'
+done
echo 'Done - mark decisions as final.'
@@ -539,6 +533,10 @@ echo 'Done - mark decisions as final.'
# update hashes of repositories in mysql database
for repo in ${repo_names}; do
+ if [ -n "${max_upstream_packages}" ] \
+ && [ "${repo}" = 'state' ]; then
+ continue
+ fi
printf 'UPDATE `git_repositories`'
printf ' SET `git_repositories`.`head`=from_base64("%s")' \
"$(eval 'printf '"'"'%s'"'"' "${new_repo_revisions__'"${repo}"'}"' | base64 -w0)"
diff --git a/bin/get-source-info b/bin/get-source-info
new file mode 100755
index 0000000..73dc504
--- /dev/null
+++ b/bin/get-source-info
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+# shellcheck disable=SC2119,SC2120
+
+# get-source-info <package> <repository> <git_revision> <mod_git_revision>
+# create .SRCINFO from PKGBUILD within git repositories, output to stdout,
+# cache it on https://mirror.archlinux32.org/pkginfo
+
+# build .SRCINFO if necessary, fetch it from cache when already computed,
+#
+# this can be used to cache srcinfo (especially for blacklisted packages)
+# as it uses quite some time to compute
+
+# shellcheck source=../lib/load-configuration
+. "${0%/*}/../lib/load-configuration"
+
+# shellcheck disable=SC2016
+usage() {
+ >&2 echo ''
+ >&2 echo 'get-source-info <package> <repository> <git_revision> <mod_git_revision> [options]:'
+ >&2 echo ' get package srcinfo'
+ >&2 echo ''
+ >&2 echo 'possible options:'
+ >&2 echo ' -c|--cache:'
+ >&2 echo ' Respect the cache when fetching pkginfo'
+ >&2 echo ' -h|--help:'
+ >&2 echo ' Show this help and exit.'
+ [ -z "$1" ] && exit 1 || exit "$1"
+}
+
+eval set -- "$(
+ getopt -o hc \
+ --long help \
+ --long cache \
+ -n "$(basename "$0")" -- "$@" || \
+ echo usage
+ )"
+
+respect_cache=0
+
+while true
+do
+ case "$1" in
+ -h|--help)
+ usage 0
+ ;;
+ -c|--cache)
+ respect_cache=1
+ ;;
+ --)
+ shift
+ break
+ ;;
+ *)
+ >&2 printf 'Whoops, forgot to implement option "%s" internally.\n' \
+ "$1"
+ exit 42
+ ;;
+ esac
+ shift
+done
+
+if [ $# -ne 4 ]; then
+ usage 1
+fi
+
+tmp_dir=$(mktemp -d "${work_dir}/tmp.get-source-info.XXXXXX")
+trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT
+
+PACKAGE="$1"
+REPOSITORY="$2"
+GIT_REVISION="$3"
+MOD_GIT_REVISION="$4"
+SRCINFO="${tmp_dir}/SRCINFO"
+
+if [ "${respect_cache}" = 1 ]; then
+ curl -LSs "https://buildmaster.archlinux32.org/pkginfo/${PACKAGE}=${REPOSITORY}=${GIT_REVISION}=${MOD_GIT_REVISION}" \
+ >"${SRCINFO}"
+else
+ make_source_info "${PACKAGE}" "${REPOSITORY}" "${GIT_REVISION}" "${MOD_GIT_REVISION}" "${SRCINFO}"
+fi
+
+cat "${SRCINFO}"
diff --git a/bin/harvest-commit-times b/bin/harvest-commit-times
index a978b41..9c6b0eb 100755
--- a/bin/harvest-commit-times
+++ b/bin/harvest-commit-times
@@ -12,13 +12,15 @@ usage() {
>&2 echo ' sources from git and put them into the database'
>&2 echo ''
>&2 echo 'possible options:'
+ >&2 echo ' -f|--force: Do not abort on error.'
>&2 echo ' -h|--help: Show this help and exit.'
>&2 echo ' -w|--wait: If necessary, wait for lock blocking.'
[ -z "$1" ] && exit 1 || exit "$1"
}
eval set -- "$(
- getopt -o hw \
+ getopt -o fhw \
+ --long force \
--long help \
--long wait \
-n "$(basename "$0")" -- "$@" || \
@@ -26,9 +28,13 @@ eval set -- "$(
)"
block_flag='-n'
+force=false;
while true; do
case "$1" in
+ -f|--force)
+ force=true
+ ;;
-h|--help)
usage 0
;;
@@ -76,9 +82,9 @@ trap 'rm "${tmp_file}"' EXIT
if ! ${i_am_the_master}; then
tmp_remote_file=$(
- ssh buildmaster "mktemp 'tmp.harvest-commit-times.remotely.XXXXXXXXXX' --tmpdir"
+ ssh -o PasswordAuthentication=No buildmaster "mktemp 'tmp.harvest-commit-times.remotely.XXXXXXXXXX' --tmpdir"
)
- trap 'rm "${tmp_file}"; ssh buildmaster rm "${tmp_remote_file}"' EXIT
+ trap 'rm "${tmp_file}"; ssh -o PasswordAuthentication=No buildmaster rm "${tmp_remote_file}"' EXIT
fi
while true; do
@@ -91,43 +97,44 @@ while true; do
printf '`package_sources`.`git_revision`,'
printf '`package_sources`.`mod_git_revision`,'
printf '`upstream_repositories`.`name`,'
- printf '`git_repositories`.`name`'
+ printf 'IF(`build_assignments`.`architecture`=%s,"any","x86_64")' "${architecture_ids__any}"
printf ' FROM `package_sources`'
mysql_join_package_sources_upstream_repositories
- mysql_join_upstream_repositories_git_repositories
+ mysql_join_package_sources_build_assignments
printf ' WHERE `package_sources`.`commit_time`="0000-00-00 00:00:00"'
printf ' AND `package_sources`.`uses_upstream`'
- if ! ${i_am_the_master}; then
- printf ' ORDER BY RAND()'
- fi
+ printf ' ORDER BY RAND()'
printf ' LIMIT 10'
- } | \
- mysql_run_query 'unimportant' | \
- sponge | \
- while read -r id pkgbase git_revision mod_git_revision repository git_repository; do
- eval 'git_directory="${repo_paths__'"${git_repository}"'}"'
- find_pkgbuilds "${pkgbase}" "${repository}" "${git_repository}" "${git_revision}" "${mod_git_revision}"
- commit_time=$(
- # shellcheck disable=SC2154
- git -C "${git_directory}" log -n 1 --pretty=format:%ct "${git_revision}" -- "${PKGBUILD}"
- )
- if [ -n "${commit_time}" ]; then
- printf '%s\t%s\n' \
- "${id}" \
- "${commit_time}"
- else
- >&2 printf 'Package source %s is not available in git.\n' \
- "${id}"
+ } \
+ | mysql_run_query 'unimportant' \
+ | sponge \
+ | while read -r id pkgbase git_revision mod_git_revision repository architecture; do
+ commit_time=$(
+ # shellcheck disable=SC2154
+ git -C "${repo_paths__state}" log -n 1 --pretty=format:%ct HEAD -- "${repository}-${architecture}/${pkgbase}"
+ )
+ if [ -n "${commit_time}" ]; then
+ printf '%s\t%s\n' \
+ "${id}" \
+ "${commit_time}"
+ else
+ >&2 printf 'Package source %s is not available in git:\n' \
+ "${id}"
+ >&2 printf '%s ' \
+ "${pkgbase}" "${git_revision}" "${mod_git_revision}" "${repository}" "${architecture}"
+ >&2 printf '\n'
+ if ! ${force}; then
exit 2
fi
- done > \
- "${tmp_file}"
+ fi
+ done > \
+ "${tmp_file}"
>&2 printf '.'
if [ -s "${tmp_file}" ]; then
if ! ${i_am_the_master}; then
- ssh buildmaster 'cat > "'"${tmp_remote_file}"'"' < \
+ ssh -o PasswordAuthentication=No buildmaster 'cat > "'"${tmp_remote_file}"'"' < \
"${tmp_file}"
fi
# shellcheck disable=SC2016
@@ -149,7 +156,7 @@ while true; do
if ${i_am_the_master}; then
mysql_run_query 'unimportant'
else
- ssh buildmaster 'mysql buildmaster -N --raw --batch'
+ ssh -o PasswordAuthentication=No buildmaster 'mysql buildmaster -N --raw --batch'
fi
else
>&2 printf '\n'
diff --git a/bin/ii-watch b/bin/ii-watch
index ae008c4..6ae30c0 100755
--- a/bin/ii-watch
+++ b/bin/ii-watch
@@ -18,7 +18,7 @@ while pgrep -x 'ii' >/dev/null && \
# this avoids missing modifications during our last execution
if [ "$(date +%s)" -ge ${next_connection_check} ]; then
# request this more often on startup
- if [ ${last_seen} -ne 0 ]; then
+ if [ "${last_seen}" -ne 0 ]; then
next_connection_check=$((
$(date +%s) + 60*5
))
diff --git a/bin/interpret-mail b/bin/interpret-mail
index 2580c00..06eb4f0 100755
--- a/bin/interpret-mail
+++ b/bin/interpret-mail
@@ -310,7 +310,7 @@ fi
if [ -s "${tmp_dir}/schedule" ]; then
# shellcheck disable=SC2046
- "${base_dir}/bin/seed-build-list" --wait $(
+ "${base_dir}/bin/schedule-for-rebuild" --wait $(
tr '[:space:]' '\n' < \
"${tmp_dir}/schedule" | \
grep -vxF '' | \
diff --git a/bin/local-build-package b/bin/local-build-package
deleted file mode 100755
index fd4fdab..0000000
--- a/bin/local-build-package
+++ /dev/null
@@ -1,220 +0,0 @@
-#!/bin/sh
-
-# build one package to test if modifications are ok (before opening a pull
-# request in https://github.com/archlinux32/packages)
-# package is built directly on a i486/i686/pentium4 host without any chroots
-
-# shellcheck source=../lib/load-configuration
-. "${0%/*}/../lib/load-configuration"
-
-# TODO: remove hard-coded package suffixes
-
-# shellcheck disable=SC2016
-usage() {
- >&2 echo ''
- >&2 echo 'test-build-package <repository> <package>: build package for testing'
- >&2 echo ''
- >&2 echo 'possible options:'
- >&2 echo ' -h|--help: Show this help and exit.'
- >&2 echo ' -a|--arch "i486" | "i686" | "pentium4"'
- >&2 echo ' Build locally for this architecture.'
- >&2 echo ' -b|--bootstrap'
- >&2 echo ' Publishes signed package to the bootstrap directory.'
- >&2 echo ' -H|--host <user>@<host>: host and user for bootstrapping'
- >&2 echo ' -D|--dir <dir>: bootstrapping directory'
- >&2 echo ' $arch and $repo are attached to this path.'
- >&2 echo ' -p|--port <SSH port>: the SSH port for bootstrapping.'
- >&2 echo ' -n|--nocheck:'
- >&2 echo ' Normally execute all checks and do all tests.'
- >&2 echo ' This switches off check() and all integrity checks.'
- >&2 echo ' -t|--tmpdir <dir>:'
- >&2 echo ' Specify tmpdir instead of using a random one, usually with -N'
- >&2 echo ' -N|--nobuild:'
- >&2 echo ' Assume packages have already been built, just upload them.'
- >&2 echo ' -s|--signkey:'
- >&2 echo ' Use explicit sign key instead of the one from the configuration.'
- [ -z "$1" ] && exit 1 || exit "$1"
-}
-
-eval set -- "$(
- getopt -o a:bhnNp:H:D:t:s: \
- --long arch \
- --long bootstrap \
- --long nocheck \
- --long nobuild \
- --long port \
- --long dir \
- --long host \
- --long tmpdir \
- --long signkey \
- --long help \
- -n "$(basename "$0")" -- "$@" || \
- echo usage
-)"
-
-arch=$(uname -m)
-bootstrap=false
-nocheck=false
-nobuild=false
-bootstrap_port=22
-bootstrap_host=''
-bootstrap_dir=''
-tmp_dir=$(mktemp -d "${work_dir}/tmp.XXXXXX")
-signkey="${package_key}"
-while true
-do
- case "$1" in
- -a|--arch)
- shift
- arch="$1"
- ;;
- -b|--bootstrap)
- bootstrap=true
- ;;
- -H|--host)
- shift
- bootstrap_host="$1"
- ;;
- -D|--dir)
- shift
- bootstrap_dir="$1"
- ;;
- -n|--nocheck)
- nocheck=true
- ;;
- -N|--nobuild)
- nobuild=true
- ;;
- -p|--port)
- shift
- bootstrap_port="$1"
- ;;
- -t|--tmpdir)
- shift
- tmp_dir="$1"
- ;;
- -s|--signkey)
- shift
- signkey="$1"
- ;;
- -h|--help)
- usage 0
- ;;
- --)
- shift
- break
- ;;
- *)
- >&2 echo 'Whoops, forgot to implement option "'"$1"'" internally.'
- exit 42
- ;;
- esac
- shift
-done
-
-if [ $# -ne 2 ]; then
- >&2 echo 'Too few or too many arguments. Expecting exactly a repository and a package name of the package to test.'
- usage
-fi
-
-if [ "$arch" != "any" ] && [ "$arch" != "i486" ] && [ "$arch" != "i686" ] && [ "$arch" != "pentium4" ]; then
- >&2 echo "Illegal architecture '$arch', epxecting one of 'any', 'i486', 'i686' or 'pentium4'."
- usage
-fi
-
-if ${bootstrap}; then
- if [ -z "${bootstrap_host}" ]; then
- >&2 echo -- '-b option requires a bootstrapping host to be set with -H'
- usage
- fi
- if [ -z "${bootstrap_dir}" ]; then
- >&2 echo -- '-b option requires a bootstrapping directory to be set with -d'
- usage
- fi
-fi
-
-if ! ${nobuild}; then
- # Update git repositories (official packages, community packages and the repository of package customizations).
- for repo_name in ${repo_names}; do
- eval repo_path='"${repo_paths__'"${repo_name}"'}"'
- git -C "${repo_path}" pull
- done
-
- repository=$1
- package=$2
- case $repository in
- core)
- repo_path='../work/repos/packages'
- ;;
- extra)
- repo_path='../work/repos/packages'
- ;;
- community)
- repo_path='../work/repos/community'
- ;;
- *)
- >&2 echo 'Repository is either "core", "extra" or "community"'
- usage
- esac
- git_revision=$(git -C "${repo_path}" rev-parse HEAD)
-
- mod_git_revision=$(git -C "${repo_paths__archlinux32}" stash create)
- if [ -z "${mod_git_revision}" ]; then
- mod_git_revision=$(git -C "${repo_paths__archlinux32}" rev-parse HEAD)
- fi
- build_command="staging-${arch}-build"
- parameters=''
- if ${nocheck}; then
- parameters='-- -- --nocheck'
- fi
-
- git_repo=$(find_repository_with_commit "${git_revision}")
- find_pkgbuilds "${package}" "${repository}" "${git_repo}" "${git_revision}" "${mod_git_revision}"
-
- extract_source_directory "${git_repo}" "${git_revision}" "${mod_git_revision}" "${tmp_dir}"
-
- rm -f \
- ./*"-${arch}.pkg.tar.xz" ./*"-${arch}.pkg.tar.xz.sig" \
- ./*"-${arch}.pkg.tar.zst" ./*"-${arch}.pkg.tar.zst.sig"
-
- cd "${tmp_dir}" || exit 1
-
- makepkg_parameters=''
- if ${nocheck}; then
- makepkg_parameters='--skippgpcheck'
- fi
- makepkg ${makepkg_parameters} --verifysource
-
- # shellcheck disable=SC2086
- "${build_command}" ${parameters}
-else
- cd "${tmp_dir}" || exit 1
-fi
-
-if ${bootstrap}; then
- rm -f \
- ./*"-${arch}.pkg.tar.xz.sig" \
- ./*"-${arch}.pkg.tar.zst.sig"
-
- find . -maxdepth 1 -type f -name "*${arch}.pkg.tar.zst" \
- -execdir gpg --local-user="${signkey}" --detach-sign '{}' \;
-
- case "$repository" in
- core|extra)
- staging_repo="staging"
- ;;
- community)
- staging_repo="community-staging"
- ;;
- *)
- staging_repo="staging"
- ;;
- esac
-
- scp -P "${bootstrap_port}" -rC "${tmp_dir}/"*"-${arch}.pkg.tar.zst" "${tmp_dir}/"*"-${arch}.pkg.tar.zst.sig" "${bootstrap_host}:${bootstrap_dir}/${staging_repo}/."
- ssh -p "${bootstrap_port}" "${bootstrap_host}" bash -l -c "'cd ${bootstrap_dir}/${staging_repo} && repo-add -n bootstrap-${staging_repo}.db.tar.gz *-${arch}.pkg.tar.zst'"
-fi
-
-# do not delete build reports, why might actually to want to have a look for things
-# like checksums, logfiles, etc.
-#recursively_umount_and_rm "${tmp_dir}"
diff --git a/bin/manage-slaves b/bin/manage-slaves
index cddda84..fa1413d 100755
--- a/bin/manage-slaves
+++ b/bin/manage-slaves
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/usr/bin/env bash
# shellcheck source=../lib/load-configuration
. "${0%/*}/../lib/load-configuration"
@@ -9,7 +9,8 @@ usage() {
>&2 echo 'manage-slaves $action [parameters]: manage the list of build slaves'
>&2 echo ''
>&2 echo 'possible actions:'
- >&2 echo ' add $name $owner $ssh-key-fingerprint'
+ >&2 echo ' list'
+ >&2 echo ' add $name $owner $ssh-key-type $ssh-key-fingerprint'
>&2 echo ' disable $name'
>&2 echo ' enable $name'
exit 1
@@ -33,10 +34,26 @@ if errors=$(
fi
case "$1" in
+ 'list')
+ # shellcheck disable=SC2016
+ {
+ printf 'SELECT'
+ printf ' name, CASE WHEN access_allowed = 1 THEN "enabled" ELSE "disabled" END '
+ printf ' name, CASE WHEN is_sane = 1 THEN "sane" ELSE "not sane" END '
+ printf ' FROM build_slaves'
+ printf ';\n'
+ } | \
+ mysql_run_query | \
+ tr '\t' ' '
+ ;;
'add')
shift
- if [ $# -ne 3 ]; then
- >&2 printf '"add" expects 3 parameters, %s were given\n' "$#"
+ if [ $# -ne 4 ]; then
+ >&2 printf '"add" expects 4 parameters, %s were given\n' "$#"
+ usage
+ fi
+ if [[ $3 != ssh-* ]]; then
+ >&2 printf '"$ssh-key-type" must start with "ssh-", "%s" was given\n' "${3}"
usage
fi
person_id=$(
@@ -81,10 +98,11 @@ case "$1" in
fi
# shellcheck disable=SC2016
{
- printf 'INSERT INTO `ssh_keys`(`owner`,`fingerprint`)'
+ printf 'INSERT INTO `ssh_keys`(`owner`,`fingerprint`,`type`)'
printf ' VALUES'
- printf ' (%s,"%s");\n' \
+ printf ' (%s,"%s","%s");\n' \
"${person_id}" \
+ "${4}" \
"${3}"
printf 'INSERT INTO `build_slaves`('
printf '`name`,'
@@ -96,10 +114,11 @@ case "$1" in
"${1}"
} | \
mysql_run_query
- printf 'command="%s/bin/slave-build-connect %s" ssh-rsa %s %s@%s\n' \
+ printf 'command="%s/bin/slave-build-connect %s" %s %s %s@%s\n' \
"${base_dir}" \
"${1}" \
"${3}" \
+ "${4}" \
"${2}" \
"${1}" >> \
~/".ssh/authorized_keys"
@@ -122,7 +141,9 @@ case "$1" in
printf '"command=\\\"%s/bin/slave-build-connect ",' \
"${base_dir}"
printf '`build_slaves`.`name`,'
- printf '"\\\" ssh-rsa ",'
+ printf '"\\\" ",'
+ printf '`ssh_keys`.`type`,'
+ printf '" ",'
printf '`ssh_keys`.`fingerprint`,'
printf '" ",'
printf '`persons`.`name`,'
diff --git a/bin/manual-fix b/bin/manual-fix
new file mode 100755
index 0000000..f9cc7b9
--- /dev/null
+++ b/bin/manual-fix
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+# shellcheck disable=SC2119,SC2120
+
+# shellcheck source=../lib/load-configuration
+. "${0%/*}/../lib/load-configuration"
+
+eval "$(
+ declare -F \
+ | sed '
+ s@^declare -f _fix_@unset _fix_@
+ t
+ d
+ '
+)"
+
+_fix_package_on_build_and_deletion_list() {
+ # shellcheck disable=SC2016
+ {
+ printf 'DELETE `bin_del`'
+ printf ' FROM `binary_packages` AS `bin_del`'
+ mysql_join_binary_packages_binary_packages_in_repositories 'bin_del' 'bir_del'
+ mysql_join_binary_packages_in_repositories_repositories 'bir_del' 'r_del'
+ printf ' AND `r_del`.`name`="deletion-list"'
+ printf ' JOIN `binary_packages` AS `bin_keep`'
+ printf ' ON `bin_keep`.`pkgname`=`bin_del`.`pkgname`'
+ printf ' AND `bin_del`.`architecture`=`bin_keep`.`architecture`'
+ printf ' AND `bin_del`.`id`!=`bin_keep`.`id`'
+ printf ' AND `bin_keep`.`sha512sum` IS NULL'
+ mysql_join_binary_packages_binary_packages_in_repositories 'bin_keep' 'bir_keep'
+ mysql_join_binary_packages_in_repositories_repositories 'bir_keep' 'r_keep'
+ printf ' AND `r_keep`.`name`="build-list"'
+ } \
+ | mysql_run_query
+}
+
+usage() {
+ # shellcheck disable=SC2016
+ >&2 printf 'usage: %s $issue\n\n' "${0##*/}"
+ >&2 printf 'Manually fix an issue.\n\n'
+ >&2 printf 'fixable issues:\n'
+ declare -F \
+ | sed '
+ s@^declare -f _fix_@ @
+ t
+ d
+ ' >&2
+ exit 1
+}
+
+if [ $# -ne 1 ] || ! declare -f "_fix_$1" >/dev/null; then
+ usage
+fi
+
+eval "_fix_$1"
diff --git a/bin/nit-picker b/bin/nit-picker
index 8dd0156..ed5b7da 100755
--- a/bin/nit-picker
+++ b/bin/nit-picker
@@ -281,9 +281,9 @@ while pgrep -x ii >/dev/null \
case "${action}" in
'commit') # check whether a given commit is present in the git repo
git_repo="${parameters%% *}"
- git_rev="${parameters#${git_repo} }"
+ git_rev="${parameters#"${git_repo}" }"
git_head="${git_rev%% *}"
- git_rev="${git_rev#${git_head} }"
+ git_rev="${git_rev#"${git_head}" }"
# shellcheck disable=SC2016
eval "$(
printf 'git_dir="${repo_paths__%s}"\n' \
@@ -881,6 +881,6 @@ done
printf ';\n'
fi
} \
-| ifne ssh buildmaster 'mysql buildmaster
+| ifne ssh -o PasswordAuthentication=No buildmaster 'mysql buildmaster
rm -f "/tmp/add-those-dependencies"
'
diff --git a/bin/opcode b/bin/opcode
deleted file mode 100755
index 544c763..0000000
--- a/bin/opcode
+++ /dev/null
@@ -1,293 +0,0 @@
-#!/bin/bash
-#
-# Original see post in:
-#
-# https://superuser.com/questions/726395/how-to-check-if-a-binary-requires-sse4-or-avx-on-linux
-#
-# Searches disassembled code for specific instructions.
-#
-# Opcodes obtained from: https://github.com/Shirk/vim-gas/blob/master/syntax/gas.vim
-#
-# List of opcodes has been obtained using the following commands and making a few modifications:
-# echo '#!/bin/bash' > Opcode_list
-# wget -q -O- https://raw.githubusercontent.com/Shirk/vim-gas/master/syntax/gas.vim \
-# | grep -B1 -E 'syn keyword gasOpcode_|syn match gasOpcode' | \
-# sed -e '/^--$/d' -e 's/"-- Section:/\n#/g' \
-# -e 's/syn keyword gasOpcode_\([^\t]*\)*\(\t\)*\(.*\)/Opcode_\1="\${Opcode_\1} \3"/g' \
-# -e 's/Opcode_PENT_3DNOW/Opcode_ATHLON_3DNOW/g' -e 's/\\//g' \
-# -e 's/syn match gasOpcode_\([^\t]*\)*.*\/<\(.*\)>\//Opcode_\1="\${Opcode_\1} \2"/g' \
-# >> Opcode_list
-#
-# Modify file Opcode_list replacing all occurrences of:
-# * Opcode_Base within the section "Tejas New Instructions (SSSE3)" with Opcode_SSSE3
-# * Opcode_Base within the section "Willamette MMX instructions (SSE2 SIMD Integer Instructions)"
-# with Opcode_WILLAMETTE_Base
-# * Remove all line in Opcode_ARM_THUMB
-# return values
-
-
-# return values
-EXIT_FOUND=0
-EXIT_NOT_FOUND=1
-EXIT_USAGE=2
-
-# settings
-InstSet_Base=""
-Recursive=false
-Count_Matching=false
-Leading_Separator='\s'
-Trailing_Separator='(\s|$)' # $ matches end of line for non-parametric instructions like nop
-Case_Insensitive=false
-Invert=false
-Verbose=false
-Stop_After=0
-Line_Numbers=false
-Leading_Context=0
-Trailing_Context=0
-
-source "${0%/*}/../lib/opcode_list" # include opcodes from a separate file
-
-# GAS-specific opcodes (unofficial names) belonging to the x64 instruction set.
-# They are generated by GNU tools (e.g. GDB, objdump) and specify a variant of ordinal opcodes like NOP and MOV.
-# If you do not want these opcodes to be recognized by this script, comment out the following line.
-Opcode_X64_GAS="nopw nopl movabs"
-
-
-# instruction sets
-InstSet_X86="8086_Base 186_Base 286_Base 386_Base 486_Base PENT_Base P6_Base KATMAI_Base WILLAMETTE_Base PENTM_Base"
-InstSet_IA64="IA64_Base"
-InstSet_X64="PRESCOTT_Base X64_Base X86_64_Base NEHALEM_Base X64_GAS"
-InstSet_MMX="PENT_MMX KATMAI_MMX X64_MMX"
-InstSet_MMX2="KATMAI_MMX2"
-InstSet_3DNOW="ATHLON_3DNOW"
-InstSet_SSE="KATMAI_SSE P6_SSE X64_SSE"
-InstSet_SSE2="SSE2 X64_SSE2"
-InstSet_SSE3="PRESCOTT_SSE3"
-InstSet_SSSE3="SSSE3"
-InstSet_VMX="VMX X64_VMX"
-InstSet_SSE4_1="SSE41 X64_SSE41"
-InstSet_SSE4_2="SSE42 X64_SSE42"
-InstSet_SSE4A="AMD_SSE4A"
-InstSet_SSE5="AMD_SSE5"
-InstSet_FMA="FUTURE_FMA"
-InstSet_AVX="SANDYBRIDGE_AVX"
-
-InstSetDep_X64="X86"
-InstSetDep_MMX2="MMX"
-InstSetDep_SSE2="SSE"
-InstSetDep_SSE3="SSE2"
-InstSetDep_SSSE3="SSE3"
-InstSetDep_SSE4_1="SSSE3"
-InstSetDep_SSE4_2="SSE4_1"
-InstSetDep_SSE4A="SSE3"
-InstSetDep_SSE5="FMA AVX" # FIXME not reliable
-
-InstSetList="X86 IA64 X64 MMX MMX2 3DNOW SSE SSE2 SSE3 SSSE3 VMX SSE4_1 SSE4_2 SSE4A SSE5 FMA AVX"
-
-
-# architectures
-Arch_8086="8086_Base"
-Arch_186="186_Base"
-Arch_286="286_Base"
-Arch_386="386_Base"
-Arch_486="486_Base"
-Arch_Pentium="PENT_Base PENT_MMX" # Pentium = P5 architecture
-Arch_Athlon="ATHLON_3DNOW"
-Arch_Deschutes="P6_Base P6_SSE" # Pentium II
-Arch_Katmai="KATMAI_Base KATMAI_MMX KATMAI_MMX2 KATMAI_SSE" # Pentium III
-Arch_Willamette="WILLAMETTE_Base SSE2" # original Pentium IV (x86)
-Arch_PentiumM="PENTM_Base"
-Arch_Prescott="PRESCOTT_Base X64_Base X86_64_Base X64_SSE2 PRESCOTT_SSE3 VMX X64_VMX X64_GAS" # later Pentium IV (x64) with SSE3 (Willamette only implemented SSE2 instructions) and VT (VT-x, aka VMX)
-Arch_P6=""
-Arch_Barcelona="ATHLON_3DNOW AMD_SSE4A"
-Arch_IA64="IA64_Base" # 64-bit Itanium RISC processor; incompatible with x64 architecture
-Arch_Penryn="SSSE3 SSE41 X64_SSE41" # later (45nm) Core 2 with SSE4.1
-Arch_Nehalem="NEHALEM_Base SSE42 X64_SSE42" # Core i#
-Arch_SandyBridge="SANDYBRIDGE_AVX"
-Arch_Haswell="FUTURE_FMA"
-Arch_Bulldozer="AMD_SSE5"
-
-ArchDep_8086=""
-ArchDep_186="8086"
-ArchDep_286="186"
-ArchDep_386="286"
-ArchDep_486="386"
-ArchDep_Pentium="486"
-ArchDep_Athlon="Pentium" # FIXME not reliable
-ArchDep_Deschutes="Pentium"
-ArchDep_Katmai="Deschutes"
-ArchDep_Willamette="Katmai"
-ArchDep_PentiumM="Willamette" # FIXME Pentium M is a Pentium III modification (with SSE2). Does it support also WILLAMETTE_Base instructions?
-ArchDep_Prescott="Willamette"
-ArchDep_P6="Prescott" # P6 started with Pentium Pro; FIXME Pentium Pro did not support MMX instructions (introduced again in Pentium II aka Deschutes)
-ArchDep_Barcelona="Prescott" # FIXME not reliable
-ArchDep_IA64=""
-ArchDep_Penryn="P6"
-ArchDep_Nehalem="Penryn"
-ArchDep_SandyBridge="Nehalem"
-ArchDep_Haswell="SandyBridge"
-ArchDep_Bulldozer="Haswell" # FIXME not reliable
-
-ArchList="8086 186 286 386 486 Pentium Athlon Deschutes Katmai Willamette PentiumM Prescott P6 Barcelona IA64 Penryn Nehalem SandyBridge Haswell Bulldozer"
-
-usage() {
- echo "Usage: $0 OPTIONS"
- echo ""
- echo " -r set instruction sets recursively according to dependency tree (must precede -a or -s)"
- echo " -a set architecture"
- echo " -s set instruction set"
- echo " -L show list of available architectures"
- echo " -l show list of available instruction sets"
- echo " -i show base instruction sets of current instruction set (requires -a and/or -s)"
- echo " -I show instructions in current instruction set (requires -a and/or -s)"
- echo " -c print number of matching instructions instead of normal output"
- echo " -f find instruction set of the following instruction (regex allowed)"
- echo " -d set leading opcode separator (default '$Leading_Separator')"
- echo " -D set trailing opcode separator (default '$Trailing_Separator')"
- echo " -C case-insensitive"
- echo " -v invert the sense of matching"
- echo " -V print all lines, not just the highlighted"
- echo " -m stop searching after n matched instructions"
- echo " -n print line numbers within the original input"
- echo " -B print n instructions of leading context"
- echo " -A print n instructions of trailing context"
- echo " -h print this help"
- echo
- echo "Multiple architectures and instruction sets can be used."
- echo
- echo "Typical usage is:"
- echo " objdump -M intel -d FILE | $0 OPTIONS"
- echo " objdump -M intel -d FILE | $0 -s SSE2 -s SSE3 -V Highlight SSE2 and SSE3 within FILE."
- echo " objdump -M intel -d FILE | tail -n +8 | $0 -r -a Haswell -v -m 1 Find first unknown instruction."
- echo " $0 -C -f ADDSD Find which instruction set an opcode belongs to."
- echo " $0 -f .*fma.* Find all matching instructions and their instruction sets."
- echo
- echo "The script uses Intel opcode syntax. When used in conjunction with objdump, \`-M intel' must be set in order to prevent opcode translation using AT&T syntax."
- echo
- echo "BE AWARE THAT THE LIST OF KNOWN INSTRUCTIONS OR INSTRUCTIONS SUPPORTED BY PARTICULAR ARCHITECTURES (ESPECIALLY AMD'S) IS ONLY TENTATIVE AND MAY CONTAIN MISTAKES!"
- kill -TRAP $TOP_PID
-}
-
-list_contains() { # Returns 0 if $2 is in array $1, 1 otherwise.
- local e
- for e in $1; do
- [ "$e" = "$2" ] && return 0
- done
- return 1
-}
-
-build_instruction_set() { # $1 = enum { Arch, InstSet }, $2 = architecture or instruction set as obtained using -L or -l, $3 = "architecture"/"instruction set" to be used in error message
- local e
- list_contains "`eval echo \\\$${1}List`" "$2" || (echo "$2 is not a valid $3."; usage) # Test if the architecture/instruction set is valid.
- if [ -n "`eval echo \\\$${1}_${2}`" ]; then # Add the instruction set(s) if any.
- for e in `eval echo \\\$${1}_${2}`; do # Skip duplicates.
- list_contains "$InstSet_Base" $e || InstSet_Base="$e $InstSet_Base"
- done
- fi
- if [ $Recursive = true ]; then
- for a in `eval echo \\\$${1}Dep_$2`; do
- build_instruction_set $1 $a "$3"
- done
- fi
- InstSet_Base="`echo $InstSet_Base | sed 's/$ *//'`" # Remove trailing space.
-}
-
-trap "exit $EXIT_USAGE" TRAP # Allow usage() function to abort script execution.
-export TOP_PID=$$ # PID of executing process.
-
-# Parse command line arguments.
-while getopts ":ra:s:LliIcf:Fd:D:CvVm:nB:A:h" o; do
- case $o in
- r) Recursive=true ;;
- a) build_instruction_set Arch "$OPTARG" "architecture" ;;
- s) build_instruction_set InstSet "$OPTARG" "instruction set" ;;
- L) echo $ArchList; exit $EXIT_USAGE ;;
- l) echo $InstSetList; exit $EXIT_USAGE ;;
- i)
- if [ -n "$InstSet_Base" ]; then
- echo $InstSet_Base
- exit $EXIT_USAGE
- else
- echo -e "No instruction set or architecture set.\n"
- usage
- fi
- ;;
- I)
- if [ -n "$InstSet_Base" ]; then
- for s in $InstSet_Base; do
- echo -ne "\e[31;1m$s:\e[0m "
- eval echo "\$Opcode_$s"
- done
- exit $EXIT_USAGE
- else
- echo -e "No instruction set or architecture set.\n"
- usage
- fi
- ;;
- c) Count_Matching=true ;;
- f)
- # Unlike architectures, instruction sets are disjoint.
- Found=false
- for s in $InstSetList; do
- for b in `eval echo \\\$InstSet_$s`; do
- Found_In_Base=false
- for i in `eval echo \\\$Opcode_$b`; do
- if [[ "$i" =~ ^$OPTARG$ ]]; then
- $Found_In_Base || echo -ne "Instruction set \e[33;1m$s\e[0m (base instruction set \e[32;1m$b\e[0m):"
- echo -ne " \e[31;1m$i\e[0m"
- Found_In_Base=true
- Found=true
- fi
- done
- $Found_In_Base && echo ""
- done
- done
- if [ $Found = false ]; then
- echo -e "Operation code \e[31;1m$OPTARG\e[0m has not been found in the database of known instructions." \
- "Perhaps it is translated using other than Intel syntax. If obtained from objdump, check if the \`-M intel' flag is set." \
- "Be aware that the search is case sensitive by default (you may use the -C flag, otherwise only lower case opcodes are accepted)."
- exit $EXIT_NOT_FOUND
- else
- exit $EXIT_FOUND
- fi
- ;;
- d) Leading_Separator="$OPTARG" ;;
- D) Trailing_Separator="$OPTARG" ;;
- C) Case_Insensitive=true ;;
- v) Invert=true ;;
- V) Verbose=true ;;
- m) Stop_After=$OPTARG ;;
- n) Line_Numbers=true ;;
- B) Leading_Context=$OPTARG ;;
- A) Trailing_Context=$OPTARG ;;
- h) usage ;;
- \?)
- echo -e "Unknown option: -$OPTARG\n"
- usage
- ;;
- esac
-done
-shift $((OPTIND-1))
-[ -n "$1" ] && echo -e "Unknown command line parameter: $1\n" && usage
-[ -z "$InstSet_Base" ] && usage
-
-# Create list of grep parameters.
-Grep_Params="--color=auto -B $Leading_Context -A $Trailing_Context"
-[ $Count_Matching = true ] && Grep_Params="$Grep_Params -c"
-[ $Case_Insensitive = true ] && Grep_Params="$Grep_Params -i"
-[ $Invert = true ] && Grep_Params="$Grep_Params -v"
-[ $Stop_After -gt 0 ] && Grep_Params="$Grep_Params -m $Stop_After"
-[ $Line_Numbers = true ] && Grep_Params="$Grep_Params -n"
-
-# Build regular expression for use in grep.
-RegEx=""
-for s in $InstSet_Base; do
- eval RegEx=\"$RegEx \$Opcode_$s\"
-done
-# Add leading and trailing opcode separators to prevent false positives.
-RegEx="$Leading_Separator`echo $RegEx | sed "s/ /$(echo "$Trailing_Separator"|sed 's/[\/&]/\\\&/g')|$(echo "$Leading_Separator"|sed 's/[\/&]/\\\&/g')/g"`$Trailing_Separator"
-
-[ $Verbose = true -a $Count_Matching = false ] && RegEx="$RegEx|\$"
-
-# The actual search.
-grep $Grep_Params -E "$RegEx" && exit $EXIT_FOUND || exit $EXIT_NOT_FOUND
diff --git a/bin/ping-to-master b/bin/ping-to-master
index b1539cc..b7b1eee 100755
--- a/bin/ping-to-master
+++ b/bin/ping-to-master
@@ -14,8 +14,9 @@
parent_pid="$1"
parent_tmp_dir="$2"
+lock_file="$3"
-exec 9> "${work_dir}/ping-build-master.lock"
+exec 9> "${lock_file}"
while kill -0 "${parent_pid}" && \
[ -f "${parent_tmp_dir}/.ping-build-master" ]; do
@@ -27,7 +28,7 @@ while kill -0 "${parent_pid}" && \
-name '*.build-log' \
-exec wc -l {} \; | \
sed 's, .*/, ,' | \
- ssh \
+ ssh -o PasswordAuthentication=No \
-i "${master_build_server_identity}" \
-p "${master_build_server_port}" \
"${master_build_server_user}@${master_build_server}" \
diff --git a/bin/prioritize-build-list b/bin/prioritize-build-list
index 04a9d4f..2391c1f 100755
--- a/bin/prioritize-build-list
+++ b/bin/prioritize-build-list
@@ -109,7 +109,7 @@ updated_rows=$(
if ${dependencies}; then
new_updated_rows=1
updated_rows=$((updated_rows-1))
- while [ ${new_updated_rows} -ne 0 ]; do
+ while [ "${new_updated_rows}" -ne 0 ]; do
updated_rows=$((updated_rows+new_updated_rows))
new_updated_rows=$(
# shellcheck disable=SC2016
diff --git a/bin/return-assignment b/bin/return-assignment
index a0cbbbb..47e28f0 100755
--- a/bin/return-assignment
+++ b/bin/return-assignment
@@ -142,25 +142,25 @@ if [ "$6" = 'ERROR' ]; then
exit 2
fi
build_assignment_architecture="${infos##* }"
- infos="${infos% ${build_assignment_architecture}}"
+ infos="${infos% "${build_assignment_architecture}"}"
pkgrel="${infos##* }"
- infos="${infos% ${pkgrel}}"
+ infos="${infos% "${pkgrel}"}"
epoch="${infos##* }"
- infos="${infos% ${epoch}}"
+ infos="${infos% "${epoch}"}"
pkgver="${infos##* }"
- infos="${infos% ${pkgver}}"
+ infos="${infos% "${pkgver}"}"
pkgver=$(
printf '%s' "${pkgver}" \
| base64 -d
)
upstream_flag_date="${infos##* }"
- infos="${infos% ${upstream_flag_date}}"
+ infos="${infos% "${upstream_flag_date}"}"
upstream_flag_date=$(
printf '%s' "${upstream_flag_date}" \
| base64 -d
)
was_broken_before="${infos##* }"
- build_assignment_id="${infos% ${was_broken_before}}"
+ build_assignment_id="${infos% "${was_broken_before}"}"
# save sent build logs
saved_build_logs=$(
@@ -498,13 +498,13 @@ if [ "$6" = 'ERROR' ]; then
'
)
- # release lock on build-list - otherwise seed-build-list won't run
+ # release lock on build-list - otherwise schedule-for-rebuild won't run
flock -u 9
rescheduled_packages=$(
if [ -n "${haskell_rebuild_packages}" ]; then
# shellcheck disable=SC2086
- "${base_dir}/bin/seed-build-list" ${haskell_rebuild_packages} | \
+ "${base_dir}/bin/schedule-for-rebuild" ${haskell_rebuild_packages} | \
sed 's/ .*$//'
fi
)
@@ -747,7 +747,8 @@ signatures=$(
if [ -z "$(
printf '%s\n' "${signatures}" | \
cut -d' ' -f2 | \
- grep -x 'file\|TRUST_FULLY' | \
+ grep -x 'file\|TRUST_\(FULLY\|ULTIMATE\)' | \
+ sed 's@_ULTIMATE$@_FULLY@' | \
sort | \
uniq -c | \
awk '{print $1}' | \
@@ -759,6 +760,9 @@ if [ -z "$(
irc_say "${operator}"
printf '%s\n' "${signatures}" | \
irc_say "${operator}" 'copy' >&2
+ find . -maxdepth 1 -regextype sed \
+ -regex '.*\.pkg\.\('"${package_compression_suffix_regex}"'\)' \
+ -exec cp {} {}.sig "${work_dir}/" \;
exit 3
fi
@@ -956,6 +960,32 @@ if [ -n "${errors}" ]; then
exit 1
fi
+some_architecture=$(
+ # shellcheck disable=SC2012
+ ls \
+ | sed '
+ s/^.*-\([^-]\+\)\.pkg\.\('"${package_compression_suffix_regex}"'\)$/\1/
+ t
+ d
+ ' \
+ | sort -u \
+ | sed '
+ s/^any$/0 \0/
+ t
+ s/^/1 \0/
+ ' \
+ | sort -k1n,1 \
+ | tail -n1 \
+ | cut -d' ' -f2
+)
+
+for build_log in *.build-log.gz; do
+ [ -f "${build_log}" ] || continue;
+ mv -n \
+ "${build_log}" \
+ "${build_log_directory}/success/$1.$2.$3.$4.${some_architecture}.${build_log##*/}"
+done
+
join -1 2 -2 2 -o 1.1,1.2,2.1 "${tmp_dir}/package-ids" "${tmp_dir}/signing-keys" \
| sponge "${tmp_dir}/package-ids"
diff --git a/bin/sanity-check b/bin/sanity-check
index 60cb958..9682c68 100755
--- a/bin/sanity-check
+++ b/bin/sanity-check
@@ -46,29 +46,6 @@ eval set -- "$(
block_flag='-n'
silence=0
-# shellcheck disable=SC2016
-repos=$(
- {
- printf 'SELECT DISTINCT `repositories`.`name`'
- printf ' FROM `repositories`'
- printf ' WHERE `repositories`.`is_on_master_mirror`;\n'
- } | \
- mysql_run_query
-)
-# shellcheck disable=SC2016
-archs=$(
- {
- printf 'SELECT DISTINCT `architectures`.`name`'
- printf ' FROM `architectures`'
- printf ' WHERE EXISTS ('
- printf 'SELECT 1'
- printf ' FROM `repositories`'
- printf ' WHERE `repositories`.`architecture`=`architectures`.`id`'
- printf ' AND `repositories`.`is_on_master_mirror`'
- printf ');\n'
- } | \
- mysql_run_query
-)
while true
do
@@ -104,6 +81,32 @@ if ! verbose_flock ${block_flag} 9; then
exit
fi
+execute_all_intentions
+
+# shellcheck disable=SC2016
+repos=$(
+ {
+ printf 'SELECT DISTINCT `repositories`.`name`'
+ printf ' FROM `repositories`'
+ printf ' WHERE `repositories`.`is_on_master_mirror`;\n'
+ } | \
+ mysql_run_query
+)
+# shellcheck disable=SC2016
+archs=$(
+ {
+ printf 'SELECT DISTINCT `architectures`.`name`'
+ printf ' FROM `architectures`'
+ printf ' WHERE EXISTS ('
+ printf 'SELECT 1'
+ printf ' FROM `repositories`'
+ printf ' WHERE `repositories`.`architecture`=`architectures`.`id`'
+ printf ' AND `repositories`.`is_on_master_mirror`'
+ printf ');\n'
+ } | \
+ mysql_run_query
+)
+
mysql_cleanup
finish() {
@@ -368,7 +371,8 @@ while [ $# -gt 0 ]; do
) || true
if [ -n "${errors}" ]; then
if [ ${silence} -le 1 ]; then
- printf '\nThe following packages in %s are missing a signature or vice versa:\n%s\n' \
+ printf '\nThe following packages in %s/%s are missing a signature or vice versa:\n%s\n' \
+ "${arch}" \
"${repo}" \
"${errors}" | \
tee -a "${tmp_dir}/messages" >&2
@@ -403,7 +407,8 @@ while [ $# -gt 0 ]; do
)
if [ -n "${errors}" ]; then
if [ ${silence} -le 1 ]; then
- printf '\nThe following packages in %s are missing from the database or vice versa:\n%s\n' \
+ printf '\nThe following packages in %s/%s are missing from the database or vice versa:\n%s\n' \
+ "${arch}" \
"${repo}" \
"${errors}" | \
tee -a "${tmp_dir}/messages" >&2
@@ -432,7 +437,8 @@ while [ $# -gt 0 ]; do
)
if [ -n "${errors}" ]; then
if [ ${silence} -le 1 ]; then
- printf '\nThe following packages in %s are missing from the file-database or vice versa:\n%s\n' \
+ printf '\nThe following packages in %s/%s are missing from the file-database or vice versa:\n%s\n' \
+ "${arch}" \
"${repo}" \
"${errors}" | \
tee -a "${tmp_dir}/messages" >&2
@@ -523,9 +529,9 @@ while [ $# -gt 0 ]; do
[ ! -s "${work_dir}/build-master-sanity" ]; then
# shellcheck disable=SC2119
{
- printf 'girls, my database is dirty again ...\n'
- printf 'dirty! girls, my database - so dirty :-(\n'
- printf 'girls, please have a look at my dirty database'
+ printf 'girls, Tasos, my database is dirty again ...\n'
+ printf 'dirty! girls, Tasos, my database - so dirty :-(\n'
+ printf 'girls, Tasos, please have a look at my dirty database\n'
} | \
shuf -n1 | \
irc_say
@@ -584,7 +590,9 @@ while [ $# -gt 0 ]; do
printf '"command=\\\"%s/bin/slave-build-connect ",' \
"${base_dir}"
printf '`build_slaves`.`name`,'
- printf '"\\\" ssh-rsa ",'
+ printf '"\\\" ",'
+ printf '`ssh_keys`.`type`,'
+ printf '" ",'
printf '`ssh_keys`.`fingerprint`'
printf ')'
printf ' FROM'
diff --git a/bin/seed-build-list b/bin/schedule-for-rebuild
index 3303416..6c9bfbd 100755
--- a/bin/seed-build-list
+++ b/bin/schedule-for-rebuild
@@ -2,12 +2,11 @@
# shellcheck disable=SC2119,SC2120
-# seed the build list from various sources
+# schedule selected packages for a rebuild
#
# This uses the following schedule:
-# - find scheduleworthy packages by pkgname/pkgbase (diff to mirror,
-# broken dependencies, explicite regex) and their architecture
-# - find pkgbases of those packages (ask upstream, if necessary)
+# - find scheduleworthy packages by pkgname/pkgbase (broken
+# dependencies, explicite regex) and their architecture
# - remove all ignored packages (seed-ignore, explicitely ignored,
# blacklist)
# - run mysql_generate_package_metadata on each of them once (ignoring
@@ -27,12 +26,12 @@
# shellcheck disable=SC2016
usage() {
>&2 echo ''
- >&2 echo 'seed-build-list [options]:'
- >&2 echo ' seed the build list from different sources'
+ >&2 echo 'schedule-for-rebuild [options]:'
+ >&2 echo ' schedule selected packages for a rebuild'
>&2 echo ''
>&2 echo 'possible options:'
>&2 echo ' -a|--auto:'
- >&2 echo ' Automatically reschedule packages which have run-time'
+ >&2 echo ' Automatically schedule packages which have run-time'
>&2 echo ' dependencies that are not available from any real'
>&2 echo ' repository and which cannot be replaced by another,'
>&2 echo ' less stable version of the same package.'
@@ -41,41 +40,37 @@ usage() {
>&2 echo ' -h|--help:'
>&2 echo ' Show this help and exit.'
>&2 echo ' -i|--ignore $pkgbase|$arch/$pkgbase:'
- >&2 echo ' Do not update the given package (for the given $arch).'
+ >&2 echo ' Never schedule the given package (for the given $arch).'
>&2 echo ' -j|--jostle'
>&2 echo ' Give new build assignments the highest priority.'
- >&2 echo ' -m|--mirror $url:'
- >&2 echo ' Schedule all packages, that are newer (this includes'
- >&2 echo ' packages currently unavailable on archlinux32) on the'
- >&2 echo ' given x86_64 mirror - except packages on the blacklist'
- >&2 echo ' or in conf/seed-ignore-packages.'
>&2 echo ' -n|--no-action:'
- >&2 echo ' Do not actually update build-list, just print it.'
+ >&2 echo ' Do not actually schedule anything, just print it.'
>&2 echo ' -p|--package $pkg_regex:'
- >&2 echo ' Reschedule packages with matching pkgname or pkgbase.'
- >&2 echo ' Note, that these packages must be known to the database.'
+ >&2 echo ' Schedule packages with matching pkgname or pkgbase.'
>&2 echo ' -s|--skip-arch $arch:'
- >&2 echo ' Ignore packages, that are outdated on $arch only (-a|-m).'
+ >&2 echo ' Ignore packages, that are outdated on $arch only (-a).'
+ >&2 echo ' -t|--interactive'
+ >&2 echo ' Ask which of the matching packages to schedule for rebuild.'
>&2 echo ' -w|--wait:'
>&2 echo ' Wait for lock if necessary.'
[ -z "$1" ] && exit 1 || exit "$1"
}
-tmp_dir=$(mktemp -d 'tmp.seed-build-list.XXXXXXXXXX' --tmpdir)
+tmp_dir=$(mktemp -d 'tmp.schedule-for-rebuild.XXXXXXXXXX' --tmpdir)
# shellcheck disable=SC2064
trap "rm -rf --one-file-system '${tmp_dir:?}'" EXIT
eval set -- "$(
- getopt -o afhi:jm:np:s:w \
+ getopt -o afhi:jnp:s:tw \
--long auto \
--long force \
--long help \
--long ignore: \
--long jostle \
- --long mirror: \
--long no-action \
--long package: \
--long skip-arch: \
+ --long interactive \
--long wait \
-n "$(basename "$0")" -- "$@" || \
echo usage
@@ -85,6 +80,7 @@ auto=false
ignore_mysql_generate_package_metadata_errors=false
jostle=false
update=true
+interactive=false
wait_for_lock='-n'
while true
@@ -112,11 +108,6 @@ do
-j|--jostle)
jostle=true
;;
- -m|--mirror)
- shift
- printf '%s\n' "$1" >> \
- "${tmp_dir}/mirrors"
- ;;
-n|--no-action)
update=false
;;
@@ -130,6 +121,9 @@ do
printf '%s\n' "$1" >> \
"${tmp_dir}/skip-archs"
;;
+ -t|--interactive)
+ interactive=true
+ ;;
-w|--wait)
wait_for_lock=''
;;
@@ -150,8 +144,7 @@ if [ $# -ne 0 ]; then
usage 1
fi
-if [ ! -s "${tmp_dir}/mirrors" ] && \
- [ ! -s "${tmp_dir}/package-regexes" ] && \
+if [ ! -s "${tmp_dir}/package-regexes" ] && \
! ${auto}; then
# nothing to do
>&2 echo 'No options given to do anything.'
@@ -160,9 +153,8 @@ if [ ! -s "${tmp_dir}/mirrors" ] && \
fi
if [ -s "${tmp_dir}/skip-archs" ] && \
- ! ${auto} && \
- [ ! -s "${tmp_dir}/mirrors" ]; then
- >&2 echo 'Invalid combination of options: -s|--skip-archs requires -m|--mirror or -a|--auto.'
+ ! ${auto}; then
+ >&2 echo 'Invalid combination of options: -s|--skip-archs requires -a|--auto.'
usage 2
exit 2
fi
@@ -184,25 +176,12 @@ if ${update}; then
fi
fi
-# shellcheck disable=SC2016
-repos=$(
- {
- printf 'SELECT DISTINCT `repositories`.`name`'
- printf ' FROM `repositories`'
- # shellcheck disable=SC2154
- printf ' WHERE `repositories`.`stability`=%s;\n' \
- "${repository_stability_ids__stable}"
- } | \
- mysql_run_query
- printf '%s\n' 'multilib'
-)
-
-if [ -r "${base_dir}/conf/seed-ignore-packages" ]; then
+if [ -r "${conf_dir}/seed-ignore-packages" ]; then
sed '
s@/@\t@
t
s/^/any\t/
- ' "${base_dir}/conf/seed-ignore-packages" >> \
+ ' "${conf_dir}/seed-ignore-packages" >> \
"${tmp_dir}/ignore-packages"
fi
@@ -223,87 +202,8 @@ for list in 'ignore-packages' 'blacklist'; do
| sponge "${tmp_dir}/${list}"
done
-# TODO: translate lib32-* packages instead of ignoring them for -m
-
touch "${tmp_dir}/skip-archs"
-# harvest pkgnames from mirror delta
-if [ -s "${tmp_dir}/mirrors" ]; then
- {
- # theirs
- while read -r mirror; do
- if [ -z "${mirror}" ]; then
- continue
- fi
- for repo in ${repos}; do
- curl -sS "${mirror}/${repo}/os/x86_64/${repo}.db.tar.gz" | \
- tar -Oxz --wildcards '*/desc' | \
- sed '
- /^%FILENAME%$/!d
- N
- s/^.*\n//
- /^lib32-/d
- s/^\(.*-\)x86_64\.pkg\.tar\.\(xz\|zst\)$/'"$(
- # shellcheck disable=SC2086,SC2154
- printf '%s\n' ${architectures} \
- | grep -vxF 'any' \
- | grep -vxFf "${tmp_dir}/skip-archs" \
- | sed '
- s/^.*$/\\1\0/
- ' \
- | sed '
- :a
- $! N
- $! ba
- s/\n/\\n/g
- '
- )"'/
- s/^\(.*-any\)\.pkg\.tar\.\(xz\|zst\)$/\1/
- ' | \
- sed '
- s/^\(.*\)-\([^-]\+-[^-]\+\)-\([^-]\+\)$/theirs \2 \3 \1/
- '
- done
- done < \
- "${tmp_dir}/mirrors"
- # ours
- # shellcheck disable=SC2016
- {
- printf 'SELECT '
- mysql_package_name_query
- printf ' FROM `binary_packages`'
- mysql_join_binary_packages_architectures
- printf ' LEFT'
- mysql_join_binary_packages_compressions
- mysql_join_binary_packages_binary_packages_in_repositories
- mysql_join_binary_packages_in_repositories_repositories
- printf ' WHERE `repositories`.`is_on_master_mirror`'
- printf ' OR `repositories`.`name`="build-list"'
- } | \
- mysql_run_query | \
- sed '
- s/^\(.*\)-\([^-]\+-[^-.]\+\)\(\.[^-.]\+\)\?-\([^-]\+\)\.pkg\.tar\.\(xz\|zst\)$/ours \2 \4 \1/
- s/^\(.* \)any\( \S\+\)$/\0\n\1i486\2\n\1i686\2\n\1pentium4\2/
- '
- } | \
- expand_version 2 | \
- sort -k3,4 -k2Vr,2 -k1,1 | \
- shrink_version 2 | \
- uniq -f2 | \
- sed -n '
- s/^theirs \(\S\+ \)//
- T
- p
- ' | \
- if [ -r "${tmp_dir}/ignore-packages" ]; then
- grep -vxFf "${tmp_dir}/ignore-packages"
- else
- cat
- fi | \
- sort -u >> \
- "${tmp_dir}/pkgnames"
-fi
-
# harvest from the package-regexes
if [ -s "${tmp_dir}/package-regexes" ]; then
# shellcheck disable=SC2016
@@ -312,77 +212,79 @@ if [ -s "${tmp_dir}/package-regexes" ]; then
printf 'LOAD DATA LOCAL INFILE "%s" INTO TABLE `names` (`name`);\n' \
"${tmp_dir}/package-regexes"
- printf 'SELECT DISTINCT "pkgbase",`package_sources`.`pkgbase`,`upstream_repositories`.`name`'
+ printf 'SELECT DISTINCT '
+ printf '"any",'
+ printf '`package_sources`.`pkgbase`,'
+ printf 'IF('
+ printf '`package_sources`.`uses_upstream`,'
+ printf '`package_sources`.`git_revision`,'
+ printf '"0000000000000000000000000000000000000000"'
+ printf '),'
+ printf 'IF('
+ printf '`package_sources`.`uses_modification`,'
+ printf '`package_sources`.`mod_git_revision`,'
+ printf '"0000000000000000000000000000000000000000"'
+ printf '),'
+ printf '`upstream_repositories`.`name`'
printf ' FROM `names`'
printf ' JOIN `package_sources`'
printf ' ON `package_sources`.`pkgbase` REGEXP `names`.`name`'
mysql_join_package_sources_upstream_repositories
printf ';\n'
- printf 'SELECT DISTINCT "pkgname",`binary_packages`.`pkgname`'
- printf ' FROM `names`'
- printf ' JOIN `binary_packages`'
- printf ' ON `binary_packages`.`pkgname` REGEXP `names`.`name`;\n'
+ printf 'SELECT DISTINCT '
+ printf '"any",'
+ printf '`package_sources`.`pkgbase`,'
+ printf 'IF('
+ printf '`package_sources`.`uses_upstream`,'
+ printf '`package_sources`.`git_revision`,'
+ printf '"0000000000000000000000000000000000000000"'
+ printf '),'
+ printf 'IF('
+ printf '`package_sources`.`uses_modification`,'
+ printf '`package_sources`.`mod_git_revision`,'
+ printf '"0000000000000000000000000000000000000000"'
+ printf '),'
+ printf '`upstream_repositories`.`name`'
+ printf ' FROM `binary_packages`'
+ mysql_join_binary_packages_build_assignments
+ mysql_join_build_assignments_package_sources
+ mysql_join_package_sources_upstream_repositories
+ printf ' JOIN `names`'
+ printf ' ON `binary_packages`.`pkgname` REGEXP `names`.`name`'
+ printf ' OR `package_sources`.`pkgbase` REGEXP `names`.`name`'
+ printf ' LEFT JOIN `versions`'
+ printf ' ON `versions`.`epoch`=`binary_packages`.`epoch`'
+ printf ' AND `versions`.`version`=`binary_packages`.`pkgver`'
+ printf ' WHERE NOT EXISTS ('
+ printf 'SELECT 1'
+ printf ' FROM `binary_packages` AS `newer_bp`'
+ printf ' JOIN `versions` AS `newer_v`'
+ printf ' ON `newer_v`.`epoch`=`newer_bp`.`epoch`'
+ printf ' AND `newer_v`.`version`=`newer_bp`.`pkgver`'
+ printf ' WHERE (`newer_v`.`order`>`versions`.`order`'
+ printf ' OR ('
+ printf '`newer_v`.`order`=`versions`.`order`'
+ printf ' AND `newer_bp`.`pkgrel`>`binary_packages`.`pkgrel`'
+ # sub_pkgrel does not need to be compared, as it is only
+ # relevant for binary_packages with the same build_assignment
+ printf ')'
+ printf ')'
+ printf ' AND `binary_packages`.`%s`=`newer_bp`.`%s`' \
+ 'pkgname' 'pkgname' \
+ 'architecture' 'architecture'
+ printf ');\n'
} | \
mysql_run_query | \
tr '\t' ' ' | \
- sed -n '
- /^pkgbase / {
- s/^\S\+ /any /
- w /dev/stdout
- d
- }
- /^pkgname / {
- s/^\S\+ /any /
- w /dev/stderr
- d
- }
- ' \
- >>"${tmp_dir}/pkgbases" \
- 2>>"${tmp_dir}/pkgnames"
+ tac | awk '!seen[$0]++' | tac \
+ >>"${tmp_dir}/pkgbases"
fi
-# shellcheck disable=SC2016
-{
- # create pkgbases to given pkgnames
- if [ -s "${tmp_dir}/pkgnames" ]; then
- printf 'CREATE TEMPORARY TABLE `pkgnames` ('
- printf '`architecture` VARCHAR(16),'
- printf '`pkgname` VARCHAR(64),'
- printf 'UNIQUE KEY `content`(`architecture`,`pkgname`)'
- printf ');\n'
- printf 'LOAD DATA LOCAL INFILE "%s" INTO TABLE `pkgnames` COLUMNS TERMINATED BY " " (`architecture`,`pkgname`);\n' \
- "${tmp_dir}/pkgnames"
-
- printf 'SELECT DISTINCT'
- printf ' "pkgbase",'
- printf '`pkgnames`.`architecture`,'
- printf '`package_sources`.`pkgbase`,'
- printf '`upstream_repositories`.`name`'
- printf ' FROM `pkgnames`'
- printf ' JOIN `binary_packages`'
- printf ' ON `binary_packages`.`pkgname`=`pkgnames`.`pkgname`'
- mysql_join_binary_packages_build_assignments
- mysql_join_build_assignments_package_sources
- mysql_join_package_sources_upstream_repositories
- printf ';\n'
-
- printf 'SELECT DISTINCT'
- printf ' "pkgname",'
- printf '`pkgnames`.`architecture`,'
- printf '`pkgnames`.`pkgname`'
- printf ' FROM `package_sources`'
- mysql_join_package_sources_upstream_repositories
- mysql_join_package_sources_build_assignments
- mysql_join_build_assignments_binary_packages
- printf ' RIGHT JOIN `pkgnames`'
- printf ' ON `pkgnames`.`pkgname`=`binary_packages`.`pkgname`'
- printf ' WHERE `package_sources`.`pkgbase` IS NULL;\n'
-
- printf 'DROP TEMPORARY TABLE `pkgnames`;\n'
- fi
- # auto-detect pkgbases
- if ${auto}; then
+# auto-detect pkgbases
+if ${auto}; then
+ # shellcheck disable=SC2016
+ {
printf 'CREATE TEMPORARY TABLE `relevant_archs`(`id` SMALLINT, PRIMARY KEY `id`(`id`));\n'
printf 'INSERT INTO `relevant_archs`(`id`)'
printf ' SELECT `architectures`.`id`'
@@ -485,7 +387,20 @@ fi
"${tmp_dir}/ignore-packages"
fi
- printf 'SELECT DISTINCT "pkgbase",`ba_a`.`name`,`package_sources`.`pkgbase`,`upstream_repositories`.`name`'
+ printf 'SELECT DISTINCT '
+ printf '`ba_a`.`name`,'
+ printf '`package_sources`.`pkgbase`,'
+ printf 'IF('
+ printf '`package_sources`.`uses_upstream`,'
+ printf '`package_sources`.`git_revision`,'
+ printf '"0000000000000000000000000000000000000000"'
+ printf '),'
+ printf 'IF('
+ printf '`package_sources`.`uses_modification`,'
+ printf '`package_sources`.`mod_git_revision`,'
+ printf '"0000000000000000000000000000000000000000"'
+ printf '),'
+ printf '`upstream_repositories`.`name`'
printf ' FROM `least_stable_bp`'
printf ' JOIN `binary_packages`'
printf ' ON `least_stable_bp`.`id`=`binary_packages`.`id`'
@@ -547,133 +462,48 @@ fi
printf 'DROP TEMPORARY TABLE `least_stable_bp%s`;\n' \
'' '_copy'
printf 'DROP TEMPORARY TABLE `ignore_packages`;\n'
- fi
-} | \
- mysql_run_query | \
- tr '\t' ' ' | \
- sed -n '
- /^pkgbase / {
- s/^\S\+ //
- w /dev/stderr
- d
- }
- /^pkgname / {
- s/^\S\+ //
- w /dev/stdout
- d
- }
- ' \
- 2>>"${tmp_dir}/pkgbases" \
- | sponge "${tmp_dir}/pkgnames"
-
-if [ ! -s "${tmp_dir}/pkgbases" ] && \
- [ ! -s "${tmp_dir}/pkgnames" ]; then
+ } \
+ | mysql_run_query \
+ | tr '\t' ' ' \
+ | tac | awk '!seen[$0]++' | tac \
+ >>"${tmp_dir}/pkgbases"
+fi
+
+if [ ! -s "${tmp_dir}/pkgbases" ]; then
>&2 echo 'No packages matched.'
exit
fi
-for s in "${tmp_dir}/pkgbases" "${tmp_dir}/pkgnames"; do
- if [ -s "${s}" ]; then
- sort -u "${s}" | \
- sponge "${s}"
- fi
-done
+tac "${tmp_dir}/pkgbases" | awk '!seen[$0]++' | tac \
+| sponge "${tmp_dir}/pkgbases"
-# pkgnames -> pkgbases (with help from upstream)
-if [ -s "${tmp_dir}/pkgnames" ]; then
- while read -r architecture pkgname; do
- content=$(
- curl -Ss 'https://www.archlinux.org/packages/search/json/?name='"${pkgname}" | \
- tr ',' '\n'
- )
- repo=$(
- printf '%s\n' "${content}" | \
- sed -n '
- s/^\s*"repo"\s*:\s*"//
- T
- s/".*$//
- T
- p
- '
- )
- pkgbase=$(
- printf '%s\n' "${content}" | \
- sed -n '
- s/^\s*"pkgbase"\s*:\s*"//
- T
- s/".*$//
- T
- p
- '
- )
- if [ -z "${pkgbase}" ] || [ -z "${repo}" ]; then
- printf '%s %s\n' "${architecture}" "${pkgname}"
- continue
- fi
- printf '%s %s %s\n' \
- "${architecture}" \
- "${pkgbase}" \
- "${repo}" >> \
- "${tmp_dir}/pkgbases"
- done < \
- "${tmp_dir}/pkgnames" | \
- sponge "${tmp_dir}/pkgnames"
-fi
+if ${interactive}; then
+ echo "Which packages to rebuild? (Comma separated; Empty means all)"
+ nl "${tmp_dir}/pkgbases"
+ read -p "Choice: " pkg_rebuild_choice
-if [ -s "${tmp_dir}/pkgnames" ]; then
- >&2 echo 'Could not find some packages upstream:'
- >&2 cat "${tmp_dir}/pkgnames"
- exit 2
+ if [ -n "$pkg_rebuild_choice" ]; then
+ readarray -td, pkg_rebuild_choice_array < <( printf '%s' "$pkg_rebuild_choice" | sed 's/\s//g;s/,\{2,\}/,/g' )
+ sed -i -n "$(printf "%sp;" "${pkg_rebuild_choice_array[@]}")" "${tmp_dir}/pkgbases"
+ fi
fi
-sort -u "${tmp_dir}/pkgbases" \
-| sort -k3,3 \
-| sponge "${tmp_dir}/pkgbases"
-
# get the current HEADs
-
-# shellcheck disable=SC2016
-{
- printf 'SELECT'
- printf ' `upstream_repositories`.`name`,'
- printf '`git_repositories`.`head`'
- printf ' FROM `upstream_repositories`'
- mysql_join_upstream_repositories_git_repositories
-} \
-| mysql_run_query \
-| tr '\t' ' ' \
-| sort -k1,1 \
-| join -1 3 -2 1 -o 1.1,1.2,1.3,2.2 "${tmp_dir}/pkgbases" - \
-| sponge "${tmp_dir}/pkgbases"
-
if ${update}; then
- cut -d' ' -f 2,3,4 "${tmp_dir}/pkgbases" \
- | sort -u \
- | while read -r pkgbase repo git_rev; do
+ cut -d' ' -f 2,3,4,5 "${tmp_dir}/pkgbases" \
+ | while read -r pkgbase git_rev git_mod_rev repo; do
success=false
# shellcheck disable=SC2154
- for gr_r in \
- "${git_rev}:${repo}" \
- "${repo_heads__packages}:core" \
- "${repo_heads__packages}:extra" \
- "${repo_heads__community}:community"; do
- printf '%s ' "${pkgbase}" "${gr_r%:*}" "${repo_heads__archlinux32}" "${gr_r#*:}" | \
- sed 's/ $/\n/'
- if mysql_generate_package_metadata "${repository_ids__any_build_list}" "${pkgbase}" "${gr_r%:*}" "${repo_heads__archlinux32}" "${gr_r#*:}"; then
- success=true
- break
- fi
- done
- if ! ${success} && \
+ printf '%s ' "${pkgbase}" "${git_rev}" "${git_mod_rev}" "${repo_heads__archlinux32}" "${repo}" \
+ | sed 's/ $/\n/'
+ if ! mysql_generate_package_metadata "${repository_ids__any_build_list}" "${pkgbase}" "${git_rev}" "${git_mod_rev}" "${repo}" && \
! ${ignore_mysql_generate_package_metadata_errors}; then
exit 2
fi
done
- cut -d' ' -f1 < \
- "${tmp_dir}/pkgbases" | \
- sort -u | \
- sponge "${tmp_dir}/pkgbases"
+ cut -d' ' -f2 "${tmp_dir}/pkgbases" \
+ | sponge "${tmp_dir}/pkgbases"
# shellcheck disable=SC2016
{
@@ -794,8 +624,8 @@ if ${update}; then
mysql_join_binary_packages_binary_packages_in_repositories 'j_bp' 'j_bpir'
)"' AND `j_bpir`.`repository`='"${repository_ids__any_build_list}" \
'`repositories`.`stability`='"${repository_stability_ids__forbidden}"
- } | \
- mysql_run_query
+ } \
+ | mysql_run_query
mysql_cleanup
@@ -804,8 +634,8 @@ if ${update}; then
mysql_find_build_assignment_loops
# remove duplicate binary_packages from "build-list"
- mysql_query_remove_old_binary_packages_from_build_list | \
- mysql_run_query
+ mysql_query_remove_old_binary_packages_from_build_list \
+ | mysql_run_query
else
cat "${tmp_dir}/pkgbases"
fi
diff --git a/bin/strict-bashism-check b/bin/strict-bashism-check
index 8e58e05..f1a8de6 100755
--- a/bin/strict-bashism-check
+++ b/bin/strict-bashism-check
@@ -8,6 +8,11 @@ else
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
+check_files=$(
+ git diff --cached --name-status "${against}" \
+ | cut -f2
+)
+
# If you want to allow non-ASCII filenames set this variable to true.
allownonascii=$(git config --bool hooks.allownonascii)
@@ -90,10 +95,14 @@ if command -v shellcheck >/dev/null 2>&1; then
find bin conf lib \
-type f \
-executable \
- -not -name 'opcode' \
- -not -name 'opcode_list' \
-not -name '.*' \
- -execdir shellcheck -x '{}' \; 2>&1
+ | grep -xF "${check_files}" \
+ | while read -r file; do
+ (
+ cd "${file%/*}" || exit $?
+ shellcheck -x "${file##*/}" 2>&1
+ )
+ done
)
if [ -n "${errors}" ]; then
diff --git a/bin/watch-build-logs b/bin/watch-build-logs
new file mode 100755
index 0000000..064dc85
--- /dev/null
+++ b/bin/watch-build-logs
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+trap 'echo ""; kill -- -$$' INT
+
+# shellcheck source=../lib/load-configuration
+. "${0%/*}/../lib/load-configuration"
+
+runtail() {
+ # tail will quit with follow=name when the file is deleted
+ # thus no manual cleanup is needed
+ tail --follow=name "$1" -n +1 2>/dev/null &
+}
+
+# Check if we're already building something, and if so, tail it before we wait for new files
+CURRENTLOG=$(printf '%s\n' "$work_dir/"tmp.build-packages.*/*.build-log | sort | tail -n 1)
+if [[ -f $CURRENTLOG ]]; then
+ runtail "$CURRENTLOG"
+fi
+
+inotifywait -P -r -m "$work_dir" -e create --include '(\.build-log$)|(tmp\.build-packages\.[a-zA-Z0-9]+$)' --format '%w%f' -q |
+ while read -r FILE; do
+ if [[ -z $FILE || -d $FILE ]]; then
+ continue
+ fi
+
+ runtail "$FILE"
+ done
diff --git a/conf/master.conf.example b/conf/master.conf.example
index 2234dfd..5cf9c90 100755
--- a/conf/master.conf.example
+++ b/conf/master.conf.example
@@ -3,7 +3,7 @@
# configurable variables used on the build master
# default values are given as comments
-# To change variables from their default, copy this file to common.conf,
+# To change variables from their default, copy this file to master.conf,
# uncomment and change the desired variables.
#repo_key='0xdeadbeef'
@@ -36,10 +36,12 @@
#mirror_refresh_trigger_urls=''
# command to access the mysql database
-#mysql_command='mysql buildmaster'
+#mysql_command='mariadb buildmaster'
#build_list_lock_file="${work_dir}/build-list.lock"
+#check_mirrors_lock_file="${work_dir}/check-mirrors.lock"
#harvest_commit_times_lock_file="${work_dir}/harvest-commit-times.lock"
+#intentions_lock_file="${work_dir}/intentions.lock"
#package_database_lock_file="${work_dir}/package-database.lock"
#sanity_check_lock_file="${work_dir}/sanity-check.lock"
#status_lock_file="${work_dir}/status.lock"
diff --git a/conf/slave.conf.example b/conf/slave.conf.example
index 3704e23..f378935 100755
--- a/conf/slave.conf.example
+++ b/conf/slave.conf.example
@@ -3,7 +3,7 @@
# configurable variables used on the build slaves
# default values are given as comments
-# To change variables from their default, copy this file to common.conf,
+# To change variables from their default, copy this file to slave.conf,
# uncomment and change the desired variables.
#master_build_server="buildmaster.archlinux32.org"
@@ -13,9 +13,7 @@
#package_key='0x15eebadc0de'
-#repo_names='packages community archlinux32'
-#repo_paths__packages="${work_dir}/repos/packages"
-#repo_paths__community="${work_dir}/repos/community"
+#repo_names='archlinux32'
#repo_paths__archlinux32="${work_dir}/repos/packages32"
# mirror of sources, identified (solely) by hash
@@ -24,7 +22,7 @@
# what should be tried in what order to somehow repair a broken build
#straws_that_might_repair_failing_builds=$(
# printf '%s\n' \
-# ':mirrored_source:mirrored_source_by_hash:' \
+# ':mirrored_source_by_hash:' \
# ':clean_chroot:haskell_without_check:' \
# ':with_build_support:' \
# ':with_build_support:clean_chroot:'
diff --git a/lib/common-functions b/lib/common-functions
index 8c263ab..f13b1f2 100755
--- a/lib/common-functions
+++ b/lib/common-functions
@@ -9,109 +9,6 @@ if [ -z "${base_dir}" ]; then
. '../lib/load-configuration'
fi
-# find_pkgbuilds package repository git_repository git_revision mod_git_revision
-# find the PKGBUILD and modification of $package from $repository
-# sets $PKGBUILD and $PKGBUILD_mod
-
-find_pkgbuilds() {
-
- local package="$1"
- local repository="$2"
- local git_repository="$3"
- local git_revision="$4"
- local mod_git_revision="$5"
-
- local repo_path
- eval 'repo_path="${repo_paths__'"${git_repository}"'}"'
-
- if [ ! "$(git -C "${repo_path}" cat-file -t "${git_revision}" 2> /dev/null)" = "commit" ]; then
- >&2 printf 'Repository %s does not contain commit %s, but it should.\n' \
- "${git_repository}" \
- "${git_revision}"
- return 2
- fi
-
- if [ ! "$(git -C "${repo_paths__archlinux32}" cat-file -t "${mod_git_revision}" 2> /dev/null)" = "commit" ]; then
- >&2 printf 'Repository archlinux32 does not contain commit %s, but it should.\n' \
- "${mod_git_revision}"
- return 2
- fi
-
- PKGBUILD=$(
- git -C "${repo_path}" archive "${git_revision}" -- "${package}/repos/${repository}-*/PKGBUILD" 2> /dev/null | \
- tar -t 2> /dev/null | \
- grep -- '/PKGBUILD$' | \
- grep -v -- '-i686/PKGBUILD$' | \
- grep -v -- '[-/]\(staging\|testing\|unstable\)-[^/]\+/PKGBUILD$' | \
- sort | \
- tail -n1
- )
-
- PKGBUILD_mod=$(
- git -C "${repo_paths__archlinux32}" archive "${mod_git_revision}" -- "${repository}/${package}/PKGBUILD" 2> /dev/null | \
- tar -t "${repository}/${package}/PKGBUILD" 2> /dev/null
- ) || true
-
- if [ -z "${PKGBUILD}" ] && \
- [ -z "${PKGBUILD_mod}" ]; then
- >&2 printf 'Neither PKGBUILD nor modification of PKGBUILD found for package "%s" from %s (%s), revisions %s and %s.\n' \
- "${package}" \
- "${repository}" \
- "${git_repository}" \
- "${git_revision}" \
- "${mod_git_revision}"
- return 1
- fi
-
-}
-
-# find_repository_with_commit commit
-# find the repository which has $commit
-
-find_repository_with_commit() {
-
- local repository
-
- for repository in ${repo_names}; do
- # shellcheck disable=SC2016
- if [ "$(eval git -C "$(printf '"${repo_paths__%s}"' "${repository}")" cat-file -t '"$1"' 2> /dev/null)" = "commit" ]; then
- echo "${repository}"
- return 0
- fi
- done
- >&2 printf 'find_repository_with_commit: Cannot find repository with commit "%s"\n' "$1"
- return 2
-
-}
-
-# find_git_repository_to_package_repository repository
-# find the git repository which tracks the package repository $repository
-
-find_git_repository_to_package_repository() {
-
- local repository
-
- repository=$(
- # shellcheck disable=SC2016
- {
- printf 'SELECT `git_repositories`.`name`'
- printf ' FROM `git_repositories`'
- mysql_join_git_repositories_upstream_repositories
- printf ' WHERE `upstream_repositories`.`name`=from_base64("%s");\n' \
- "$(printf '%s' "$1" | base64 -w0)"
- } | \
- mysql_run_query
- )
- if [ -z "${repository}" ]; then
- >&2 echo "can't find git repository with package repository '$1'"
- exit 1
- else
- echo "${repository}"
- return 0
- fi
-
-}
-
# ls_master_mirror $path
# list content of $path on the master mirror (via rsync)
@@ -122,7 +19,8 @@ ls_master_mirror() {
${master_mirror_rsync_command} \
"${master_mirror_rsync_directory}/${path}/" | \
grep -v '\s\.$' | \
- awk '{print $5}'
+ awk '{print $5}' | \
+ grep -v build-support-manual
}
@@ -277,8 +175,8 @@ remove_old_package_versions() {
# wait between minimum and minimum+diff seconds (diff defaults to 30)
wait_some_time() {
- local minimum=$1
- local diff=$2
+ local minimum="$1"
+ local diff="$2"
local random
if [ -z "${diff}" ]; then
@@ -304,29 +202,27 @@ str_to_regex() {
'
}
-# make_source_info $package $repository $git_revision $mod_git_revision $output
-# create .SRCINFO from PKGBUILD within git repositories, output to $output
-
-make_source_info() {
+make_source_info_using_cache() {
local package="$1"
local repository="$2"
local git_revision="$3"
local mod_git_revision="$4"
local output="$5"
- local git_repo
- local PKGBUILD
- local PKGBUILD_mod
+ curl -LSs "https://buildmaster.archlinux32.org/pkginfo/${package}=${repository}=${git_revision}=${mod_git_revision}" \
+ >"${output}"
+}
- if ! git_repo=$(find_repository_with_commit "${git_revision}") || \
- [ -z "${git_repo}" ]; then
- return 1
- fi
+# make_source_info $package $repository $git_revision $mod_git_revision $output
+# create .SRCINFO from PKGBUILD within git repositories, output to $output
+make_source_info() {
- if ! find_pkgbuilds "${package}" "${repository}" "${git_repo}" "${git_revision}" "${mod_git_revision}"; then
- return 1
- fi
+ local package="$1"
+ local repository="$2"
+ local git_revision="$3"
+ local mod_git_revision="$4"
+ local output="$5"
( # the new shell is intentional
@@ -336,14 +232,10 @@ make_source_info() {
tmp_dir=$(mktemp -d "${work_dir}/tmp.make_source_info.XXXXXX")
trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT
- extract_source_directory "${git_repo}" "${git_revision}" "${mod_git_revision}" "${tmp_dir}" '0'
+ extract_source_directory "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${tmp_dir}" '0'
{
cd "${tmp_dir}"
- # some additional info
- printf 'upstream_git_repository = %s\n' "${git_repo}"
- printf 'PKGBUILD = %s\n' "${PKGBUILD}"
- printf 'PKGBUILD_mod = %s\n' "${PKGBUILD_mod}"
makepkg --printsrcinfo
cd ..
} > \
@@ -358,6 +250,7 @@ make_source_info() {
p
' "${tmp_dir}/SRCINFO"
)"
+ # shellcheck disable=SC2031
sed -i '
/^pkgname = /! b
/= gtk-doc$/ b
@@ -447,7 +340,7 @@ mangle_pkgbuild() {
/^arch=[^#]*any/!{
/^arch=(/s/(/(i486 i686 pentium4 /
}
- s/^\(\s*pkgrel=\)['"'"'"]\?\([0-9.]\+\)['"'"'"]\?\s*\(#.*\)\?$/\1"\2'"${sub_pkgrel}"'"/
+ s/^\(\s*pkgrel=\)['"'"'"]\?\([0-9]\+\)\(\.[0-9.]*\)\?['"'"'"]\?\s*\(#.*\)\?$/\1"\2'"${sub_pkgrel:-\\3}"'"/
' "${PKGBUILD}"
# shellcheck disable=SC2016
@@ -520,42 +413,105 @@ find_package_repository_to_package() {
"${git_repository}" \
"${git_commit}"
>&2 printf '%s\n' "${repo}"
- return 1
+ >&2 printf 'trying to filter based on git\n'
+
+ if ! repo=$(
+ # shellcheck disable=SC2016
+ {
+ printf 'SELECT `upstream_repositories`.`name`'
+ printf ' FROM `upstream_repositories`'
+ mysql_join_upstream_repositories_git_repositories
+ printf ' WHERE `git_repositories`.`name`=from_base64("%s")' \
+ "$(
+ printf '%s' "${git_repository}" \
+ | base64 -w0
+ )"
+ } | \
+ mysql_run_query 'unimportant' | \
+ grep -xF "${repo}"
+ ); then
+ >&2 printf 'find_package_repository_to_package %s %s %s: no repo found after filtering\n' \
+ "${package}" \
+ "${git_repository}" \
+ "${git_commit}"
+ return 1
+ fi
+
+ if [ "$(
+ echo "${repo}" | \
+ wc -l
+ )" -ne 1 ]; then
+ >&2 printf 'find_package_repository_to_package %s %s %s: still multiple repos found after filter:\n' \
+ "${package}" \
+ "${git_repository}" \
+ "${git_commit}"
+ >&2 printf '%s\n' "${repo}"
+ return 1
+ fi
fi
echo "${repo}"
}
-# extract_source_directory $git_repo $rev $mod_rev $output $sub_pkgrel
+# extract_source_directory $pkgbase $repository $revision $mod_revision $output $sub_pkgrel
# extract files found in the svn/git source directories
-# $PKGBUILD and $PKGBUILD_mod are expected to be set correctly
extract_source_directory() {
- local git_repo="$1"
- # shellcheck disable=SC2034
- local rev="$2"
- local mod_rev="$3"
- local output="$4"
- local sub_pkgrel="$5"
-
- if [ -n "${PKGBUILD}" ]; then
- eval 'git -C "${repo_paths__'"${git_repo}"'}" archive "${rev}" -- "${PKGBUILD%/*}"' | \
- tar -x --strip-components=3 -C "${output}"
- printf '\n' >> \
- "${output}/PKGBUILD"
+ local pkgbase="$1"
+ local repository="$2"
+ local revision="$3"
+ local mod_revision="$4"
+ local output="$5"
+ local sub_pkgrel="$6"
+ local res
+ local tmptarfile
+ local pkgtarfile
+
+ if [ -n "${revision}" ] \
+ && [ "${revision}" != '0000000000000000000000000000000000000000' ] \
+ && [ "${repository}" != 'build-support' ]; then
+ local pkgbase_translated
+ pkgbase_translated=$(gitlab_project_name_to_path "${pkgbase}")
+ tmptarfile=$(mktemp "${tmp_dir}"'/tmp.upstream-package.XXXXXXXXXX')
+ url="https://buildmaster.archlinux32.org/upstream-packages/${pkgbase_translated}-${revision}.tar.gz"
+ for i in {1..4}; do
+ curl -o "$tmptarfile" -fLSs "${url}"
+ res=$?
+ if [ "$res" -ne 0 ]; then
+ >&2 printf 'Download upstream-package "%s" from upstream via buildmaster cache failed. Curl exit code was %s.' \
+ "${url}" \
+ "${res}"
+ return 1
+ fi
+
+ # If zero bytes, try again
+ if [ -s "${tmptarfile}" ]; then
+ break
+ fi
+
+ sleep 5
+ done
+ if [ -f "${tmptarfile}" ]; then
+ tar -xz -f "${tmptarfile}" --strip-components=1 -C "${output}" -- "${pkgbase_translated}-${revision}"
+ printf '\n' >> \
+ "${output}/PKGBUILD"
+ else
+ >&2 echo 'No upstream tarfile, assuming the package is a local one and has a full PKGBUILD not a diff-PKGBUILD.'
+ fi
fi
- if [ -n "${PKGBUILD_mod}" ]; then
- git -C "${repo_paths__archlinux32}" archive "${mod_rev}" -- "${PKGBUILD_mod%/*}" | \
- tar -x --overwrite --exclude 'PKGBUILD' --strip-components=2 -C "${output}" 2> /dev/null || \
- true
- git -C "${repo_paths__archlinux32}" archive "${mod_rev}" -- "${PKGBUILD_mod}" | \
- tar -Ox "${PKGBUILD_mod}" >> \
- "${output}/PKGBUILD"
- printf '\n' >> \
- "${output}/PKGBUILD"
+ if [ -n "${mod_revision}" ] \
+ && [ "${mod_revision}" != '0000000000000000000000000000000000000000' ]; then
+ git -C "${repo_paths__archlinux32}" archive "${mod_revision}" -- "${repository}/${pkgbase}" \
+ |tar -x --overwrite --exclude 'PKGBUILD' --strip-components=2 -C "${output}" 2> /dev/null \
+ ||true
+ git -C "${repo_paths__archlinux32}" archive "${mod_revision}" -- "${repository}/${pkgbase}/PKGBUILD" \
+ |tar -Ox "${repository}/${pkgbase}/PKGBUILD" \
+ >>"${output}/PKGBUILD"
+ printf '\n' \
+ >>"${output}/PKGBUILD"
fi
# we do not want to update pkgver, so we just undefine it
@@ -570,7 +526,6 @@ extract_source_directory() {
# we don't want write permissions on the PKGBUILD - otherwise pkgver()
# will change the version! (**HACK**)
chmod oga-w "${output}/PKGBUILD"
-
}
# download_sources_by_hash
@@ -950,31 +905,6 @@ failsafe_rsync() {
return 1
}
-# apply_trunk_patch source_dir diff_source_dir
-# apply a patch between diff_source_dir/PKGBUILD and
-# diff_source_dir/../../trunk/PKGBUILD onto source_dir/PKGBUILD
-apply_trunk_patch() {
- local source_dir="$1"
- local diff_source_dir="$2"
- if [ -z "${diff_source_dir}" ]; then
- # no diff_source_dir => no action
- return
- fi
- chmod +w "${source_dir}/PKGBUILD"
- diff -u3 "${diff_source_dir}/PKGBUILD" "${diff_source_dir}/../../trunk/PKGBUILD" \
- | sed '
- 1,2 s#^\(\(+++\|---\)\s\+\)\S\+/\(PKGBUILD\s.*\)$#\1\3#
- ' \
- | patch -p0 "${source_dir}/PKGBUILD"
- chmod -w "${source_dir}/PKGBUILD"
- find "${diff_source_dir}/../../trunk/" \
- -mindepth 1 \
- -maxdepth 1 \
- -not -name 'PKGBUILD' \
- -type f \
- -exec cp '{}' "${source_dir}" \;
-}
-
# update_blocked_packages_count
# update the count how many packages are blocked by a build assignment
update_blocked_packages_count() {
@@ -1129,4 +1059,29 @@ expand_blacklist_architectures() {
sort -k1,1 \
| join -1 1 -2 1 -o 1.2,2.2 "$1" - \
| sort -u
+ rm "$1"
+}
+
+# taken verbatim from upstream archlinux:
+# https://gitlab.archlinux.org/archlinux/devtools/-/raw/master/src/lib/api/gitlab.sh
+
+# Convert arbitrary project names to GitLab valid path names.
+#
+# GitLab has several limitations on project and group names and also maintains
+# a list of reserved keywords as documented on their docs.
+# https://docs.gitlab.com/ee/user/reserved_names.html
+#
+# 1. replace single '+' between word boundaries with '-'
+# 2. replace any other '+' with literal 'plus'
+# 3. replace any special chars other than '_', '-' and '.' with '-'
+# 4. replace consecutive '_-' chars with a single '-'
+# 5. replace 'tree' with 'unix-tree' due to GitLab reserved keyword
+gitlab_project_name_to_path() {
+ local name=$1
+ printf "%s" "${name}" \
+ | sed -E 's/([a-zA-Z0-9]+)\+([a-zA-Z]+)/\1-\2/g' \
+ | sed -E 's/\+/plus/g' \
+ | sed -E 's/[^a-zA-Z0-9_\-\.]/-/g' \
+ | sed -E 's/[_\-]{2,}/-/g' \
+ | sed -E 's/^tree$/unix-tree/g'
}
diff --git a/lib/intentions-queue b/lib/intentions-queue
index 802d1ca..f244e1b 100755
--- a/lib/intentions-queue
+++ b/lib/intentions-queue
@@ -40,6 +40,7 @@ intent_something() {
# shellcheck disable=SC2016
printf '%s\n' \
'#!/bin/sh' \
+ '# called by '"${0}" \
'[ -n "${base_dir}" ] || . '"${base_dir}"'/lib/load-configuration'
cat
printf 'rm "%s"\n' "${intentions_directory}/intention.${next_number}"
@@ -91,7 +92,15 @@ intentions_left() {
# execute_all_intentions
# executes all intentions
execute_all_intentions() {
+ exec 6> "${intentions_lock_file}"
+ if ! verbose_flock 6; then
+ >&2 echo 'someone already executes intentions - no need to schedule a second run'
+ return
+ fi
+
while intentions_left -n; do
execute_intention
done
+
+ flock -u 6
}
diff --git a/lib/load-configuration b/lib/load-configuration
index 4c825f1..e7af638 100755
--- a/lib/load-configuration
+++ b/lib/load-configuration
@@ -73,9 +73,7 @@ fi
if ${i_am_the_master}; then
releng_directory="${work_dir}/repos/releng"
else
- repo_names='packages community archlinux32'
- repo_paths__packages="${work_dir}/repos/packages"
- repo_paths__community="${work_dir}/repos/community"
+ repo_names='archlinux32'
repo_paths__archlinux32="${work_dir}/repos/packages32"
fi
@@ -101,7 +99,7 @@ source_by_hash_mirror='https://sources.archlinux32.org/'
# what should be tried in what order to somehow repair a broken build
straws_that_might_repair_failing_builds=$(
printf '%s\n' \
- ':mirrored_source:mirrored_source_by_hash:' \
+ ':mirrored_source_by_hash:' \
':clean_chroot:haskell_without_check:' \
':with_build_support:' \
':with_build_support:clean_chroot:'
@@ -126,7 +124,7 @@ mirror_update_command=''
mirror_refresh_trigger_urls=''
# command to access the mysql database
-mysql_command='mysql buildmaster'
+mysql_command='mariadb buildmaster'
# how long should packages be in [community-testing]/[testing] before
# automatically being marked as tested
@@ -143,21 +141,23 @@ fi
# possibly pull in custom modifications
-if [ -r "${base_dir}/conf/common.conf" ]; then
+conf_dir="${CONFIG_DIR:-${base_dir}/conf}"
+
+if [ -r "${conf_dir}/common.conf" ]; then
# shellcheck source=/dev/null
- . "${base_dir}/conf/common.conf"
+ . "${conf_dir}/common.conf"
fi
if ${i_am_the_master} && \
- [ -r "${base_dir}/conf/master.conf" ]; then
+ [ -r "${conf_dir}/master.conf" ]; then
# shellcheck source=/dev/null
- . "${base_dir}/conf/master.conf"
+ . "${conf_dir}/master.conf"
fi
if ! ${i_am_the_master} && \
- [ -r "${base_dir}/conf/slave.conf" ]; then
+ [ -r "${conf_dir}/slave.conf" ]; then
# shellcheck source=../conf/slave.conf.example
- . "${base_dir}/conf/slave.conf"
+ . "${conf_dir}/slave.conf"
fi
# check / set up environment
@@ -166,10 +166,18 @@ if [ -z "${build_list_lock_file}" ]; then
build_list_lock_file="${work_dir}/build-list.lock"
fi
+if [ -z "${check_mirrors_lock_file}" ]; then
+ check_mirrors_lock_file="${work_dir}/check-mirrors.lock"
+fi
+
if [ -z "${harvest_commit_times_lock_file}" ]; then
harvest_commit_times_lock_file="${work_dir}/harvest-commit-times.lock"
fi
+if [ -z "${intentions_lock_file}" ]; then
+ intentions_lock_file="${work_dir}/intentions.lock"
+fi
+
if [ -z "${package_database_lock_file}" ]; then
package_database_lock_file="${work_dir}/package-database.lock"
fi
@@ -212,8 +220,12 @@ for repo in ${repo_names} 'releng'; do
'releng')
repo_source='git@git.archlinux32.org:archlinux32/releng.git'
;;
+ 'state')
+ repo_source='https://gitlab.archlinux.org/archlinux/packaging/state.git'
+ ;;
*)
- repo_source="https://github.com/archlinux/svntogit-${repo}.git"
+ >&2 printf 'unknown repository "%s"\n' "${repo}"
+ exit 1
;;
esac
git clone --mirror "${repo_source}" "${repo_path}"
diff --git a/lib/mysql-functions b/lib/mysql-functions
index af2c3ba..d58a7f5 100755
--- a/lib/mysql-functions
+++ b/lib/mysql-functions
@@ -33,6 +33,7 @@ mysql_run_query() {
local file
local files
local number
+ local trial
file_name_extra=''
if [ "$1" = 'unimportant' ]; then
@@ -46,10 +47,19 @@ mysql_run_query() {
query_stdin=$(mktemp "${work_dir}/tmp.mysql-functions.${file_name_extra}query.$(date +'%Y-%m-%dT%T').XXXXXX.stdin")
query_stdout="${query_stdin%.stdin}.stdout"
query_stderr="${query_stdin%.stdin}.stderr"
- cat > "${query_stdin}"
- for _ in $(seq 10); do
+ {
+ printf -- '-- called by %s\n' "$0"
+ if printf '%s\n' "$0" \
+ | grep -qF intention; then
+ sed '
+ s@^@-- : @
+ ' "$0"
+ fi
+ cat
+ } > "${query_stdin}"
+ for trial in $(seq 15); do
if [ -f "${query_stdout}" ]; then
- wait_some_time 10 10
+ wait_some_time "$((20*trial))" "$((20*trial))"
fi
if ${mysql_command} -N --raw --batch "$@" \
< "${query_stdin}" \
@@ -147,15 +157,15 @@ mysql_add_package_source() {
local repo
local upstream_package_repository_id
- if grep -qx 'PKGBUILD_mod = \S\+' "${srcinfo_file}"; then
- uses_modification=1
- else
+ if [ "${mod_git_revision}" = '0000000000000000000000000000000000000000' ]; then
uses_modification=0
- fi
- if grep -qx 'PKGBUILD = \S\+' "${srcinfo_file}"; then
- uses_upstream=1
else
+ uses_modification=1
+ fi
+ if [ "${git_revision}" = '0000000000000000000000000000000000000000' ]; then
uses_upstream=0
+ else
+ uses_upstream=1
fi
upstream_package_repository_id=$(
@@ -231,7 +241,7 @@ mysql_generate_package_metadata() {
temp_dir=$(mktemp -d 'tmp.mysql-functions.mysql_generate_package_metadata.XXXXXXXXXX' --tmpdir)
trap 'rm -rf --one-file-system "${temp_dir}"' EXIT
- if ! make_source_info "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${temp_dir}/SRCINFO"; then
+ if ! make_source_info_using_cache "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${temp_dir}/SRCINFO"; then
>&2 printf '"make_source_info %s %s %s %s %s" failed.\n' "${package}" "${repository}" "${git_revision}" "${mod_git_revision}" "${temp_dir}/SRCINFO"
exit 2
fi
@@ -255,6 +265,7 @@ mysql_generate_package_metadata() {
)
if [ -z "${pkgbase}" ]; then
>&2 printf '"make_source_info" did not return a "pkgbase" - eh, what?\n'
+ >&2 sed 's@.*@>\0<@' "${temp_dir}/SRCINFO"
exit 2
fi
@@ -702,6 +713,16 @@ mysql_sanity_check() {
mysql_join_binary_packages_in_repositories_repositories
printf ' WHERE `repositories`.`is_on_master_mirror`'
printf ' AND `binary_packages`.`sha512sum` IS NULL;\n'
+ printf 'SELECT DISTINCT CONCAT("non-virtual binary-package without signature: ",'
+ mysql_package_name_query
+ printf ') FROM `binary_packages`'
+ mysql_join_binary_packages_architectures
+ printf ' LEFT'
+ mysql_join_binary_packages_compressions
+ mysql_join_binary_packages_binary_packages_in_repositories
+ mysql_join_binary_packages_in_repositories_repositories
+ printf ' WHERE `repositories`.`is_on_master_mirror`'
+ printf ' AND `binary_packages`.`signing_key` IS NULL;\n'
} | \
mysql_run_query | \
sed '
@@ -1266,6 +1287,18 @@ mysql_query_select_pkgbase_and_revision() {
mysql_join_package_sources_upstream_repositories
}
+# mysql_package_version_query [binary_packages]
+# print a mysql query of the full version of a package
+
+mysql_package_version_query() {
+ local bp_name="${1:-binary_packages}"
+ printf 'CONCAT('
+ printf 'IF(`%s`.`epoch`=0,"",CONCAT(`%s`.`epoch`,":")),' "${bp_name}" "${bp_name}"
+ printf '`%s`.`pkgver`,"-",' "${bp_name}"
+ printf '`%s`.`pkgrel`' "${bp_name}"
+ printf ')'
+}
+
# mysql_package_name_query [binary_packages] [architectures] [compressions]
# print a mysql query of the full name of a package file
@@ -1371,9 +1404,7 @@ for link in \
\
'ssh_keys:owner:persons' \
\
- 'ssh_log:build_slave:build_slaves' \
- \
- 'upstream_repositories:git_repository:git_repositories'; do
+ 'ssh_log:build_slave:build_slaves'; do
# A join for these cannot be done, because it's not clear on what to join:
# 'repository_stability_relations:more_stable:repository_stabilities'
# 'repository_stability_relations:less_stable:repository_stabilities'
@@ -1745,20 +1776,24 @@ mysql_query_ordering_correct() {
# active build slaves
mysql_determine_majority_build_slave_architecture_id() {
{
- printf 'SELECT'
- printf ' COUNT(DISTINCT `ssh_log`.`id`) AS `count`,'
- printf '`architectures`.`id`'
- printf ' FROM `ssh_log`'
- printf ' JOIN `architectures`'
- printf ' ON `ssh_log`.`parameters`=CONCAT(`architectures`.`name`," ")'
- printf ' WHERE `action`="get-assignment"'
- printf ' AND `ssh_log`.`date`>ADDTIME(NOW(),"-1 00:00:00")'
- printf ' GROUP BY `ssh_log`.`parameters`'
- printf ' ORDER BY `count` DESC'
- printf ' LIMIT 1'
+ {
+ printf 'SELECT'
+ printf ' COUNT(DISTINCT `ssh_log`.`id`) AS `count`,'
+ printf '`architectures`.`id`'
+ printf ' FROM `ssh_log`'
+ printf ' JOIN `architectures`'
+ printf ' ON `ssh_log`.`parameters`=CONCAT(`architectures`.`name`," ")'
+ printf ' WHERE `action`="get-assignment"'
+ printf ' AND `ssh_log`.`date`>ADDTIME(NOW(),"-1 00:00:00")'
+ printf ' GROUP BY `ssh_log`.`parameters`'
+ printf ' ORDER BY `count` DESC'
+ printf ' LIMIT 1'
+ } | \
+ mysql_run_query | \
+ cut -f2
+ echo '-1'
} | \
- mysql_run_query | \
- cut -f2
+ head -n1
}
# mysql_query_delete_packages $package_sources_condition $repositories_condition
diff --git a/lib/opcode_list b/lib/opcode_list
deleted file mode 100755
index 213321f..0000000
--- a/lib/opcode_list
+++ /dev/null
@@ -1,1706 +0,0 @@
-
-# Willamette MMX instructions (SSE2 SIMD Integer Instructions)
-Opcode_SSE2="${Opcode_SSE2} movd movdb movdw movdl movdq"
-Opcode_SSE2="${Opcode_SSE2} movdqa"
-Opcode_SSE2="${Opcode_SSE2} movdqu"
-Opcode_SSE2="${Opcode_SSE2} movdq2q"
-Opcode_X64_SSE2="${Opcode_X64_SSE2} movq"
-Opcode_SSE2="${Opcode_SSE2} movq2dq"
-Opcode_SSE2="${Opcode_SSE2} packsswb packsswbb packsswbw packsswbl packsswbq"
-Opcode_SSE2="${Opcode_SSE2} packssdw packssdwb packssdww packssdwl packssdwq"
-Opcode_SSE2="${Opcode_SSE2} packuswb packuswbb packuswbw packuswbl packuswbq"
-Opcode_SSE2="${Opcode_SSE2} paddb paddbb paddbw paddbl paddbq"
-Opcode_SSE2="${Opcode_SSE2} paddw paddwb paddww paddwl paddwq"
-Opcode_SSE2="${Opcode_SSE2} paddd padddb padddw padddl padddq"
-Opcode_SSE2="${Opcode_SSE2} paddq paddqb paddqw paddql paddqq"
-Opcode_SSE2="${Opcode_SSE2} paddsb paddsbb paddsbw paddsbl paddsbq"
-Opcode_SSE2="${Opcode_SSE2} paddsw paddswb paddsww paddswl paddswq"
-Opcode_SSE2="${Opcode_SSE2} paddusb paddusbb paddusbw paddusbl paddusbq"
-Opcode_SSE2="${Opcode_SSE2} paddusw padduswb paddusww padduswl padduswq"
-Opcode_SSE2="${Opcode_SSE2} pand pandb pandw pandl pandq"
-Opcode_SSE2="${Opcode_SSE2} pandn pandnb pandnw pandnl pandnq"
-Opcode_SSE2="${Opcode_SSE2} pavgb pavgbb pavgbw pavgbl pavgbq"
-Opcode_SSE2="${Opcode_SSE2} pavgw pavgwb pavgww pavgwl pavgwq"
-Opcode_SSE2="${Opcode_SSE2} pcmpeqb pcmpeqbb pcmpeqbw pcmpeqbl pcmpeqbq"
-Opcode_SSE2="${Opcode_SSE2} pcmpeqw pcmpeqwb pcmpeqww pcmpeqwl pcmpeqwq"
-Opcode_SSE2="${Opcode_SSE2} pcmpeqd pcmpeqdb pcmpeqdw pcmpeqdl pcmpeqdq"
-Opcode_SSE2="${Opcode_SSE2} pcmpgtb pcmpgtbb pcmpgtbw pcmpgtbl pcmpgtbq"
-Opcode_SSE2="${Opcode_SSE2} pcmpgtw pcmpgtwb pcmpgtww pcmpgtwl pcmpgtwq"
-Opcode_SSE2="${Opcode_SSE2} pcmpgtd pcmpgtdb pcmpgtdw pcmpgtdl pcmpgtdq"
-Opcode_SSE2="${Opcode_SSE2} pextrw pextrwb pextrww pextrwl pextrwq"
-Opcode_SSE2="${Opcode_SSE2} pinsrw pinsrwb pinsrww pinsrwl pinsrwq"
-Opcode_SSE2="${Opcode_SSE2} pmaddwd pmaddwdb pmaddwdw pmaddwdl pmaddwdq"
-Opcode_SSE2="${Opcode_SSE2} pmaxsw pmaxswb pmaxsww pmaxswl pmaxswq"
-Opcode_SSE2="${Opcode_SSE2} pmaxub pmaxubb pmaxubw pmaxubl pmaxubq"
-Opcode_SSE2="${Opcode_SSE2} pminsw pminswb pminsww pminswl pminswq"
-Opcode_SSE2="${Opcode_SSE2} pminub pminubb pminubw pminubl pminubq"
-Opcode_SSE2="${Opcode_SSE2} pmovmskb"
-Opcode_SSE2="${Opcode_SSE2} pmulhuw pmulhuwb pmulhuww pmulhuwl pmulhuwq"
-Opcode_SSE2="${Opcode_SSE2} pmulhw pmulhwb pmulhww pmulhwl pmulhwq"
-Opcode_SSE2="${Opcode_SSE2} pmullw pmullwb pmullww pmullwl pmullwq"
-Opcode_SSE2="${Opcode_SSE2} pmuludq pmuludqb pmuludqw pmuludql pmuludqq"
-Opcode_SSE2="${Opcode_SSE2} por porb porw porl porq"
-Opcode_SSE2="${Opcode_SSE2} psadbw psadbwb psadbww psadbwl psadbwq"
-Opcode_WILLAMETTE_Base="${Opcode_WILLAMETTE_Base} pshufd pshufdb pshufdw pshufdl pshufdq"
-Opcode_WILLAMETTE_Base="${Opcode_WILLAMETTE_Base} pshufhw pshufhwb pshufhww pshufhwl pshufhwq"
-Opcode_WILLAMETTE_Base="${Opcode_WILLAMETTE_Base} pshuflw pshuflwb pshuflww pshuflwl pshuflwq"
-Opcode_SSE2="${Opcode_SSE2} pslldq pslldqb pslldqw pslldql pslldqq"
-Opcode_SSE2="${Opcode_SSE2} psllw psllwb psllww psllwl psllwq"
-Opcode_SSE2="${Opcode_SSE2} pslld pslldb pslldw pslldl pslldq"
-Opcode_SSE2="${Opcode_SSE2} psllq psllqb psllqw psllql psllqq"
-Opcode_SSE2="${Opcode_SSE2} psraw psrawb psraww psrawl psrawq"
-Opcode_SSE2="${Opcode_SSE2} psrad psradb psradw psradl psradq"
-Opcode_SSE2="${Opcode_SSE2} psrldq psrldqb psrldqw psrldql psrldqq"
-Opcode_SSE2="${Opcode_SSE2} psrlw psrlwb psrlww psrlwl psrlwq"
-Opcode_SSE2="${Opcode_SSE2} psrld psrldb psrldw psrldl psrldq"
-Opcode_SSE2="${Opcode_SSE2} psrlq psrlqb psrlqw psrlql psrlqq"
-Opcode_SSE2="${Opcode_SSE2} psubb psubbb psubbw psubbl psubbq"
-Opcode_SSE2="${Opcode_SSE2} psubw psubwb psubww psubwl psubwq"
-Opcode_SSE2="${Opcode_SSE2} psubd psubdb psubdw psubdl psubdq"
-Opcode_SSE2="${Opcode_SSE2} psubq psubqb psubqw psubql psubqq"
-Opcode_SSE2="${Opcode_SSE2} psubsb psubsbb psubsbw psubsbl psubsbq"
-Opcode_SSE2="${Opcode_SSE2} psubsw psubswb psubsww psubswl psubswq"
-Opcode_SSE2="${Opcode_SSE2} psubusb psubusbb psubusbw psubusbl psubusbq"
-Opcode_SSE2="${Opcode_SSE2} psubusw psubuswb psubusww psubuswl psubuswq"
-Opcode_SSE2="${Opcode_SSE2} punpckhbw punpckhbwb punpckhbww punpckhbwl punpckhbwq"
-Opcode_SSE2="${Opcode_SSE2} punpckhwd punpckhwdb punpckhwdw punpckhwdl punpckhwdq"
-Opcode_SSE2="${Opcode_SSE2} punpckhdq punpckhdqb punpckhdqw punpckhdql punpckhdqq"
-Opcode_SSE2="${Opcode_SSE2} punpckhqdq punpckhqdqb punpckhqdqw punpckhqdql punpckhqdqq"
-Opcode_SSE2="${Opcode_SSE2} punpcklbw punpcklbwb punpcklbww punpcklbwl punpcklbwq"
-Opcode_SSE2="${Opcode_SSE2} punpcklwd punpcklwdb punpcklwdw punpcklwdl punpcklwdq"
-Opcode_SSE2="${Opcode_SSE2} punpckldq punpckldqb punpckldqw punpckldql punpckldqq"
-Opcode_SSE2="${Opcode_SSE2} punpcklqdq punpcklqdqb punpcklqdqw punpcklqdql punpcklqdqq"
-Opcode_SSE2="${Opcode_SSE2} pxor pxorb pxorw pxorl pxorq"
-
-# Nehalem New Instructions (SSE4.2)
-Opcode_X64_SSE42="${Opcode_X64_SSE42} crc32"
-Opcode_SSE42="${Opcode_SSE42} pcmpestri pcmpestrib pcmpestriw pcmpestril pcmpestriq"
-Opcode_SSE42="${Opcode_SSE42} pcmpestrm pcmpestrmb pcmpestrmw pcmpestrml pcmpestrmq"
-Opcode_SSE42="${Opcode_SSE42} pcmpistri pcmpistrib pcmpistriw pcmpistril pcmpistriq"
-Opcode_SSE42="${Opcode_SSE42} pcmpistrm pcmpistrmb pcmpistrmw pcmpistrml pcmpistrmq"
-Opcode_SSE42="${Opcode_SSE42} pcmpgtq pcmpgtqb pcmpgtqw pcmpgtql pcmpgtqq"
-Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} popcnt"
-
-# Intel new instructions in ???
-Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} movbe movbeb movbew movbel movbeq"
-
-# AMD XOP, FMA4 and CVT16 instructions (SSE5)
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vcvtph2ps vcvtph2psb vcvtph2psw vcvtph2psl vcvtph2psq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vcvtps2ph vcvtps2phb vcvtps2phw vcvtps2phl vcvtps2phq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddpd vfmaddpdb vfmaddpdw vfmaddpdl vfmaddpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddps vfmaddpsb vfmaddpsw vfmaddpsl vfmaddpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddsd vfmaddsdb vfmaddsdw vfmaddsdl vfmaddsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddss vfmaddssb vfmaddssw vfmaddssl vfmaddssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddsubpd vfmaddsubpdb vfmaddsubpdw vfmaddsubpdl vfmaddsubpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmaddsubps vfmaddsubpsb vfmaddsubpsw vfmaddsubpsl vfmaddsubpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubaddpd vfmsubaddpdb vfmsubaddpdw vfmsubaddpdl vfmsubaddpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubaddps vfmsubaddpsb vfmsubaddpsw vfmsubaddpsl vfmsubaddpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubpd vfmsubpdb vfmsubpdw vfmsubpdl vfmsubpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubps vfmsubpsb vfmsubpsw vfmsubpsl vfmsubpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubsd vfmsubsdb vfmsubsdw vfmsubsdl vfmsubsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfmsubss vfmsubssb vfmsubssw vfmsubssl vfmsubssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmaddpd vfnmaddpdb vfnmaddpdw vfnmaddpdl vfnmaddpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmaddps vfnmaddpsb vfnmaddpsw vfnmaddpsl vfnmaddpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmaddsd vfnmaddsdb vfnmaddsdw vfnmaddsdl vfnmaddsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmaddss vfnmaddssb vfnmaddssw vfnmaddssl vfnmaddssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmsubpd vfnmsubpdb vfnmsubpdw vfnmsubpdl vfnmsubpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmsubps vfnmsubpsb vfnmsubpsw vfnmsubpsl vfnmsubpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmsubsd vfnmsubsdb vfnmsubsdw vfnmsubsdl vfnmsubsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfnmsubss vfnmsubssb vfnmsubssw vfnmsubssl vfnmsubssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfrczpd vfrczpdb vfrczpdw vfrczpdl vfrczpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfrczps vfrczpsb vfrczpsw vfrczpsl vfrczpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfrczsd vfrczsdb vfrczsdw vfrczsdl vfrczsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vfrczss vfrczssb vfrczssw vfrczssl vfrczssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcmov vpcmovb vpcmovw vpcmovl vpcmovq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomb vpcombb vpcombw vpcombl vpcombq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomd vpcomdb vpcomdw vpcomdl vpcomdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomq vpcomqb vpcomqw vpcomql vpcomqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomub vpcomubb vpcomubw vpcomubl vpcomubq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomud vpcomudb vpcomudw vpcomudl vpcomudq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomuq vpcomuqb vpcomuqw vpcomuql vpcomuqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomuw vpcomuwb vpcomuww vpcomuwl vpcomuwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpcomw vpcomwb vpcomww vpcomwl vpcomwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddbd vphaddbdb vphaddbdw vphaddbdl vphaddbdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddbq vphaddbqb vphaddbqw vphaddbql vphaddbqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddbw vphaddbwb vphaddbww vphaddbwl vphaddbwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphadddq vphadddqb vphadddqw vphadddql vphadddqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddubd vphaddubdb vphaddubdw vphaddubdl vphaddubdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddubq vphaddubqb vphaddubqw vphaddubql vphaddubqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddubwd vphaddubwdb vphaddubwdw vphaddubwdl vphaddubwdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddudq vphaddudqb vphaddudqw vphaddudql vphaddudqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphadduwd vphadduwdb vphadduwdw vphadduwdl vphadduwdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphadduwq vphadduwqb vphadduwqw vphadduwql vphadduwqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddwd vphaddwdb vphaddwdw vphaddwdl vphaddwdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphaddwq vphaddwqb vphaddwqw vphaddwql vphaddwqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphsubbw vphsubbwb vphsubbww vphsubbwl vphsubbwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphsubdq vphsubdqb vphsubdqw vphsubdql vphsubdqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vphsubwd vphsubwdb vphsubwdw vphsubwdl vphsubwdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacsdd vpmacsddb vpmacsddw vpmacsddl vpmacsddq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacsdqh vpmacsdqhb vpmacsdqhw vpmacsdqhl vpmacsdqhq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacsdql vpmacsdqlb vpmacsdqlw vpmacsdqll vpmacsdqlq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacssdd vpmacssddb vpmacssddw vpmacssddl vpmacssddq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacssdqh vpmacssdqhb vpmacssdqhw vpmacssdqhl vpmacssdqhq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacssdql vpmacssdqlb vpmacssdqlw vpmacssdqll vpmacssdqlq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacsswd vpmacsswdb vpmacsswdw vpmacsswdl vpmacsswdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacssww vpmacsswwb vpmacsswww vpmacsswwl vpmacsswwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacswd vpmacswdb vpmacswdw vpmacswdl vpmacswdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmacsww vpmacswwb vpmacswww vpmacswwl vpmacswwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmadcsswd vpmadcsswdb vpmadcsswdw vpmadcsswdl vpmadcsswdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpmadcswd vpmadcswdb vpmadcswdw vpmadcswdl vpmadcswdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpperm vppermb vppermw vpperml vppermq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vprotb vprotbb vprotbw vprotbl vprotbq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vprotd vprotdb vprotdw vprotdl vprotdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vprotq vprotqb vprotqw vprotql vprotqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vprotw vprotwb vprotww vprotwl vprotwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshab vpshabb vpshabw vpshabl vpshabq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshad vpshadb vpshadw vpshadl vpshadq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshaq vpshaqb vpshaqw vpshaql vpshaqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshaw vpshawb vpshaww vpshawl vpshawq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshlb vpshlbb vpshlbw vpshlbl vpshlbq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshld vpshldb vpshldw vpshldl vpshldq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshlq vpshlqb vpshlqw vpshlql vpshlqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} vpshlw vpshlwb vpshlww vpshlwl vpshlwq"
-
-# Generic memory operations
-Opcode_KATMAI_Base="${Opcode_KATMAI_Base} prefetchnta prefetchntab prefetchntaw prefetchntal prefetchntaq"
-Opcode_KATMAI_Base="${Opcode_KATMAI_Base} prefetcht0 prefetcht0b prefetcht0w prefetcht0l prefetcht0q"
-Opcode_KATMAI_Base="${Opcode_KATMAI_Base} prefetcht1 prefetcht1b prefetcht1w prefetcht1l prefetcht1q"
-Opcode_KATMAI_Base="${Opcode_KATMAI_Base} prefetcht2 prefetcht2b prefetcht2w prefetcht2l prefetcht2q"
-Opcode_KATMAI_Base="${Opcode_KATMAI_Base} sfence"
-
-# Tejas New Instructions (SSSE3)
-Opcode_SSSE3="${Opcode_SSSE3} pabsb pabsbb pabsbw pabsbl pabsbq"
-Opcode_SSSE3="${Opcode_SSSE3} pabsw pabswb pabsww pabswl pabswq"
-Opcode_SSSE3="${Opcode_SSSE3} pabsd pabsdb pabsdw pabsdl pabsdq"
-Opcode_SSSE3="${Opcode_SSSE3} palignr palignrb palignrw palignrl palignrq"
-Opcode_SSSE3="${Opcode_SSSE3} phaddw phaddwb phaddww phaddwl phaddwq"
-Opcode_SSSE3="${Opcode_SSSE3} phaddd phadddb phadddw phadddl phadddq"
-Opcode_SSSE3="${Opcode_SSSE3} phaddsw phaddswb phaddsww phaddswl phaddswq"
-Opcode_SSSE3="${Opcode_SSSE3} phsubw phsubwb phsubww phsubwl phsubwq"
-Opcode_SSSE3="${Opcode_SSSE3} phsubd phsubdb phsubdw phsubdl phsubdq"
-Opcode_SSSE3="${Opcode_SSSE3} phsubsw phsubswb phsubsww phsubswl phsubswq"
-Opcode_SSSE3="${Opcode_SSSE3} pmaddubsw pmaddubswb pmaddubsww pmaddubswl pmaddubswq"
-Opcode_SSSE3="${Opcode_SSSE3} pmulhrsw pmulhrswb pmulhrsww pmulhrswl pmulhrswq"
-Opcode_SSSE3="${Opcode_SSSE3} pshufb pshufbb pshufbw pshufbl pshufbq"
-Opcode_SSSE3="${Opcode_SSSE3} psignb psignbb psignbw psignbl psignbq"
-Opcode_SSSE3="${Opcode_SSSE3} psignw psignwb psignww psignwl psignwq"
-Opcode_SSSE3="${Opcode_SSSE3} psignd psigndb psigndw psigndl psigndq"
-
-# Intel Fused Multiply-Add instructions (FMA)
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd132ps vfmadd132psb vfmadd132psw vfmadd132psl vfmadd132psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd132pd vfmadd132pdb vfmadd132pdw vfmadd132pdl vfmadd132pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd312ps vfmadd312psb vfmadd312psw vfmadd312psl vfmadd312psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd312pd vfmadd312pdb vfmadd312pdw vfmadd312pdl vfmadd312pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd213ps vfmadd213psb vfmadd213psw vfmadd213psl vfmadd213psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd213pd vfmadd213pdb vfmadd213pdw vfmadd213pdl vfmadd213pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd123ps vfmadd123psb vfmadd123psw vfmadd123psl vfmadd123psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd123pd vfmadd123pdb vfmadd123pdw vfmadd123pdl vfmadd123pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd231ps vfmadd231psb vfmadd231psw vfmadd231psl vfmadd231psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd231pd vfmadd231pdb vfmadd231pdw vfmadd231pdl vfmadd231pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd321ps vfmadd321psb vfmadd321psw vfmadd321psl vfmadd321psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd321pd vfmadd321pdb vfmadd321pdw vfmadd321pdl vfmadd321pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub132ps vfmaddsub132psb vfmaddsub132psw vfmaddsub132psl vfmaddsub132psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub132pd vfmaddsub132pdb vfmaddsub132pdw vfmaddsub132pdl vfmaddsub132pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub312ps vfmaddsub312psb vfmaddsub312psw vfmaddsub312psl vfmaddsub312psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub312pd vfmaddsub312pdb vfmaddsub312pdw vfmaddsub312pdl vfmaddsub312pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub213ps vfmaddsub213psb vfmaddsub213psw vfmaddsub213psl vfmaddsub213psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub213pd vfmaddsub213pdb vfmaddsub213pdw vfmaddsub213pdl vfmaddsub213pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub123ps vfmaddsub123psb vfmaddsub123psw vfmaddsub123psl vfmaddsub123psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub123pd vfmaddsub123pdb vfmaddsub123pdw vfmaddsub123pdl vfmaddsub123pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub231ps vfmaddsub231psb vfmaddsub231psw vfmaddsub231psl vfmaddsub231psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub231pd vfmaddsub231pdb vfmaddsub231pdw vfmaddsub231pdl vfmaddsub231pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub321ps vfmaddsub321psb vfmaddsub321psw vfmaddsub321psl vfmaddsub321psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmaddsub321pd vfmaddsub321pdb vfmaddsub321pdw vfmaddsub321pdl vfmaddsub321pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub132ps vfmsub132psb vfmsub132psw vfmsub132psl vfmsub132psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub132pd vfmsub132pdb vfmsub132pdw vfmsub132pdl vfmsub132pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub312ps vfmsub312psb vfmsub312psw vfmsub312psl vfmsub312psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub312pd vfmsub312pdb vfmsub312pdw vfmsub312pdl vfmsub312pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub213ps vfmsub213psb vfmsub213psw vfmsub213psl vfmsub213psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub213pd vfmsub213pdb vfmsub213pdw vfmsub213pdl vfmsub213pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub123ps vfmsub123psb vfmsub123psw vfmsub123psl vfmsub123psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub123pd vfmsub123pdb vfmsub123pdw vfmsub123pdl vfmsub123pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub231ps vfmsub231psb vfmsub231psw vfmsub231psl vfmsub231psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub231pd vfmsub231pdb vfmsub231pdw vfmsub231pdl vfmsub231pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub321ps vfmsub321psb vfmsub321psw vfmsub321psl vfmsub321psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub321pd vfmsub321pdb vfmsub321pdw vfmsub321pdl vfmsub321pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd132ps vfmsubadd132psb vfmsubadd132psw vfmsubadd132psl vfmsubadd132psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd132pd vfmsubadd132pdb vfmsubadd132pdw vfmsubadd132pdl vfmsubadd132pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd312ps vfmsubadd312psb vfmsubadd312psw vfmsubadd312psl vfmsubadd312psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd312pd vfmsubadd312pdb vfmsubadd312pdw vfmsubadd312pdl vfmsubadd312pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd213ps vfmsubadd213psb vfmsubadd213psw vfmsubadd213psl vfmsubadd213psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd213pd vfmsubadd213pdb vfmsubadd213pdw vfmsubadd213pdl vfmsubadd213pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd123ps vfmsubadd123psb vfmsubadd123psw vfmsubadd123psl vfmsubadd123psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd123pd vfmsubadd123pdb vfmsubadd123pdw vfmsubadd123pdl vfmsubadd123pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd231ps vfmsubadd231psb vfmsubadd231psw vfmsubadd231psl vfmsubadd231psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd231pd vfmsubadd231pdb vfmsubadd231pdw vfmsubadd231pdl vfmsubadd231pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd321ps vfmsubadd321psb vfmsubadd321psw vfmsubadd321psl vfmsubadd321psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsubadd321pd vfmsubadd321pdb vfmsubadd321pdw vfmsubadd321pdl vfmsubadd321pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd132ps vfnmadd132psb vfnmadd132psw vfnmadd132psl vfnmadd132psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd132pd vfnmadd132pdb vfnmadd132pdw vfnmadd132pdl vfnmadd132pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd312ps vfnmadd312psb vfnmadd312psw vfnmadd312psl vfnmadd312psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd312pd vfnmadd312pdb vfnmadd312pdw vfnmadd312pdl vfnmadd312pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd213ps vfnmadd213psb vfnmadd213psw vfnmadd213psl vfnmadd213psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd213pd vfnmadd213pdb vfnmadd213pdw vfnmadd213pdl vfnmadd213pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd123ps vfnmadd123psb vfnmadd123psw vfnmadd123psl vfnmadd123psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd123pd vfnmadd123pdb vfnmadd123pdw vfnmadd123pdl vfnmadd123pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd231ps vfnmadd231psb vfnmadd231psw vfnmadd231psl vfnmadd231psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd231pd vfnmadd231pdb vfnmadd231pdw vfnmadd231pdl vfnmadd231pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd321ps vfnmadd321psb vfnmadd321psw vfnmadd321psl vfnmadd321psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd321pd vfnmadd321pdb vfnmadd321pdw vfnmadd321pdl vfnmadd321pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub132ps vfnmsub132psb vfnmsub132psw vfnmsub132psl vfnmsub132psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub132pd vfnmsub132pdb vfnmsub132pdw vfnmsub132pdl vfnmsub132pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub312ps vfnmsub312psb vfnmsub312psw vfnmsub312psl vfnmsub312psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub312pd vfnmsub312pdb vfnmsub312pdw vfnmsub312pdl vfnmsub312pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub213ps vfnmsub213psb vfnmsub213psw vfnmsub213psl vfnmsub213psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub213pd vfnmsub213pdb vfnmsub213pdw vfnmsub213pdl vfnmsub213pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub123ps vfnmsub123psb vfnmsub123psw vfnmsub123psl vfnmsub123psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub123pd vfnmsub123pdb vfnmsub123pdw vfnmsub123pdl vfnmsub123pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub231ps vfnmsub231psb vfnmsub231psw vfnmsub231psl vfnmsub231psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub231pd vfnmsub231pdb vfnmsub231pdw vfnmsub231pdl vfnmsub231pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub321ps vfnmsub321psb vfnmsub321psw vfnmsub321psl vfnmsub321psq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub321pd vfnmsub321pdb vfnmsub321pdw vfnmsub321pdl vfnmsub321pdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd132ss vfmadd132ssb vfmadd132ssw vfmadd132ssl vfmadd132ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd132sd vfmadd132sdb vfmadd132sdw vfmadd132sdl vfmadd132sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd312ss vfmadd312ssb vfmadd312ssw vfmadd312ssl vfmadd312ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd312sd vfmadd312sdb vfmadd312sdw vfmadd312sdl vfmadd312sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd213ss vfmadd213ssb vfmadd213ssw vfmadd213ssl vfmadd213ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd213sd vfmadd213sdb vfmadd213sdw vfmadd213sdl vfmadd213sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd123ss vfmadd123ssb vfmadd123ssw vfmadd123ssl vfmadd123ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd123sd vfmadd123sdb vfmadd123sdw vfmadd123sdl vfmadd123sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd231ss vfmadd231ssb vfmadd231ssw vfmadd231ssl vfmadd231ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd231sd vfmadd231sdb vfmadd231sdw vfmadd231sdl vfmadd231sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd321ss vfmadd321ssb vfmadd321ssw vfmadd321ssl vfmadd321ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmadd321sd vfmadd321sdb vfmadd321sdw vfmadd321sdl vfmadd321sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub132ss vfmsub132ssb vfmsub132ssw vfmsub132ssl vfmsub132ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub132sd vfmsub132sdb vfmsub132sdw vfmsub132sdl vfmsub132sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub312ss vfmsub312ssb vfmsub312ssw vfmsub312ssl vfmsub312ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub312sd vfmsub312sdb vfmsub312sdw vfmsub312sdl vfmsub312sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub213ss vfmsub213ssb vfmsub213ssw vfmsub213ssl vfmsub213ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub213sd vfmsub213sdb vfmsub213sdw vfmsub213sdl vfmsub213sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub123ss vfmsub123ssb vfmsub123ssw vfmsub123ssl vfmsub123ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub123sd vfmsub123sdb vfmsub123sdw vfmsub123sdl vfmsub123sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub231ss vfmsub231ssb vfmsub231ssw vfmsub231ssl vfmsub231ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub231sd vfmsub231sdb vfmsub231sdw vfmsub231sdl vfmsub231sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub321ss vfmsub321ssb vfmsub321ssw vfmsub321ssl vfmsub321ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfmsub321sd vfmsub321sdb vfmsub321sdw vfmsub321sdl vfmsub321sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd132ss vfnmadd132ssb vfnmadd132ssw vfnmadd132ssl vfnmadd132ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd132sd vfnmadd132sdb vfnmadd132sdw vfnmadd132sdl vfnmadd132sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd312ss vfnmadd312ssb vfnmadd312ssw vfnmadd312ssl vfnmadd312ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd312sd vfnmadd312sdb vfnmadd312sdw vfnmadd312sdl vfnmadd312sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd213ss vfnmadd213ssb vfnmadd213ssw vfnmadd213ssl vfnmadd213ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd213sd vfnmadd213sdb vfnmadd213sdw vfnmadd213sdl vfnmadd213sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd123ss vfnmadd123ssb vfnmadd123ssw vfnmadd123ssl vfnmadd123ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd123sd vfnmadd123sdb vfnmadd123sdw vfnmadd123sdl vfnmadd123sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd231ss vfnmadd231ssb vfnmadd231ssw vfnmadd231ssl vfnmadd231ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd231sd vfnmadd231sdb vfnmadd231sdw vfnmadd231sdl vfnmadd231sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd321ss vfnmadd321ssb vfnmadd321ssw vfnmadd321ssl vfnmadd321ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmadd321sd vfnmadd321sdb vfnmadd321sdw vfnmadd321sdl vfnmadd321sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub132ss vfnmsub132ssb vfnmsub132ssw vfnmsub132ssl vfnmsub132ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub132sd vfnmsub132sdb vfnmsub132sdw vfnmsub132sdl vfnmsub132sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub312ss vfnmsub312ssb vfnmsub312ssw vfnmsub312ssl vfnmsub312ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub312sd vfnmsub312sdb vfnmsub312sdw vfnmsub312sdl vfnmsub312sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub213ss vfnmsub213ssb vfnmsub213ssw vfnmsub213ssl vfnmsub213ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub213sd vfnmsub213sdb vfnmsub213sdw vfnmsub213sdl vfnmsub213sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub123ss vfnmsub123ssb vfnmsub123ssw vfnmsub123ssl vfnmsub123ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub123sd vfnmsub123sdb vfnmsub123sdw vfnmsub123sdl vfnmsub123sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub231ss vfnmsub231ssb vfnmsub231ssw vfnmsub231ssl vfnmsub231ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub231sd vfnmsub231sdb vfnmsub231sdw vfnmsub231sdl vfnmsub231sdq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub321ss vfnmsub321ssb vfnmsub321ssw vfnmsub321ssl vfnmsub321ssq"
-Opcode_FUTURE_FMA="${Opcode_FUTURE_FMA} vfnmsub321sd vfnmsub321sdb vfnmsub321sdw vfnmsub321sdl vfnmsub321sdq"
-
-# Willamette SSE2 Cacheability Instructions
-Opcode_SSE2="${Opcode_SSE2} maskmovdqu"
-Opcode_SSE2="${Opcode_SSE2} clflush clflushb clflushw clflushl clflushq"
-Opcode_SSE2="${Opcode_SSE2} movntdq movntdqb movntdqw movntdql movntdqq"
-Opcode_X64_Base="${Opcode_X64_Base} movnti movntib movntiw movntil movntiq"
-Opcode_SSE2="${Opcode_SSE2} movntpd movntpdb movntpdw movntpdl movntpdq"
-Opcode_SSE2="${Opcode_SSE2} lfence"
-Opcode_SSE2="${Opcode_SSE2} mfence"
-
-# Systematic names for the hinting nop instructions
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop0"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop1"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop2"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop3"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop4"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop5"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop6"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop7"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop8"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop9"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop10"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop11"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop12"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop13"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop14"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop15"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop16"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop17"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop18"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop19"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop20"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop21"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop22"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop23"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop24"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop25"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop26"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop27"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop28"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop29"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop30"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop31"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop32"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop33"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop34"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop35"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop36"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop37"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop38"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop39"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop40"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop41"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop42"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop43"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop44"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop45"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop46"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop47"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop48"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop49"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop50"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop51"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop52"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop53"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop54"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop55"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop56"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop57"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop58"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop59"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop60"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop61"
-Opcode_X64_Base="${Opcode_X64_Base} hint_nop62"
-
-# Geode (Cyrix) 3DNow! additions
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrcpv pfrcpvb pfrcpvw pfrcpvl pfrcpvq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrsqrtv pfrsqrtvb pfrsqrtvw pfrsqrtvl pfrsqrtvq"
-
-# XSAVE group (AVX and extended state)
-Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} xgetbv"
-Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} xsetbv"
-Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} xsave xsaveb xsavew xsavel xsaveq"
-Opcode_NEHALEM_Base="${Opcode_NEHALEM_Base} xrstor xrstorb xrstorw xrstorl xrstorq"
-
-# Conventional instructions
-Opcode_8086_Base="${Opcode_8086_Base} aaa"
-Opcode_8086_Base="${Opcode_8086_Base} aad aadb aadw aadl aadq"
-Opcode_8086_Base="${Opcode_8086_Base} aam aamb aamw aaml aamq"
-Opcode_8086_Base="${Opcode_8086_Base} aas"
-Opcode_386_Base="${Opcode_386_Base} adc adcb adcw adcl adcq"
-Opcode_386_Base="${Opcode_386_Base} add addb addw addl addq"
-Opcode_386_Base="${Opcode_386_Base} and andb andw andl andq"
-Opcode_286_Base="${Opcode_286_Base} arpl"
-Opcode_PENT_Base="${Opcode_PENT_Base} bb0_reset"
-Opcode_PENT_Base="${Opcode_PENT_Base} bb1_reset"
-Opcode_386_Base="${Opcode_386_Base} bound boundb boundw boundl boundq"
-Opcode_X64_Base="${Opcode_X64_Base} bsf"
-Opcode_X64_Base="${Opcode_X64_Base} bsr"
-Opcode_X64_Base="${Opcode_X64_Base} bswap"
-Opcode_X64_Base="${Opcode_X64_Base} bt btb btw btl btq"
-Opcode_X64_Base="${Opcode_X64_Base} btc btcb btcw btcl btcq"
-Opcode_X64_Base="${Opcode_X64_Base} btr btrb btrw btrl btrq"
-Opcode_X64_Base="${Opcode_X64_Base} bts btsb btsw btsl btsq"
-Opcode_X64_Base="${Opcode_X64_Base} call callb callw calll callq"
-Opcode_8086_Base="${Opcode_8086_Base} cbw"
-Opcode_386_Base="${Opcode_386_Base} cdq"
-Opcode_X64_Base="${Opcode_X64_Base} cdqe"
-Opcode_8086_Base="${Opcode_8086_Base} clc"
-Opcode_8086_Base="${Opcode_8086_Base} cld"
-Opcode_X64_Base="${Opcode_X64_Base} clgi"
-Opcode_8086_Base="${Opcode_8086_Base} cli"
-Opcode_286_Base="${Opcode_286_Base} clts"
-Opcode_8086_Base="${Opcode_8086_Base} cmc"
-Opcode_386_Base="${Opcode_386_Base} cmp cmpb cmpw cmpl cmpq"
-Opcode_8086_Base="${Opcode_8086_Base} cmpsb"
-Opcode_386_Base="${Opcode_386_Base} cmpsd"
-Opcode_X64_Base="${Opcode_X64_Base} cmpsq"
-Opcode_8086_Base="${Opcode_8086_Base} cmpsw"
-Opcode_X64_Base="${Opcode_X64_Base} cmpxchg"
-Opcode_486_Base="${Opcode_486_Base} cmpxchg486"
-Opcode_PENT_Base="${Opcode_PENT_Base} cmpxchg8b cmpxchg8bb cmpxchg8bw cmpxchg8bl cmpxchg8bq"
-Opcode_X64_Base="${Opcode_X64_Base} cmpxchg16b cmpxchg16bb cmpxchg16bw cmpxchg16bl cmpxchg16bq"
-Opcode_PENT_Base="${Opcode_PENT_Base} cpuid"
-Opcode_PENT_Base="${Opcode_PENT_Base} cpu_read"
-Opcode_PENT_Base="${Opcode_PENT_Base} cpu_write"
-Opcode_X64_Base="${Opcode_X64_Base} cqo"
-Opcode_8086_Base="${Opcode_8086_Base} cwd"
-Opcode_386_Base="${Opcode_386_Base} cwde"
-Opcode_8086_Base="${Opcode_8086_Base} daa"
-Opcode_8086_Base="${Opcode_8086_Base} das"
-Opcode_X64_Base="${Opcode_X64_Base} dec"
-Opcode_X64_Base="${Opcode_X64_Base} div"
-Opcode_P6_Base="${Opcode_P6_Base} dmint"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} emms"
-Opcode_186_Base="${Opcode_186_Base} enter enterb enterw enterl enterq"
-Opcode_8086_Base="${Opcode_8086_Base} equ"
-Opcode_8086_Base="${Opcode_8086_Base} f2xm1"
-Opcode_8086_Base="${Opcode_8086_Base} fabs"
-Opcode_8086_Base="${Opcode_8086_Base} fadd"
-Opcode_8086_Base="${Opcode_8086_Base} faddp"
-Opcode_8086_Base="${Opcode_8086_Base} fbld fbldb fbldw fbldl fbldq"
-Opcode_8086_Base="${Opcode_8086_Base} fbstp fbstpb fbstpw fbstpl fbstpq"
-Opcode_8086_Base="${Opcode_8086_Base} fchs"
-Opcode_8086_Base="${Opcode_8086_Base} fclex"
-Opcode_P6_Base="${Opcode_P6_Base} fcmovb"
-Opcode_P6_Base="${Opcode_P6_Base} fcmovbe"
-Opcode_P6_Base="${Opcode_P6_Base} fcmove"
-Opcode_P6_Base="${Opcode_P6_Base} fcmovnb"
-Opcode_P6_Base="${Opcode_P6_Base} fcmovnbe"
-Opcode_P6_Base="${Opcode_P6_Base} fcmovne"
-Opcode_P6_Base="${Opcode_P6_Base} fcmovnu"
-Opcode_P6_Base="${Opcode_P6_Base} fcmovu"
-Opcode_8086_Base="${Opcode_8086_Base} fcom"
-Opcode_P6_Base="${Opcode_P6_Base} fcomi"
-Opcode_P6_Base="${Opcode_P6_Base} fcomip"
-Opcode_8086_Base="${Opcode_8086_Base} fcomp"
-Opcode_8086_Base="${Opcode_8086_Base} fcompp"
-Opcode_386_Base="${Opcode_386_Base} fcos"
-Opcode_8086_Base="${Opcode_8086_Base} fdecstp"
-Opcode_8086_Base="${Opcode_8086_Base} fdisi"
-Opcode_8086_Base="${Opcode_8086_Base} fdiv"
-Opcode_8086_Base="${Opcode_8086_Base} fdivp"
-Opcode_8086_Base="${Opcode_8086_Base} fdivr"
-Opcode_8086_Base="${Opcode_8086_Base} fdivrp"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} femms"
-Opcode_8086_Base="${Opcode_8086_Base} feni"
-Opcode_8086_Base="${Opcode_8086_Base} ffree"
-Opcode_286_Base="${Opcode_286_Base} ffreep"
-Opcode_8086_Base="${Opcode_8086_Base} fiadd fiaddb fiaddw fiaddl fiaddq"
-Opcode_8086_Base="${Opcode_8086_Base} ficom ficomb ficomw ficoml ficomq"
-Opcode_8086_Base="${Opcode_8086_Base} ficomp ficompb ficompw ficompl ficompq"
-Opcode_8086_Base="${Opcode_8086_Base} fidiv fidivb fidivw fidivl fidivq"
-Opcode_8086_Base="${Opcode_8086_Base} fidivr fidivrb fidivrw fidivrl fidivrq"
-Opcode_8086_Base="${Opcode_8086_Base} fild fildb fildw fildl fildq"
-Opcode_8086_Base="${Opcode_8086_Base} fimul fimulb fimulw fimull fimulq"
-Opcode_8086_Base="${Opcode_8086_Base} fincstp"
-Opcode_8086_Base="${Opcode_8086_Base} finit"
-Opcode_8086_Base="${Opcode_8086_Base} fist fistb fistw fistl fistq"
-Opcode_8086_Base="${Opcode_8086_Base} fistp fistpb fistpw fistpl fistpq"
-Opcode_PRESCOTT_Base="${Opcode_PRESCOTT_Base} fisttp fisttpb fisttpw fisttpl fisttpq"
-Opcode_8086_Base="${Opcode_8086_Base} fisub fisubb fisubw fisubl fisubq"
-Opcode_8086_Base="${Opcode_8086_Base} fisubr fisubrb fisubrw fisubrl fisubrq"
-Opcode_8086_Base="${Opcode_8086_Base} fld"
-Opcode_8086_Base="${Opcode_8086_Base} fld1"
-Opcode_8086_Base="${Opcode_8086_Base} fldcw fldcwb fldcww fldcwl fldcwq"
-Opcode_8086_Base="${Opcode_8086_Base} fldenv fldenvb fldenvw fldenvl fldenvq"
-Opcode_8086_Base="${Opcode_8086_Base} fldl2e"
-Opcode_8086_Base="${Opcode_8086_Base} fldl2t"
-Opcode_8086_Base="${Opcode_8086_Base} fldlg2"
-Opcode_8086_Base="${Opcode_8086_Base} fldln2"
-Opcode_8086_Base="${Opcode_8086_Base} fldpi"
-Opcode_8086_Base="${Opcode_8086_Base} fldz"
-Opcode_8086_Base="${Opcode_8086_Base} fmul"
-Opcode_8086_Base="${Opcode_8086_Base} fmulp"
-Opcode_8086_Base="${Opcode_8086_Base} fnclex"
-Opcode_8086_Base="${Opcode_8086_Base} fndisi"
-Opcode_8086_Base="${Opcode_8086_Base} fneni"
-Opcode_8086_Base="${Opcode_8086_Base} fninit"
-Opcode_8086_Base="${Opcode_8086_Base} fnop"
-Opcode_8086_Base="${Opcode_8086_Base} fnsave fnsaveb fnsavew fnsavel fnsaveq"
-Opcode_8086_Base="${Opcode_8086_Base} fnstcw fnstcwb fnstcww fnstcwl fnstcwq"
-Opcode_8086_Base="${Opcode_8086_Base} fnstenv fnstenvb fnstenvw fnstenvl fnstenvq"
-Opcode_286_Base="${Opcode_286_Base} fnstsw"
-Opcode_8086_Base="${Opcode_8086_Base} fpatan"
-Opcode_8086_Base="${Opcode_8086_Base} fprem"
-Opcode_386_Base="${Opcode_386_Base} fprem1"
-Opcode_8086_Base="${Opcode_8086_Base} fptan"
-Opcode_8086_Base="${Opcode_8086_Base} frndint"
-Opcode_8086_Base="${Opcode_8086_Base} frstor frstorb frstorw frstorl frstorq"
-Opcode_8086_Base="${Opcode_8086_Base} fsave fsaveb fsavew fsavel fsaveq"
-Opcode_8086_Base="${Opcode_8086_Base} fscale"
-Opcode_286_Base="${Opcode_286_Base} fsetpm"
-Opcode_386_Base="${Opcode_386_Base} fsin"
-Opcode_386_Base="${Opcode_386_Base} fsincos"
-Opcode_8086_Base="${Opcode_8086_Base} fsqrt"
-Opcode_8086_Base="${Opcode_8086_Base} fst"
-Opcode_8086_Base="${Opcode_8086_Base} fstcw fstcwb fstcww fstcwl fstcwq"
-Opcode_8086_Base="${Opcode_8086_Base} fstenv fstenvb fstenvw fstenvl fstenvq"
-Opcode_8086_Base="${Opcode_8086_Base} fstp"
-Opcode_286_Base="${Opcode_286_Base} fstsw"
-Opcode_8086_Base="${Opcode_8086_Base} fsub"
-Opcode_8086_Base="${Opcode_8086_Base} fsubp"
-Opcode_8086_Base="${Opcode_8086_Base} fsubr"
-Opcode_8086_Base="${Opcode_8086_Base} fsubrp"
-Opcode_8086_Base="${Opcode_8086_Base} ftst"
-Opcode_386_Base="${Opcode_386_Base} fucom"
-Opcode_P6_Base="${Opcode_P6_Base} fucomi"
-Opcode_P6_Base="${Opcode_P6_Base} fucomip"
-Opcode_386_Base="${Opcode_386_Base} fucomp"
-Opcode_386_Base="${Opcode_386_Base} fucompp"
-Opcode_8086_Base="${Opcode_8086_Base} fxam"
-Opcode_8086_Base="${Opcode_8086_Base} fxch"
-Opcode_8086_Base="${Opcode_8086_Base} fxtract"
-Opcode_8086_Base="${Opcode_8086_Base} fyl2x"
-Opcode_8086_Base="${Opcode_8086_Base} fyl2xp1"
-Opcode_8086_Base="${Opcode_8086_Base} hlt"
-Opcode_386_Base="${Opcode_386_Base} ibts"
-Opcode_386_Base="${Opcode_386_Base} icebp"
-Opcode_X64_Base="${Opcode_X64_Base} idiv"
-Opcode_X64_Base="${Opcode_X64_Base} imul imulb imulw imull imulq"
-Opcode_386_Base="${Opcode_386_Base} in"
-Opcode_X64_Base="${Opcode_X64_Base} inc incb incw incl incq"
-Opcode_Base="${Opcode_Base} incbin"
-Opcode_186_Base="${Opcode_186_Base} insb"
-Opcode_386_Base="${Opcode_386_Base} insd"
-Opcode_186_Base="${Opcode_186_Base} insw"
-Opcode_8086_Base="${Opcode_8086_Base} int intb intw intl intq"
-Opcode_386_Base="${Opcode_386_Base} int01"
-Opcode_386_Base="${Opcode_386_Base} int1"
-Opcode_8086_Base="${Opcode_8086_Base} int03"
-Opcode_8086_Base="${Opcode_8086_Base} int3"
-Opcode_8086_Base="${Opcode_8086_Base} into"
-Opcode_486_Base="${Opcode_486_Base} invd"
-Opcode_486_Base="${Opcode_486_Base} invlpg invlpgb invlpgw invlpgl invlpgq"
-Opcode_X86_64_Base="${Opcode_X86_64_Base} invlpga"
-Opcode_8086_Base="${Opcode_8086_Base} iret"
-Opcode_386_Base="${Opcode_386_Base} iretd"
-Opcode_X64_Base="${Opcode_X64_Base} iretq"
-Opcode_8086_Base="${Opcode_8086_Base} iretw"
-Opcode_8086_Base="${Opcode_8086_Base} jcxz jcxzb jcxzw jcxzl jcxzq"
-Opcode_386_Base="${Opcode_386_Base} jecxz jecxzb jecxzw jecxzl jecxzq"
-Opcode_X64_Base="${Opcode_X64_Base} jrcxz jrcxzb jrcxzw jrcxzl jrcxzq"
-Opcode_X64_Base="${Opcode_X64_Base} jmp jmpb jmpw jmpl jmpq"
-Opcode_IA64_Base="${Opcode_IA64_Base} jmpe"
-Opcode_8086_Base="${Opcode_8086_Base} lahf"
-Opcode_X64_Base="${Opcode_X64_Base} lar"
-Opcode_386_Base="${Opcode_386_Base} lds ldsb ldsw ldsl ldsq"
-Opcode_X64_Base="${Opcode_X64_Base} lea leab leaw leal leaq"
-Opcode_186_Base="${Opcode_186_Base} leave"
-Opcode_386_Base="${Opcode_386_Base} les lesb lesw lesl lesq"
-Opcode_X64_Base="${Opcode_X64_Base} lfence"
-Opcode_386_Base="${Opcode_386_Base} lfs lfsb lfsw lfsl lfsq"
-Opcode_286_Base="${Opcode_286_Base} lgdt lgdtb lgdtw lgdtl lgdtq"
-Opcode_386_Base="${Opcode_386_Base} lgs lgsb lgsw lgsl lgsq"
-Opcode_286_Base="${Opcode_286_Base} lidt lidtb lidtw lidtl lidtq"
-Opcode_286_Base="${Opcode_286_Base} lldt"
-Opcode_286_Base="${Opcode_286_Base} lmsw"
-Opcode_386_Base="${Opcode_386_Base} loadall"
-Opcode_286_Base="${Opcode_286_Base} loadall286"
-Opcode_8086_Base="${Opcode_8086_Base} lodsb"
-Opcode_386_Base="${Opcode_386_Base} lodsd"
-Opcode_X64_Base="${Opcode_X64_Base} lodsq"
-Opcode_8086_Base="${Opcode_8086_Base} lodsw"
-Opcode_X64_Base="${Opcode_X64_Base} loop loopb loopw loopl loopq"
-Opcode_X64_Base="${Opcode_X64_Base} loope loopeb loopew loopel loopeq"
-Opcode_X64_Base="${Opcode_X64_Base} loopne loopneb loopnew loopnel loopneq"
-Opcode_X64_Base="${Opcode_X64_Base} loopnz loopnzb loopnzw loopnzl loopnzq"
-Opcode_X64_Base="${Opcode_X64_Base} loopz loopzb loopzw loopzl loopzq"
-Opcode_X64_Base="${Opcode_X64_Base} lsl"
-Opcode_386_Base="${Opcode_386_Base} lss lssb lssw lssl lssq"
-Opcode_286_Base="${Opcode_286_Base} ltr"
-Opcode_X64_Base="${Opcode_X64_Base} mfence"
-Opcode_PRESCOTT_Base="${Opcode_PRESCOTT_Base} monitor"
-Opcode_386_Base="${Opcode_386_Base} mov movb movw movl movq"
-Opcode_X64_SSE="${Opcode_X64_SSE} movd"
-Opcode_X64_MMX="${Opcode_X64_MMX} movq"
-Opcode_8086_Base="${Opcode_8086_Base} movsb"
-Opcode_386_Base="${Opcode_386_Base} movsd"
-Opcode_X64_Base="${Opcode_X64_Base} movsq"
-Opcode_8086_Base="${Opcode_8086_Base} movsw"
-Opcode_X64_Base="${Opcode_X64_Base} movsx"
-Opcode_X64_Base="${Opcode_X64_Base} movsxd"
-Opcode_X64_Base="${Opcode_X64_Base} movsx"
-Opcode_X64_Base="${Opcode_X64_Base} movzx"
-Opcode_X64_Base="${Opcode_X64_Base} mul"
-Opcode_PRESCOTT_Base="${Opcode_PRESCOTT_Base} mwait"
-Opcode_X64_Base="${Opcode_X64_Base} neg"
-Opcode_X64_Base="${Opcode_X64_Base} nop"
-Opcode_X64_Base="${Opcode_X64_Base} not"
-Opcode_386_Base="${Opcode_386_Base} or orb orw orl orq"
-Opcode_386_Base="${Opcode_386_Base} out"
-Opcode_186_Base="${Opcode_186_Base} outsb"
-Opcode_386_Base="${Opcode_386_Base} outsd"
-Opcode_186_Base="${Opcode_186_Base} outsw"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} packssdw packssdwb packssdww packssdwl packssdwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} packsswb packsswbb packsswbw packsswbl packsswbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} packuswb packuswbb packuswbw packuswbl packuswbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} paddb paddbb paddbw paddbl paddbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} paddd padddb padddw padddl padddq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} paddsb paddsbb paddsbw paddsbl paddsbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} paddsiw paddsiwb paddsiww paddsiwl paddsiwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} paddsw paddswb paddsww paddswl paddswq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} paddusb paddusbb paddusbw paddusbl paddusbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} paddusw padduswb paddusww padduswl padduswq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} paddw paddwb paddww paddwl paddwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pand pandb pandw pandl pandq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pandn pandnb pandnw pandnl pandnq"
-Opcode_8086_Base="${Opcode_8086_Base} pause"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} paveb pavebb pavebw pavebl pavebq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pavgusb pavgusbb pavgusbw pavgusbl pavgusbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpeqb pcmpeqbb pcmpeqbw pcmpeqbl pcmpeqbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpeqd pcmpeqdb pcmpeqdw pcmpeqdl pcmpeqdq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpeqw pcmpeqwb pcmpeqww pcmpeqwl pcmpeqwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpgtb pcmpgtbb pcmpgtbw pcmpgtbl pcmpgtbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpgtd pcmpgtdb pcmpgtdw pcmpgtdl pcmpgtdq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pcmpgtw pcmpgtwb pcmpgtww pcmpgtwl pcmpgtwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pdistib pdistibb pdistibw pdistibl pdistibq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pf2id pf2idb pf2idw pf2idl pf2idq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfacc pfaccb pfaccw pfaccl pfaccq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfadd pfaddb pfaddw pfaddl pfaddq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfcmpeq pfcmpeqb pfcmpeqw pfcmpeql pfcmpeqq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfcmpge pfcmpgeb pfcmpgew pfcmpgel pfcmpgeq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfcmpgt pfcmpgtb pfcmpgtw pfcmpgtl pfcmpgtq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfmax pfmaxb pfmaxw pfmaxl pfmaxq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfmin pfminb pfminw pfminl pfminq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfmul pfmulb pfmulw pfmull pfmulq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrcp pfrcpb pfrcpw pfrcpl pfrcpq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrcpit1 pfrcpit1b pfrcpit1w pfrcpit1l pfrcpit1q"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrcpit2 pfrcpit2b pfrcpit2w pfrcpit2l pfrcpit2q"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrsqit1 pfrsqit1b pfrsqit1w pfrsqit1l pfrsqit1q"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfrsqrt pfrsqrtb pfrsqrtw pfrsqrtl pfrsqrtq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfsub pfsubb pfsubw pfsubl pfsubq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfsubr pfsubrb pfsubrw pfsubrl pfsubrq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pi2fd pi2fdb pi2fdw pi2fdl pi2fdq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pmachriw pmachriwb pmachriww pmachriwl pmachriwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pmaddwd pmaddwdb pmaddwdw pmaddwdl pmaddwdq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pmagw pmagwb pmagww pmagwl pmagwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pmulhriw pmulhriwb pmulhriww pmulhriwl pmulhriwq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pmulhrwa pmulhrwab pmulhrwaw pmulhrwal pmulhrwaq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pmulhrwc pmulhrwcb pmulhrwcw pmulhrwcl pmulhrwcq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pmulhw pmulhwb pmulhww pmulhwl pmulhwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pmullw pmullwb pmullww pmullwl pmullwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pmvgezb pmvgezbb pmvgezbw pmvgezbl pmvgezbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pmvlzb pmvlzbb pmvlzbw pmvlzbl pmvlzbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pmvnzb pmvnzbb pmvnzbw pmvnzbl pmvnzbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pmvzb pmvzbb pmvzbw pmvzbl pmvzbq"
-Opcode_386_Base="${Opcode_386_Base} pop popb popw popl popq"
-Opcode_186_Base="${Opcode_186_Base} popa"
-Opcode_386_Base="${Opcode_386_Base} popal"
-Opcode_186_Base="${Opcode_186_Base} popaw"
-Opcode_8086_Base="${Opcode_8086_Base} popf"
-Opcode_386_Base="${Opcode_386_Base} popfd popfl"
-Opcode_X64_Base="${Opcode_X64_Base} popfq"
-Opcode_8086_Base="${Opcode_8086_Base} popfw"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} por porb porw porl porq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} prefetch prefetchb prefetchw prefetchl prefetchq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} prefetchw prefetchwb prefetchww prefetchwl prefetchwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pslld pslldb pslldw pslldl pslldq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psllq psllqb psllqw psllql psllqq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psllw psllwb psllww psllwl psllwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psrad psradb psradw psradl psradq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psraw psrawb psraww psrawl psrawq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psrld psrldb psrldw psrldl psrldq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psrlq psrlqb psrlqw psrlql psrlqq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psrlw psrlwb psrlww psrlwl psrlwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psubb psubbb psubbw psubbl psubbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psubd psubdb psubdw psubdl psubdq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psubsb psubsbb psubsbw psubsbl psubsbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psubsiw psubsiwb psubsiww psubsiwl psubsiwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psubsw psubswb psubsww psubswl psubswq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psubusb psubusbb psubusbw psubusbl psubusbq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psubusw psubuswb psubusww psubuswl psubuswq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} psubw psubwb psubww psubwl psubwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} punpckhbw punpckhbwb punpckhbww punpckhbwl punpckhbwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} punpckhdq punpckhdqb punpckhdqw punpckhdql punpckhdqq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} punpckhwd punpckhwdb punpckhwdw punpckhwdl punpckhwdq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} punpcklbw punpcklbwb punpcklbww punpcklbwl punpcklbwq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} punpckldq punpckldqb punpckldqw punpckldql punpckldqq"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} punpcklwd punpcklwdb punpcklwdw punpcklwdl punpcklwdq"
-Opcode_X64_Base="${Opcode_X64_Base} push pushb pushw pushl pushq"
-Opcode_186_Base="${Opcode_186_Base} pusha"
-Opcode_386_Base="${Opcode_386_Base} pushal"
-Opcode_186_Base="${Opcode_186_Base} pushaw"
-Opcode_8086_Base="${Opcode_8086_Base} pushf"
-Opcode_386_Base="${Opcode_386_Base} pushfd"
-Opcode_X64_Base="${Opcode_X64_Base} pushfq"
-Opcode_8086_Base="${Opcode_8086_Base} pushfw"
-Opcode_PENT_MMX="${Opcode_PENT_MMX} pxor pxorb pxorw pxorl pxorq"
-Opcode_X64_Base="${Opcode_X64_Base} rcl rclb rclw rcll rclq"
-Opcode_X64_Base="${Opcode_X64_Base} rcr rcrb rcrw rcrl rcrq"
-Opcode_P6_Base="${Opcode_P6_Base} rdshr"
-Opcode_PENT_Base="${Opcode_PENT_Base} rdmsr"
-Opcode_P6_Base="${Opcode_P6_Base} rdpmc"
-Opcode_PENT_Base="${Opcode_PENT_Base} rdtsc"
-Opcode_X86_64_Base="${Opcode_X86_64_Base} rdtscp"
-Opcode_8086_Base="${Opcode_8086_Base} ret retb retw retl retq"
-Opcode_8086_Base="${Opcode_8086_Base} retf retfb retfw retfl retfq"
-Opcode_8086_Base="${Opcode_8086_Base} retn retnb retnw retnl retnq"
-Opcode_X64_Base="${Opcode_X64_Base} rol rolb rolw roll rolq"
-Opcode_X64_Base="${Opcode_X64_Base} ror rorb rorw rorl rorq"
-Opcode_P6_Base="${Opcode_P6_Base} rdm"
-Opcode_486_Base="${Opcode_486_Base} rsdc rsdcb rsdcw rsdcl rsdcq"
-Opcode_486_Base="${Opcode_486_Base} rsldt rsldtb rsldtw rsldtl rsldtq"
-Opcode_PENTM_Base="${Opcode_PENTM_Base} rsm"
-Opcode_486_Base="${Opcode_486_Base} rsts rstsb rstsw rstsl rstsq"
-Opcode_8086_Base="${Opcode_8086_Base} sahf"
-Opcode_X64_Base="${Opcode_X64_Base} sal salb salw sall salq"
-Opcode_8086_Base="${Opcode_8086_Base} salc"
-Opcode_X64_Base="${Opcode_X64_Base} sar sarb sarw sarl sarq"
-Opcode_386_Base="${Opcode_386_Base} sbb sbbb sbbw sbbl sbbq"
-Opcode_8086_Base="${Opcode_8086_Base} scasb"
-Opcode_386_Base="${Opcode_386_Base} scasd"
-Opcode_X64_Base="${Opcode_X64_Base} scasq"
-Opcode_8086_Base="${Opcode_8086_Base} scasw"
-Opcode_X64_Base="${Opcode_X64_Base} sfence"
-Opcode_286_Base="${Opcode_286_Base} sgdt sgdtb sgdtw sgdtl sgdtq"
-Opcode_X64_Base="${Opcode_X64_Base} shl shlb shlw shll shlq"
-Opcode_X64_Base="${Opcode_X64_Base} shld"
-Opcode_X64_Base="${Opcode_X64_Base} shr shrb shrw shrl shrq"
-Opcode_X64_Base="${Opcode_X64_Base} shrd"
-Opcode_286_Base="${Opcode_286_Base} sidt sidtb sidtw sidtl sidtq"
-Opcode_X64_Base="${Opcode_X64_Base} sldt"
-Opcode_X64_Base="${Opcode_X64_Base} skinit"
-Opcode_386_Base="${Opcode_386_Base} smi"
-Opcode_P6_Base="${Opcode_P6_Base} smint"
-Opcode_486_Base="${Opcode_486_Base} smintold"
-Opcode_386_Base="${Opcode_386_Base} smsw"
-Opcode_8086_Base="${Opcode_8086_Base} stc"
-Opcode_8086_Base="${Opcode_8086_Base} std"
-Opcode_X64_Base="${Opcode_X64_Base} stgi"
-Opcode_8086_Base="${Opcode_8086_Base} sti"
-Opcode_8086_Base="${Opcode_8086_Base} stosb"
-Opcode_386_Base="${Opcode_386_Base} stosd stosl"
-Opcode_X64_Base="${Opcode_X64_Base} stosq"
-Opcode_8086_Base="${Opcode_8086_Base} stosw"
-Opcode_X64_Base="${Opcode_X64_Base} str"
-Opcode_386_Base="${Opcode_386_Base} sub subb subw subl subq"
-Opcode_486_Base="${Opcode_486_Base} svdc svdcb svdcw svdcl svdcq"
-Opcode_486_Base="${Opcode_486_Base} svldt svldtb svldtw svldtl svldtq"
-Opcode_486_Base="${Opcode_486_Base} svts svtsb svtsw svtsl svtsq"
-Opcode_X64_Base="${Opcode_X64_Base} swapgs"
-Opcode_P6_Base="${Opcode_P6_Base} syscall"
-Opcode_P6_Base="${Opcode_P6_Base} sysenter"
-Opcode_P6_Base="${Opcode_P6_Base} sysexit"
-Opcode_P6_Base="${Opcode_P6_Base} sysret"
-Opcode_386_Base="${Opcode_386_Base} test testb testw testl testq"
-Opcode_186_Base="${Opcode_186_Base} ud0"
-Opcode_186_Base="${Opcode_186_Base} ud1"
-Opcode_186_Base="${Opcode_186_Base} ud2b"
-Opcode_186_Base="${Opcode_186_Base} ud2"
-Opcode_186_Base="${Opcode_186_Base} ud2a"
-Opcode_386_Base="${Opcode_386_Base} umov"
-Opcode_286_Base="${Opcode_286_Base} verr"
-Opcode_286_Base="${Opcode_286_Base} verw"
-Opcode_8086_Base="${Opcode_8086_Base} fwait"
-Opcode_486_Base="${Opcode_486_Base} wbinvd"
-Opcode_P6_Base="${Opcode_P6_Base} wrshr"
-Opcode_PENT_Base="${Opcode_PENT_Base} wrmsr"
-Opcode_X64_Base="${Opcode_X64_Base} xadd"
-Opcode_386_Base="${Opcode_386_Base} xbts"
-Opcode_X64_Base="${Opcode_X64_Base} xchg"
-Opcode_8086_Base="${Opcode_8086_Base} xlatb"
-Opcode_8086_Base="${Opcode_8086_Base} xlat"
-Opcode_386_Base="${Opcode_386_Base} xor xorb xorw xorl xorq"
-Opcode_X64_Base="${Opcode_X64_Base} cmovcc"
-Opcode_8086_Base="${Opcode_8086_Base} j(e|ne|a|ae|b|be|nbe|g|ge|ng|nge|l|le||z|nz|c|nc|d|nd|o|no|p|np|s|ns)[bwlq]?"
-Opcode_386_Base="${Opcode_386_Base} set(e|ne|a|ae|b|be|nbe|g|ge|ng|nge|l|le||z|nz|c|nc|d|nd|o|no|p|np|s|ns)[bwlq]?"
-
-# VIA (Centaur) security instructions
-Opcode_PENT_Base="${Opcode_PENT_Base} xstore"
-Opcode_PENT_Base="${Opcode_PENT_Base} xcryptecb"
-Opcode_PENT_Base="${Opcode_PENT_Base} xcryptcbc"
-Opcode_PENT_Base="${Opcode_PENT_Base} xcryptctr"
-Opcode_PENT_Base="${Opcode_PENT_Base} xcryptcfb"
-Opcode_PENT_Base="${Opcode_PENT_Base} xcryptofb"
-Opcode_PENT_Base="${Opcode_PENT_Base} montmul"
-Opcode_PENT_Base="${Opcode_PENT_Base} xsha1"
-Opcode_PENT_Base="${Opcode_PENT_Base} xsha256"
-
-# Intel AVX Carry-Less Multiplication instructions (CLMUL)
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpclmullqlqdq vpclmullqlqdqb vpclmullqlqdqw vpclmullqlqdql vpclmullqlqdqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpclmulhqlqdq vpclmulhqlqdqb vpclmulhqlqdqw vpclmulhqlqdql vpclmulhqlqdqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpclmullqhqdq vpclmullqhqdqb vpclmullqhqdqw vpclmullqhqdql vpclmullqhqdqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpclmulhqhqdq vpclmulhqhqdqb vpclmulhqhqdqw vpclmulhqhqdql vpclmulhqhqdqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpclmulqdq vpclmulqdqb vpclmulqdqw vpclmulqdql vpclmulqdqq"
-
-# AMD SSE5 instructions
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmaddps fmaddpsb fmaddpsw fmaddpsl fmaddpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmaddpd fmaddpdb fmaddpdw fmaddpdl fmaddpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmaddss fmaddssb fmaddssw fmaddssl fmaddssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmaddsd fmaddsdb fmaddsdw fmaddsdl fmaddsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmsubps fmsubpsb fmsubpsw fmsubpsl fmsubpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmsubpd fmsubpdb fmsubpdw fmsubpdl fmsubpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmsubss fmsubssb fmsubssw fmsubssl fmsubssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fmsubsd fmsubsdb fmsubsdw fmsubsdl fmsubsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmaddps fnmaddpsb fnmaddpsw fnmaddpsl fnmaddpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmaddpd fnmaddpdb fnmaddpdw fnmaddpdl fnmaddpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmaddss fnmaddssb fnmaddssw fnmaddssl fnmaddssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmaddsd fnmaddsdb fnmaddsdw fnmaddsdl fnmaddsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmsubps fnmsubpsb fnmsubpsw fnmsubpsl fnmsubpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmsubpd fnmsubpdb fnmsubpdw fnmsubpdl fnmsubpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmsubss fnmsubssb fnmsubssw fnmsubssl fnmsubssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} fnmsubsd fnmsubsdb fnmsubsdw fnmsubsdl fnmsubsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comeqps comeqpsb comeqpsw comeqpsl comeqpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comltps comltpsb comltpsw comltpsl comltpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comleps comlepsb comlepsw comlepsl comlepsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunordps comunordpsb comunordpsw comunordpsl comunordpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuneqps comuneqpsb comuneqpsw comuneqpsl comuneqpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunltps comunltpsb comunltpsw comunltpsl comunltpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunleps comunlepsb comunlepsw comunlepsl comunlepsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comordps comordpsb comordpsw comordpsl comordpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comueqps comueqpsb comueqpsw comueqpsl comueqpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comultps comultpsb comultpsw comultpsl comultpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuleps comulepsb comulepsw comulepsl comulepsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comfalseps comfalsepsb comfalsepsw comfalsepsl comfalsepsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comneqps comneqpsb comneqpsw comneqpsl comneqpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnltps comnltpsb comnltpsw comnltpsl comnltpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnleps comnlepsb comnlepsw comnlepsl comnlepsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comtrueps comtruepsb comtruepsw comtruepsl comtruepsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comps compsb compsw compsl compsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comeqpd comeqpdb comeqpdw comeqpdl comeqpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comltpd comltpdb comltpdw comltpdl comltpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comlepd comlepdb comlepdw comlepdl comlepdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunordpd comunordpdb comunordpdw comunordpdl comunordpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuneqpd comuneqpdb comuneqpdw comuneqpdl comuneqpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunltpd comunltpdb comunltpdw comunltpdl comunltpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunlepd comunlepdb comunlepdw comunlepdl comunlepdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comordpd comordpdb comordpdw comordpdl comordpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comueqpd comueqpdb comueqpdw comueqpdl comueqpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comultpd comultpdb comultpdw comultpdl comultpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comulepd comulepdb comulepdw comulepdl comulepdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comfalsepd comfalsepdb comfalsepdw comfalsepdl comfalsepdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comneqpd comneqpdb comneqpdw comneqpdl comneqpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnltpd comnltpdb comnltpdw comnltpdl comnltpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnlepd comnlepdb comnlepdw comnlepdl comnlepdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comtruepd comtruepdb comtruepdw comtruepdl comtruepdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} compd compdb compdw compdl compdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comeqss comeqssb comeqssw comeqssl comeqssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comltss comltssb comltssw comltssl comltssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comless comlessb comlessw comlessl comlessq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunordss comunordssb comunordssw comunordssl comunordssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuneqss comuneqssb comuneqssw comuneqssl comuneqssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunltss comunltssb comunltssw comunltssl comunltssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunless comunlessb comunlessw comunlessl comunlessq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comordss comordssb comordssw comordssl comordssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comueqss comueqssb comueqssw comueqssl comueqssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comultss comultssb comultssw comultssl comultssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuless comulessb comulessw comulessl comulessq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comfalsess comfalsessb comfalsessw comfalsessl comfalsessq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comneqss comneqssb comneqssw comneqssl comneqssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnltss comnltssb comnltssw comnltssl comnltssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnless comnlessb comnlessw comnlessl comnlessq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comtruess comtruessb comtruessw comtruessl comtruessq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comss comssb comssw comssl comssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comeqsd comeqsdb comeqsdw comeqsdl comeqsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comltsd comltsdb comltsdw comltsdl comltsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comlesd comlesdb comlesdw comlesdl comlesdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunordsd comunordsdb comunordsdw comunordsdl comunordsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comuneqsd comuneqsdb comuneqsdw comuneqsdl comuneqsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunltsd comunltsdb comunltsdw comunltsdl comunltsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comunlesd comunlesdb comunlesdw comunlesdl comunlesdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comordsd comordsdb comordsdw comordsdl comordsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comueqsd comueqsdb comueqsdw comueqsdl comueqsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comultsd comultsdb comultsdw comultsdl comultsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comulesd comulesdb comulesdw comulesdl comulesdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comfalsesd comfalsesdb comfalsesdw comfalsesdl comfalsesdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comneqsd comneqsdb comneqsdw comneqsdl comneqsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnltsd comnltsdb comnltsdw comnltsdl comnltsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comnlesd comnlesdb comnlesdw comnlesdl comnlesdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comtruesd comtruesdb comtruesdw comtruesdl comtruesdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} comsd comsdb comsdw comsdl comsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltb pcomltbb pcomltbw pcomltbl pcomltbq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleb pcomlebb pcomlebw pcomlebl pcomlebq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtb pcomgtbb pcomgtbw pcomgtbl pcomgtbq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeb pcomgebb pcomgebw pcomgebl pcomgebq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomeqb pcomeqbb pcomeqbw pcomeqbl pcomeqbq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomneqb pcomneqbb pcomneqbw pcomneqbl pcomneqbq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseb pcomfalsebb pcomfalsebw pcomfalsebl pcomfalsebq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueb pcomtruebb pcomtruebw pcomtruebl pcomtruebq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomb pcombb pcombw pcombl pcombq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltw pcomltwb pcomltww pcomltwl pcomltwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomlew pcomlewb pcomleww pcomlewl pcomlewq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtw pcomgtwb pcomgtww pcomgtwl pcomgtwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgew pcomgewb pcomgeww pcomgewl pcomgewq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomeqw pcomeqwb pcomeqww pcomeqwl pcomeqwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomneqw pcomneqwb pcomneqww pcomneqwl pcomneqwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalsew pcomfalsewb pcomfalseww pcomfalsewl pcomfalsewq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtruew pcomtruewb pcomtrueww pcomtruewl pcomtruewq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomw pcomwb pcomww pcomwl pcomwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltd pcomltdb pcomltdw pcomltdl pcomltdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomled pcomledb pcomledw pcomledl pcomledq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtd pcomgtdb pcomgtdw pcomgtdl pcomgtdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomged pcomgedb pcomgedw pcomgedl pcomgedq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomeqd pcomeqdb pcomeqdw pcomeqdl pcomeqdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomneqd pcomneqdb pcomneqdw pcomneqdl pcomneqdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalsed pcomfalsedb pcomfalsedw pcomfalsedl pcomfalsedq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrued pcomtruedb pcomtruedw pcomtruedl pcomtruedq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomd pcomdb pcomdw pcomdl pcomdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltq pcomltqb pcomltqw pcomltql pcomltqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleq pcomleqb pcomleqw pcomleql pcomleqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtq pcomgtqb pcomgtqw pcomgtql pcomgtqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeq pcomgeqb pcomgeqw pcomgeql pcomgeqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomeqq pcomeqqb pcomeqqw pcomeqql pcomeqqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomneqq pcomneqqb pcomneqqw pcomneqql pcomneqqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseq pcomfalseqb pcomfalseqw pcomfalseql pcomfalseqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueq pcomtrueqb pcomtrueqw pcomtrueql pcomtrueqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomq pcomqb pcomqw pcomql pcomqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltub pcomltubb pcomltubw pcomltubl pcomltubq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleub pcomleubb pcomleubw pcomleubl pcomleubq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtub pcomgtubb pcomgtubw pcomgtubl pcomgtubq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeub pcomgeubb pcomgeubw pcomgeubl pcomgeubq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomequb pcomequbb pcomequbw pcomequbl pcomequbq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomnequb pcomnequbb pcomnequbw pcomnequbl pcomnequbq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseub pcomfalseubb pcomfalseubw pcomfalseubl pcomfalseubq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueub pcomtrueubb pcomtrueubw pcomtrueubl pcomtrueubq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomub pcomubb pcomubw pcomubl pcomubq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltuw pcomltuwb pcomltuww pcomltuwl pcomltuwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleuw pcomleuwb pcomleuww pcomleuwl pcomleuwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtuw pcomgtuwb pcomgtuww pcomgtuwl pcomgtuwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeuw pcomgeuwb pcomgeuww pcomgeuwl pcomgeuwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomequw pcomequwb pcomequww pcomequwl pcomequwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomnequw pcomnequwb pcomnequww pcomnequwl pcomnequwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseuw pcomfalseuwb pcomfalseuww pcomfalseuwl pcomfalseuwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueuw pcomtrueuwb pcomtrueuww pcomtrueuwl pcomtrueuwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomuw pcomuwb pcomuww pcomuwl pcomuwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltud pcomltudb pcomltudw pcomltudl pcomltudq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleud pcomleudb pcomleudw pcomleudl pcomleudq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtud pcomgtudb pcomgtudw pcomgtudl pcomgtudq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeud pcomgeudb pcomgeudw pcomgeudl pcomgeudq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomequd pcomequdb pcomequdw pcomequdl pcomequdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomnequd pcomnequdb pcomnequdw pcomnequdl pcomnequdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseud pcomfalseudb pcomfalseudw pcomfalseudl pcomfalseudq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueud pcomtrueudb pcomtrueudw pcomtrueudl pcomtrueudq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomud pcomudb pcomudw pcomudl pcomudq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomltuq pcomltuqb pcomltuqw pcomltuql pcomltuqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomleuq pcomleuqb pcomleuqw pcomleuql pcomleuqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgtuq pcomgtuqb pcomgtuqw pcomgtuql pcomgtuqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomgeuq pcomgeuqb pcomgeuqw pcomgeuql pcomgeuqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomequq pcomequqb pcomequqw pcomequql pcomequqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomnequq pcomnequqb pcomnequqw pcomnequql pcomnequqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomfalseuq pcomfalseuqb pcomfalseuqw pcomfalseuql pcomfalseuqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomtrueuq pcomtrueuqb pcomtrueuqw pcomtrueuql pcomtrueuqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcomuq pcomuqb pcomuqw pcomuql pcomuqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} permps permpsb permpsw permpsl permpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} permpd permpdb permpdw permpdl permpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pcmov pcmovb pcmovw pcmovl pcmovq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pperm ppermb ppermw pperml ppermq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacssww pmacsswwb pmacsswww pmacsswwl pmacsswwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacsww pmacswwb pmacswww pmacswwl pmacswwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacsswd pmacsswdb pmacsswdw pmacsswdl pmacsswdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacswd pmacswdb pmacswdw pmacswdl pmacswdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacssdd pmacssddb pmacssddw pmacssddl pmacssddq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacsdd pmacsddb pmacsddw pmacsddl pmacsddq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacssdql pmacssdqlb pmacssdqlw pmacssdqll pmacssdqlq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacsdql pmacsdqlb pmacsdqlw pmacsdqll pmacsdqlq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacssdqh pmacssdqhb pmacssdqhw pmacssdqhl pmacssdqhq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmacsdqh pmacsdqhb pmacsdqhw pmacsdqhl pmacsdqhq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmadcsswd pmadcsswdb pmadcsswdw pmadcsswdl pmadcsswdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pmadcswd pmadcswdb pmadcswdw pmadcswdl pmadcswdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protb protbb protbw protbl protbq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protw protwb protww protwl protwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protd protdb protdw protdl protdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protq protqb protqw protql protqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshlb pshlbb pshlbw pshlbl pshlbq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshlw pshlwb pshlww pshlwl pshlwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshld pshldb pshldw pshldl pshldq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshlq pshlqb pshlqw pshlql pshlqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshab pshabb pshabw pshabl pshabq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshaw pshawb pshaww pshawl pshawq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshad pshadb pshadw pshadl pshadq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} pshaq pshaqb pshaqw pshaql pshaqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} frczps frczpsb frczpsw frczpsl frczpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} frczpd frczpdb frczpdw frczpdl frczpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} frczss frczssb frczssw frczssl frczssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} frczsd frczsdb frczsdw frczsdl frczsdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} cvtph2ps cvtph2psb cvtph2psw cvtph2psl cvtph2psq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} cvtps2ph cvtps2phb cvtps2phw cvtps2phl cvtps2phq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddbw phaddbwb phaddbww phaddbwl phaddbwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddbd phaddbdb phaddbdw phaddbdl phaddbdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddbq phaddbqb phaddbqw phaddbql phaddbqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddwd phaddwdb phaddwdw phaddwdl phaddwdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddwq phaddwqb phaddwqw phaddwql phaddwqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phadddq phadddqb phadddqw phadddql phadddqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddubw phaddubwb phaddubww phaddubwl phaddubwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddubd phaddubdb phaddubdw phaddubdl phaddubdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddubq phaddubqb phaddubqw phaddubql phaddubqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phadduwd phadduwdb phadduwdw phadduwdl phadduwdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phadduwq phadduwqb phadduwqw phadduwql phadduwqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phaddudq phaddudqb phaddudqw phaddudql phaddudqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phsubbw phsubbwb phsubbww phsubbwl phsubbwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phsubwd phsubwdb phsubwdw phsubwdl phsubwdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} phsubdq phsubdqb phsubdqw phsubdql phsubdqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protb protbb protbw protbl protbq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protw protwb protww protwl protwq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protd protdb protdw protdl protdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} protq protqb protqw protql protqq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} roundps roundpsb roundpsw roundpsl roundpsq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} roundpd roundpdb roundpdw roundpdl roundpdq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} roundss roundssb roundssw roundssl roundssq"
-Opcode_AMD_SSE5="${Opcode_AMD_SSE5} roundsd roundsdb roundsdw roundsdl roundsdq"
-
-# Introduced in Deschutes but necessary for SSE support
-Opcode_P6_SSE="${Opcode_P6_SSE} fxrstor fxrstorb fxrstorw fxrstorl fxrstorq"
-Opcode_P6_SSE="${Opcode_P6_SSE} fxsave fxsaveb fxsavew fxsavel fxsaveq"
-
-# Prescott New Instructions (SSE3)
-Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} addsubpd addsubpdb addsubpdw addsubpdl addsubpdq"
-Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} addsubps addsubpsb addsubpsw addsubpsl addsubpsq"
-Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} haddpd haddpdb haddpdw haddpdl haddpdq"
-Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} haddps haddpsb haddpsw haddpsl haddpsq"
-Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} hsubpd hsubpdb hsubpdw hsubpdl hsubpdq"
-Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} hsubps hsubpsb hsubpsw hsubpsl hsubpsq"
-Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} lddqu lddqub lddquw lddqul lddquq"
-Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} movddup movddupb movddupw movddupl movddupq"
-Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} movshdup movshdupb movshdupw movshdupl movshdupq"
-Opcode_PRESCOTT_SSE3="${Opcode_PRESCOTT_SSE3} movsldup movsldupb movsldupw movsldupl movsldupq"
-
-# Intel AES instructions
-Opcode_SSE="${Opcode_SSE} aesenc aesencb aesencw aesencl aesencq"
-Opcode_SSE="${Opcode_SSE} aesenclast aesenclastb aesenclastw aesenclastl aesenclastq"
-Opcode_SSE="${Opcode_SSE} aesdec aesdecb aesdecw aesdecl aesdecq"
-Opcode_SSE="${Opcode_SSE} aesdeclast aesdeclastb aesdeclastw aesdeclastl aesdeclastq"
-Opcode_SSE="${Opcode_SSE} aesimc aesimcb aesimcw aesimcl aesimcq"
-Opcode_SSE="${Opcode_SSE} aeskeygenassist aeskeygenassistb aeskeygenassistw aeskeygenassistl aeskeygenassistq"
-
-# Willamette Streaming SIMD instructions (SSE2)
-Opcode_SSE2="${Opcode_SSE2} addpd addpdb addpdw addpdl addpdq"
-Opcode_SSE2="${Opcode_SSE2} addsd addsdb addsdw addsdl addsdq"
-Opcode_SSE2="${Opcode_SSE2} andnpd andnpdb andnpdw andnpdl andnpdq"
-Opcode_SSE2="${Opcode_SSE2} andpd andpdb andpdw andpdl andpdq"
-Opcode_SSE2="${Opcode_SSE2} cmpeqpd cmpeqpdb cmpeqpdw cmpeqpdl cmpeqpdq"
-Opcode_SSE2="${Opcode_SSE2} cmpeqsd cmpeqsdb cmpeqsdw cmpeqsdl cmpeqsdq"
-Opcode_SSE2="${Opcode_SSE2} cmplepd cmplepdb cmplepdw cmplepdl cmplepdq"
-Opcode_SSE2="${Opcode_SSE2} cmplesd cmplesdb cmplesdw cmplesdl cmplesdq"
-Opcode_SSE2="${Opcode_SSE2} cmpltpd cmpltpdb cmpltpdw cmpltpdl cmpltpdq"
-Opcode_SSE2="${Opcode_SSE2} cmpltsd cmpltsdb cmpltsdw cmpltsdl cmpltsdq"
-Opcode_SSE2="${Opcode_SSE2} cmpneqpd cmpneqpdb cmpneqpdw cmpneqpdl cmpneqpdq"
-Opcode_SSE2="${Opcode_SSE2} cmpneqsd cmpneqsdb cmpneqsdw cmpneqsdl cmpneqsdq"
-Opcode_SSE2="${Opcode_SSE2} cmpnlepd cmpnlepdb cmpnlepdw cmpnlepdl cmpnlepdq"
-Opcode_SSE2="${Opcode_SSE2} cmpnlesd cmpnlesdb cmpnlesdw cmpnlesdl cmpnlesdq"
-Opcode_SSE2="${Opcode_SSE2} cmpnltpd cmpnltpdb cmpnltpdw cmpnltpdl cmpnltpdq"
-Opcode_SSE2="${Opcode_SSE2} cmpnltsd cmpnltsdb cmpnltsdw cmpnltsdl cmpnltsdq"
-Opcode_SSE2="${Opcode_SSE2} cmpordpd cmpordpdb cmpordpdw cmpordpdl cmpordpdq"
-Opcode_SSE2="${Opcode_SSE2} cmpordsd cmpordsdb cmpordsdw cmpordsdl cmpordsdq"
-Opcode_SSE2="${Opcode_SSE2} cmpunordpd cmpunordpdb cmpunordpdw cmpunordpdl cmpunordpdq"
-Opcode_SSE2="${Opcode_SSE2} cmpunordsd cmpunordsdb cmpunordsdw cmpunordsdl cmpunordsdq"
-Opcode_Base="${Opcode_Base} cmppd cmppdb cmppdw cmppdl cmppdq"
-Opcode_SSE2="${Opcode_SSE2} cmpsd cmpsdb cmpsdw cmpsdl cmpsdq"
-Opcode_SSE2="${Opcode_SSE2} comisd comisdb comisdw comisdl comisdq"
-Opcode_SSE2="${Opcode_SSE2} cvtdq2pd cvtdq2pdb cvtdq2pdw cvtdq2pdl cvtdq2pdq"
-Opcode_SSE2="${Opcode_SSE2} cvtdq2ps cvtdq2psb cvtdq2psw cvtdq2psl cvtdq2psq"
-Opcode_SSE2="${Opcode_SSE2} cvtpd2dq cvtpd2dqb cvtpd2dqw cvtpd2dql cvtpd2dqq"
-Opcode_SSE2="${Opcode_SSE2} cvtpd2pi cvtpd2pib cvtpd2piw cvtpd2pil cvtpd2piq"
-Opcode_SSE2="${Opcode_SSE2} cvtpd2ps cvtpd2psb cvtpd2psw cvtpd2psl cvtpd2psq"
-Opcode_SSE2="${Opcode_SSE2} cvtpi2pd cvtpi2pdb cvtpi2pdw cvtpi2pdl cvtpi2pdq"
-Opcode_SSE2="${Opcode_SSE2} cvtps2dq cvtps2dqb cvtps2dqw cvtps2dql cvtps2dqq"
-Opcode_SSE2="${Opcode_SSE2} cvtps2pd cvtps2pdb cvtps2pdw cvtps2pdl cvtps2pdq"
-Opcode_X64_SSE2="${Opcode_X64_SSE2} cvtsd2si cvtsd2sib cvtsd2siw cvtsd2sil cvtsd2siq"
-Opcode_SSE2="${Opcode_SSE2} cvtsd2ss cvtsd2ssb cvtsd2ssw cvtsd2ssl cvtsd2ssq"
-Opcode_X64_SSE2="${Opcode_X64_SSE2} cvtsi2sd"
-Opcode_SSE2="${Opcode_SSE2} cvtss2sd cvtss2sdb cvtss2sdw cvtss2sdl cvtss2sdq"
-Opcode_SSE2="${Opcode_SSE2} cvttpd2pi cvttpd2pib cvttpd2piw cvttpd2pil cvttpd2piq"
-Opcode_SSE2="${Opcode_SSE2} cvttpd2dq cvttpd2dqb cvttpd2dqw cvttpd2dql cvttpd2dqq"
-Opcode_SSE2="${Opcode_SSE2} cvttps2dq cvttps2dqb cvttps2dqw cvttps2dql cvttps2dqq"
-Opcode_X64_SSE2="${Opcode_X64_SSE2} cvttsd2si cvttsd2sib cvttsd2siw cvttsd2sil cvttsd2siq"
-Opcode_SSE2="${Opcode_SSE2} divpd divpdb divpdw divpdl divpdq"
-Opcode_SSE2="${Opcode_SSE2} divsd divsdb divsdw divsdl divsdq"
-Opcode_SSE2="${Opcode_SSE2} maxpd maxpdb maxpdw maxpdl maxpdq"
-Opcode_SSE2="${Opcode_SSE2} maxsd maxsdb maxsdw maxsdl maxsdq"
-Opcode_SSE2="${Opcode_SSE2} minpd minpdb minpdw minpdl minpdq"
-Opcode_SSE2="${Opcode_SSE2} minsd minsdb minsdw minsdl minsdq"
-Opcode_SSE2="${Opcode_SSE2} movapd movapdb movapdw movapdl movapdq"
-Opcode_SSE2="${Opcode_SSE2} movhpd movhpdb movhpdw movhpdl movhpdq"
-Opcode_SSE2="${Opcode_SSE2} movlpd movlpdb movlpdw movlpdl movlpdq"
-Opcode_X64_SSE2="${Opcode_X64_SSE2} movmskpd"
-Opcode_SSE2="${Opcode_SSE2} movsd movsdb movsdw movsdl movsdq"
-Opcode_SSE2="${Opcode_SSE2} movupd movupdb movupdw movupdl movupdq"
-Opcode_SSE2="${Opcode_SSE2} mulpd mulpdb mulpdw mulpdl mulpdq"
-Opcode_SSE2="${Opcode_SSE2} mulsd mulsdb mulsdw mulsdl mulsdq"
-Opcode_SSE2="${Opcode_SSE2} orpd orpdb orpdw orpdl orpdq"
-Opcode_SSE2="${Opcode_SSE2} shufpd shufpdb shufpdw shufpdl shufpdq"
-Opcode_SSE2="${Opcode_SSE2} sqrtpd sqrtpdb sqrtpdw sqrtpdl sqrtpdq"
-Opcode_SSE2="${Opcode_SSE2} sqrtsd sqrtsdb sqrtsdw sqrtsdl sqrtsdq"
-Opcode_SSE2="${Opcode_SSE2} subpd subpdb subpdw subpdl subpdq"
-Opcode_SSE2="${Opcode_SSE2} subsd subsdb subsdw subsdl subsdq"
-Opcode_SSE2="${Opcode_SSE2} ucomisd ucomisdb ucomisdw ucomisdl ucomisdq"
-Opcode_SSE2="${Opcode_SSE2} unpckhpd unpckhpdb unpckhpdw unpckhpdl unpckhpdq"
-Opcode_SSE2="${Opcode_SSE2} unpcklpd unpcklpdb unpcklpdw unpcklpdl unpcklpdq"
-Opcode_SSE2="${Opcode_SSE2} xorpd xorpdb xorpdw xorpdl xorpdq"
-
-# Intel Carry-Less Multiplication instructions (CLMUL)
-Opcode_SSE="${Opcode_SSE} pclmullqlqdq pclmullqlqdqb pclmullqlqdqw pclmullqlqdql pclmullqlqdqq"
-Opcode_SSE="${Opcode_SSE} pclmulhqlqdq pclmulhqlqdqb pclmulhqlqdqw pclmulhqlqdql pclmulhqlqdqq"
-Opcode_SSE="${Opcode_SSE} pclmullqhqdq pclmullqhqdqb pclmullqhqdqw pclmullqhqdql pclmullqhqdqq"
-Opcode_SSE="${Opcode_SSE} pclmulhqhqdq pclmulhqhqdqb pclmulhqhqdqw pclmulhqhqdql pclmulhqhqdqq"
-Opcode_SSE="${Opcode_SSE} pclmulqdq pclmulqdqb pclmulqdqw pclmulqdql pclmulqdqq"
-
-# New MMX instructions introduced in Katmai
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} maskmovq"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} movntq movntqb movntqw movntql movntqq"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pavgb pavgbb pavgbw pavgbl pavgbq"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pavgw pavgwb pavgww pavgwl pavgwq"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pextrw pextrwb pextrww pextrwl pextrwq"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pinsrw pinsrwb pinsrww pinsrwl pinsrwq"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pmaxsw pmaxswb pmaxsww pmaxswl pmaxswq"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pmaxub pmaxubb pmaxubw pmaxubl pmaxubq"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pminsw pminswb pminsww pminswl pminswq"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pminub pminubb pminubw pminubl pminubq"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pmovmskb"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} pmulhuw pmulhuwb pmulhuww pmulhuwl pmulhuwq"
-Opcode_KATMAI_MMX="${Opcode_KATMAI_MMX} psadbw psadbwb psadbww psadbwl psadbwq"
-Opcode_KATMAI_MMX2="${Opcode_KATMAI_MMX2} pshufw pshufwb pshufww pshufwl pshufwq"
-
-# Intel SMX
-Opcode_KATMAI_Base="${Opcode_KATMAI_Base} getsec"
-
-# Katmai Streaming SIMD instructions (SSE -- a.k.a. KNI, XMM, MMX2)
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} addps addpsb addpsw addpsl addpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} addss addssb addssw addssl addssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} andnps andnpsb andnpsw andnpsl andnpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} andps andpsb andpsw andpsl andpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpeqps cmpeqpsb cmpeqpsw cmpeqpsl cmpeqpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpeqss cmpeqssb cmpeqssw cmpeqssl cmpeqssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpleps cmplepsb cmplepsw cmplepsl cmplepsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpless cmplessb cmplessw cmplessl cmplessq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpltps cmpltpsb cmpltpsw cmpltpsl cmpltpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpltss cmpltssb cmpltssw cmpltssl cmpltssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpneqps cmpneqpsb cmpneqpsw cmpneqpsl cmpneqpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpneqss cmpneqssb cmpneqssw cmpneqssl cmpneqssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpnleps cmpnlepsb cmpnlepsw cmpnlepsl cmpnlepsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpnless cmpnlessb cmpnlessw cmpnlessl cmpnlessq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpnltps cmpnltpsb cmpnltpsw cmpnltpsl cmpnltpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpnltss cmpnltssb cmpnltssw cmpnltssl cmpnltssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpordps cmpordpsb cmpordpsw cmpordpsl cmpordpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpordss cmpordssb cmpordssw cmpordssl cmpordssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpunordps cmpunordpsb cmpunordpsw cmpunordpsl cmpunordpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpunordss cmpunordssb cmpunordssw cmpunordssl cmpunordssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpps cmppsb cmppsw cmppsl cmppsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cmpss cmpssb cmpssw cmpssl cmpssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} comiss comissb comissw comissl comissq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cvtpi2ps cvtpi2psb cvtpi2psw cvtpi2psl cvtpi2psq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cvtps2pi cvtps2pib cvtps2piw cvtps2pil cvtps2piq"
-Opcode_X64_SSE="${Opcode_X64_SSE} cvtsi2ss"
-Opcode_X64_SSE="${Opcode_X64_SSE} cvtss2si cvtss2sib cvtss2siw cvtss2sil cvtss2siq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} cvttps2pi cvttps2pib cvttps2piw cvttps2pil cvttps2piq"
-Opcode_X64_SSE="${Opcode_X64_SSE} cvttss2si cvttss2sib cvttss2siw cvttss2sil cvttss2siq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} divps divpsb divpsw divpsl divpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} divss divssb divssw divssl divssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} ldmxcsr ldmxcsrb ldmxcsrw ldmxcsrl ldmxcsrq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} maxps maxpsb maxpsw maxpsl maxpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} maxss maxssb maxssw maxssl maxssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} minps minpsb minpsw minpsl minpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} minss minssb minssw minssl minssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movaps"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movhps movhpsb movhpsw movhpsl movhpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movlhps"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movlps movlpsb movlpsw movlpsl movlpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movhlps"
-Opcode_X64_SSE="${Opcode_X64_SSE} movmskps"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movntps movntpsb movntpsw movntpsl movntpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movss"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} movups"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} mulps mulpsb mulpsw mulpsl mulpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} mulss mulssb mulssw mulssl mulssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} orps orpsb orpsw orpsl orpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} rcpps rcppsb rcppsw rcppsl rcppsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} rcpss rcpssb rcpssw rcpssl rcpssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} rsqrtps rsqrtpsb rsqrtpsw rsqrtpsl rsqrtpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} rsqrtss rsqrtssb rsqrtssw rsqrtssl rsqrtssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} shufps shufpsb shufpsw shufpsl shufpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} sqrtps sqrtpsb sqrtpsw sqrtpsl sqrtpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} sqrtss sqrtssb sqrtssw sqrtssl sqrtssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} stmxcsr stmxcsrb stmxcsrw stmxcsrl stmxcsrq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} subps subpsb subpsw subpsl subpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} subss subssb subssw subssl subssq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} ucomiss ucomissb ucomissw ucomissl ucomissq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} unpckhps unpckhpsb unpckhpsw unpckhpsl unpckhpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} unpcklps unpcklpsb unpcklpsw unpcklpsl unpcklpsq"
-Opcode_KATMAI_SSE="${Opcode_KATMAI_SSE} xorps xorpsb xorpsw xorpsl xorpsq"
-
-# Extended Page Tables VMX instructions
-Opcode_VMX="${Opcode_VMX} invept inveptb inveptw inveptl inveptq"
-Opcode_VMX="${Opcode_VMX} invvpid invvpidb invvpidw invvpidl invvpidq"
-
-# VMX Instructions
-Opcode_VMX="${Opcode_VMX} vmcall"
-Opcode_VMX="${Opcode_VMX} vmclear vmclearb vmclearw vmclearl vmclearq"
-Opcode_VMX="${Opcode_VMX} vmlaunch"
-Opcode_X64_VMX="${Opcode_X64_VMX} vmload"
-Opcode_X64_VMX="${Opcode_X64_VMX} vmmcall"
-Opcode_VMX="${Opcode_VMX} vmptrld vmptrldb vmptrldw vmptrldl vmptrldq"
-Opcode_VMX="${Opcode_VMX} vmptrst vmptrstb vmptrstw vmptrstl vmptrstq"
-Opcode_X64_VMX="${Opcode_X64_VMX} vmread"
-Opcode_VMX="${Opcode_VMX} vmresume"
-Opcode_X64_VMX="${Opcode_X64_VMX} vmrun"
-Opcode_X64_VMX="${Opcode_X64_VMX} vmsave"
-Opcode_X64_VMX="${Opcode_X64_VMX} vmwrite"
-Opcode_VMX="${Opcode_VMX} vmxoff"
-Opcode_VMX="${Opcode_VMX} vmxon vmxonb vmxonw vmxonl vmxonq"
-
-# Intel AVX AES instructions
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaesenc vaesencb vaesencw vaesencl vaesencq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaesenclast vaesenclastb vaesenclastw vaesenclastl vaesenclastq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaesdec vaesdecb vaesdecw vaesdecl vaesdecq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaesdeclast vaesdeclastb vaesdeclastw vaesdeclastl vaesdeclastq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaesimc vaesimcb vaesimcw vaesimcl vaesimcq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaeskeygenassist vaeskeygenassistb vaeskeygenassistw vaeskeygenassistl vaeskeygenassistq"
-
-# New instructions in Barcelona
-Opcode_X64_Base="${Opcode_X64_Base} lzcnt"
-
-# Intel AVX instructions
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddpd vaddpdb vaddpdw vaddpdl vaddpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddps vaddpsb vaddpsw vaddpsl vaddpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddsd vaddsdb vaddsdw vaddsdl vaddsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddss vaddssb vaddssw vaddssl vaddssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddsubpd vaddsubpdb vaddsubpdw vaddsubpdl vaddsubpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vaddsubps vaddsubpsb vaddsubpsw vaddsubpsl vaddsubpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vandpd vandpdb vandpdw vandpdl vandpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vandps vandpsb vandpsw vandpsl vandpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vandnpd vandnpdb vandnpdw vandnpdl vandnpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vandnps vandnpsb vandnpsw vandnpsl vandnpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vblendpd vblendpdb vblendpdw vblendpdl vblendpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vblendps vblendpsb vblendpsw vblendpsl vblendpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vblendvpd vblendvpdb vblendvpdw vblendvpdl vblendvpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vblendvps vblendvpsb vblendvpsw vblendvpsl vblendvpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vblendvpd vblendvpdb vblendvpdw vblendvpdl vblendvpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vbroadcastss vbroadcastssb vbroadcastssw vbroadcastssl vbroadcastssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vbroadcastsd vbroadcastsdb vbroadcastsdw vbroadcastsdl vbroadcastsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vbroadcastf128 vbroadcastf128b vbroadcastf128w vbroadcastf128l vbroadcastf128q"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeqpd vcmpeqpdb vcmpeqpdw vcmpeqpdl vcmpeqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpltpd vcmpltpdb vcmpltpdw vcmpltpdl vcmpltpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplepd vcmplepdb vcmplepdw vcmplepdl vcmplepdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunordpd vcmpunordpdb vcmpunordpdw vcmpunordpdl vcmpunordpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneqpd vcmpneqpdb vcmpneqpdw vcmpneqpdl vcmpneqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnltpd vcmpnltpdb vcmpnltpdw vcmpnltpdl vcmpnltpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlepd vcmpnlepdb vcmpnlepdw vcmpnlepdl vcmpnlepdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpordpd vcmpordpdb vcmpordpdw vcmpordpdl vcmpordpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_uqpd vcmpeq_uqpdb vcmpeq_uqpdw vcmpeq_uqpdl vcmpeq_uqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngepd vcmpngepdb vcmpngepdw vcmpngepdl vcmpngepdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngtpd vcmpngtpdb vcmpngtpdw vcmpngtpdl vcmpngtpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalsepd vcmpfalsepdb vcmpfalsepdw vcmpfalsepdl vcmpfalsepdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_oqpd vcmpneq_oqpdb vcmpneq_oqpdw vcmpneq_oqpdl vcmpneq_oqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgepd vcmpgepdb vcmpgepdw vcmpgepdl vcmpgepdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgtpd vcmpgtpdb vcmpgtpdw vcmpgtpdl vcmpgtpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptruepd vcmptruepdb vcmptruepdw vcmptruepdl vcmptruepdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_ospd vcmpeq_ospdb vcmpeq_ospdw vcmpeq_ospdl vcmpeq_ospdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplt_oqpd vcmplt_oqpdb vcmplt_oqpdw vcmplt_oqpdl vcmplt_oqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmple_oqpd vcmple_oqpdb vcmple_oqpdw vcmple_oqpdl vcmple_oqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunord_spd vcmpunord_spdb vcmpunord_spdw vcmpunord_spdl vcmpunord_spdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_uspd vcmpneq_uspdb vcmpneq_uspdw vcmpneq_uspdl vcmpneq_uspdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlt_uqpd vcmpnlt_uqpdb vcmpnlt_uqpdw vcmpnlt_uqpdl vcmpnlt_uqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnle_uqpd vcmpnle_uqpdb vcmpnle_uqpdw vcmpnle_uqpdl vcmpnle_uqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpord_spd vcmpord_spdb vcmpord_spdw vcmpord_spdl vcmpord_spdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_uspd vcmpeq_uspdb vcmpeq_uspdw vcmpeq_uspdl vcmpeq_uspdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnge_uqpd vcmpnge_uqpdb vcmpnge_uqpdw vcmpnge_uqpdl vcmpnge_uqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngt_uqpd vcmpngt_uqpdb vcmpngt_uqpdw vcmpngt_uqpdl vcmpngt_uqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalse_ospd vcmpfalse_ospdb vcmpfalse_ospdw vcmpfalse_ospdl vcmpfalse_ospdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_ospd vcmpneq_ospdb vcmpneq_ospdw vcmpneq_ospdl vcmpneq_ospdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpge_oqpd vcmpge_oqpdb vcmpge_oqpdw vcmpge_oqpdl vcmpge_oqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgt_oqpd vcmpgt_oqpdb vcmpgt_oqpdw vcmpgt_oqpdl vcmpgt_oqpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptrue_uspd vcmptrue_uspdb vcmptrue_uspdw vcmptrue_uspdl vcmptrue_uspdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmppd vcmppdb vcmppdw vcmppdl vcmppdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeqps vcmpeqpsb vcmpeqpsw vcmpeqpsl vcmpeqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpltps vcmpltpsb vcmpltpsw vcmpltpsl vcmpltpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpleps vcmplepsb vcmplepsw vcmplepsl vcmplepsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunordps vcmpunordpsb vcmpunordpsw vcmpunordpsl vcmpunordpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneqps vcmpneqpsb vcmpneqpsw vcmpneqpsl vcmpneqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnltps vcmpnltpsb vcmpnltpsw vcmpnltpsl vcmpnltpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnleps vcmpnlepsb vcmpnlepsw vcmpnlepsl vcmpnlepsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpordps vcmpordpsb vcmpordpsw vcmpordpsl vcmpordpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_uqps vcmpeq_uqpsb vcmpeq_uqpsw vcmpeq_uqpsl vcmpeq_uqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngeps vcmpngepsb vcmpngepsw vcmpngepsl vcmpngepsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngtps vcmpngtpsb vcmpngtpsw vcmpngtpsl vcmpngtpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalseps vcmpfalsepsb vcmpfalsepsw vcmpfalsepsl vcmpfalsepsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_oqps vcmpneq_oqpsb vcmpneq_oqpsw vcmpneq_oqpsl vcmpneq_oqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgeps vcmpgepsb vcmpgepsw vcmpgepsl vcmpgepsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgtps vcmpgtpsb vcmpgtpsw vcmpgtpsl vcmpgtpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptrueps vcmptruepsb vcmptruepsw vcmptruepsl vcmptruepsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_osps vcmpeq_ospsb vcmpeq_ospsw vcmpeq_ospsl vcmpeq_ospsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplt_oqps vcmplt_oqpsb vcmplt_oqpsw vcmplt_oqpsl vcmplt_oqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmple_oqps vcmple_oqpsb vcmple_oqpsw vcmple_oqpsl vcmple_oqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunord_sps vcmpunord_spsb vcmpunord_spsw vcmpunord_spsl vcmpunord_spsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_usps vcmpneq_uspsb vcmpneq_uspsw vcmpneq_uspsl vcmpneq_uspsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlt_uqps vcmpnlt_uqpsb vcmpnlt_uqpsw vcmpnlt_uqpsl vcmpnlt_uqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnle_uqps vcmpnle_uqpsb vcmpnle_uqpsw vcmpnle_uqpsl vcmpnle_uqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpord_sps vcmpord_spsb vcmpord_spsw vcmpord_spsl vcmpord_spsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_usps vcmpeq_uspsb vcmpeq_uspsw vcmpeq_uspsl vcmpeq_uspsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnge_uqps vcmpnge_uqpsb vcmpnge_uqpsw vcmpnge_uqpsl vcmpnge_uqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngt_uqps vcmpngt_uqpsb vcmpngt_uqpsw vcmpngt_uqpsl vcmpngt_uqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalse_osps vcmpfalse_ospsb vcmpfalse_ospsw vcmpfalse_ospsl vcmpfalse_ospsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_osps vcmpneq_ospsb vcmpneq_ospsw vcmpneq_ospsl vcmpneq_ospsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpge_oqps vcmpge_oqpsb vcmpge_oqpsw vcmpge_oqpsl vcmpge_oqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgt_oqps vcmpgt_oqpsb vcmpgt_oqpsw vcmpgt_oqpsl vcmpgt_oqpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptrue_usps vcmptrue_uspsb vcmptrue_uspsw vcmptrue_uspsl vcmptrue_uspsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpps vcmppsb vcmppsw vcmppsl vcmppsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeqsd vcmpeqsdb vcmpeqsdw vcmpeqsdl vcmpeqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpltsd vcmpltsdb vcmpltsdw vcmpltsdl vcmpltsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplesd vcmplesdb vcmplesdw vcmplesdl vcmplesdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunordsd vcmpunordsdb vcmpunordsdw vcmpunordsdl vcmpunordsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneqsd vcmpneqsdb vcmpneqsdw vcmpneqsdl vcmpneqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnltsd vcmpnltsdb vcmpnltsdw vcmpnltsdl vcmpnltsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlesd vcmpnlesdb vcmpnlesdw vcmpnlesdl vcmpnlesdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpordsd vcmpordsdb vcmpordsdw vcmpordsdl vcmpordsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_uqsd vcmpeq_uqsdb vcmpeq_uqsdw vcmpeq_uqsdl vcmpeq_uqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngesd vcmpngesdb vcmpngesdw vcmpngesdl vcmpngesdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngtsd vcmpngtsdb vcmpngtsdw vcmpngtsdl vcmpngtsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalsesd vcmpfalsesdb vcmpfalsesdw vcmpfalsesdl vcmpfalsesdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_oqsd vcmpneq_oqsdb vcmpneq_oqsdw vcmpneq_oqsdl vcmpneq_oqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgesd vcmpgesdb vcmpgesdw vcmpgesdl vcmpgesdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgtsd vcmpgtsdb vcmpgtsdw vcmpgtsdl vcmpgtsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptruesd vcmptruesdb vcmptruesdw vcmptruesdl vcmptruesdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_ossd vcmpeq_ossdb vcmpeq_ossdw vcmpeq_ossdl vcmpeq_ossdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplt_oqsd vcmplt_oqsdb vcmplt_oqsdw vcmplt_oqsdl vcmplt_oqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmple_oqsd vcmple_oqsdb vcmple_oqsdw vcmple_oqsdl vcmple_oqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunord_ssd vcmpunord_ssdb vcmpunord_ssdw vcmpunord_ssdl vcmpunord_ssdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_ussd vcmpneq_ussdb vcmpneq_ussdw vcmpneq_ussdl vcmpneq_ussdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlt_uqsd vcmpnlt_uqsdb vcmpnlt_uqsdw vcmpnlt_uqsdl vcmpnlt_uqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnle_uqsd vcmpnle_uqsdb vcmpnle_uqsdw vcmpnle_uqsdl vcmpnle_uqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpord_ssd vcmpord_ssdb vcmpord_ssdw vcmpord_ssdl vcmpord_ssdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_ussd vcmpeq_ussdb vcmpeq_ussdw vcmpeq_ussdl vcmpeq_ussdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnge_uqsd vcmpnge_uqsdb vcmpnge_uqsdw vcmpnge_uqsdl vcmpnge_uqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngt_uqsd vcmpngt_uqsdb vcmpngt_uqsdw vcmpngt_uqsdl vcmpngt_uqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalse_ossd vcmpfalse_ossdb vcmpfalse_ossdw vcmpfalse_ossdl vcmpfalse_ossdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_ossd vcmpneq_ossdb vcmpneq_ossdw vcmpneq_ossdl vcmpneq_ossdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpge_oqsd vcmpge_oqsdb vcmpge_oqsdw vcmpge_oqsdl vcmpge_oqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgt_oqsd vcmpgt_oqsdb vcmpgt_oqsdw vcmpgt_oqsdl vcmpgt_oqsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptrue_ussd vcmptrue_ussdb vcmptrue_ussdw vcmptrue_ussdl vcmptrue_ussdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpsd vcmpsdb vcmpsdw vcmpsdl vcmpsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeqss vcmpeqssb vcmpeqssw vcmpeqssl vcmpeqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpltss vcmpltssb vcmpltssw vcmpltssl vcmpltssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpless vcmplessb vcmplessw vcmplessl vcmplessq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunordss vcmpunordssb vcmpunordssw vcmpunordssl vcmpunordssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneqss vcmpneqssb vcmpneqssw vcmpneqssl vcmpneqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnltss vcmpnltssb vcmpnltssw vcmpnltssl vcmpnltssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnless vcmpnlessb vcmpnlessw vcmpnlessl vcmpnlessq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpordss vcmpordssb vcmpordssw vcmpordssl vcmpordssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_uqss vcmpeq_uqssb vcmpeq_uqssw vcmpeq_uqssl vcmpeq_uqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngess vcmpngessb vcmpngessw vcmpngessl vcmpngessq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngtss vcmpngtssb vcmpngtssw vcmpngtssl vcmpngtssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalsess vcmpfalsessb vcmpfalsessw vcmpfalsessl vcmpfalsessq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_oqss vcmpneq_oqssb vcmpneq_oqssw vcmpneq_oqssl vcmpneq_oqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgess vcmpgessb vcmpgessw vcmpgessl vcmpgessq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgtss vcmpgtssb vcmpgtssw vcmpgtssl vcmpgtssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptruess vcmptruessb vcmptruessw vcmptruessl vcmptruessq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_osss vcmpeq_osssb vcmpeq_osssw vcmpeq_osssl vcmpeq_osssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmplt_oqss vcmplt_oqssb vcmplt_oqssw vcmplt_oqssl vcmplt_oqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmple_oqss vcmple_oqssb vcmple_oqssw vcmple_oqssl vcmple_oqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpunord_sss vcmpunord_sssb vcmpunord_sssw vcmpunord_sssl vcmpunord_sssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_usss vcmpneq_usssb vcmpneq_usssw vcmpneq_usssl vcmpneq_usssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnlt_uqss vcmpnlt_uqssb vcmpnlt_uqssw vcmpnlt_uqssl vcmpnlt_uqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnle_uqss vcmpnle_uqssb vcmpnle_uqssw vcmpnle_uqssl vcmpnle_uqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpord_sss vcmpord_sssb vcmpord_sssw vcmpord_sssl vcmpord_sssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpeq_usss vcmpeq_usssb vcmpeq_usssw vcmpeq_usssl vcmpeq_usssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpnge_uqss vcmpnge_uqssb vcmpnge_uqssw vcmpnge_uqssl vcmpnge_uqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpngt_uqss vcmpngt_uqssb vcmpngt_uqssw vcmpngt_uqssl vcmpngt_uqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpfalse_osss vcmpfalse_osssb vcmpfalse_osssw vcmpfalse_osssl vcmpfalse_osssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpneq_osss vcmpneq_osssb vcmpneq_osssw vcmpneq_osssl vcmpneq_osssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpge_oqss vcmpge_oqssb vcmpge_oqssw vcmpge_oqssl vcmpge_oqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpgt_oqss vcmpgt_oqssb vcmpgt_oqssw vcmpgt_oqssl vcmpgt_oqssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmptrue_usss vcmptrue_usssb vcmptrue_usssw vcmptrue_usssl vcmptrue_usssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcmpss vcmpssb vcmpssw vcmpssl vcmpssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcomisd vcomisdb vcomisdw vcomisdl vcomisdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcomiss vcomissb vcomissw vcomissl vcomissq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtdq2pd vcvtdq2pdb vcvtdq2pdw vcvtdq2pdl vcvtdq2pdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtdq2ps vcvtdq2psb vcvtdq2psw vcvtdq2psl vcvtdq2psq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtpd2dq vcvtpd2dqb vcvtpd2dqw vcvtpd2dql vcvtpd2dqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtpd2ps vcvtpd2psb vcvtpd2psw vcvtpd2psl vcvtpd2psq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtps2dq vcvtps2dqb vcvtps2dqw vcvtps2dql vcvtps2dqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtps2pd vcvtps2pdb vcvtps2pdw vcvtps2pdl vcvtps2pdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtsd2si vcvtsd2sib vcvtsd2siw vcvtsd2sil vcvtsd2siq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtsd2ss vcvtsd2ssb vcvtsd2ssw vcvtsd2ssl vcvtsd2ssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtsi2sd"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtsi2ss"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtss2sd vcvtss2sdb vcvtss2sdw vcvtss2sdl vcvtss2sdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvtss2si vcvtss2sib vcvtss2siw vcvtss2sil vcvtss2siq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvttpd2dq vcvttpd2dqb vcvttpd2dqw vcvttpd2dql vcvttpd2dqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvttps2dq vcvttps2dqb vcvttps2dqw vcvttps2dql vcvttps2dqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvttsd2si vcvttsd2sib vcvttsd2siw vcvttsd2sil vcvttsd2siq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vcvttss2si vcvttss2sib vcvttss2siw vcvttss2sil vcvttss2siq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdivpd vdivpdb vdivpdw vdivpdl vdivpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdivps vdivpsb vdivpsw vdivpsl vdivpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdivsd vdivsdb vdivsdw vdivsdl vdivsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdivss vdivssb vdivssw vdivssl vdivssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdppd vdppdb vdppdw vdppdl vdppdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vdpps vdppsb vdppsw vdppsl vdppsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vextractf128 vextractf128b vextractf128w vextractf128l vextractf128q"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vextractps vextractpsb vextractpsw vextractpsl vextractpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vhaddpd vhaddpdb vhaddpdw vhaddpdl vhaddpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vhaddps vhaddpsb vhaddpsw vhaddpsl vhaddpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vhsubpd vhsubpdb vhsubpdw vhsubpdl vhsubpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vhsubps vhsubpsb vhsubpsw vhsubpsl vhsubpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vinsertf128 vinsertf128b vinsertf128w vinsertf128l vinsertf128q"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vinsertps vinsertpsb vinsertpsw vinsertpsl vinsertpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vlddqu vlddqub vlddquw vlddqul vlddquq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vldqqu vldqqub vldqquw vldqqul vldqquq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vlddqu vlddqub vlddquw vlddqul vlddquq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vldmxcsr vldmxcsrb vldmxcsrw vldmxcsrl vldmxcsrq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaskmovdqu"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaskmovps vmaskmovpsb vmaskmovpsw vmaskmovpsl vmaskmovpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaskmovpd vmaskmovpdb vmaskmovpdw vmaskmovpdl vmaskmovpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaxpd vmaxpdb vmaxpdw vmaxpdl vmaxpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaxps vmaxpsb vmaxpsw vmaxpsl vmaxpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaxsd vmaxsdb vmaxsdw vmaxsdl vmaxsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmaxss vmaxssb vmaxssw vmaxssl vmaxssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vminpd vminpdb vminpdw vminpdl vminpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vminps vminpsb vminpsw vminpsl vminpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vminsd vminsdb vminsdw vminsdl vminsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vminss vminssb vminssw vminssl vminssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovapd vmovapdb vmovapdw vmovapdl vmovapdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovaps vmovapsb vmovapsw vmovapsl vmovapsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovq vmovqb vmovqw vmovql vmovqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovd"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovd"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovddup vmovddupb vmovddupw vmovddupl vmovddupq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovdqa vmovdqab vmovdqaw vmovdqal vmovdqaq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovqqa vmovqqab vmovqqaw vmovqqal vmovqqaq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovdqa vmovdqab vmovdqaw vmovdqal vmovdqaq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovdqu vmovdqub vmovdquw vmovdqul vmovdquq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovqqu vmovqqub vmovqquw vmovqqul vmovqquq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovdqu vmovdqub vmovdquw vmovdqul vmovdquq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovhlps"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovhpd vmovhpdb vmovhpdw vmovhpdl vmovhpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovhps vmovhpsb vmovhpsw vmovhpsl vmovhpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovlhps"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovlpd vmovlpdb vmovlpdw vmovlpdl vmovlpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovlps vmovlpsb vmovlpsw vmovlpsl vmovlpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovmskpd vmovmskpdb vmovmskpdw vmovmskpdl vmovmskpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovmskps vmovmskpsb vmovmskpsw vmovmskpsl vmovmskpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntdq vmovntdqb vmovntdqw vmovntdql vmovntdqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntqq vmovntqqb vmovntqqw vmovntqql vmovntqqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntdq vmovntdqb vmovntdqw vmovntdql vmovntdqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntdqa vmovntdqab vmovntdqaw vmovntdqal vmovntdqaq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntpd vmovntpdb vmovntpdw vmovntpdl vmovntpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovntps vmovntpsb vmovntpsw vmovntpsl vmovntpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovsd vmovsdb vmovsdw vmovsdl vmovsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovshdup vmovshdupb vmovshdupw vmovshdupl vmovshdupq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovsldup vmovsldupb vmovsldupw vmovsldupl vmovsldupq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovss vmovssb vmovssw vmovssl vmovssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovupd vmovupdb vmovupdw vmovupdl vmovupdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmovups vmovupsb vmovupsw vmovupsl vmovupsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmpsadbw vmpsadbwb vmpsadbww vmpsadbwl vmpsadbwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmulpd vmulpdb vmulpdw vmulpdl vmulpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmulps vmulpsb vmulpsw vmulpsl vmulpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmulsd vmulsdb vmulsdw vmulsdl vmulsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vmulss vmulssb vmulssw vmulssl vmulssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vorpd vorpdb vorpdw vorpdl vorpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vorps vorpsb vorpsw vorpsl vorpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpabsb vpabsbb vpabsbw vpabsbl vpabsbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpabsw vpabswb vpabsww vpabswl vpabswq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpabsd vpabsdb vpabsdw vpabsdl vpabsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpacksswb vpacksswbb vpacksswbw vpacksswbl vpacksswbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpackssdw vpackssdwb vpackssdww vpackssdwl vpackssdwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpackuswb vpackuswbb vpackuswbw vpackuswbl vpackuswbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpackusdw vpackusdwb vpackusdww vpackusdwl vpackusdwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddb vpaddbb vpaddbw vpaddbl vpaddbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddw vpaddwb vpaddww vpaddwl vpaddwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddd vpadddb vpadddw vpadddl vpadddq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddq vpaddqb vpaddqw vpaddql vpaddqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddsb vpaddsbb vpaddsbw vpaddsbl vpaddsbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddsw vpaddswb vpaddsww vpaddswl vpaddswq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddusb vpaddusbb vpaddusbw vpaddusbl vpaddusbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpaddusw vpadduswb vpaddusww vpadduswl vpadduswq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpalignr vpalignrb vpalignrw vpalignrl vpalignrq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpand vpandb vpandw vpandl vpandq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpandn vpandnb vpandnw vpandnl vpandnq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpavgb vpavgbb vpavgbw vpavgbl vpavgbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpavgw vpavgwb vpavgww vpavgwl vpavgwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpblendvb vpblendvbb vpblendvbw vpblendvbl vpblendvbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpblendw vpblendwb vpblendww vpblendwl vpblendwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpestri vpcmpestrib vpcmpestriw vpcmpestril vpcmpestriq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpestrm vpcmpestrmb vpcmpestrmw vpcmpestrml vpcmpestrmq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpistri vpcmpistrib vpcmpistriw vpcmpistril vpcmpistriq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpistrm vpcmpistrmb vpcmpistrmw vpcmpistrml vpcmpistrmq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpeqb vpcmpeqbb vpcmpeqbw vpcmpeqbl vpcmpeqbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpeqw vpcmpeqwb vpcmpeqww vpcmpeqwl vpcmpeqwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpeqd vpcmpeqdb vpcmpeqdw vpcmpeqdl vpcmpeqdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpeqq vpcmpeqqb vpcmpeqqw vpcmpeqql vpcmpeqqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpgtb vpcmpgtbb vpcmpgtbw vpcmpgtbl vpcmpgtbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpgtw vpcmpgtwb vpcmpgtww vpcmpgtwl vpcmpgtwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpgtd vpcmpgtdb vpcmpgtdw vpcmpgtdl vpcmpgtdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpcmpgtq vpcmpgtqb vpcmpgtqw vpcmpgtql vpcmpgtqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilpd vpermilpdb vpermilpdw vpermilpdl vpermilpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermiltd2pd vpermiltd2pdb vpermiltd2pdw vpermiltd2pdl vpermiltd2pdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilmo2pd vpermilmo2pdb vpermilmo2pdw vpermilmo2pdl vpermilmo2pdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilmz2pd vpermilmz2pdb vpermilmz2pdw vpermilmz2pdl vpermilmz2pdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermil2pd vpermil2pdb vpermil2pdw vpermil2pdl vpermil2pdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilps vpermilpsb vpermilpsw vpermilpsl vpermilpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermiltd2ps vpermiltd2psb vpermiltd2psw vpermiltd2psl vpermiltd2psq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilmo2ps vpermilmo2psb vpermilmo2psw vpermilmo2psl vpermilmo2psq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermilmz2ps vpermilmz2psb vpermilmz2psw vpermilmz2psl vpermilmz2psq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpermil2ps vpermil2psb vpermil2psw vpermil2psl vpermil2psq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vperm2f128 vperm2f128b vperm2f128w vperm2f128l vperm2f128q"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpextrb vpextrbb vpextrbw vpextrbl vpextrbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpextrw vpextrwb vpextrww vpextrwl vpextrwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpextrd vpextrdb vpextrdw vpextrdl vpextrdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpextrq vpextrqb vpextrqw vpextrql vpextrqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphaddw vphaddwb vphaddww vphaddwl vphaddwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphaddd vphadddb vphadddw vphadddl vphadddq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphaddsw vphaddswb vphaddsww vphaddswl vphaddswq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphminposuw vphminposuwb vphminposuww vphminposuwl vphminposuwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphsubw vphsubwb vphsubww vphsubwl vphsubwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphsubd vphsubdb vphsubdw vphsubdl vphsubdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vphsubsw vphsubswb vphsubsww vphsubswl vphsubswq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpinsrb vpinsrbb vpinsrbw vpinsrbl vpinsrbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpinsrw vpinsrwb vpinsrww vpinsrwl vpinsrwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpinsrd vpinsrdb vpinsrdw vpinsrdl vpinsrdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpinsrq vpinsrqb vpinsrqw vpinsrql vpinsrqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaddwd vpmaddwdb vpmaddwdw vpmaddwdl vpmaddwdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaddubsw vpmaddubswb vpmaddubsww vpmaddubswl vpmaddubswq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxsb vpmaxsbb vpmaxsbw vpmaxsbl vpmaxsbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxsw vpmaxswb vpmaxsww vpmaxswl vpmaxswq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxsd vpmaxsdb vpmaxsdw vpmaxsdl vpmaxsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxub vpmaxubb vpmaxubw vpmaxubl vpmaxubq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxuw vpmaxuwb vpmaxuww vpmaxuwl vpmaxuwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmaxud vpmaxudb vpmaxudw vpmaxudl vpmaxudq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminsb vpminsbb vpminsbw vpminsbl vpminsbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminsw vpminswb vpminsww vpminswl vpminswq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminsd vpminsdb vpminsdw vpminsdl vpminsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminub vpminubb vpminubw vpminubl vpminubq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminuw vpminuwb vpminuww vpminuwl vpminuwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpminud vpminudb vpminudw vpminudl vpminudq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovmskb"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxbw vpmovsxbwb vpmovsxbww vpmovsxbwl vpmovsxbwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxbd vpmovsxbdb vpmovsxbdw vpmovsxbdl vpmovsxbdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxbq vpmovsxbqb vpmovsxbqw vpmovsxbql vpmovsxbqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxwd vpmovsxwdb vpmovsxwdw vpmovsxwdl vpmovsxwdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxwq vpmovsxwqb vpmovsxwqw vpmovsxwql vpmovsxwqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovsxdq vpmovsxdqb vpmovsxdqw vpmovsxdql vpmovsxdqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxbw vpmovzxbwb vpmovzxbww vpmovzxbwl vpmovzxbwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxbd vpmovzxbdb vpmovzxbdw vpmovzxbdl vpmovzxbdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxbq vpmovzxbqb vpmovzxbqw vpmovzxbql vpmovzxbqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxwd vpmovzxwdb vpmovzxwdw vpmovzxwdl vpmovzxwdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxwq vpmovzxwqb vpmovzxwqw vpmovzxwql vpmovzxwqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmovzxdq vpmovzxdqb vpmovzxdqw vpmovzxdql vpmovzxdqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmulhuw vpmulhuwb vpmulhuww vpmulhuwl vpmulhuwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmulhrsw vpmulhrswb vpmulhrsww vpmulhrswl vpmulhrswq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmulhw vpmulhwb vpmulhww vpmulhwl vpmulhwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmullw vpmullwb vpmullww vpmullwl vpmullwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmulld vpmulldb vpmulldw vpmulldl vpmulldq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmuludq vpmuludqb vpmuludqw vpmuludql vpmuludqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpmuldq vpmuldqb vpmuldqw vpmuldql vpmuldqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpor vporb vporw vporl vporq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsadbw vpsadbwb vpsadbww vpsadbwl vpsadbwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpshufb vpshufbb vpshufbw vpshufbl vpshufbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpshufd vpshufdb vpshufdw vpshufdl vpshufdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpshufhw vpshufhwb vpshufhww vpshufhwl vpshufhwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpshuflw vpshuflwb vpshuflww vpshuflwl vpshuflwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsignb vpsignbb vpsignbw vpsignbl vpsignbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsignw vpsignwb vpsignww vpsignwl vpsignwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsignd vpsigndb vpsigndw vpsigndl vpsigndq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpslldq vpslldqb vpslldqw vpslldql vpslldqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsrldq vpsrldqb vpsrldqw vpsrldql vpsrldqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsllw vpsllwb vpsllww vpsllwl vpsllwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpslld vpslldb vpslldw vpslldl vpslldq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsllq vpsllqb vpsllqw vpsllql vpsllqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsraw vpsrawb vpsraww vpsrawl vpsrawq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsrad vpsradb vpsradw vpsradl vpsradq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsrlw vpsrlwb vpsrlww vpsrlwl vpsrlwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsrld vpsrldb vpsrldw vpsrldl vpsrldq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsrlq vpsrlqb vpsrlqw vpsrlql vpsrlqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vptest vptestb vptestw vptestl vptestq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubb vpsubbb vpsubbw vpsubbl vpsubbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubw vpsubwb vpsubww vpsubwl vpsubwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubd vpsubdb vpsubdw vpsubdl vpsubdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubq vpsubqb vpsubqw vpsubql vpsubqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubsb vpsubsbb vpsubsbw vpsubsbl vpsubsbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubsw vpsubswb vpsubsww vpsubswl vpsubswq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubusb vpsubusbb vpsubusbw vpsubusbl vpsubusbq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpsubusw vpsubuswb vpsubusww vpsubuswl vpsubuswq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpckhbw vpunpckhbwb vpunpckhbww vpunpckhbwl vpunpckhbwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpckhwd vpunpckhwdb vpunpckhwdw vpunpckhwdl vpunpckhwdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpckhdq vpunpckhdqb vpunpckhdqw vpunpckhdql vpunpckhdqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpckhqdq vpunpckhqdqb vpunpckhqdqw vpunpckhqdql vpunpckhqdqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpcklbw vpunpcklbwb vpunpcklbww vpunpcklbwl vpunpcklbwq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpcklwd vpunpcklwdb vpunpcklwdw vpunpcklwdl vpunpcklwdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpckldq vpunpckldqb vpunpckldqw vpunpckldql vpunpckldqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpunpcklqdq vpunpcklqdqb vpunpcklqdqw vpunpcklqdql vpunpcklqdqq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vpxor vpxorb vpxorw vpxorl vpxorq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vrcpps vrcppsb vrcppsw vrcppsl vrcppsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vrcpss vrcpssb vrcpssw vrcpssl vrcpssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vrsqrtps vrsqrtpsb vrsqrtpsw vrsqrtpsl vrsqrtpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vrsqrtss vrsqrtssb vrsqrtssw vrsqrtssl vrsqrtssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vroundpd vroundpdb vroundpdw vroundpdl vroundpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vroundps vroundpsb vroundpsw vroundpsl vroundpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vroundsd vroundsdb vroundsdw vroundsdl vroundsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vroundss vroundssb vroundssw vroundssl vroundssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vshufpd vshufpdb vshufpdw vshufpdl vshufpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vshufps vshufpsb vshufpsw vshufpsl vshufpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsqrtpd vsqrtpdb vsqrtpdw vsqrtpdl vsqrtpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsqrtps vsqrtpsb vsqrtpsw vsqrtpsl vsqrtpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsqrtsd vsqrtsdb vsqrtsdw vsqrtsdl vsqrtsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsqrtss vsqrtssb vsqrtssw vsqrtssl vsqrtssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vstmxcsr vstmxcsrb vstmxcsrw vstmxcsrl vstmxcsrq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsubpd vsubpdb vsubpdw vsubpdl vsubpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsubps vsubpsb vsubpsw vsubpsl vsubpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsubsd vsubsdb vsubsdw vsubsdl vsubsdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vsubss vsubssb vsubssw vsubssl vsubssq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vtestps vtestpsb vtestpsw vtestpsl vtestpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vtestpd vtestpdb vtestpdw vtestpdl vtestpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vucomisd vucomisdb vucomisdw vucomisdl vucomisdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vucomiss vucomissb vucomissw vucomissl vucomissq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vunpckhpd vunpckhpdb vunpckhpdw vunpckhpdl vunpckhpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vunpckhps vunpckhpsb vunpckhpsw vunpckhpsl vunpckhpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vunpcklpd vunpcklpdb vunpcklpdw vunpcklpdl vunpcklpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vunpcklps vunpcklpsb vunpcklpsw vunpcklpsl vunpcklpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vxorpd vxorpdb vxorpdw vxorpdl vxorpdq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vxorps vxorpsb vxorpsw vxorpsl vxorpsq"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vzeroall"
-Opcode_SANDYBRIDGE_AVX="${Opcode_SANDYBRIDGE_AVX} vzeroupper"
-
-# AMD Enhanced 3DNow! (Athlon) instructions
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pf2iw pf2iwb pf2iww pf2iwl pf2iwq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfnacc pfnaccb pfnaccw pfnaccl pfnaccq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pfpnacc pfpnaccb pfpnaccw pfpnaccl pfpnaccq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pi2fw pi2fwb pi2fww pi2fwl pi2fwq"
-Opcode_ATHLON_3DNOW="${Opcode_ATHLON_3DNOW} pswapd pswapdb pswapdw pswapdl pswapdq"
-
-# Penryn New Instructions (SSE4.1)
-Opcode_SSE41="${Opcode_SSE41} blendpd blendpdb blendpdw blendpdl blendpdq"
-Opcode_SSE41="${Opcode_SSE41} blendps blendpsb blendpsw blendpsl blendpsq"
-Opcode_SSE41="${Opcode_SSE41} blendvpd blendvpdb blendvpdw blendvpdl blendvpdq"
-Opcode_SSE41="${Opcode_SSE41} blendvps blendvpsb blendvpsw blendvpsl blendvpsq"
-Opcode_SSE41="${Opcode_SSE41} dppd dppdb dppdw dppdl dppdq"
-Opcode_SSE41="${Opcode_SSE41} dpps dppsb dppsw dppsl dppsq"
-Opcode_X64_SSE41="${Opcode_X64_SSE41} extractps extractpsb extractpsw extractpsl extractpsq"
-Opcode_SSE41="${Opcode_SSE41} insertps insertpsb insertpsw insertpsl insertpsq"
-Opcode_SSE41="${Opcode_SSE41} movntdqa movntdqab movntdqaw movntdqal movntdqaq"
-Opcode_SSE41="${Opcode_SSE41} mpsadbw mpsadbwb mpsadbww mpsadbwl mpsadbwq"
-Opcode_SSE41="${Opcode_SSE41} packusdw packusdwb packusdww packusdwl packusdwq"
-Opcode_SSE41="${Opcode_SSE41} pblendvb pblendvbb pblendvbw pblendvbl pblendvbq"
-Opcode_SSE41="${Opcode_SSE41} pblendw pblendwb pblendww pblendwl pblendwq"
-Opcode_SSE41="${Opcode_SSE41} pcmpeqq pcmpeqqb pcmpeqqw pcmpeqql pcmpeqqq"
-Opcode_X64_SSE41="${Opcode_X64_SSE41} pextrb pextrbb pextrbw pextrbl pextrbq"
-Opcode_SSE41="${Opcode_SSE41} pextrd pextrdb pextrdw pextrdl pextrdq"
-Opcode_X64_SSE41="${Opcode_X64_SSE41} pextrq pextrqb pextrqw pextrql pextrqq"
-Opcode_X64_SSE41="${Opcode_X64_SSE41} pextrw pextrwb pextrww pextrwl pextrwq"
-Opcode_SSE41="${Opcode_SSE41} phminposuw phminposuwb phminposuww phminposuwl phminposuwq"
-Opcode_SSE41="${Opcode_SSE41} pinsrb pinsrbb pinsrbw pinsrbl pinsrbq"
-Opcode_SSE41="${Opcode_SSE41} pinsrd pinsrdb pinsrdw pinsrdl pinsrdq"
-Opcode_X64_SSE41="${Opcode_X64_SSE41} pinsrq pinsrqb pinsrqw pinsrql pinsrqq"
-Opcode_SSE41="${Opcode_SSE41} pmaxsb pmaxsbb pmaxsbw pmaxsbl pmaxsbq"
-Opcode_SSE41="${Opcode_SSE41} pmaxsd pmaxsdb pmaxsdw pmaxsdl pmaxsdq"
-Opcode_SSE41="${Opcode_SSE41} pmaxud pmaxudb pmaxudw pmaxudl pmaxudq"
-Opcode_SSE41="${Opcode_SSE41} pmaxuw pmaxuwb pmaxuww pmaxuwl pmaxuwq"
-Opcode_SSE41="${Opcode_SSE41} pminsb pminsbb pminsbw pminsbl pminsbq"
-Opcode_SSE41="${Opcode_SSE41} pminsd pminsdb pminsdw pminsdl pminsdq"
-Opcode_SSE41="${Opcode_SSE41} pminud pminudb pminudw pminudl pminudq"
-Opcode_SSE41="${Opcode_SSE41} pminuw pminuwb pminuww pminuwl pminuwq"
-Opcode_SSE41="${Opcode_SSE41} pmovsxbw pmovsxbwb pmovsxbww pmovsxbwl pmovsxbwq"
-Opcode_SSE41="${Opcode_SSE41} pmovsxbd pmovsxbdb pmovsxbdw pmovsxbdl pmovsxbdq"
-Opcode_SSE41="${Opcode_SSE41} pmovsxbq pmovsxbqb pmovsxbqw pmovsxbql pmovsxbqq"
-Opcode_SSE41="${Opcode_SSE41} pmovsxwd pmovsxwdb pmovsxwdw pmovsxwdl pmovsxwdq"
-Opcode_SSE41="${Opcode_SSE41} pmovsxwq pmovsxwqb pmovsxwqw pmovsxwql pmovsxwqq"
-Opcode_SSE41="${Opcode_SSE41} pmovsxdq pmovsxdqb pmovsxdqw pmovsxdql pmovsxdqq"
-Opcode_SSE41="${Opcode_SSE41} pmovzxbw pmovzxbwb pmovzxbww pmovzxbwl pmovzxbwq"
-Opcode_SSE41="${Opcode_SSE41} pmovzxbd pmovzxbdb pmovzxbdw pmovzxbdl pmovzxbdq"
-Opcode_SSE41="${Opcode_SSE41} pmovzxbq pmovzxbqb pmovzxbqw pmovzxbql pmovzxbqq"
-Opcode_SSE41="${Opcode_SSE41} pmovzxwd pmovzxwdb pmovzxwdw pmovzxwdl pmovzxwdq"
-Opcode_SSE41="${Opcode_SSE41} pmovzxwq pmovzxwqb pmovzxwqw pmovzxwql pmovzxwqq"
-Opcode_SSE41="${Opcode_SSE41} pmovzxdq pmovzxdqb pmovzxdqw pmovzxdql pmovzxdqq"
-Opcode_SSE41="${Opcode_SSE41} pmuldq pmuldqb pmuldqw pmuldql pmuldqq"
-Opcode_SSE41="${Opcode_SSE41} pmulld pmulldb pmulldw pmulldl pmulldq"
-Opcode_SSE41="${Opcode_SSE41} ptest ptestb ptestw ptestl ptestq"
-Opcode_SSE41="${Opcode_SSE41} roundpd roundpdb roundpdw roundpdl roundpdq"
-Opcode_SSE41="${Opcode_SSE41} roundps roundpsb roundpsw roundpsl roundpsq"
-Opcode_SSE41="${Opcode_SSE41} roundsd roundsdb roundsdw roundsdl roundsdq"
-Opcode_SSE41="${Opcode_SSE41} roundss roundssb roundssw roundssl roundssq"
-
-# AMD SSE4A
-Opcode_AMD_SSE4A="${Opcode_AMD_SSE4A} extrq"
-Opcode_AMD_SSE4A="${Opcode_AMD_SSE4A} insertq"
-Opcode_AMD_SSE4A="${Opcode_AMD_SSE4A} movntsd movntsdb movntsdw movntsdl movntsdq"
-Opcode_AMD_SSE4A="${Opcode_AMD_SSE4A} movntss movntssb movntssw movntssl movntssq"
diff --git a/misc/README.Indexes b/misc/README.Indexes
new file mode 100644
index 0000000..ddf1267
--- /dev/null
+++ b/misc/README.Indexes
@@ -0,0 +1 @@
+create index mirror_statuses_last_sync on mirror_statuses(last_sync ASC);
diff --git a/misc/database-layout.dmf b/misc/database-layout.dmf
index bc2102b..012f306 100644
--- a/misc/database-layout.dmf
+++ b/misc/database-layout.dmf
@@ -2,55 +2,61 @@
<diagram xmlns="http://oxygene.sk/ns/diagram/1/">
<notation>Relational</notation>
<item-list>
- <item type="database-table" id="{91a05cd7-dc02-474b-bd10-aab0f53ce9d7}">
+ <item type="database-table" id="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}">
<position>
- <x>977</x>
- <y>378</y>
+ <x>729</x>
+ <y>684</y>
</position>
<table>
- <name>command_log</name>
+ <name>upstream_repositories</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>BIGINT</data-type>
+ <data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>date</name>
- <data-type>TIMESTAMP</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>command</name>
+ <name>name</name>
<data-type>VARCHAR(64)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
+ </column-list>
+ </table>
+ </item>
+ <item type="database-table" id="{44dd2d06-f012-46f7-a1a9-d38dd21b4287}">
+ <position>
+ <x>217</x>
+ <y>328</y>
+ </position>
+ <table>
+ <name>compressions</name>
+ <color>#ffffff</color>
+ <column-list>
<column>
- <name>parameters</name>
- <data-type>TEXT</data-type>
+ <name>id</name>
+ <data-type>SMALLINT</data-type>
<required>True</required>
- <primary-key>False</primary-key>
+ <primary-key>True</primary-key>
</column>
<column>
- <name>shell</name>
- <data-type>BIT</data-type>
+ <name>suffix</name>
+ <data-type>VARCHAR(8)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{fa0bc448-5ecc-4238-9d76-da742ab6eb14}">
+ <item type="database-table" id="{bb59ebca-0255-40dd-91b4-68bd2e110447}">
<position>
- <x>632</x>
- <y>498</y>
+ <x>901</x>
+ <y>641</y>
</position>
<table>
- <name>upstream_packages</name>
+ <name>mirror_statuses</name>
<color>#ffffff</color>
<column-list>
<column>
@@ -60,165 +66,123 @@
<primary-key>True</primary-key>
</column>
<column>
- <name>pkgname</name>
- <data-type>VARCHAR(64)</data-type>
+ <name>protocol</name>
+ <data-type>VARCHAR(8)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>epoch</name>
- <data-type>MEDIUMINT</data-type>
+ <name>url</name>
+ <data-type>VARCHAR(128)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>pkgver</name>
+ <name>country</name>
<data-type>VARCHAR(64)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>pkgrel</name>
- <data-type>MEDIUMINT</data-type>
+ <name>country_code</name>
+ <data-type>VARCHAR(4)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>architecture</name>
- <data-type>VARCHAR(6)</data-type>
+ <name>last_sync</name>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>repository</name>
- <data-type>SMALLINT</data-type>
+ <name>start</name>
+ <data-type>FLOAT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
- </column-list>
- </table>
- </item>
- <item type="database-table" id="{fdd7ff7b-7a96-4625-9287-820e1b076c2a}">
- <position>
- <x>-31</x>
- <y>605</y>
- </position>
- <table>
- <name>toolchain_order</name>
- <color>#ffffff</color>
- <column-list>
- <column>
- <name>number</name>
- <data-type>SMALLINT</data-type>
- <required>True</required>
- <primary-key>True</primary-key>
- </column>
<column>
- <name>pkgbase</name>
- <data-type>VARCHAR(64)</data-type>
+ <name>stop</name>
+ <data-type>FLOAT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>requires_all_dependencies_built</name>
+ <name>isos</name>
<data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
- </column-list>
- </table>
- </item>
- <item type="database-table" id="{a67b38a9-c701-412c-8292-5ef58536da85}">
- <position>
- <x>524</x>
- <y>62</y>
- </position>
- <table>
- <name>versions</name>
- <color>#ffffff</color>
- <column-list>
- <column>
- <name>id</name>
- <data-type>BIGINT</data-type>
- <required>True</required>
- <primary-key>True</primary-key>
- </column>
<column>
- <name>order</name>
- <data-type>BIGINT</data-type>
+ <name>ipv4</name>
+ <data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>epoch</name>
- <data-type>MEDIUMINT</data-type>
+ <name>ipv6</name>
+ <data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>version</name>
- <data-type>VARCHAR(32)</data-type>
+ <name>active</name>
+ <data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{caab4a73-46dc-49dc-ac51-d8ae916827c5}">
+ <item type="database-table" id="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}">
<position>
- <x>345</x>
- <y>-71</y>
+ <x>656</x>
+ <y>380</y>
</position>
<table>
- <name>dependencies</name>
+ <name>architecture_compatibilities</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>BIGINT</data-type>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>dependent</name>
- <data-type>BIGINT</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>depending_on</name>
- <data-type>BIGINT</data-type>
+ <name>built_for</name>
+ <data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>dependency_type</name>
+ <name>runs_on</name>
<data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>version</name>
- <data-type>BIGINT</data-type>
+ <name>fully_compatible</name>
+ <data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>version_relation</name>
- <data-type>VARCHAR(2)</data-type>
+ <name>build_slave_compatible</name>
+ <data-type>BIT(n)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}">
+ <item type="database-table" id="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}">
<position>
- <x>525</x>
- <y>215</y>
+ <x>209</x>
+ <y>83</y>
</position>
<table>
- <name>binary_packages_in_repositories</name>
+ <name>ssh_keys</name>
<color>#ffffff</color>
<column-list>
<column>
@@ -228,93 +192,51 @@
<primary-key>True</primary-key>
</column>
<column>
- <name>package</name>
- <data-type>BIGINT</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>repository</name>
+ <name>owner</name>
<data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>is_to_be_deleted</name>
- <data-type>BIT</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>last_moved</name>
- <data-type>TIMESTAMP</data-type>
+ <name>fingerprint</name>
+ <data-type>TEXT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{5f12db03-a8bb-4467-bab6-a57e545b9081}">
+ <item type="database-table" id="{6180fcbf-5069-4d86-8919-fd39394f1813}">
<position>
- <x>-52</x>
- <y>134</y>
+ <x>-54</x>
+ <y>70</y>
</position>
<table>
- <name>ssh_log</name>
+ <name>email_actions</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>BIGINT</data-type>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>date</name>
- <data-type>TIMESTAMP</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>build_slave</name>
- <data-type>MEDIUMINT</data-type>
- <required>False</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>action</name>
+ <name>name</name>
<data-type>VARCHAR(32)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
- <column>
- <name>parameters</name>
- <data-type>TEXT</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>duration</name>
- <data-type>MEDIUMINT</data-type>
- <required>False</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>exit_code</name>
- <data-type>MEDIUMINT</data-type>
- <required>False</required>
- <primary-key>False</primary-key>
- </column>
</column-list>
</table>
</item>
- <item type="database-table" id="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}">
+ <item type="database-table" id="{b5671c08-e24a-4293-b983-3c86b1a6d622}">
<position>
- <x>-55</x>
- <y>-72</y>
+ <x>62</x>
+ <y>8</y>
</position>
<table>
- <name>email_log</name>
+ <name>allowed_email_actions</name>
<color>#ffffff</color>
<column-list>
<column>
@@ -324,92 +246,68 @@
<primary-key>True</primary-key>
</column>
<column>
- <name>date</name>
- <data-type>TIMESTAMP</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>success</name>
- <data-type>BIT</data-type>
+ <name>gpg_key</name>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
<name>action</name>
<data-type>MEDIUMINT</data-type>
- <required>False</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>count</name>
- <data-type>MEDIUMINT</data-type>
- <required>False</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>gpg_key</name>
- <data-type>BIGINT</data-type>
- <required>False</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>comment</name>
- <data-type>TEXT</data-type>
- <required>False</required>
+ <required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{d823ab09-1c04-44ee-ad4b-6802208967ff}">
+ <item type="database-table" id="{f31249ea-ab19-45a4-9427-1854379ad8e7}">
<position>
- <x>793</x>
- <y>497</y>
+ <x>226</x>
+ <y>-78</y>
</position>
<table>
- <name>repository_moves</name>
+ <name>gpg_keys</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>MEDIUMINT</data-type>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>from_repository</name>
- <data-type>MEDIUMINT</data-type>
+ <name>fingerprint</name>
+ <data-type>VARCHAR(40)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>to_repository</name>
+ <name>owner</name>
<data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>upstream_package_repository</name>
- <data-type>SMALLINT</data-type>
+ <name>public_key</name>
+ <data-type>TEXT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}">
+ <item type="database-table" id="{75e4ebd8-5915-4aff-8316-0c542d3953da}">
<position>
- <x>829</x>
- <y>168</y>
+ <x>218</x>
+ <y>17</y>
</position>
<table>
- <name>repository_stabilities</name>
+ <name>persons</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>SMALLINT</data-type>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
@@ -419,38 +317,26 @@
<required>True</required>
<primary-key>False</primary-key>
</column>
- <column>
- <name>bugtracker_category</name>
- <data-type>VARCHAR(32)</data-type>
- <required>False</required>
- <primary-key>False</primary-key>
- </column>
</column-list>
</table>
</item>
- <item type="database-table" id="{04b6fdc5-85ae-4416-8db5-034ad05be93a}">
+ <item type="database-table" id="{36980651-4f03-4748-aee8-1f9211aaafde}">
<position>
- <x>-42</x>
- <y>529</y>
+ <x>821</x>
+ <y>-49</y>
</position>
<table>
- <name>build_dependency_loops</name>
+ <name>todo_links</name>
<color>#ffffff</color>
<column-list>
<column>
- <name>id</name>
+ <name>dependent</name>
<data-type>BIGINT</data-type>
<required>True</required>
- <primary-key>True</primary-key>
- </column>
- <column>
- <name>loop</name>
- <data-type>MEDIUMINT</data-type>
- <required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>build_assignment</name>
+ <name>depending_on</name>
<data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
@@ -458,49 +344,55 @@
</column-list>
</table>
</item>
- <item type="database-table" id="{be821d83-a9b4-4c0c-8e1b-433730200714}">
+ <item type="database-table" id="{dc01c567-d657-4db7-8a55-d2763ed00cee}">
<position>
- <x>580</x>
- <y>-71</y>
+ <x>971</x>
+ <y>-69</y>
</position>
<table>
- <name>dependency_types</name>
+ <name>todos</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>SMALLINT</data-type>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>name</name>
- <data-type>VARCHAR(32)</data-type>
+ <name>file</name>
+ <data-type>VARCHAR(64)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>relevant_for_building</name>
- <data-type>BIT</data-type>
+ <name>line</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>relevant_for_binary_packages</name>
- <data-type>BIT</data-type>
+ <name>description</name>
+ <data-type>TEXT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
+ <column>
+ <name>importance</name>
+ <data-type>SMALLINT</data-type>
+ <required>False</required>
+ <primary-key>False</primary-key>
+ </column>
</column-list>
</table>
</item>
- <item type="database-table" id="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}">
+ <item type="database-table" id="{9085c36f-5884-41c8-9ca8-9d53973e657d}">
<position>
- <x>653</x>
- <y>21</y>
+ <x>357</x>
+ <y>455</y>
</position>
<table>
- <name>install_targets</name>
+ <name>statitstics</name>
<color>#ffffff</color>
<column-list>
<column>
@@ -510,127 +402,85 @@
<primary-key>True</primary-key>
</column>
<column>
- <name>name</name>
- <data-type>VARCHAR(64)</data-type>
+ <name>date</name>
+ <data-type>TIMESTAMP</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
- </column-list>
- </table>
- </item>
- <item type="database-table" id="{04f424bf-6465-478b-9529-0038615b51d9}">
- <position>
- <x>382</x>
- <y>378</y>
- </position>
- <table>
- <name>architectures</name>
- <color>#ffffff</color>
- <column-list>
- <column>
- <name>id</name>
- <data-type>SMALLINT</data-type>
- <required>True</required>
- <primary-key>True</primary-key>
- </column>
<column>
- <name>name</name>
- <data-type>VARCHAR(16)</data-type>
+ <name>stable_packages_count</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
- </column-list>
- </table>
- </item>
- <item type="database-table" id="{7c210122-c51d-4724-b7cc-22f143bc47ac}">
- <position>
- <x>103</x>
- <y>694</y>
- </position>
- <table>
- <name>package_sources</name>
- <color>#ffffff</color>
- <column-list>
<column>
- <name>id</name>
- <data-type>BIGINT</data-type>
+ <name>pending_tasks_count</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
- <primary-key>True</primary-key>
+ <primary-key>False</primary-key>
</column>
<column>
- <name>pkgbase</name>
- <data-type>VARCHAR(64)</data-type>
+ <name>pending_packages_count</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>git_revision</name>
- <data-type>VARCHAR(40)</data-type>
+ <name>staging_packages_count</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>mod_git_revision</name>
- <data-type>VARCHAR(40)</data-type>
+ <name>testing_packages_count</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>upstream_package_repository</name>
- <data-type>SMALLINT</data-type>
+ <name>tested_packages_count</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>uses_upstream</name>
- <data-type>BIT</data-type>
+ <name>broken_tasks_count</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>uses_modification</name>
- <data-type>BIT</data-type>
+ <name>dependency_loops_count</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>commit_time</name>
- <data-type>TIMESTAMP</data-type>
+ <name>dependency_looped_tasks_count</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>upstream_flag_date</name>
- <data-type>TIMESTAMP</data-type>
- <required>False</required>
+ <name>locked_tasks_count</name>
+ <data-type>MEDIUMINT</data-type>
+ <required>True</required>
<primary-key>False</primary-key>
</column>
- </column-list>
- </table>
- </item>
- <item type="database-table" id="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}">
- <position>
- <x>729</x>
- <y>684</y>
- </position>
- <table>
- <name>upstream_repositories</name>
- <color>#ffffff</color>
- <column-list>
<column>
- <name>id</name>
- <data-type>SMALLINT</data-type>
+ <name>blocked_tasks_count</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
- <primary-key>True</primary-key>
+ <primary-key>False</primary-key>
</column>
<column>
- <name>name</name>
- <data-type>VARCHAR(64)</data-type>
+ <name>next_tasks_count</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>git_repository</name>
+ <name>architecture</name>
<data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
@@ -638,83 +488,65 @@
</column-list>
</table>
</item>
- <item type="database-table" id="{b3c86235-971a-4d3e-873c-c4179aa96cbc}">
+ <item type="database-table" id="{92f54126-a433-458e-80b7-67235e560334}">
<position>
- <x>598</x>
- <y>736</y>
+ <x>816</x>
+ <y>57</y>
</position>
<table>
- <name>git_repositories</name>
+ <name>repository_stability_relations</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>SMALLINT</data-type>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>name</name>
- <data-type>VARCHAR(64)</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>url</name>
- <data-type>VARCHAR(128)</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>directory</name>
- <data-type>VARCHAR(128)</data-type>
+ <name>more_stable</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>head</name>
- <data-type>VARCHAR(40)</data-type>
+ <name>less_stable</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{844766fc-c5af-4f61-b51b-d3f9393c60ca}">
+ <item type="database-table" id="{7b159780-7f39-45a7-9557-046874a57e43}">
<position>
- <x>803</x>
- <y>261</y>
+ <x>-43</x>
+ <y>267</y>
</position>
<table>
- <name>repositories</name>
+ <name>fail_reasons</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>MEDIUMINT</data-type>
+ <data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
<name>name</name>
- <data-type>VARCHAR(64)</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>stability</name>
- <data-type>SMALLINT</data-type>
+ <data-type>VARCHAR(32)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>is_on_master_mirror</name>
- <data-type>BIT</data-type>
+ <name>identifier</name>
+ <data-type>VARCHAR(64)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>architecture</name>
+ <name>severity</name>
<data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
@@ -722,41 +554,53 @@
</column-list>
</table>
</item>
- <item type="database-table" id="{f8caa2d5-11ba-485c-b273-8183713896bf}">
+ <item type="database-table" id="{a774fcb7-1193-4b57-947c-135212695915}">
<position>
- <x>619</x>
- <y>112</y>
+ <x>-44</x>
+ <y>372</y>
</position>
<table>
- <name>install_target_providers</name>
+ <name>failed_builds</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>BIGINT</data-type>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>package</name>
- <data-type>BIGINT</data-type>
+ <name>build_slave</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>install_target</name>
+ <name>build_assignment</name>
<data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>version</name>
- <data-type>BIGINT</data-type>
+ <name>date</name>
+ <data-type>TIMESTAMP</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>install_target_is_group</name>
+ <name>reason</name>
+ <data-type>SMALLINT</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>log_file</name>
+ <data-type>VARCHAR(512)</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>log_file_exists</name>
<data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
@@ -764,13 +608,13 @@
</column-list>
</table>
</item>
- <item type="database-table" id="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}">
+ <item type="database-table" id="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}">
<position>
- <x>320</x>
- <y>118</y>
+ <x>153</x>
+ <y>447</y>
</position>
<table>
- <name>binary_packages</name>
+ <name>build_assignments</name>
<color>#ffffff</color>
<column-list>
<column>
@@ -780,80 +624,50 @@
<primary-key>True</primary-key>
</column>
<column>
- <name>build_assignment</name>
+ <name>package_source</name>
<data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>epoch</name>
- <data-type>MEDIUMINT</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>pkgver</name>
- <data-type>VARCHAR(64)</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>pkgrel</name>
- <data-type>MEDIUMINT</data-type>
+ <name>architecture</name>
+ <data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>sub_pkgrel</name>
- <data-type>MEDIUMINT</data-type>
- <required>True</required>
+ <name>is_blocked</name>
+ <data-type>VARCHAR(128)</data-type>
+ <required>False</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>has_issues</name>
- <data-type>BIT</data-type>
- <required>True</required>
+ <name>is_black_listed</name>
+ <data-type>VARCHAR(128)</data-type>
+ <required>False</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>is_tested</name>
+ <name>is_broken</name>
<data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>pkgname</name>
- <data-type>VARCHAR(64)</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>architecture</name>
+ <name>priority</name>
<data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>sha512sum</name>
- <data-type>VARCHAR(128)</data-type>
- <required>False</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>sub_pkgrel_omitted</name>
- <data-type>BIT</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>compression</name>
- <data-type>SMALLINT</data-type>
+ <name>return_date</name>
+ <data-type>TIMESTAMP</data-type>
<required>False</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>signing_key</name>
- <data-type>BIGINT</data-type>
+ <name>currently_blocking</name>
+ <data-type>MEDIUMINT</data-type>
<required>False</required>
<primary-key>False</primary-key>
</column>
@@ -932,13 +746,13 @@
</column-list>
</table>
</item>
- <item type="database-table" id="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}">
+ <item type="database-table" id="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}">
<position>
- <x>153</x>
- <y>447</y>
+ <x>320</x>
+ <y>118</y>
</position>
<table>
- <name>build_assignments</name>
+ <name>binary_packages</name>
<color>#ffffff</color>
<column-list>
<column>
@@ -948,103 +762,121 @@
<primary-key>True</primary-key>
</column>
<column>
- <name>package_source</name>
+ <name>build_assignment</name>
<data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>architecture</name>
- <data-type>SMALLINT</data-type>
+ <name>epoch</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>is_blocked</name>
- <data-type>VARCHAR(128)</data-type>
- <required>False</required>
+ <name>pkgver</name>
+ <data-type>VARCHAR(64)</data-type>
+ <required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>is_black_listed</name>
- <data-type>VARCHAR(128)</data-type>
- <required>False</required>
+ <name>pkgrel</name>
+ <data-type>MEDIUMINT</data-type>
+ <required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>is_broken</name>
+ <name>sub_pkgrel</name>
+ <data-type>MEDIUMINT</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>has_issues</name>
<data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>priority</name>
+ <name>is_tested</name>
+ <data-type>BIT</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>pkgname</name>
+ <data-type>VARCHAR(64)</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>architecture</name>
<data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>return_date</name>
- <data-type>TIMESTAMP</data-type>
+ <name>sha512sum</name>
+ <data-type>VARCHAR(128)</data-type>
<required>False</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>currently_blocking</name>
- <data-type>MEDIUMINT</data-type>
+ <name>sub_pkgrel_omitted</name>
+ <data-type>BIT</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>compression</name>
+ <data-type>SMALLINT</data-type>
+ <required>False</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>signing_key</name>
+ <data-type>BIGINT</data-type>
<required>False</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{a774fcb7-1193-4b57-947c-135212695915}">
+ <item type="database-table" id="{f8caa2d5-11ba-485c-b273-8183713896bf}">
<position>
- <x>-44</x>
- <y>372</y>
+ <x>619</x>
+ <y>112</y>
</position>
<table>
- <name>failed_builds</name>
+ <name>install_target_providers</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>MEDIUMINT</data-type>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>build_slave</name>
- <data-type>MEDIUMINT</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>build_assignment</name>
+ <name>package</name>
<data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>date</name>
- <data-type>TIMESTAMP</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>reason</name>
- <data-type>SMALLINT</data-type>
+ <name>install_target</name>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>log_file</name>
- <data-type>VARCHAR(512)</data-type>
+ <name>version</name>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>log_file_exists</name>
+ <name>install_target_is_group</name>
<data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
@@ -1052,35 +884,41 @@
</column-list>
</table>
</item>
- <item type="database-table" id="{7b159780-7f39-45a7-9557-046874a57e43}">
+ <item type="database-table" id="{844766fc-c5af-4f61-b51b-d3f9393c60ca}">
<position>
- <x>-43</x>
- <y>267</y>
+ <x>803</x>
+ <y>261</y>
</position>
<table>
- <name>fail_reasons</name>
+ <name>repositories</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>SMALLINT</data-type>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
<name>name</name>
- <data-type>VARCHAR(32)</data-type>
+ <data-type>VARCHAR(64)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>identifier</name>
- <data-type>VARCHAR(64)</data-type>
+ <name>stability</name>
+ <data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>severity</name>
+ <name>is_on_master_mirror</name>
+ <data-type>BIT</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>architecture</name>
<data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
@@ -1088,43 +926,55 @@
</column-list>
</table>
</item>
- <item type="database-table" id="{92f54126-a433-458e-80b7-67235e560334}">
+ <item type="database-table" id="{b3c86235-971a-4d3e-873c-c4179aa96cbc}">
<position>
- <x>816</x>
- <y>57</y>
+ <x>598</x>
+ <y>736</y>
</position>
<table>
- <name>repository_stability_relations</name>
+ <name>git_repositories</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>MEDIUMINT</data-type>
+ <data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>more_stable</name>
- <data-type>MEDIUMINT</data-type>
+ <name>name</name>
+ <data-type>VARCHAR(64)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>less_stable</name>
- <data-type>MEDIUMINT</data-type>
+ <name>url</name>
+ <data-type>VARCHAR(128)</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>directory</name>
+ <data-type>VARCHAR(128)</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>head</name>
+ <data-type>VARCHAR(40)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{9085c36f-5884-41c8-9ca8-9d53973e657d}">
+ <item type="database-table" id="{7c210122-c51d-4724-b7cc-22f143bc47ac}">
<position>
- <x>357</x>
- <y>455</y>
+ <x>103</x>
+ <y>694</y>
</position>
<table>
- <name>statitstics</name>
+ <name>package_sources</name>
<color>#ffffff</color>
<column-list>
<column>
@@ -1134,151 +984,163 @@
<primary-key>True</primary-key>
</column>
<column>
- <name>date</name>
- <data-type>TIMESTAMP</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>stable_packages_count</name>
- <data-type>MEDIUMINT</data-type>
- <required>True</required>
- <primary-key>False</primary-key>
- </column>
- <column>
- <name>pending_tasks_count</name>
- <data-type>MEDIUMINT</data-type>
+ <name>pkgbase</name>
+ <data-type>VARCHAR(64)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>pending_packages_count</name>
- <data-type>MEDIUMINT</data-type>
+ <name>git_revision</name>
+ <data-type>VARCHAR(40)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>staging_packages_count</name>
- <data-type>MEDIUMINT</data-type>
+ <name>mod_git_revision</name>
+ <data-type>VARCHAR(40)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>testing_packages_count</name>
- <data-type>MEDIUMINT</data-type>
+ <name>upstream_package_repository</name>
+ <data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>tested_packages_count</name>
- <data-type>MEDIUMINT</data-type>
+ <name>uses_upstream</name>
+ <data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>broken_tasks_count</name>
- <data-type>MEDIUMINT</data-type>
+ <name>uses_modification</name>
+ <data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>dependency_loops_count</name>
- <data-type>MEDIUMINT</data-type>
+ <name>commit_time</name>
+ <data-type>TIMESTAMP</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>dependency_looped_tasks_count</name>
- <data-type>MEDIUMINT</data-type>
- <required>True</required>
+ <name>upstream_flag_date</name>
+ <data-type>TIMESTAMP</data-type>
+ <required>False</required>
<primary-key>False</primary-key>
</column>
+ </column-list>
+ </table>
+ </item>
+ <item type="database-table" id="{04f424bf-6465-478b-9529-0038615b51d9}">
+ <position>
+ <x>382</x>
+ <y>378</y>
+ </position>
+ <table>
+ <name>architectures</name>
+ <color>#ffffff</color>
+ <column-list>
<column>
- <name>locked_tasks_count</name>
- <data-type>MEDIUMINT</data-type>
+ <name>id</name>
+ <data-type>SMALLINT</data-type>
<required>True</required>
- <primary-key>False</primary-key>
+ <primary-key>True</primary-key>
</column>
<column>
- <name>blocked_tasks_count</name>
- <data-type>MEDIUMINT</data-type>
+ <name>name</name>
+ <data-type>VARCHAR(16)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
+ </column-list>
+ </table>
+ </item>
+ <item type="database-table" id="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}">
+ <position>
+ <x>653</x>
+ <y>21</y>
+ </position>
+ <table>
+ <name>install_targets</name>
+ <color>#ffffff</color>
+ <column-list>
<column>
- <name>next_tasks_count</name>
- <data-type>MEDIUMINT</data-type>
+ <name>id</name>
+ <data-type>BIGINT</data-type>
<required>True</required>
- <primary-key>False</primary-key>
+ <primary-key>True</primary-key>
</column>
<column>
- <name>architecture</name>
- <data-type>SMALLINT</data-type>
+ <name>name</name>
+ <data-type>VARCHAR(64)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{dc01c567-d657-4db7-8a55-d2763ed00cee}">
+ <item type="database-table" id="{be821d83-a9b4-4c0c-8e1b-433730200714}">
<position>
- <x>971</x>
- <y>-69</y>
+ <x>580</x>
+ <y>-71</y>
</position>
<table>
- <name>todos</name>
+ <name>dependency_types</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>BIGINT</data-type>
+ <data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>file</name>
- <data-type>VARCHAR(64)</data-type>
+ <name>name</name>
+ <data-type>VARCHAR(32)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>line</name>
- <data-type>MEDIUMINT</data-type>
+ <name>relevant_for_building</name>
+ <data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>description</name>
- <data-type>TEXT</data-type>
+ <name>relevant_for_binary_packages</name>
+ <data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
- <column>
- <name>importance</name>
- <data-type>SMALLINT</data-type>
- <required>False</required>
- <primary-key>False</primary-key>
- </column>
</column-list>
</table>
</item>
- <item type="database-table" id="{36980651-4f03-4748-aee8-1f9211aaafde}">
+ <item type="database-table" id="{04b6fdc5-85ae-4416-8db5-034ad05be93a}">
<position>
- <x>821</x>
- <y>-49</y>
+ <x>-42</x>
+ <y>529</y>
</position>
<table>
- <name>todo_links</name>
+ <name>build_dependency_loops</name>
<color>#ffffff</color>
<column-list>
<column>
- <name>dependent</name>
+ <name>id</name>
<data-type>BIGINT</data-type>
<required>True</required>
+ <primary-key>True</primary-key>
+ </column>
+ <column>
+ <name>loop</name>
+ <data-type>MEDIUMINT</data-type>
+ <required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>depending_on</name>
+ <name>build_assignment</name>
<data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
@@ -1286,18 +1148,18 @@
</column-list>
</table>
</item>
- <item type="database-table" id="{75e4ebd8-5915-4aff-8316-0c542d3953da}">
+ <item type="database-table" id="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}">
<position>
- <x>218</x>
- <y>17</y>
+ <x>829</x>
+ <y>168</y>
</position>
<table>
- <name>persons</name>
+ <name>repository_stabilities</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>MEDIUMINT</data-type>
+ <data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
@@ -1307,52 +1169,58 @@
<required>True</required>
<primary-key>False</primary-key>
</column>
+ <column>
+ <name>bugtracker_category</name>
+ <data-type>VARCHAR(32)</data-type>
+ <required>False</required>
+ <primary-key>False</primary-key>
+ </column>
</column-list>
</table>
</item>
- <item type="database-table" id="{f31249ea-ab19-45a4-9427-1854379ad8e7}">
+ <item type="database-table" id="{d823ab09-1c04-44ee-ad4b-6802208967ff}">
<position>
- <x>226</x>
- <y>-78</y>
+ <x>793</x>
+ <y>497</y>
</position>
<table>
- <name>gpg_keys</name>
+ <name>repository_moves</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>BIGINT</data-type>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>fingerprint</name>
- <data-type>VARCHAR(40)</data-type>
+ <name>from_repository</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>owner</name>
+ <name>to_repository</name>
<data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>public_key</name>
- <data-type>TEXT</data-type>
+ <name>upstream_package_repository</name>
+ <data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{b5671c08-e24a-4293-b983-3c86b1a6d622}">
+ <item type="database-table" id="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}">
<position>
- <x>62</x>
- <y>8</y>
+ <x>-55</x>
+ <y>-72</y>
</position>
<table>
- <name>allowed_email_actions</name>
+ <name>email_log</name>
<color>#ffffff</color>
<column-list>
<column>
@@ -1362,51 +1230,105 @@
<primary-key>True</primary-key>
</column>
<column>
- <name>gpg_key</name>
- <data-type>BIGINT</data-type>
+ <name>date</name>
+ <data-type>TIMESTAMP</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>success</name>
+ <data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
<name>action</name>
<data-type>MEDIUMINT</data-type>
- <required>True</required>
+ <required>False</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>count</name>
+ <data-type>MEDIUMINT</data-type>
+ <required>False</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>gpg_key</name>
+ <data-type>BIGINT</data-type>
+ <required>False</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>comment</name>
+ <data-type>TEXT</data-type>
+ <required>False</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{6180fcbf-5069-4d86-8919-fd39394f1813}">
+ <item type="database-table" id="{5f12db03-a8bb-4467-bab6-a57e545b9081}">
<position>
- <x>-54</x>
- <y>70</y>
+ <x>-52</x>
+ <y>134</y>
</position>
<table>
- <name>email_actions</name>
+ <name>ssh_log</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>MEDIUMINT</data-type>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>name</name>
+ <name>date</name>
+ <data-type>TIMESTAMP</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>build_slave</name>
+ <data-type>MEDIUMINT</data-type>
+ <required>False</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>action</name>
<data-type>VARCHAR(32)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
+ <column>
+ <name>parameters</name>
+ <data-type>TEXT</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>duration</name>
+ <data-type>MEDIUMINT</data-type>
+ <required>False</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>exit_code</name>
+ <data-type>MEDIUMINT</data-type>
+ <required>False</required>
+ <primary-key>False</primary-key>
+ </column>
</column-list>
</table>
</item>
- <item type="database-table" id="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}">
+ <item type="database-table" id="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}">
<position>
- <x>209</x>
- <y>83</y>
+ <x>525</x>
+ <y>215</y>
</position>
<table>
- <name>ssh_keys</name>
+ <name>binary_packages_in_repositories</name>
<color>#ffffff</color>
<column-list>
<column>
@@ -1416,69 +1338,87 @@
<primary-key>True</primary-key>
</column>
<column>
- <name>owner</name>
+ <name>package</name>
+ <data-type>BIGINT</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>repository</name>
<data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>fingerprint</name>
- <data-type>TEXT</data-type>
+ <name>is_to_be_deleted</name>
+ <data-type>BIT</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>last_moved</name>
+ <data-type>TIMESTAMP</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}">
+ <item type="database-table" id="{caab4a73-46dc-49dc-ac51-d8ae916827c5}">
<position>
- <x>656</x>
- <y>380</y>
+ <x>345</x>
+ <y>-71</y>
</position>
<table>
- <name>architecture_compatibilities</name>
+ <name>dependencies</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>MEDIUMINT</data-type>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>built_for</name>
- <data-type>SMALLINT</data-type>
+ <name>dependent</name>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>runs_on</name>
+ <name>depending_on</name>
+ <data-type>BIGINT</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>dependency_type</name>
<data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>fully_compatible</name>
- <data-type>BIT</data-type>
+ <name>version</name>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>build_slave_compatible</name>
- <data-type>BIT(n)</data-type>
+ <name>version_relation</name>
+ <data-type>VARCHAR(2)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{bb59ebca-0255-40dd-91b4-68bd2e110447}">
+ <item type="database-table" id="{a67b38a9-c701-412c-8292-5ef58536da85}">
<position>
- <x>901</x>
- <y>641</y>
+ <x>524</x>
+ <y>62</y>
</position>
<table>
- <name>mirror_statuses</name>
+ <name>versions</name>
<color>#ffffff</color>
<column-list>
<column>
@@ -1488,215 +1428,269 @@
<primary-key>True</primary-key>
</column>
<column>
- <name>protocol</name>
- <data-type>VARCHAR(8)</data-type>
+ <name>order</name>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>url</name>
- <data-type>VARCHAR(128)</data-type>
+ <name>epoch</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>country</name>
+ <name>version</name>
+ <data-type>VARCHAR(32)</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ </column-list>
+ </table>
+ </item>
+ <item type="database-table" id="{fdd7ff7b-7a96-4625-9287-820e1b076c2a}">
+ <position>
+ <x>-31</x>
+ <y>605</y>
+ </position>
+ <table>
+ <name>toolchain_order</name>
+ <color>#ffffff</color>
+ <column-list>
+ <column>
+ <name>number</name>
+ <data-type>SMALLINT</data-type>
+ <required>True</required>
+ <primary-key>True</primary-key>
+ </column>
+ <column>
+ <name>pkgbase</name>
<data-type>VARCHAR(64)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>country_code</name>
- <data-type>VARCHAR(4)</data-type>
+ <name>requires_all_dependencies_built</name>
+ <data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
+ </column-list>
+ </table>
+ </item>
+ <item type="database-table" id="{fa0bc448-5ecc-4238-9d76-da742ab6eb14}">
+ <position>
+ <x>632</x>
+ <y>498</y>
+ </position>
+ <table>
+ <name>upstream_packages</name>
+ <color>#ffffff</color>
+ <column-list>
<column>
- <name>last_sync</name>
+ <name>id</name>
<data-type>BIGINT</data-type>
<required>True</required>
- <primary-key>False</primary-key>
+ <primary-key>True</primary-key>
</column>
<column>
- <name>start</name>
- <data-type>FLOAT</data-type>
+ <name>pkgname</name>
+ <data-type>VARCHAR(64)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>stop</name>
- <data-type>FLOAT</data-type>
+ <name>epoch</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>isos</name>
- <data-type>BIT</data-type>
+ <name>pkgver</name>
+ <data-type>VARCHAR(64)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>ipv4</name>
- <data-type>BIT</data-type>
+ <name>pkgrel</name>
+ <data-type>MEDIUMINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>ipv6</name>
- <data-type>BIT</data-type>
+ <name>architecture</name>
+ <data-type>VARCHAR(6)</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
<column>
- <name>active</name>
- <data-type>BIT</data-type>
+ <name>repository</name>
+ <data-type>SMALLINT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-table" id="{44dd2d06-f012-46f7-a1a9-d38dd21b4287}">
+ <item type="database-table" id="{91a05cd7-dc02-474b-bd10-aab0f53ce9d7}">
<position>
- <x>217</x>
- <y>328</y>
+ <x>977</x>
+ <y>378</y>
</position>
<table>
- <name>compressions</name>
+ <name>command_log</name>
<color>#ffffff</color>
<column-list>
<column>
<name>id</name>
- <data-type>SMALLINT</data-type>
+ <data-type>BIGINT</data-type>
<required>True</required>
<primary-key>True</primary-key>
</column>
<column>
- <name>suffix</name>
- <data-type>VARCHAR(8)</data-type>
+ <name>date</name>
+ <data-type>TIMESTAMP</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>command</name>
+ <data-type>VARCHAR(64)</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>parameters</name>
+ <data-type>TEXT</data-type>
+ <required>True</required>
+ <primary-key>False</primary-key>
+ </column>
+ <column>
+ <name>shell</name>
+ <data-type>BIT</data-type>
<required>True</required>
<primary-key>False</primary-key>
</column>
</column-list>
</table>
</item>
- <item type="database-relationship" id="{44fe350c-d54c-45f8-a967-afd81ccc4721}">
+ <item type="database-relationship" id="{f2d38c97-7a03-4454-8b95-7b35ba1c0304}">
<line>
<connector-list>
<connector>
<position>
- <x>375.286</x>
- <y>118</y>
+ <x>656</x>
+ <y>441.333</y>
</position>
- <angle>90</angle>
- <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
+ <angle>180</angle>
+ <hub owner="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}"/>
</connector>
<connector>
<position>
- <x>296.813</x>
- <y>0.8125</y>
+ <x>478</x>
+ <y>415.5</y>
</position>
- <angle>270</angle>
- <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/>
+ <angle>0</angle>
+ <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/>
</connector>
</connector-list>
</line>
<relationship>
- <cardinality>OneToMany</cardinality>
+ <cardinality>OneToOne</cardinality>
<modality>
<child>Mandatory</child>
- <parent>Optional</parent>
+ <parent>Mandatory</parent>
</modality>
<columns>
- <child>13</child>
+ <child>1</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{1f929538-fe3a-4c8f-8c6c-26ea441bd6e0}">
+ <item type="database-relationship" id="{30a694b2-681f-44ae-90bb-911220d65737}">
<line>
<connector-list>
<connector>
<position>
- <x>320</x>
- <y>227.406</y>
+ <x>656</x>
+ <y>410.667</y>
</position>
<angle>180</angle>
- <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
+ <hub owner="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}"/>
</connector>
<connector>
<position>
- <x>265.75</x>
- <y>328</y>
+ <x>478</x>
+ <y>403</y>
</position>
- <angle>90</angle>
- <hub owner="{44dd2d06-f012-46f7-a1a9-d38dd21b4287}"/>
+ <angle>0</angle>
+ <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/>
</connector>
</connector-list>
</line>
<relationship>
<cardinality>OneToOne</cardinality>
<modality>
- <child>Optional</child>
+ <child>Mandatory</child>
<parent>Mandatory</parent>
</modality>
<columns>
- <child>12</child>
+ <child>2</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{279b4b3b-c166-4343-bce6-ff3dfb6669a0}">
+ <item type="database-relationship" id="{48ec4e54-ceb5-48f1-b773-9ab92f6c1c5a}">
<line>
<connector-list>
<connector>
<position>
- <x>483.75</x>
- <y>455</y>
+ <x>342</x>
+ <y>768</y>
</position>
- <angle>90</angle>
- <hub owner="{9085c36f-5884-41c8-9ca8-9d53973e657d}"/>
+ <angle>0</angle>
+ <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/>
</connector>
<connector>
<position>
- <x>444.677</x>
- <y>428.813</y>
+ <x>729</x>
+ <y>709</y>
</position>
- <angle>270</angle>
- <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/>
+ <angle>180</angle>
+ <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/>
</connector>
</connector-list>
</line>
<relationship>
- <cardinality>OneToMany</cardinality>
+ <cardinality>OneToOne</cardinality>
<modality>
- <child>Optional</child>
- <parent>Optional</parent>
+ <child>Mandatory</child>
+ <parent>Mandatory</parent>
</modality>
<columns>
- <child>14</child>
+ <child>4</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{747ab82c-bbbf-498d-a6bd-13633c73fd6f}">
+ <item type="database-relationship" id="{25ec7ee3-9041-4ef4-a5b8-c41a06385813}">
<line>
<connector-list>
<connector>
<position>
- <x>699.656</x>
- <y>618.813</y>
+ <x>803</x>
+ <y>322.333</y>
</position>
- <angle>270</angle>
- <hub owner="{fa0bc448-5ecc-4238-9d76-da742ab6eb14}"/>
+ <angle>180</angle>
+ <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/>
</connector>
<connector>
<position>
- <x>778.641</x>
- <y>684</y>
+ <x>478</x>
+ <y>390.5</y>
</position>
- <angle>90</angle>
- <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/>
+ <angle>0</angle>
+ <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/>
</connector>
</connector-list>
</line>
@@ -1707,62 +1701,62 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>6</child>
+ <child>4</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{64756b6f-e7d3-4995-8b5d-21d07292741f}">
+ <item type="database-relationship" id="{30efa4b2-f4e7-4c8d-943e-44c699e54853}">
<line>
<connector-list>
<connector>
<position>
- <x>93.3906</x>
- <y>669.813</y>
+ <x>912.5</x>
+ <y>575</y>
</position>
<angle>270</angle>
- <hub owner="{fdd7ff7b-7a96-4625-9287-820e1b076c2a}"/>
+ <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/>
</connector>
<connector>
<position>
- <x>181.755</x>
- <y>694</y>
+ <x>828.333</x>
+ <y>684</y>
</position>
<angle>90</angle>
- <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/>
+ <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/>
</connector>
</connector-list>
</line>
<relationship>
<cardinality>OneToOne</cardinality>
<modality>
- <child>Optional</child>
- <parent>Optional</parent>
+ <child>Mandatory</child>
+ <parent>Mandatory</parent>
</modality>
<columns>
- <child>1</child>
- <parent>1</parent>
+ <child>3</child>
+ <parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{8e252eee-d544-482b-9a11-ba30ff6b4ebd}">
+ <item type="database-relationship" id="{747ab82c-bbbf-498d-a6bd-13633c73fd6f}">
<line>
<connector-list>
<connector>
<position>
- <x>446.115</x>
- <y>35.8125</y>
+ <x>700.5</x>
+ <y>618</y>
</position>
<angle>270</angle>
- <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/>
+ <hub owner="{fa0bc448-5ecc-4238-9d76-da742ab6eb14}"/>
</connector>
<connector>
<position>
- <x>524</x>
- <y>101.406</y>
+ <x>778.667</x>
+ <y>684</y>
</position>
- <angle>180</angle>
- <hub owner="{a67b38a9-c701-412c-8292-5ef58536da85}"/>
+ <angle>90</angle>
+ <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/>
</connector>
</connector-list>
</line>
@@ -1773,29 +1767,29 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>4</child>
+ <child>6</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{3016bcca-8c69-49ae-b7af-6f236ee0a018}">
+ <item type="database-relationship" id="{3539786a-db3b-4c5c-ba35-e89fb027cda8}">
<line>
<connector-list>
<connector>
<position>
- <x>619</x>
- <y>142.938</y>
+ <x>263.5</x>
+ <y>83</y>
</position>
- <angle>180</angle>
- <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/>
+ <angle>90</angle>
+ <hub owner="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}"/>
</connector>
<connector>
<position>
- <x>607.188</x>
- <y>101.406</y>
+ <x>254</x>
+ <y>67</y>
</position>
- <angle>0</angle>
- <hub owner="{a67b38a9-c701-412c-8292-5ef58536da85}"/>
+ <angle>270</angle>
+ <hub owner="{75e4ebd8-5915-4aff-8316-0c542d3953da}"/>
</connector>
</connector-list>
</line>
@@ -1806,29 +1800,29 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>3</child>
+ <child>1</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{d3ded37c-70d5-4388-8e27-2329f59a1d9c}">
+ <item type="database-relationship" id="{326ba5fe-513e-48e9-b924-51305ffa2aeb}">
<line>
<connector-list>
<connector>
<position>
- <x>496.672</x>
- <y>-35.3958</y>
+ <x>152</x>
+ <y>160</y>
</position>
- <angle>0</angle>
- <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/>
+ <angle>90</angle>
+ <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/>
</connector>
<connector>
<position>
- <x>580</x>
- <y>-31.5938</y>
+ <x>263.5</x>
+ <y>147</y>
</position>
- <angle>180</angle>
- <hub owner="{be821d83-a9b4-4c0c-8e1b-433730200714}"/>
+ <angle>270</angle>
+ <hub owner="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}"/>
</connector>
</connector-list>
</line>
@@ -1839,70 +1833,70 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>3</child>
+ <child>2</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{ab992baa-6a2c-441b-a290-da42a791eb95}">
+ <item type="database-relationship" id="{4174d8cf-11ae-4a89-bc89-ae6044cee76d}">
<line>
<connector-list>
<connector>
<position>
- <x>496.672</x>
- <y>0.208333</y>
+ <x>-9</x>
+ <y>48</y>
</position>
- <angle>0</angle>
- <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/>
+ <angle>270</angle>
+ <hub owner="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}"/>
</connector>
<connector>
<position>
- <x>653</x>
- <y>46.4063</y>
+ <x>-5.5</x>
+ <y>70</y>
</position>
- <angle>180</angle>
- <hub owner="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}"/>
+ <angle>90</angle>
+ <hub owner="{6180fcbf-5069-4d86-8919-fd39394f1813}"/>
</connector>
</connector-list>
</line>
<relationship>
<cardinality>OneToOne</cardinality>
<modality>
- <child>Mandatory</child>
+ <child>Optional</child>
<parent>Mandatory</parent>
</modality>
<columns>
- <child>2</child>
+ <child>3</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{0213a360-5a3b-484f-82c7-320003506c8a}">
+ <item type="database-relationship" id="{af592aac-17cd-415f-99e8-9cf164311215}">
<line>
<connector-list>
<connector>
<position>
- <x>734.359</x>
- <y>261.406</y>
+ <x>62</x>
+ <y>40</y>
</position>
- <angle>0</angle>
- <hub owner="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}"/>
+ <angle>180</angle>
+ <hub owner="{b5671c08-e24a-4293-b983-3c86b1a6d622}"/>
</connector>
<connector>
<position>
- <x>803</x>
- <y>291.938</y>
+ <x>43</x>
+ <y>95</y>
</position>
- <angle>180</angle>
- <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/>
+ <angle>0</angle>
+ <hub owner="{6180fcbf-5069-4d86-8919-fd39394f1813}"/>
</connector>
</connector-list>
</line>
<relationship>
- <cardinality>OneToMany</cardinality>
+ <cardinality>OneToOne</cardinality>
<modality>
- <child>Optional</child>
- <parent>Optional</parent>
+ <child>Mandatory</child>
+ <parent>Mandatory</parent>
</modality>
<columns>
<child>2</child>
@@ -1910,24 +1904,24 @@
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{f26515ec-f37f-4eb3-a07f-6d5077208806}">
+ <item type="database-relationship" id="{80755775-c938-4545-b4eb-1f08cfb1f0cc}">
<line>
<connector-list>
<connector>
<position>
- <x>395.557</x>
- <y>35.8125</y>
+ <x>136</x>
+ <y>8</y>
</position>
- <angle>270</angle>
- <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/>
+ <angle>90</angle>
+ <hub owner="{b5671c08-e24a-4293-b983-3c86b1a6d622}"/>
</connector>
<connector>
<position>
- <x>430.573</x>
- <y>118</y>
+ <x>226</x>
+ <y>-26</y>
</position>
- <angle>90</angle>
- <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
+ <angle>180</angle>
+ <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/>
</connector>
</connector-list>
</line>
@@ -1943,64 +1937,64 @@
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{c672e45e-2bd4-4ff1-9b42-fdd2443cae6a}">
+ <item type="database-relationship" id="{803ce991-1984-4cab-9bb8-48acabb347af}">
<line>
<connector-list>
<connector>
<position>
- <x>525</x>
- <y>261.406</y>
+ <x>37</x>
+ <y>-12</y>
</position>
- <angle>180</angle>
- <hub owner="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}"/>
+ <angle>0</angle>
+ <hub owner="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}"/>
</connector>
<connector>
<position>
- <x>485.859</x>
- <y>263.875</y>
+ <x>226</x>
+ <y>-52</y>
</position>
- <angle>0</angle>
- <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
+ <angle>180</angle>
+ <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/>
</connector>
</connector-list>
</line>
<relationship>
<cardinality>OneToOne</cardinality>
<modality>
- <child>Mandatory</child>
+ <child>Optional</child>
<parent>Mandatory</parent>
</modality>
<columns>
- <child>1</child>
+ <child>5</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{9a650bd7-521d-499f-ac79-a0fd9226a656}">
+ <item type="database-relationship" id="{abba2005-f23b-445f-aea6-ff9365bc1569}">
<line>
<connector-list>
<connector>
<position>
- <x>59.5313</x>
- <y>194.406</y>
+ <x>262.333</x>
+ <y>0</y>
</position>
- <angle>0</angle>
- <hub owner="{5f12db03-a8bb-4467-bab6-a57e545b9081}"/>
+ <angle>270</angle>
+ <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/>
</connector>
<connector>
<position>
- <x>80</x>
- <y>241.406</y>
+ <x>254</x>
+ <y>17</y>
</position>
- <angle>180</angle>
- <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/>
+ <angle>90</angle>
+ <hub owner="{75e4ebd8-5915-4aff-8316-0c542d3953da}"/>
</connector>
</connector-list>
</line>
<relationship>
<cardinality>OneToOne</cardinality>
<modality>
- <child>Optional</child>
+ <child>Mandatory</child>
<parent>Mandatory</parent>
</modality>
<columns>
@@ -2009,24 +2003,24 @@
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{30efa4b2-f4e7-4c8d-943e-44c699e54853}">
+ <item type="database-relationship" id="{172204a1-76e9-45fc-826f-b3d174112734}">
<line>
<connector-list>
<connector>
<position>
- <x>911.133</x>
- <y>575.813</y>
+ <x>951</x>
+ <y>-32.3333</y>
</position>
- <angle>270</angle>
- <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/>
+ <angle>0</angle>
+ <hub owner="{36980651-4f03-4748-aee8-1f9211aaafde}"/>
</connector>
<connector>
<position>
- <x>828.281</x>
- <y>684</y>
+ <x>971</x>
+ <y>-38.3333</y>
</position>
- <angle>90</angle>
- <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/>
+ <angle>180</angle>
+ <hub owner="{dc01c567-d657-4db7-8a55-d2763ed00cee}"/>
</connector>
</connector-list>
</line>
@@ -2037,29 +2031,29 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>3</child>
+ <child>0</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{6094d4c4-439f-4e6c-94e1-736ae145362a}">
+ <item type="database-relationship" id="{bb03129e-aba8-4449-88c1-6c352745aeda}">
<line>
<connector-list>
<connector>
<position>
- <x>871.755</x>
- <y>497</y>
+ <x>951</x>
+ <y>-15.6667</y>
</position>
- <angle>90</angle>
- <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/>
+ <angle>0</angle>
+ <hub owner="{36980651-4f03-4748-aee8-1f9211aaafde}"/>
</connector>
<connector>
<position>
- <x>859.469</x>
- <y>353.813</y>
+ <x>971</x>
+ <y>-7.66667</y>
</position>
- <angle>270</angle>
- <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/>
+ <angle>180</angle>
+ <hub owner="{dc01c567-d657-4db7-8a55-d2763ed00cee}"/>
</connector>
</connector-list>
</line>
@@ -2075,24 +2069,24 @@
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{4b0f5386-c5f6-4fa4-9c78-f0d85410c366}">
+ <item type="database-relationship" id="{fa899065-104a-466d-bc8c-16589a774a45}">
<line>
<connector-list>
<connector>
<position>
- <x>950.51</x>
- <y>497</y>
+ <x>940</x>
+ <y>121</y>
</position>
- <angle>90</angle>
- <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/>
+ <angle>270</angle>
+ <hub owner="{92f54126-a433-458e-80b7-67235e560334}"/>
</connector>
<connector>
<position>
- <x>915.938</x>
- <y>353.813</y>
+ <x>935.667</x>
+ <y>168</y>
</position>
- <angle>270</angle>
- <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/>
+ <angle>90</angle>
+ <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/>
</connector>
</connector-list>
</line>
@@ -2108,24 +2102,24 @@
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{c54c97e3-dd0a-4b21-9eeb-708d5b492e2a}">
+ <item type="database-relationship" id="{8f5f94cd-2919-43f6-ae67-6b783850a2e7}">
<line>
<connector-list>
<connector>
<position>
- <x>430.573</x>
- <y>336.813</y>
+ <x>878</x>
+ <y>121</y>
</position>
<angle>270</angle>
- <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
+ <hub owner="{92f54126-a433-458e-80b7-67235e560334}"/>
</connector>
<connector>
<position>
- <x>429.008</x>
- <y>378</y>
+ <x>882.333</x>
+ <y>168</y>
</position>
<angle>90</angle>
- <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/>
+ <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/>
</connector>
</connector-list>
</line>
@@ -2136,29 +2130,29 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>9</child>
+ <child>1</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{67f0b7bd-a201-45d1-b18c-db46a8de0480}">
+ <item type="database-relationship" id="{65ace480-001e-4e4e-912d-2a975ff995c8}">
<line>
<connector-list>
<connector>
<position>
- <x>887.703</x>
- <y>261</y>
+ <x>7.66667</x>
+ <y>372</y>
</position>
<angle>90</angle>
- <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/>
+ <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/>
</connector>
<connector>
<position>
- <x>907.734</x>
- <y>232.813</y>
+ <x>5.5</x>
+ <y>345</y>
</position>
<angle>270</angle>
- <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/>
+ <hub owner="{7b159780-7f39-45a7-9557-046874a57e43}"/>
</connector>
</connector-list>
</line>
@@ -2169,29 +2163,29 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>2</child>
+ <child>4</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{9a1b5925-a86a-470b-9c2b-3132fdcfc87e}">
+ <item type="database-relationship" id="{35556854-c6c3-45e8-9e10-bd5150680fd2}">
<line>
<connector-list>
<connector>
<position>
- <x>712.203</x>
- <y>112</y>
+ <x>111</x>
+ <y>432</y>
</position>
- <angle>90</angle>
- <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/>
+ <angle>0</angle>
+ <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/>
</connector>
<connector>
<position>
- <x>702.906</x>
- <y>71.8125</y>
+ <x>153</x>
+ <y>496.333</y>
</position>
- <angle>270</angle>
- <hub owner="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}"/>
+ <angle>180</angle>
+ <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/>
</connector>
</connector-list>
</line>
@@ -2207,24 +2201,24 @@
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{89cacf0f-5195-48db-aace-02a13aa29eee}">
+ <item type="database-relationship" id="{307a930b-cbe8-4000-b89d-b6cc99479b19}">
<line>
<connector-list>
<connector>
<position>
- <x>619</x>
- <y>173.875</y>
+ <x>59.3333</x>
+ <y>372</y>
</position>
- <angle>180</angle>
- <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/>
+ <angle>90</angle>
+ <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/>
</connector>
<connector>
<position>
- <x>485.859</x>
- <y>190.938</y>
+ <x>128</x>
+ <y>322</y>
</position>
- <angle>0</angle>
- <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
+ <angle>270</angle>
+ <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/>
</connector>
</connector-list>
</line>
@@ -2240,24 +2234,24 @@
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{48ec4e54-ceb5-48f1-b773-9ab92f6c1c5a}">
+ <item type="database-relationship" id="{40654aec-f5e1-4d82-a528-102a76a971d3}">
<line>
<connector-list>
<connector>
<position>
- <x>339.266</x>
- <y>768.406</y>
+ <x>122</x>
+ <y>561</y>
</position>
<angle>0</angle>
- <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/>
+ <hub owner="{04b6fdc5-85ae-4416-8db5-034ad05be93a}"/>
</connector>
<connector>
<position>
- <x>729</x>
- <y>705.604</y>
+ <x>153</x>
+ <y>545.667</y>
</position>
<angle>180</angle>
- <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/>
+ <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/>
</connector>
</connector-list>
</line>
@@ -2268,62 +2262,62 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>4</child>
+ <child>2</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{fb5f9b76-6f5d-4c06-b7dd-f89583096ba7}">
+ <item type="database-relationship" id="{41ee8002-8436-4c74-9f79-75b7a8b9d0bf}">
<line>
<connector-list>
<connector>
<position>
- <x>729</x>
- <y>727.208</y>
+ <x>176</x>
+ <y>322</y>
</position>
- <angle>180</angle>
- <hub owner="{d01e6205-a6dc-4724-a1fd-d4b2f73637ea}"/>
+ <angle>270</angle>
+ <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/>
</connector>
<connector>
<position>
- <x>705.344</x>
- <y>782.406</y>
+ <x>201.667</x>
+ <y>447</y>
</position>
- <angle>0</angle>
- <hub owner="{b3c86235-971a-4d3e-873c-c4179aa96cbc}"/>
+ <angle>90</angle>
+ <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/>
</connector>
</connector-list>
</line>
<relationship>
<cardinality>OneToOne</cardinality>
<modality>
- <child>Mandatory</child>
+ <child>Optional</child>
<parent>Mandatory</parent>
</modality>
<columns>
- <child>2</child>
+ <child>3</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{1702ddc7-99c5-4af4-8731-eb8f4b6306d3}">
+ <item type="database-relationship" id="{883853fb-bda9-450c-bde3-77422973b925}">
<line>
<connector-list>
<connector>
<position>
- <x>224.648</x>
- <y>595.813</y>
+ <x>376.333</x>
+ <y>336</y>
</position>
<angle>270</angle>
- <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/>
+ <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
</connector>
<connector>
<position>
- <x>260.51</x>
- <y>694</y>
+ <x>250.333</x>
+ <y>447</y>
</position>
<angle>90</angle>
- <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/>
+ <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/>
</connector>
</connector-list>
</line>
@@ -2344,16 +2338,16 @@
<connector-list>
<connector>
<position>
- <x>296.297</x>
- <y>521.406</y>
+ <x>299</x>
+ <y>521</y>
</position>
<angle>0</angle>
<hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/>
</connector>
<connector>
<position>
- <x>413.339</x>
- <y>428.813</y>
+ <x>414</x>
+ <y>428</y>
</position>
<angle>270</angle>
<hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/>
@@ -2372,24 +2366,24 @@
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{883853fb-bda9-450c-bde3-77422973b925}">
+ <item type="database-relationship" id="{1702ddc7-99c5-4af4-8731-eb8f4b6306d3}">
<line>
<connector-list>
<connector>
<position>
- <x>375.286</x>
- <y>336.813</y>
+ <x>226</x>
+ <y>595</y>
</position>
<angle>270</angle>
- <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
+ <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/>
</connector>
<connector>
<position>
- <x>248.531</x>
- <y>447</y>
+ <x>262.333</x>
+ <y>694</y>
</position>
<angle>90</angle>
- <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/>
+ <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/>
</connector>
</connector-list>
</line>
@@ -2405,57 +2399,57 @@
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{41ee8002-8436-4c74-9f79-75b7a8b9d0bf}">
+ <item type="database-relationship" id="{89cacf0f-5195-48db-aace-02a13aa29eee}">
<line>
<connector-list>
<connector>
<position>
- <x>173.979</x>
- <y>322.813</y>
+ <x>619</x>
+ <y>173.333</y>
</position>
- <angle>270</angle>
- <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/>
+ <angle>180</angle>
+ <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/>
</connector>
<connector>
<position>
- <x>200.766</x>
- <y>447</y>
+ <x>489</x>
+ <y>190.667</y>
</position>
- <angle>90</angle>
- <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/>
+ <angle>0</angle>
+ <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
</connector>
</connector-list>
</line>
<relationship>
<cardinality>OneToOne</cardinality>
<modality>
- <child>Optional</child>
+ <child>Mandatory</child>
<parent>Mandatory</parent>
</modality>
<columns>
- <child>3</child>
+ <child>1</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{40654aec-f5e1-4d82-a528-102a76a971d3}">
+ <item type="database-relationship" id="{9a1b5925-a86a-470b-9c2b-3132fdcfc87e}">
<line>
<connector-list>
<connector>
<position>
- <x>120.391</x>
- <y>561.406</y>
+ <x>713.5</x>
+ <y>112</y>
</position>
- <angle>0</angle>
- <hub owner="{04b6fdc5-85ae-4416-8db5-034ad05be93a}"/>
+ <angle>90</angle>
+ <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/>
</connector>
<connector>
<position>
- <x>153</x>
- <y>546.208</y>
+ <x>703</x>
+ <y>71</y>
</position>
- <angle>180</angle>
- <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/>
+ <angle>270</angle>
+ <hub owner="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}"/>
</connector>
</connector-list>
</line>
@@ -2471,24 +2465,24 @@
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{307a930b-cbe8-4000-b89d-b6cc99479b19}">
+ <item type="database-relationship" id="{67f0b7bd-a201-45d1-b18c-db46a8de0480}">
<line>
<connector-list>
<connector>
<position>
- <x>57.1458</x>
- <y>372</y>
+ <x>888.5</x>
+ <y>261</y>
</position>
<angle>90</angle>
- <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/>
+ <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/>
</connector>
<connector>
<position>
- <x>126.99</x>
- <y>322.813</y>
+ <x>909</x>
+ <y>232</y>
</position>
<angle>270</angle>
- <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/>
+ <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/>
</connector>
</connector-list>
</line>
@@ -2499,29 +2493,29 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>1</child>
+ <child>2</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{35556854-c6c3-45e8-9e10-bd5150680fd2}">
+ <item type="database-relationship" id="{c54c97e3-dd0a-4b21-9eeb-708d5b492e2a}">
<line>
<connector-list>
<connector>
<position>
- <x>107.719</x>
- <y>432.406</y>
+ <x>432.667</x>
+ <y>336</y>
</position>
- <angle>0</angle>
- <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/>
+ <angle>270</angle>
+ <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
</connector>
<connector>
<position>
- <x>153</x>
- <y>496.604</y>
+ <x>430</x>
+ <y>378</y>
</position>
- <angle>180</angle>
- <hub owner="{6ea5c997-98b5-4ec8-b63e-3f2acdcaf627}"/>
+ <angle>90</angle>
+ <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/>
</connector>
</connector-list>
</line>
@@ -2532,29 +2526,29 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>2</child>
+ <child>9</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{65ace480-001e-4e4e-912d-2a975ff995c8}">
+ <item type="database-relationship" id="{4b0f5386-c5f6-4fa4-9c78-f0d85410c366}">
<line>
<connector-list>
<connector>
<position>
- <x>6.57292</x>
- <y>372</y>
+ <x>872.667</x>
+ <y>497</y>
</position>
<angle>90</angle>
- <hub owner="{a774fcb7-1193-4b57-947c-135212695915}"/>
+ <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/>
</connector>
<connector>
<position>
- <x>4.71875</x>
- <y>345.813</y>
+ <x>860</x>
+ <y>353</y>
</position>
<angle>270</angle>
- <hub owner="{7b159780-7f39-45a7-9557-046874a57e43}"/>
+ <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/>
</connector>
</connector-list>
</line>
@@ -2565,62 +2559,29 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>4</child>
+ <child>2</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{8f5f94cd-2919-43f6-ae67-6b783850a2e7}">
+ <item type="database-relationship" id="{6094d4c4-439f-4e6c-94e1-736ae145362a}">
<line>
<connector-list>
<connector>
<position>
- <x>940.958</x>
- <y>121.813</y>
- </position>
- <angle>270</angle>
- <hub owner="{92f54126-a433-458e-80b7-67235e560334}"/>
- </connector>
- <connector>
- <position>
- <x>933.979</x>
- <y>168</y>
+ <x>952.333</x>
+ <y>497</y>
</position>
<angle>90</angle>
- <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/>
+ <hub owner="{d823ab09-1c04-44ee-ad4b-6802208967ff}"/>
</connector>
- </connector-list>
- </line>
- <relationship>
- <cardinality>OneToOne</cardinality>
- <modality>
- <child>Mandatory</child>
- <parent>Mandatory</parent>
- </modality>
- <columns>
- <child>1</child>
- <parent>0</parent>
- </columns>
- </relationship>
- </item>
- <item type="database-relationship" id="{fa899065-104a-466d-bc8c-16589a774a45}">
- <line>
- <connector-list>
<connector>
<position>
- <x>878.479</x>
- <y>121.813</y>
+ <x>917</x>
+ <y>353</y>
</position>
<angle>270</angle>
- <hub owner="{92f54126-a433-458e-80b7-67235e560334}"/>
- </connector>
- <connector>
- <position>
- <x>881.49</x>
- <y>168</y>
- </position>
- <angle>90</angle>
- <hub owner="{fee50b4d-969b-4b5f-8545-90ea8f8f7aec}"/>
+ <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/>
</connector>
</connector-list>
</line>
@@ -2631,62 +2592,62 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>2</child>
+ <child>1</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{bb03129e-aba8-4449-88c1-6c352745aeda}">
+ <item type="database-relationship" id="{9a650bd7-521d-499f-ac79-a0fd9226a656}">
<line>
<connector-list>
<connector>
<position>
- <x>948.234</x>
- <y>-32.0625</y>
+ <x>61</x>
+ <y>194</y>
</position>
<angle>0</angle>
- <hub owner="{36980651-4f03-4748-aee8-1f9211aaafde}"/>
+ <hub owner="{5f12db03-a8bb-4467-bab6-a57e545b9081}"/>
</connector>
<connector>
<position>
- <x>971</x>
- <y>-38.0625</y>
+ <x>80</x>
+ <y>241</y>
</position>
<angle>180</angle>
- <hub owner="{dc01c567-d657-4db7-8a55-d2763ed00cee}"/>
+ <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/>
</connector>
</connector-list>
</line>
<relationship>
<cardinality>OneToOne</cardinality>
<modality>
- <child>Mandatory</child>
+ <child>Optional</child>
<parent>Mandatory</parent>
</modality>
<columns>
- <child>1</child>
+ <child>2</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{172204a1-76e9-45fc-826f-b3d174112734}">
+ <item type="database-relationship" id="{c672e45e-2bd4-4ff1-9b42-fdd2443cae6a}">
<line>
<connector-list>
<connector>
<position>
- <x>948.234</x>
- <y>-15.125</y>
+ <x>525</x>
+ <y>261</y>
</position>
- <angle>0</angle>
- <hub owner="{36980651-4f03-4748-aee8-1f9211aaafde}"/>
+ <angle>180</angle>
+ <hub owner="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}"/>
</connector>
<connector>
<position>
- <x>971</x>
- <y>-7.125</y>
+ <x>489</x>
+ <y>263.333</y>
</position>
- <angle>180</angle>
- <hub owner="{dc01c567-d657-4db7-8a55-d2763ed00cee}"/>
+ <angle>0</angle>
+ <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
</connector>
</connector-list>
</line>
@@ -2697,29 +2658,29 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>0</child>
+ <child>1</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{abba2005-f23b-445f-aea6-ff9365bc1569}">
+ <item type="database-relationship" id="{f26515ec-f37f-4eb3-a07f-6d5077208806}">
<line>
<connector-list>
<connector>
<position>
- <x>261.406</x>
- <y>0.8125</y>
+ <x>396.667</x>
+ <y>35</y>
</position>
<angle>270</angle>
- <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/>
+ <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/>
</connector>
<connector>
<position>
- <x>253.289</x>
- <y>17</y>
+ <x>432.667</x>
+ <y>118</y>
</position>
<angle>90</angle>
- <hub owner="{75e4ebd8-5915-4aff-8316-0c542d3953da}"/>
+ <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
</connector>
</connector-list>
</line>
@@ -2730,62 +2691,62 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>2</child>
+ <child>1</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{803ce991-1984-4cab-9bb8-48acabb347af}">
+ <item type="database-relationship" id="{0213a360-5a3b-484f-82c7-320003506c8a}">
<line>
<connector-list>
<connector>
<position>
- <x>35.2969</x>
- <y>-11.5938</y>
+ <x>734</x>
+ <y>261</y>
</position>
<angle>0</angle>
- <hub owner="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}"/>
+ <hub owner="{b33d4844-b4e4-4ef6-944b-36b4113c2b82}"/>
</connector>
<connector>
<position>
- <x>226</x>
- <y>-51.7292</y>
+ <x>803</x>
+ <y>291.667</y>
</position>
<angle>180</angle>
- <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/>
+ <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/>
</connector>
</connector-list>
</line>
<relationship>
- <cardinality>OneToOne</cardinality>
+ <cardinality>OneToMany</cardinality>
<modality>
<child>Optional</child>
- <parent>Mandatory</parent>
+ <parent>Optional</parent>
</modality>
<columns>
- <child>5</child>
+ <child>2</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{80755775-c938-4545-b4eb-1f08cfb1f0cc}">
+ <item type="database-relationship" id="{ab992baa-6a2c-441b-a290-da42a791eb95}">
<line>
<connector-list>
<connector>
<position>
- <x>136.789</x>
- <y>8</y>
+ <x>500</x>
+ <y>-0.333333</y>
</position>
- <angle>90</angle>
- <hub owner="{b5671c08-e24a-4293-b983-3c86b1a6d622}"/>
+ <angle>0</angle>
+ <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/>
</connector>
<connector>
<position>
- <x>226</x>
- <y>-25.4583</y>
+ <x>653</x>
+ <y>46</y>
</position>
<angle>180</angle>
- <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/>
+ <hub owner="{e84f8e5f-28e0-4d8b-a7e5-0f80a896f74e}"/>
</connector>
</connector-list>
</line>
@@ -2796,29 +2757,29 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>1</child>
+ <child>2</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{af592aac-17cd-415f-99e8-9cf164311215}">
+ <item type="database-relationship" id="{d3ded37c-70d5-4388-8e27-2329f59a1d9c}">
<line>
<connector-list>
<connector>
<position>
- <x>62</x>
- <y>40.4063</y>
+ <x>500</x>
+ <y>-35.6667</y>
</position>
- <angle>180</angle>
- <hub owner="{b5671c08-e24a-4293-b983-3c86b1a6d622}"/>
+ <angle>0</angle>
+ <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/>
</connector>
<connector>
<position>
- <x>43.4531</x>
- <y>95.4063</y>
+ <x>580</x>
+ <y>-32</y>
</position>
- <angle>0</angle>
- <hub owner="{6180fcbf-5069-4d86-8919-fd39394f1813}"/>
+ <angle>180</angle>
+ <hub owner="{be821d83-a9b4-4c0c-8e1b-433730200714}"/>
</connector>
</connector-list>
</line>
@@ -2829,36 +2790,36 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>2</child>
+ <child>3</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{4174d8cf-11ae-4a89-bc89-ae6044cee76d}">
+ <item type="database-relationship" id="{3016bcca-8c69-49ae-b7af-6f236ee0a018}">
<line>
<connector-list>
<connector>
<position>
- <x>-9.85156</x>
- <y>48.8125</y>
+ <x>619</x>
+ <y>142.667</y>
</position>
- <angle>270</angle>
- <hub owner="{5cbe15f1-fea8-48eb-a84f-97f7e22060f6}"/>
+ <angle>180</angle>
+ <hub owner="{f8caa2d5-11ba-485c-b273-8183713896bf}"/>
</connector>
<connector>
<position>
- <x>-5.27344</x>
- <y>70</y>
+ <x>608</x>
+ <y>101</y>
</position>
- <angle>90</angle>
- <hub owner="{6180fcbf-5069-4d86-8919-fd39394f1813}"/>
+ <angle>0</angle>
+ <hub owner="{a67b38a9-c701-412c-8292-5ef58536da85}"/>
</connector>
</connector-list>
</line>
<relationship>
<cardinality>OneToOne</cardinality>
<modality>
- <child>Optional</child>
+ <child>Mandatory</child>
<parent>Mandatory</parent>
</modality>
<columns>
@@ -2867,24 +2828,24 @@
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{326ba5fe-513e-48e9-b924-51305ffa2aeb}">
+ <item type="database-relationship" id="{8e252eee-d544-482b-9a11-ba30ff6b4ebd}">
<line>
<connector-list>
<connector>
<position>
- <x>220.969</x>
- <y>241.406</y>
+ <x>448.333</x>
+ <y>35</y>
</position>
- <angle>0</angle>
- <hub owner="{a945e439-8796-49e8-aa9b-7ce0a58a2c26}"/>
+ <angle>270</angle>
+ <hub owner="{caab4a73-46dc-49dc-ac51-d8ae916827c5}"/>
</connector>
<connector>
<position>
- <x>262.109</x>
- <y>147.813</y>
+ <x>524</x>
+ <y>101</y>
</position>
- <angle>270</angle>
- <hub owner="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}"/>
+ <angle>180</angle>
+ <hub owner="{a67b38a9-c701-412c-8292-5ef58536da85}"/>
</connector>
</connector-list>
</line>
@@ -2895,139 +2856,139 @@
<parent>Mandatory</parent>
</modality>
<columns>
- <child>2</child>
+ <child>4</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{3539786a-db3b-4c5c-ba35-e89fb027cda8}">
+ <item type="database-relationship" id="{64756b6f-e7d3-4995-8b5d-21d07292741f}">
<line>
<connector-list>
<connector>
<position>
- <x>262.109</x>
- <y>83</y>
+ <x>95</x>
+ <y>669</y>
</position>
- <angle>90</angle>
- <hub owner="{33867a1e-ef36-4cc2-a08e-7366f56fbf5f}"/>
+ <angle>270</angle>
+ <hub owner="{fdd7ff7b-7a96-4625-9287-820e1b076c2a}"/>
</connector>
<connector>
<position>
- <x>253.289</x>
- <y>67.8125</y>
+ <x>182.667</x>
+ <y>694</y>
</position>
- <angle>270</angle>
- <hub owner="{75e4ebd8-5915-4aff-8316-0c542d3953da}"/>
+ <angle>90</angle>
+ <hub owner="{7c210122-c51d-4724-b7cc-22f143bc47ac}"/>
</connector>
</connector-list>
</line>
<relationship>
<cardinality>OneToOne</cardinality>
<modality>
- <child>Mandatory</child>
- <parent>Mandatory</parent>
+ <child>Optional</child>
+ <parent>Optional</parent>
</modality>
<columns>
<child>1</child>
- <parent>0</parent>
+ <parent>1</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{25ec7ee3-9041-4ef4-a5b8-c41a06385813}">
+ <item type="database-relationship" id="{279b4b3b-c166-4343-bce6-ff3dfb6669a0}">
<line>
<connector-list>
<connector>
<position>
- <x>803</x>
- <y>322.875</y>
+ <x>485.5</x>
+ <y>455</y>
</position>
- <angle>180</angle>
- <hub owner="{844766fc-c5af-4f61-b51b-d3f9393c60ca}"/>
+ <angle>90</angle>
+ <hub owner="{9085c36f-5884-41c8-9ca8-9d53973e657d}"/>
</connector>
<connector>
<position>
- <x>476.016</x>
- <y>390.703</y>
+ <x>446</x>
+ <y>428</y>
</position>
- <angle>0</angle>
+ <angle>270</angle>
<hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/>
</connector>
</connector-list>
</line>
<relationship>
- <cardinality>OneToOne</cardinality>
+ <cardinality>OneToMany</cardinality>
<modality>
- <child>Mandatory</child>
- <parent>Mandatory</parent>
+ <child>Optional</child>
+ <parent>Optional</parent>
</modality>
<columns>
- <child>4</child>
+ <child>14</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{30a694b2-681f-44ae-90bb-911220d65737}">
+ <item type="database-relationship" id="{1f929538-fe3a-4c8f-8c6c-26ea441bd6e0}">
<line>
<connector-list>
<connector>
<position>
- <x>656</x>
- <y>441.875</y>
+ <x>320</x>
+ <y>227</y>
</position>
<angle>180</angle>
- <hub owner="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}"/>
+ <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
</connector>
<connector>
<position>
- <x>476.016</x>
- <y>416.109</y>
+ <x>266</x>
+ <y>328</y>
</position>
- <angle>0</angle>
- <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/>
+ <angle>90</angle>
+ <hub owner="{44dd2d06-f012-46f7-a1a9-d38dd21b4287}"/>
</connector>
</connector-list>
</line>
<relationship>
<cardinality>OneToOne</cardinality>
<modality>
- <child>Mandatory</child>
+ <child>Optional</child>
<parent>Mandatory</parent>
</modality>
<columns>
- <child>2</child>
+ <child>12</child>
<parent>0</parent>
</columns>
</relationship>
</item>
- <item type="database-relationship" id="{f2d38c97-7a03-4454-8b95-7b35ba1c0304}">
+ <item type="database-relationship" id="{44fe350c-d54c-45f8-a967-afd81ccc4721}">
<line>
<connector-list>
<connector>
<position>
- <x>656</x>
- <y>410.938</y>
+ <x>376.333</x>
+ <y>118</y>
</position>
- <angle>180</angle>
- <hub owner="{3d2d24a7-42f1-4c59-9cb3-a8d8478ac4a8}"/>
+ <angle>90</angle>
+ <hub owner="{2e6c3b80-fef6-4d2b-8945-7ea6be1b646c}"/>
</connector>
<connector>
<position>
- <x>476.016</x>
- <y>403.406</y>
+ <x>298.667</x>
+ <y>0</y>
</position>
- <angle>0</angle>
- <hub owner="{04f424bf-6465-478b-9529-0038615b51d9}"/>
+ <angle>270</angle>
+ <hub owner="{f31249ea-ab19-45a4-9427-1854379ad8e7}"/>
</connector>
</connector-list>
</line>
<relationship>
- <cardinality>OneToOne</cardinality>
+ <cardinality>OneToMany</cardinality>
<modality>
<child>Mandatory</child>
- <parent>Mandatory</parent>
+ <parent>Optional</parent>
</modality>
<columns>
- <child>1</child>
+ <child>13</child>
<parent>0</parent>
</columns>
</relationship>